[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [orbot/master] remove redundant code from old ant build format (not in gradle modules)
commit 54b33493441870a09efe4e28dad9ae30f327afac
Author: Nathan Freitas <nathan@xxxxxxxxxxx>
Date: Wed Jun 29 09:54:03 2016 -0400
remove redundant code from old ant build format (not in gradle modules)
---
assets/bridges.txt | 22 -
jni/Android.mk | 145 -
jni/Application.mk | 4 -
jni/libancillary/API | 139 -
jni/libancillary/COPYING | 21 -
jni/libancillary/Makefile | 73 -
jni/libancillary/ancillary.h | 131 -
jni/libancillary/fd_recv.c | 98 -
jni/libancillary/fd_send.c | 92 -
jni/libancillary/test.c | 112 -
jni/pdnsd/AUTHORS | 58 -
jni/pdnsd/COPYING | 674 --
jni/pdnsd/COPYING.BSD | 26 -
jni/pdnsd/ChangeLog | 3304 ------
jni/pdnsd/ChangeLog.old | 161 -
jni/pdnsd/INSTALL | 190 -
jni/pdnsd/Makefile.am | 40 -
jni/pdnsd/Makefile.in | 734 --
jni/pdnsd/NEWS | 324 -
jni/pdnsd/PKGBUILD.in | 24 -
jni/pdnsd/README | 22 -
jni/pdnsd/README.par | 216 -
jni/pdnsd/README.par.old | 249 -
jni/pdnsd/THANKS | 66 -
jni/pdnsd/TODO | 20 -
jni/pdnsd/acconfig.h | 191 -
jni/pdnsd/aclocal.m4 | 1021 --
jni/pdnsd/compile | 142 -
jni/pdnsd/config.h | 437 -
jni/pdnsd/config.h.in | 430 -
jni/pdnsd/configure | 11389 -------------------
jni/pdnsd/configure.in | 548 -
jni/pdnsd/contrib/Makefile.am | 2 -
jni/pdnsd/contrib/Makefile.in | 323 -
jni/pdnsd/contrib/README | 30 -
jni/pdnsd/contrib/change_pdnsd_server_ip.pl | 124 -
jni/pdnsd/contrib/dhcp2pdnsd | 45 -
jni/pdnsd/contrib/pdnsd_dhcp.pl | 246 -
jni/pdnsd/depcomp | 530 -
jni/pdnsd/doc/Makefile.am | 28 -
jni/pdnsd/doc/Makefile.in | 483 -
jni/pdnsd/doc/doc_makefile | 38 -
jni/pdnsd/doc/html/dl.html | 96 -
jni/pdnsd/doc/html/dl.html.in | 96 -
jni/pdnsd/doc/html/doc.html | 2630 -----
jni/pdnsd/doc/html/doc_makefile | 23 -
jni/pdnsd/doc/html/faq.html | 412 -
jni/pdnsd/doc/html/htmlsubst.pl | 36 -
jni/pdnsd/doc/html/index.html | 686 --
jni/pdnsd/doc/html2confman.pl | 161 -
jni/pdnsd/doc/pdnsd-ctl.8 | 198 -
jni/pdnsd/doc/pdnsd.8.in | 326 -
jni/pdnsd/doc/pdnsd.conf.5.in | 1328 ---
jni/pdnsd/doc/pdnsd.conf.in | 143 -
jni/pdnsd/doc/txt/doc_makefile | 21 -
jni/pdnsd/doc/txt/faq.txt | 227 -
jni/pdnsd/doc/txt/intro.txt | 305 -
jni/pdnsd/doc/txt/manual.txt | 2017 ----
jni/pdnsd/file-list.base.in | 5 -
jni/pdnsd/install-sh | 323 -
jni/pdnsd/missing | 360 -
jni/pdnsd/pdnsd.spec.in | 244 -
jni/pdnsd/src/Makefile.am | 24 -
jni/pdnsd/src/Makefile.in | 921 --
jni/pdnsd/src/cache.c | 2731 -----
jni/pdnsd/src/cache.h | 306 -
jni/pdnsd/src/conf-keywords.h | 238 -
jni/pdnsd/src/conf-parser.c | 2118 ----
jni/pdnsd/src/conf-parser.h | 29 -
jni/pdnsd/src/conff.c | 544 -
jni/pdnsd/src/conff.h | 190 -
jni/pdnsd/src/consts.c | 133 -
jni/pdnsd/src/consts.h | 69 -
jni/pdnsd/src/debug.c | 64 -
jni/pdnsd/src/debug.h | 52 -
jni/pdnsd/src/dns.c | 617 -
jni/pdnsd/src/dns.h | 309 -
jni/pdnsd/src/dns_answer.c | 2170 ----
jni/pdnsd/src/dns_answer.h | 40 -
jni/pdnsd/src/dns_query.c | 3798 -------
jni/pdnsd/src/dns_query.h | 51 -
jni/pdnsd/src/error.c | 142 -
jni/pdnsd/src/error.h | 115 -
jni/pdnsd/src/freebsd_netinet_ip_icmp.h | 187 -
jni/pdnsd/src/hash.c | 322 -
jni/pdnsd/src/hash.h | 83 -
jni/pdnsd/src/helpers.c | 795 --
jni/pdnsd/src/helpers.h | 319 -
jni/pdnsd/src/icmp.c | 544 -
jni/pdnsd/src/icmp.h | 43 -
jni/pdnsd/src/ipvers.h | 297 -
jni/pdnsd/src/list.c | 171 -
jni/pdnsd/src/list.h | 170 -
jni/pdnsd/src/main.c | 710 --
jni/pdnsd/src/make_rr_types_h.pl | 309 -
jni/pdnsd/src/netdev.c | 363 -
jni/pdnsd/src/netdev.h | 32 -
jni/pdnsd/src/pdnsd-ctl/Makefile.am | 18 -
jni/pdnsd/src/pdnsd-ctl/Makefile.in | 470 -
jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c | 799 --
jni/pdnsd/src/pdnsd_assert.h | 51 -
jni/pdnsd/src/rc/ArchLinux/Makefile.am | 7 -
jni/pdnsd/src/rc/ArchLinux/Makefile.in | 332 -
jni/pdnsd/src/rc/ArchLinux/pdnsd.in | 45 -
jni/pdnsd/src/rc/Debian/Makefile.am | 8 -
jni/pdnsd/src/rc/Debian/Makefile.in | 334 -
jni/pdnsd/src/rc/Debian/pdnsd.in | 52 -
jni/pdnsd/src/rc/Makefile.am | 5 -
jni/pdnsd/src/rc/Makefile.in | 526 -
jni/pdnsd/src/rc/README | 104 -
jni/pdnsd/src/rc/RedHat/Makefile.am | 12 -
jni/pdnsd/src/rc/RedHat/Makefile.in | 337 -
jni/pdnsd/src/rc/RedHat/pdnsd.in | 88 -
jni/pdnsd/src/rc/Slackware/Makefile.am | 3 -
jni/pdnsd/src/rc/Slackware/Makefile.in | 330 -
jni/pdnsd/src/rc/Slackware/rc.pdnsd.in | 74 -
jni/pdnsd/src/rc/SuSE/Makefile.am | 22 -
jni/pdnsd/src/rc/SuSE/Makefile.in | 345 -
jni/pdnsd/src/rc/SuSE/pdnsd.in | 68 -
jni/pdnsd/src/rr_types.c | 172 -
jni/pdnsd/src/rr_types.h | 536 -
jni/pdnsd/src/rr_types.in | 99 -
jni/pdnsd/src/servers.c | 856 --
jni/pdnsd/src/servers.h | 68 -
jni/pdnsd/src/sort_namevalues.pl | 25 -
jni/pdnsd/src/status.c | 824 --
jni/pdnsd/src/status.h | 59 -
jni/pdnsd/src/test/Makefile.am | 35 -
jni/pdnsd/src/test/Makefile.in | 464 -
jni/pdnsd/src/test/if_up.c | 36 -
jni/pdnsd/src/test/is_local_addr.c | 57 -
jni/pdnsd/src/test/random.c | 33 -
jni/pdnsd/src/test/tping.c | 59 -
jni/pdnsd/src/thread.c | 85 -
jni/pdnsd/src/thread.h | 143 -
jni/pdnsd/version | 1 -
libs/android-support-v4.jar | Bin 1364299 -> 0 bytes
res/drawable-hdpi-v11/ic_stat_notifyerr.png | Bin 480 -> 0 bytes
res/drawable-hdpi-v11/ic_stat_tor.png | Bin 802 -> 0 bytes
res/drawable-hdpi-v11/ic_stat_tor_off.png | Bin 744 -> 0 bytes
res/drawable-hdpi-v11/ic_stat_tor_xfer.png | Bin 967 -> 0 bytes
res/drawable-hdpi-v11/inverse.png | Bin 1027 -> 0 bytes
res/drawable-hdpi-v9/ic_stat_notifyerr.png | Bin 616 -> 0 bytes
res/drawable-hdpi-v9/ic_stat_tor.png | Bin 713 -> 0 bytes
res/drawable-hdpi-v9/inverse.png | Bin 1027 -> 0 bytes
res/drawable-hdpi/ic_action_settings.png | Bin 553 -> 0 bytes
res/drawable-hdpi/ic_launcher.png | Bin 4194 -> 0 bytes
res/drawable-hdpi/ic_stat_notifyerr.png | Bin 1312 -> 0 bytes
res/drawable-hdpi/ic_stat_tor.png | Bin 852 -> 0 bytes
res/drawable-hdpi/ic_stat_tor_xfer.png | Bin 990 -> 0 bytes
res/drawable-hdpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable-ldpi-v11/ic_stat_notifyerr.png | Bin 294 -> 0 bytes
res/drawable-ldpi-v11/ic_stat_tor.png | Bin 390 -> 0 bytes
res/drawable-ldpi-v11/inverse.png | Bin 1027 -> 0 bytes
res/drawable-ldpi-v9/ic_stat_notifyerr.png | Bin 342 -> 0 bytes
res/drawable-ldpi-v9/ic_stat_tor.png | Bin 358 -> 0 bytes
res/drawable-ldpi-v9/inverse.png | Bin 1027 -> 0 bytes
res/drawable-ldpi/ic_action_settings.png | Bin 319 -> 0 bytes
res/drawable-ldpi/ic_launcher.png | Bin 2852 -> 0 bytes
res/drawable-ldpi/ic_stat_notifyerr.png | Bin 647 -> 0 bytes
res/drawable-ldpi/ic_stat_tor.png | Bin 606 -> 0 bytes
res/drawable-ldpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable-mdpi-v11/ic_stat_notifyerr.png | Bin 357 -> 0 bytes
res/drawable-mdpi-v11/ic_stat_tor.png | Bin 517 -> 0 bytes
res/drawable-mdpi-v11/ic_stat_tor_xfer.png | Bin 607 -> 0 bytes
res/drawable-mdpi-v11/inverse.png | Bin 1027 -> 0 bytes
res/drawable-mdpi-v9/ic_stat_notifyerr.png | Bin 458 -> 0 bytes
res/drawable-mdpi-v9/ic_stat_tor.png | Bin 475 -> 0 bytes
res/drawable-mdpi-v9/inverse.png | Bin 1027 -> 0 bytes
res/drawable-mdpi/ic_action_settings.png | Bin 364 -> 0 bytes
res/drawable-mdpi/ic_launcher.png | Bin 2677 -> 0 bytes
res/drawable-mdpi/ic_stat_notifyerr.png | Bin 883 -> 0 bytes
res/drawable-mdpi/ic_stat_tor.png | Bin 535 -> 0 bytes
res/drawable-mdpi/ic_stat_tor_xfer.png | Bin 600 -> 0 bytes
res/drawable-mdpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable-xhdpi-v11/ic_stat_notifyerr.png | Bin 618 -> 0 bytes
res/drawable-xhdpi-v11/ic_stat_tor.png | Bin 1165 -> 0 bytes
res/drawable-xhdpi-v11/ic_stat_tor_xfer.png | Bin 1337 -> 0 bytes
res/drawable-xhdpi-v11/inverse.png | Bin 1027 -> 0 bytes
res/drawable-xhdpi-v9/ic_stat_notifyerr.png | Bin 747 -> 0 bytes
res/drawable-xhdpi-v9/ic_stat_tor.png | Bin 970 -> 0 bytes
res/drawable-xhdpi-v9/inverse.png | Bin 1027 -> 0 bytes
res/drawable-xhdpi/ic_action_settings.png | Bin 716 -> 0 bytes
res/drawable-xhdpi/ic_launcher.png | Bin 5964 -> 0 bytes
res/drawable-xhdpi/ic_stat_notifyerr.png | Bin 1796 -> 0 bytes
res/drawable-xhdpi/ic_stat_tor.png | Bin 1161 -> 0 bytes
res/drawable-xhdpi/ic_stat_tor_xfer.png | Bin 1378 -> 0 bytes
res/drawable-xhdpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable-xxhdpi-v11/ic_stat_tor.png | Bin 1903 -> 0 bytes
res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png | Bin 2019 -> 0 bytes
res/drawable-xxhdpi/ic_launcher.png | Bin 9556 -> 0 bytes
res/drawable-xxhdpi/ic_stat_tor.png | Bin 1872 -> 0 bytes
res/drawable-xxhdpi/ic_stat_tor_xfer.png | Bin 2216 -> 0 bytes
res/drawable-xxhdpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable-xxxhdpi-v11/ic_stat_tor.png | Bin 2661 -> 0 bytes
res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png | Bin 3156 -> 0 bytes
res/drawable-xxxhdpi/ic_launcher.png | Bin 13297 -> 0 bytes
res/drawable-xxxhdpi/ic_stat_tor.png | Bin 2631 -> 0 bytes
res/drawable-xxxhdpi/ic_stat_tor_xfer.png | Bin 2859 -> 0 bytes
res/drawable-xxxhdpi/inverse.png | Bin 1027 -> 0 bytes
res/drawable/button.xml | 37 -
res/drawable/button_off.xml | 37 -
res/drawable/button_on.xml | 35 -
res/drawable/classyfabric.png | Bin 8856 -> 0 bytes
res/drawable/error.png | Bin 2922 -> 0 bytes
res/drawable/ic_chatsecure.png | Bin 4013 -> 0 bytes
res/drawable/ic_duckduckgo.png | Bin 5042 -> 0 bytes
res/drawable/ic_launcher.png | Bin 6055 -> 0 bytes
res/drawable/ic_menu_about.png | Bin 1771 -> 0 bytes
res/drawable/ic_menu_exit.png | Bin 2693 -> 0 bytes
res/drawable/ic_menu_goto.png | Bin 1636 -> 0 bytes
res/drawable/ic_play.png | Bin 3560 -> 0 bytes
res/drawable/ic_stat_tor_off.png | Bin 744 -> 0 bytes
res/drawable/ic_stat_tor_xfer.png | Bin 600 -> 0 bytes
res/drawable/ic_twitter.png | Bin 2797 -> 0 bytes
res/drawable/icon_martus.png | Bin 6763 -> 0 bytes
res/drawable/icon_orfox.png | Bin 7617 -> 0 bytes
res/drawable/icon_story_maker.png | Bin 4290 -> 0 bytes
res/drawable/inverse.png | Bin 1027 -> 0 bytes
res/drawable/n8fr8.jpg | Bin 18062 -> 0 bytes
res/drawable/oldtoroff.png | Bin 63700 -> 0 bytes
res/drawable/oldtoron.png | Bin 121036 -> 0 bytes
res/drawable/oldtorstarting.png | Bin 111753 -> 0 bytes
res/drawable/onion32.png | Bin 1599 -> 0 bytes
res/drawable/tilebg.xml | 4 -
res/drawable/toggle.xml | 8 -
res/drawable/tor.png | Bin 4766 -> 0 bytes
res/drawable/tor25.png | Bin 2227 -> 0 bytes
res/drawable/toroff.png | Bin 39556 -> 0 bytes
res/drawable/toron.png | Bin 47022 -> 0 bytes
res/drawable/torstarting.png | Bin 41700 -> 0 bytes
res/layout-v21/layout_notification_expanded.xml | 123 -
res/layout/layout_about.xml | 120 -
res/layout/layout_apps.xml | 74 -
res/layout/layout_apps_item.xml | 17 -
res/layout/layout_diag.xml | 14 -
res/layout/layout_help.xml | 20 -
res/layout/layout_log.xml | 52 -
res/layout/layout_main.xml | 244 -
res/layout/layout_notification_expanded.xml | 122 -
res/layout/layout_promo_apps.xml | 115 -
res/layout/layout_settings.xml | 29 -
res/layout/layout_vpn_setup.xml | 34 -
.../notification_template_part_chronometer.xml | 25 -
res/layout/notification_template_part_time.xml | 25 -
res/layout/scrollingtext_buttons_view.xml | 34 -
res/menu/orbot_main.xml | 70 -
res/menu/share_menu.xml | 7 -
res/raw/geoip.mp3 | Bin 609031 -> 0 bytes
res/raw/geoip6.mp3 | 1663 ---
res/raw/pluto.properties | 3 -
res/raw/torpolipo.conf | 23 -
res/raw/torrc | 8 -
res/values-ach/strings.xml | 12 -
res/values-ar/strings.xml | 262 -
res/values-az/strings.xml | 297 -
res/values-bg/strings.xml | 293 -
res/values-bn-rBD/strings.xml | 40 -
res/values-bn-rIN/strings.xml | 12 -
res/values-bn/strings.xml | 12 -
res/values-brx/strings.xml | 12 -
res/values-bs/strings.xml | 18 -
res/values-ca/strings.xml | 226 -
res/values-cs-rCZ/strings.xml | 223 -
res/values-cs/strings.xml | 74 -
res/values-cy/strings.xml | 81 -
res/values-da/strings.xml | 203 -
res/values-de-rAT/strings.xml | 12 -
res/values-de/strings.xml | 293 -
res/values-el/strings.xml | 208 -
res/values-en-rGB/strings.xml | 13 -
res/values-eo/strings.xml | 146 -
res/values-es-rAR/strings.xml | 69 -
res/values-es/strings.xml | 294 -
res/values-et/strings.xml | 210 -
res/values-eu/strings.xml | 218 -
res/values-fa/strings.xml | 292 -
res/values-fi/strings.xml | 278 -
res/values-fr-rFR/strings.xml | 293 -
res/values-fr/strings.xml | 54 -
res/values-gl/strings.xml | 209 -
res/values-gu-rIN/strings.xml | 14 -
res/values-gu/strings.xml | 17 -
res/values-he | 1 -
res/values-hi/strings.xml | 26 -
res/values-hr-rHR/strings.xml | 30 -
res/values-hr/strings.xml | 293 -
res/values-hu/strings.xml | 293 -
res/values-hy-rAM/strings.xml | 12 -
res/values-ia/strings.xml | 30 -
res/values-id | 1 -
res/values-in-rID/strings.xml | 284 -
res/values-in/strings.xml | 48 -
res/values-is/strings.xml | 278 -
res/values-it/strings.xml | 293 -
res/values-iw/strings.xml | 233 -
res/values-ja/strings.xml | 293 -
res/values-kn-rIN/strings.xml | 12 -
res/values-kn/strings.xml | 12 -
res/values-ko/strings.xml | 214 -
res/values-ky/strings.xml | 21 -
res/values-lt-rLT/strings.xml | 12 -
res/values-lt/strings.xml | 28 -
res/values-lv/strings.xml | 278 -
res/values-mk/strings.xml | 278 -
res/values-ml/strings.xml | 12 -
res/values-mn/strings.xml | 12 -
res/values-mr-rIN/strings.xml | 12 -
res/values-ms-rMY/strings.xml | 196 -
res/values-ms/strings.xml | 200 -
res/values-my/strings.xml | 30 -
res/values-nb/strings.xml | 258 -
res/values-nl/strings.xml | 292 -
res/values-pa/strings.xml | 19 -
res/values-pl/strings.xml | 293 -
res/values-ps/strings.xml | 12 -
res/values-pt-rBR/strings.xml | 285 -
res/values-pt-rPT/strings.xml | 14 -
res/values-pt/strings.xml | 181 -
res/values-ro-rRO/strings.xml | 30 -
res/values-ro/strings.xml | 231 -
res/values-rs-rAR/strings.xml | 58 -
res/values-ru/strings.xml | 293 -
res/values-si-rLK/strings.xml | 190 -
res/values-sk-rSK/strings.xml | 15 -
res/values-sk/strings.xml | 45 -
res/values-sl/strings.xml | 79 -
res/values-sn/strings.xml | 22 -
res/values-sq/strings.xml | 30 -
res/values-sr/strings.xml | 200 -
res/values-sv/strings.xml | 293 -
res/values-ta/strings.xml | 68 -
res/values-th/strings.xml | 169 -
res/values-tl/strings.xml | 249 -
res/values-tr/strings.xml | 282 -
res/values-uk/strings.xml | 278 -
res/values-ur/strings.xml | 18 -
res/values-uz/strings.xml | 47 -
res/values-vi/strings.xml | 293 -
res/values-zh-rCN/strings.xml | 298 -
res/values-zh-rTW/strings.xml | 116 -
res/values/arrays.xml | 16 -
res/values/colors.xml | 8 -
res/values/dimens.xml | 361 -
res/values/pdnsd.xml | 33 -
res/values/strings.xml | 339 -
res/values/styles.xml | 5 -
res/values/theme.xml | 8 -
res/xml/preferences.xml | 269 -
.../integration/android/IntentIntegrator.java | 506 -
.../zxing/integration/android/IntentResult.java | 95 -
src/info/guardianproject/util/Languages.java | 233 -
src/net | 1 -
src/org/torproject/android/OrbotApp.java | 78 -
src/org/torproject/android/OrbotConstants.java | 37 -
src/org/torproject/android/OrbotMainActivity.java | 1442 ---
src/org/torproject/android/Prefs.java | 134 -
.../torproject/android/service/DummyActivity.java | 15 -
.../android/service/HiddenServiceManager.java | 25 -
.../torproject/android/service/OnBootReceiver.java | 46 -
.../android/service/StartTorReceiver.java | 36 -
.../android/service/TorResourceInstaller.java | 372 -
src/org/torproject/android/service/TorService.java | 2276 ----
.../android/service/TorServiceConstants.java | 163 -
.../android/service/TorServiceUtils.java | 188 -
.../torproject/android/service/TorTransProxy.java | 763 --
.../torproject/android/service/TorrcConfig.java | 33 -
src/org/torproject/android/service/Utils.java | 100 -
.../torproject/android/settings/AppManager.java | 389 -
.../android/settings/SettingsPreferences.java | 183 -
.../torproject/android/settings/TorifiedApp.java | 139 -
.../torproject/android/ui/BridgeSetupActivity.java | 5 -
.../torproject/android/ui/ImageProgressView.java | 78 -
.../android/ui/OrbotDiagnosticsActivity.java | 333 -
.../torproject/android/ui/PromoAppsActivity.java | 215 -
.../torproject/android/ui/Rotate3dAnimation.java | 76 -
.../torproject/android/ui/VPNSetupActivity.java | 5 -
.../torproject/android/vpn/OrbotVpnManager.java | 455 -
src/org/torproject/android/vpn/Tun2Socks.java | 126 -
.../torproject/android/vpn/VPNEnableActivity.java | 164 -
380 files changed, 84345 deletions(-)
diff --git a/assets/bridges.txt b/assets/bridges.txt
deleted file mode 100644
index 679f811..0000000
--- a/assets/bridges.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-obfs3 83.212.101.3:80 A09D536DD1752D542E1FBB3C9CE4449D51298239
-obfs3 169.229.59.74:31493 AF9F66B7B04F8FF6F32D455F05135250A16543C9
-obfs3 169.229.59.75:46328 AF9F66B7B04F8FF6F32D455F05135250A16543C9
-obfs3 109.105.109.163:38980 1E05F577A0EC0213F971D81BF4D86A9E4E8229ED
-obfs3 109.105.109.163:47779 4C331FA9B3D1D6D8FB0D8FBBF0C259C360D97E6A
-scramblesuit 83.212.101.3:443 A09D536DD1752D542E1FBB3C9CE4449D51298239 password=XTCXLG2JAMJKZW2POLBAOWOQETQSMASH
-obfs4 198.245.60.50:443 752CF7825B3B9EA6A98C83AC41F7099D67007EA5 cert=xpmQtKUqQ/6v5X7ijgYE/f03+l2/EuQ1dexjyUhh16wQlu/cpXUGalmhDIlhuiQPNEKmKw iat-mode=0
-obfs4 109.105.109.165:10527 8DFCD8FB3285E855F5A55EDDA35696C743ABFC4E cert=Bvg/itxeL4TWKLP6N1MaQzSOC6tcRIBv6q57DYAZc3b2AzuM+/TfB7mqTFEfXILCjEwzVA iat-mode=0
-obfs4 83.212.101.3:41213 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0
-obfs4 104.131.108.182:56880 EF577C30B9F788B0E1801CF7E433B3B77792B77A cert=0SFhfDQrKjUJP8Qq6wrwSICEPf3Vl/nJRsYxWbg3QRoSqhl2EB78MPS2lQxbXY4EW1wwXA iat-mode=0
-obfs4 109.105.109.147:13764 BBB28DF0F201E706BE564EFE690FE9577DD8386D cert=KfMQN/tNMFdda61hMgpiMI7pbwU1T+wxjTulYnfw+4sgvG0zSH7N7fwT10BI8MUdAD7iJA iat-mode=0
-obfs4 154.35.22.10:41835 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0
-obfs4 154.35.22.11:49868 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0
-obfs4 154.35.22.12:80 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0
-obfs4 154.35.22.13:443 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0
-obfs4 154.35.22.10:1984 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0
-obfs4 154.35.22.11:1984 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0
-obfs4 154.35.22.12:1984 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0
-obfs4 154.35.22.13:1984 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0
-meek 0.0.2.0:1 46D4A71197B8FA515A826C6B017C522FE264655B url=https://meek-reflect.appspot.com/ front=www.google.com
-meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com
-meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az786092.vo.msecnd.net/ front=ajax.aspnetcdn.com
diff --git a/jni/Android.mk b/jni/Android.mk
deleted file mode 100644
index f4af1d9..0000000
--- a/jni/Android.mk
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (C) 2009 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-LOCAL_PATH := $(call my-dir)
-ROOT_PATH := $(LOCAL_PATH)
-EXTERN_PATH := $(LOCAL_PATH)/../external
-
-########################################################
-## pdnsd library
-########################################################
-
-include $(CLEAR_VARS)
-
-PDNSD_SOURCES := $(wildcard $(LOCAL_PATH)/pdnsd/src/*.c)
-
-LOCAL_MODULE := pdnsd
-LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%)
-LOCAL_CFLAGS := -Wall -O2 -I$(LOCAL_PATH)/pdnsd -DHAVE_STPCPY
-
-include $(BUILD_EXECUTABLE)
-
-########################################################
-## libancillary
-########################################################
-
-include $(CLEAR_VARS)
-
-ANCILLARY_SOURCE := fd_recv.c fd_send.c
-
-LOCAL_MODULE := libancillary
-LOCAL_CFLAGS := -O2 -I$(LOCAL_PATH)/libancillary
-
-LOCAL_SRC_FILES := $(addprefix libancillary/, $(ANCILLARY_SOURCE))
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-########################################################
-## tun2socks
-########################################################
-
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS := -std=gnu99
-LOCAL_CFLAGS += -DBADVPN_THREADWORK_USE_PTHREAD -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE
-LOCAL_CFLAGS += -DBADVPN_USE_SELFPIPE -DBADVPN_USE_EPOLL
-LOCAL_CFLAGS += -DBADVPN_LITTLE_ENDIAN -DBADVPN_THREAD_SAFE
-LOCAL_CFLAGS += -DNDEBUG -DANDROID
-LOCAL_CFLAGS += -DTUN2SOCKS_JNI
-LOCAL_CFLAGS += -DPSIPHON
-
-LOCAL_STATIC_LIBRARIES := libancillary
-
-LOCAL_C_INCLUDES:= \
- $(LOCAL_PATH)/libancillary \
- $(EXTERN_PATH)/badvpn/ \
- $(EXTERN_PATH)/badvpn/lwip/src/include/ipv4 \
- $(EXTERN_PATH)/badvpn/lwip/src/include/ipv6 \
- $(EXTERN_PATH)/badvpn/lwip/src/include \
- $(EXTERN_PATH)/badvpn/lwip/custom \
-
-TUN2SOCKS_SOURCES := \
- base/BLog_syslog.c \
- system/BReactor_badvpn.c \
- system/BSignal.c \
- system/BConnection_unix.c \
- system/BTime.c \
- system/BUnixSignal.c \
- system/BNetwork.c \
- flow/StreamRecvInterface.c \
- flow/PacketRecvInterface.c \
- flow/PacketPassInterface.c \
- flow/StreamPassInterface.c \
- flow/SinglePacketBuffer.c \
- flow/BufferWriter.c \
- flow/PacketBuffer.c \
- flow/PacketStreamSender.c \
- flow/PacketPassConnector.c \
- flow/PacketProtoFlow.c \
- flow/PacketPassFairQueue.c \
- flow/PacketProtoEncoder.c \
- flow/PacketProtoDecoder.c \
- socksclient/BSocksClient.c \
- tuntap/BTap.c \
- lwip/src/core/timers.c \
- lwip/src/core/udp.c \
- lwip/src/core/memp.c \
- lwip/src/core/init.c \
- lwip/src/core/pbuf.c \
- lwip/src/core/tcp.c \
- lwip/src/core/tcp_out.c \
- lwip/src/core/netif.c \
- lwip/src/core/def.c \
- lwip/src/core/mem.c \
- lwip/src/core/tcp_in.c \
- lwip/src/core/stats.c \
- lwip/src/core/inet_chksum.c \
- lwip/src/core/ipv4/icmp.c \
- lwip/src/core/ipv4/igmp.c \
- lwip/src/core/ipv4/ip4_addr.c \
- lwip/src/core/ipv4/ip_frag.c \
- lwip/src/core/ipv4/ip4.c \
- lwip/src/core/ipv4/autoip.c \
- lwip/src/core/ipv6/ethip6.c \
- lwip/src/core/ipv6/inet6.c \
- lwip/src/core/ipv6/ip6_addr.c \
- lwip/src/core/ipv6/mld6.c \
- lwip/src/core/ipv6/dhcp6.c \
- lwip/src/core/ipv6/icmp6.c \
- lwip/src/core/ipv6/ip6.c \
- lwip/src/core/ipv6/ip6_frag.c \
- lwip/src/core/ipv6/nd6.c \
- lwip/custom/sys.c \
- tun2socks/tun2socks.c \
- base/DebugObject.c \
- base/BLog.c \
- base/BPending.c \
- system/BDatagram_unix.c \
- flowextra/PacketPassInactivityMonitor.c \
- tun2socks/SocksUdpGwClient.c \
- udpgw_client/UdpGwClient.c
-
-LOCAL_MODULE := tun2socks
-
-LOCAL_LDLIBS := -ldl -llog
-
-LOCAL_SRC_FILES := $(addprefix ../external/badvpn/, $(TUN2SOCKS_SOURCES))
-
-##include $(BUILD_EXECUTABLE)
-include $(BUILD_SHARED_LIBRARY)
-
-# Import cpufeatures
-$(call import-module,android/cpufeatures)
diff --git a/jni/Application.mk b/jni/Application.mk
deleted file mode 100644
index 554a462..0000000
--- a/jni/Application.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-APP_ABI := armeabi x86
-APP_PLATFORM := android-16
-APP_STL := stlport_static
-NDK_TOOLCHAIN_VERSION := 4.8
diff --git a/jni/libancillary/API b/jni/libancillary/API
deleted file mode 100644
index b558995..0000000
--- a/jni/libancillary/API
+++ /dev/null
@@ -1,139 +0,0 @@
- This library provide an easy interface to the black magic that can be done
- on Unix domain sockets, like passing file descriptors from one process to
- another.
-
- Programs that uses this library should include the ancillary.h header file.
- Nothing else is required.
-
- All functions of this library require the following header:
-
- #include <ancillary.h>
-
- At this time, the only ancillary data defined by the Single Unix
- Specification (v3) is file descriptors.
-
-Passing file descriptors
-
- int ancil_send_fd(socket, file_descriptor)
- int socket: the Unix socket
- int file_descriptor: the file descriptor
- Return value: 0 for success, -1 for failure.
-
- Sends one file descriptor on a socket.
- In case of failure, errno is set; the possible values are the ones of the
- sendmsg(2) system call.
-
-
- int ancil_recv_fd(socket, file_descriptor)
- int socket: the Unix socket
- int *file_descriptor: pointer to the returned file descriptor
- Return value: 0 for success, -1 for failure
-
- Receives one file descriptor from a socket.
- In case of success, the file descriptor is stored in the integer pointed
- to by file_descriptor.
- In case of failure, errno is set; the possible values are the ones of the
- recvmsg(2) system call.
- The behavior is undefined if the recv_fd does not match a send_fd* on the
- other side.
-
-
- int ancil_send_fds(socket, file_descriptors, num_file_descriptors)
- int socket: the Unix socket
- const int *file_descriptors: array of file descriptors
- unsigned num_file_descriptors: number of file descriptors
- Return value: 0 for success, -1 for failure
-
- Sends several file descriptors on a socket.
- In case of failure, errno is set; the possible values are the ones of the
- sendmsg(2) system call.
- The maximum number of file descriptors that can be sent using this
- function is ANCIL_MAX_N_FDS; the behavior is undefined in case of
- overflow, probably a stack corruption.
-
-
- int ancil_recv_fds(socket, file_descriptors, num_file_descriptors)
- int socket: the Unix socket
- int *file_descriptors: return array of file descriptors
- unsigned num_file_descriptors: number of file descriptors
- Return value: number of received fd for success, -1 for failure
-
- Receives several file descriptors from a socket, no more than
- num_file_descriptors.
- In case of success, the received file descriptors are stored in the array
- pointed to by file_descriptors.
- In case of failure, errno is set; the possible values are the ones of the
- recvmsg(2) system call.
- The maximum number of file descriptors that can be received using this
- function is ANCIL_MAX_N_FDS; the behavior is undefined in case of
- overflow, probably a stack corruption.
- The behavior is undefined if the recv_fds does not match a send_fd* on
- the other side, or if the number of received file descriptors is more than
- num_file_descriptors.
-
-
- int ancil_send_fds_with_buffer(socket, fds, num, buffer)
- int socket: the Unix socket
- const int *fds: array of file descriptors
- unsigned num: number of file descriptors
- void *buffer: buffer to hold the system data structures
- Return value: 0 for success, -1 for failure
-
- Sends several file descriptors on a socket.
- In case of failure, errno is set; the possible values are the ones of the
- sendmsg(2) system call.
- The buffer argument must point to a memory area large enough to hold the
- system data structures, see ANCIL_FD_BUFFER.
-
-
- int ancil_send_fds_with_buffer(socket, fds, num, buffer)
- int socket: the Unix socket
- int *fds: return array of file descriptors
- unsigned num: number of file descriptors
- void *buffer: buffer to hold the system data structures
- Return value: number of received fd for success, -1 for failure
-
- Receives several file descriptors from a socket, no more than
- num_file_descriptors.
- In case of success, the received file descriptors are stored in the array
- pointed to by file_descriptors.
- In case of failure, errno is set; the possible values are the ones of the
- recvmsg(2) system call.
- The behavior is undefined if the recv_fds does not match a send_fd* on
- the other side, or if the number of received file descriptors is more than
- num_file_descriptors.
- The buffer argument must point to a memory area large enough to hold the
- system data structures, see ANCIL_FD_BUFFER.
-
-
- ANCIL_MAX_N_FDS
-
- Maximum number of file descriptors that can be sent with the sent_fds and
- recv_fds functions. If you have to send more at once, use the
- *_with_buffer versions. The value is enough to send "quite a few" file
- descriptors.
-
-
- ANCIL_FD_BUFFER(n)
- int n: number of file descriptors
-
- Expands to a structure data type large enough to hold the system data
- structures for n file descriptors. So the address of a variable declared
- of type ANCIL_FD_BUFFER(n) is suitable as the buffer argument for
- *_with_buffer on n file descriptors.
- To use this macro, you need <sys/types.h> and <sys/socket.h>. Bevare: with
- Solaris, the _XPG4_2 macro must be defined before sys/socket is included.
-
-
-Tuning the compilation
-
- This library is designed to be included in projects, not installed in
- /usr/lib. If your project does not use some of the functions, the
- TUNE_OPTS variable in the Makefile allows not to build them. It is a list
- of proprocessor options:
-
- -DNDEBUG: turn assertions off (see assert(3))
- -DSPARE_SEND_FDS: do not build ancil_send_fds
- -DSPARE_SEND_FD: do not build ancil_send_fd
- -DSPARE_RECV_FDS: do not build ancil_recv_fds
- -DSPARE_RECV_FD: do not build ancil_recv_fd
diff --git a/jni/libancillary/COPYING b/jni/libancillary/COPYING
deleted file mode 100644
index 5bcd9c2..0000000
--- a/jni/libancillary/COPYING
+++ /dev/null
@@ -1,21 +0,0 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/jni/libancillary/Makefile b/jni/libancillary/Makefile
deleted file mode 100644
index 3d32533..0000000
--- a/jni/libancillary/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-###########################################################################
-# libancillary - black magic on Unix domain sockets
-# (C) Nicolas George
-# Makefile - guess what
-###########################################################################
-
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-CC=gcc
-CFLAGS=-Wall -g -O2
-LDFLAGS=
-LIBS=
-AR=ar
-RANLIB=ranlib
-RM=rm
-CP=cp
-MKDIR=mkdir
-TAR=tar
-GZIP=gzip -9
-
-NAME=libancillary
-DISTRIBUTION=API COPYING Makefile ancillary.h fd_send.c fd_recv.c test.c
-VERSION=0.9.1
-
-OBJECTS=fd_send.o fd_recv.o
-
-TUNE_OPTS=-DNDEBUG
-#TUNE_OPTS=-DNDEBUG \
- -DSPARE_SEND_FDS -DSPARE_SEND_FD -DSPARE_RECV_FDS -DSPARE_RECV_FD
-
-.c.o:
- $(CC) -c $(CFLAGS) $(TUNE_OPTS) $<
-
-all: libancillary.a
-
-libancillary.a: $(OBJECTS)
- $(AR) cr $@ $(OBJECTS)
- $(RANLIB) $@
-
-fd_send.o: ancillary.h
-fd_recv.o: ancillary.h
-
-test: test.c libancillary.a
- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) -L. test.c -lancillary $(LIBS)
-
-clean:
- -$(RM) -f *.o *.a test
-
-dist:
- $(MKDIR) $(NAME)-$(VERSION)
- $(CP) $(DISTRIBUTION) $(NAME)-$(VERSION)
- $(TAR) -cf - $(NAME)-$(VERSION) | $(GZIP) > $(NAME)-$(VERSION).tar.gz
- $(RM) -rf $(NAME)-$(VERSION)
diff --git a/jni/libancillary/ancillary.h b/jni/libancillary/ancillary.h
deleted file mode 100644
index 636d867..0000000
--- a/jni/libancillary/ancillary.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * ancillary.c - public header
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ANCILLARY_H__
-#define ANCILLARY_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************************************************************
- * Start of the readable part.
- ***************************************************************************/
-
-#define ANCIL_MAX_N_FDS 960
-/*
- * Maximum number of fds that can be sent or received using the "esay"
- * functions; this is so that all can fit in one page.
- */
-
-extern int
-ancil_send_fds_with_buffer(int, const int *, unsigned, void *);
-/*
- * ancil_send_fds_with_buffer(sock, n_fds, fds, buffer)
- *
- * Sends the file descriptors in the array pointed by fds, of length n_fds
- * on the socket sock.
- * buffer is a writeable memory area large enough to hold the required data
- * structures.
- * Returns: -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fds_with_buffer(int, int *, unsigned, void *);
-/*
- * ancil_recv_fds_with_buffer(sock, n_fds, fds, buffer)
- *
- * Receives *n_fds file descriptors into the array pointed by fds
- * from the socket sock.
- * buffer is a writeable memory area large enough to hold the required data
- * structures.
- * Returns: -1 and errno in case of error, the actual number of received fd
- * in case of success
- */
-
-#define ANCIL_FD_BUFFER(n) \
- struct { \
- struct cmsghdr h; \
- int fd[n]; \
- }
-/* ANCIL_FD_BUFFER(n)
- *
- * A structure type suitable to be used as buffer for n file descriptors.
- * Requires <sys/socket.h>.
- * Example:
- * ANCIL_FD_BUFFER(42) buffer;
- * ancil_recv_fds_with_buffer(sock, 42, my_fds, &buffer);
- */
-
-extern int
-ancil_send_fds(int, const int *, unsigned);
-/*
- * ancil_send_fds(sock, n_fds, fds)
- *
- * Sends the file descriptors in the array pointed by fds, of length n_fds
- * on the socket sock.
- * n_fds must not be greater than ANCIL_MAX_N_FDS.
- * Returns: -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fds(int, int *, unsigned);
-/*
- * ancil_recv_fds(sock, n_fds, fds)
- *
- * Receives *n_fds file descriptors into the array pointed by fds
- * from the socket sock.
- * *n_fds must not be greater than ANCIL_MAX_N_FDS.
- * Returns: -1 and errno in case of error, the actual number of received fd
- * in case of success.
- */
-
-
-extern int
-ancil_send_fd(int, int);
-/* ancil_recv_fd(sock, fd);
- *
- * Sends the file descriptor fd on the socket sock.
- * Returns : -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fd(int, int *);
-/* ancil_send_fd(sock, &fd);
- *
- * Receives the file descriptor fd from the socket sock.
- * Returns : -1 and errno in case of error, 0 in case of success.
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ANCILLARY_H__ */
diff --git a/jni/libancillary/fd_recv.c b/jni/libancillary/fd_recv.c
deleted file mode 100644
index 46c2e69..0000000
--- a/jni/libancillary/fd_recv.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * fd_send.c - receiving file descriptors
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _XPG4_2 /* Solaris sucks */
-# define _XPG4_2
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <assert.h>
-#if defined(__FreeBSD__)
-# include <sys/param.h> /* FreeBSD sucks */
-#endif
-
-#include "ancillary.h"
-
-int
-ancil_recv_fds_with_buffer(int sock, int *fds, unsigned n_fds, void *buffer)
-{
- struct msghdr msghdr;
- char nothing;
- struct iovec nothing_ptr;
- struct cmsghdr *cmsg;
- int i;
-
- nothing_ptr.iov_base = ¬hing;
- nothing_ptr.iov_len = 1;
- msghdr.msg_name = NULL;
- msghdr.msg_namelen = 0;
- msghdr.msg_iov = ¬hing_ptr;
- msghdr.msg_iovlen = 1;
- msghdr.msg_flags = 0;
- msghdr.msg_control = buffer;
- msghdr.msg_controllen = sizeof(struct cmsghdr) + sizeof(int) * n_fds;
- cmsg = CMSG_FIRSTHDR(&msghdr);
- cmsg->cmsg_len = msghdr.msg_controllen;
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- for(i = 0; i < n_fds; i++)
- ((int *)CMSG_DATA(cmsg))[i] = -1;
-
- if(recvmsg(sock, &msghdr, 0) < 0)
- return(-1);
- for(i = 0; i < n_fds; i++)
- fds[i] = ((int *)CMSG_DATA(cmsg))[i];
- n_fds = (msghdr.msg_controllen - sizeof(struct cmsghdr)) / sizeof(int);
- return(n_fds);
-}
-
-#ifndef SPARE_RECV_FDS
-int
-ancil_recv_fds(int sock, int *fd, unsigned n_fds)
-{
- ANCIL_FD_BUFFER(ANCIL_MAX_N_FDS) buffer;
-
- assert(n_fds <= ANCIL_MAX_N_FDS);
- return(ancil_recv_fds_with_buffer(sock, fd, n_fds, &buffer));
-}
-#endif /* SPARE_RECV_FDS */
-
-#ifndef SPARE_RECV_FD
-int
-ancil_recv_fd(int sock, int *fd)
-{
- ANCIL_FD_BUFFER(1) buffer;
-
- return(ancil_recv_fds_with_buffer(sock, fd, 1, &buffer) == 1 ? 0 : -1);
-}
-#endif /* SPARE_RECV_FD */
diff --git a/jni/libancillary/fd_send.c b/jni/libancillary/fd_send.c
deleted file mode 100644
index 01de87f..0000000
--- a/jni/libancillary/fd_send.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * fd_send.c - sending file descriptors
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _XPG4_2 /* Solaris sucks */
-# define _XPG4_2
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <assert.h>
-#if defined(__FreeBSD__)
-# include <sys/param.h> /* FreeBSD sucks */
-#endif
-
-#include "ancillary.h"
-
-int
-ancil_send_fds_with_buffer(int sock, const int *fds, unsigned n_fds, void *buffer)
-{
- struct msghdr msghdr;
- char nothing = '!';
- struct iovec nothing_ptr;
- struct cmsghdr *cmsg;
- int i;
-
- nothing_ptr.iov_base = ¬hing;
- nothing_ptr.iov_len = 1;
- msghdr.msg_name = NULL;
- msghdr.msg_namelen = 0;
- msghdr.msg_iov = ¬hing_ptr;
- msghdr.msg_iovlen = 1;
- msghdr.msg_flags = 0;
- msghdr.msg_control = buffer;
- msghdr.msg_controllen = sizeof(struct cmsghdr) + sizeof(int) * n_fds;
- cmsg = CMSG_FIRSTHDR(&msghdr);
- cmsg->cmsg_len = msghdr.msg_controllen;
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- for(i = 0; i < n_fds; i++)
- ((int *)CMSG_DATA(cmsg))[i] = fds[i];
- return(sendmsg(sock, &msghdr, 0) >= 0 ? 0 : -1);
-}
-
-#ifndef SPARE_SEND_FDS
-int
-ancil_send_fds(int sock, const int *fds, unsigned n_fds)
-{
- ANCIL_FD_BUFFER(ANCIL_MAX_N_FDS) buffer;
-
- assert(n_fds <= ANCIL_MAX_N_FDS);
- return(ancil_send_fds_with_buffer(sock, fds, n_fds, &buffer));
-}
-#endif /* SPARE_SEND_FDS */
-
-#ifndef SPARE_SEND_FD
-int
-ancil_send_fd(int sock, int fd)
-{
- ANCIL_FD_BUFFER(1) buffer;
-
- return(ancil_send_fds_with_buffer(sock, &fd, 1, &buffer));
-}
-#endif /* SPARE_SEND_FD */
diff --git a/jni/libancillary/test.c b/jni/libancillary/test.c
deleted file mode 100644
index d3c1fda..0000000
--- a/jni/libancillary/test.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * test.c - testing and example program
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/socket.h>
-#include "ancillary.h"
-
-void child_process(int sock)
-{
- int fd;
- int fds[3], nfds;
- char b[] = "This is on the received fd!\n";
-
- if(ancil_recv_fd(sock, &fd)) {
- perror("ancil_recv_fd");
- exit(1);
- } else {
- printf("Received fd: %d\n", fd);
- }
- write(fd, b, sizeof(b));
- close(fd);
- sleep(2);
-
- nfds = ancil_recv_fds(sock, fds, 3);
- if(nfds < 0) {
- perror("ancil_recv_fds");
- exit(1);
- } else {
- printf("Received %d/3 fds : %d %d %d.\n", nfds,
- fds[0], fds[1], fds[2]);
- }
-}
-
-void parent_process(int sock)
-{
- int fds[2] = { 1, 2 };
-
- if(ancil_send_fd(sock, 1)) {
- perror("ancil_send_fd");
- exit(1);
- } else {
- printf("Sent fd.\n");
- }
- sleep(1);
-
- if(ancil_send_fds(sock, fds, 2)) {
- perror("ancil_send_fds");
- exit(1);
- } else {
- printf("Sent two fds.\n");
- }
-}
-
-int main(void)
-{
- int sock[2];
-
- if(socketpair(PF_UNIX, SOCK_STREAM, 0, sock)) {
- perror("socketpair");
- exit(1);
- } else {
- printf("Established socket pair: (%d, %d)\n", sock[0], sock[1]);
- }
-
- switch(fork()) {
- case 0:
- close(sock[0]);
- child_process(sock[1]);
- break;
- case -1:
- perror("fork");
- exit(1);
- default:
- close(sock[1]);
- parent_process(sock[0]);
- wait(NULL);
- break;
- }
- return(0);
-}
diff --git a/jni/pdnsd/AUTHORS b/jni/pdnsd/AUTHORS
deleted file mode 100644
index fa0454e..0000000
--- a/jni/pdnsd/AUTHORS
+++ /dev/null
@@ -1,58 +0,0 @@
-Most of pdnsd was written by Thomas Moestl (tmoestl@xxxxxxx).
-In the "par" versions large parts of the code have been revised
-and several features have been added by Paul Rombouts.
-
-Small parts of this program are based on code that was taken from nmap (IP
-checksumming), the isdn4k-utils (ippp interface uptest), glibc 2.1.2 (some
-definitions for kernel 2.2.x missing in 2.0 glibcs) and FreeBSD
-(SIZEOF_ADDR_IFREQ in netdev.c).
-nmap was written by Fyodor. The insd4k-utils were written by Fritz Elfert and
-others. The GNU C library (glibc) is copyright by the Free Software
-Foundation.
-
-The following people have contributed code:
-Andrew M. Bishop contributed support for server labels
-Carsten Block contributed 'configure'-able rc scripts
-Stephan Boettcher contributed the SCHEME= option.
-P.J. Bostley contributed patches to get pdnsd working on
- alpha
-Frank Elsner contributed rc script fixes
-Christian Engstler contributed patches for SuSE compatability
-Bjoern Fischer contributed code to make pdnsd leave the case of names
- in the cache unchanged
-Torben Janssen contributed RedHat rc scripts
-Olaf Kirch contributed a security fix for the run_as()
- function
-Bernd Leibing contributed fixes to the spec file.
-Sourav K. Mandal contributed the autoconf/automake code, gdbm
- caching facility and many suggestions
-Markus Mohr contributed Debian rc scripts
-Alexandre Nunes contributed autoconf fixes
-Wolfgang Ocker contributed the server_ip option
-Soenke J. Peters contributed patches and suggestions for RedHat
- compatability
-Roman Shterenzon contributed many helpful hints and patches for
- FreeBSD compatability.
-Andreas Steinmetz contributed the code for the query_port_start and
- query_port_end options (which I changed slightly,
- so blame any breakage on me ;)
-Marko Stolle contributed the contrib/pdnsd_update.pl script that
- makes pdnsd usable in a DHCP setup.
-Lyonel Vincent extended the serve_aliases option to support an
- arbitrary number of aliases
-Paul Wagland contributed a patches for bind9-compatability
- and for some memory leaks on error paths.
-Sverker Wiberg contributed IPv6 build fixes
-Michael Wiedmann contributed the pdnsd-ctl.8 man page.
-Ron Yorston contributed the dev-uptest for Linux ppp dial-
- on-demand devices
-Nikita V. Youshchenko contributed extensions to the "if" uptest
-Mahesh T. Pai contributed the pdnsd.8 man page.
-Nikola Kotur contributed the Slackware start-up script.
-Kiyo Kelvin Lee contributed a patch for Cygwin support.
-Rodney Brown contributed a patch for Darwin (Apple Mac OS X) support.
-Jan-Marek Glogowski contributed a patch implementing the "use_nss" option.
-
-Please look into the THANKS file for people who helped me in various ways on
-this project.
-If this list is incomplete, pease drop me a mail!
diff --git a/jni/pdnsd/COPYING b/jni/pdnsd/COPYING
deleted file mode 100644
index 94a9ed0..0000000
--- a/jni/pdnsd/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- 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 <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/jni/pdnsd/COPYING.BSD b/jni/pdnsd/COPYING.BSD
deleted file mode 100644
index 99fe14a..0000000
--- a/jni/pdnsd/COPYING.BSD
+++ /dev/null
@@ -1,26 +0,0 @@
-A small part of the pdnsd source is licensed under the following BSD-style
-license:
-
-Copyright (C) 2001 Thomas Moestl
-
-This file is part of the pdnsd package.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/jni/pdnsd/ChangeLog b/jni/pdnsd/ChangeLog
deleted file mode 100644
index fe77465..0000000
--- a/jni/pdnsd/ChangeLog
+++ /dev/null
@@ -1,3304 +0,0 @@
-2012-04-23 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Refine the return values of p_dns_cached_resolve(), p_dns_resolve() and
- p_recursive_query() so that they distinguish between answers found in
- the cache and replies obtained by querying other servers.
- This, among other things, can be used to prevent data that was recently
- obtained from the cache needlessly being added back to the cache.
-
-2012-04-22 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in
- On the Linux platform, check if we can compile and link with the
- -pthread flag instead of linking with -lpthread.
-
-2012-04-21 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- When following the delegation chain trying to get an authoritative
- answer, pdnsd would answer with SERVFAIL if it failed to get a reply
- from the last server in the chain. Instead pdnsd will now use the last
- reply in the chain with RCode=0 that raised the AA or RA flag, if there
- is one.
-
-2012-04-19 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- In report_cache_stat(), make copies of volatile data to get a
- consistent data set before making calculations with cache size and
- entry numbers.
-
-2012-04-16 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/netdev.c
- If we can't open /proc/net/if_inet6 in is_local_addr() log a warning
- message.
-
-2012-04-15 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- The code checking for duplicate IP addresses obtained from NS records
- in auth_ok() has been slightly optimized.
-
-2012-04-12 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- When resolving nameservers obtained from NS records, allow pdnsd to use
- more than one IP address per nameserver.
- In rare cases, using just one IP address for each nameserver will cause
- unnecessary resolve failures if the address chosen for each nameserver
- happens to be unreachable while the other addresses would lead to
- successful resolution, as demonstrated by Yuri Vorobyev.
-
-2012-03-16 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- When adding RR records one by one to a cache entry using add_cent_rr(),
- use the smallest ttl value in case of conflicting ttls.
- Code for local/nonlocal conflict resolution has been taken out of
- add_cent_rr_int() and put into add_cent_rr() and cr_check_add()
- which should be slightly more efficient.
-
-2012-03-15 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Enforcing strict RFC 2181 compliance by rejecting all the answers
- with inconsistent ttl timestamps can cause undesirable resolve failures.
- I have tried to implement a more compromising solution, whereby
- inconsistent answers that should be normally rejected are still never
- cached, but are nevertheless used as intermediary or temporary results
- if all else fails.
-
-2012-03-13 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Fixed a typo in rr_to_cache() that caused pdnsd to fail to compile when
- configured with the --enable-strict-rfc2181 option.
- Thanks to Gonzalo L. R. for reporting this problem.
- Also changed the return value of rr_to_cache() from a simple boolean to
- an RC code in order to properly distinguish between memory allocation
- errors and time-stamp inconsistencies.
-
-2012-02-21 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- If we have used EDNS in a query and the remote server answered
- with rcode "format error", try again with the OPT pseudo-record
- removed from the additional section of the query.
-
- Also fixed a bug in p_exec_query() that caused pdnsd to behave
- as if every reply with a non-empty additional section contained
- an OPT record.
-
-2012-02-15 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/helpers.c,src/helpers.h,src/icmp.c,
- src/ipvers.h,src/main.c,src/netdev.c
- Introduced a new macro SEL_IPVER() to reduce some of the clutter in the
- code caused by having to support both IPv4 and IPv6.
-
-2012-01-31 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in
- Add AM_PROG_CC_C_O line to configure.in to prevent automake warning.
-
-2012-01-29 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- In report_cache_stat(), add the average number of bytes used per cache
- entry when reporting the cache status, as suggested by M. Galabant.
-
-2012-01-28 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c
- Cleaned up the code a bit to avoid warning messages when
- compiling with '-Wall -Winline' flags.
-
-2012-01-18 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c
- Set the default of the edns_query option to false.
-
-2011-07-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Use a slightly more sophisticated merge-sort algorithm in sort_rrl().
-
-2011-05-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- In compose_answer(), also add an OPT pseudo-RR to the additional section
- of a NXDOMAIN reply when appropriate.
-
-2011-05-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/cache.h,src/dns_query.c,src/status.c
- Make the dns_cent_t struct more compact by putting the fields that are
- only used for either non-existent or existent domains, but not both,
- into a union so that these fields can share memory.
- When saving the cache to file, only write the TTL and time-stamp for
- a whole domain when it is negatively cached.
-
-2011-05-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/cache.h,src/dns_query.c
- At the request of Andrei Caraman, the TTL of a negatively cached domain
- is now adjusted in accordance with the min_ttl and max_ttl options, just
- as it is done for (negatively) cached records.
- Additional change to the TTL policy is that for negative records (and
- negative domains) the neg_ttl setting overrides min_ttl if
- neg_ttl < min_ttl.
-
-2011-04-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- Fixed memory leak that can occur when the configuration file is reloaded
- and an error is encountered while parsing the definition of a TXT
- record.
-
-2011-03-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/make_rr_types_h.pl,src/cache.h,src/cache.c,src/dns_answer.c
- Introduced arrays rrmuiterlist and rrcachiterlist to make iterating
- over all possible RR types in a cache entry in strict ascending order
- a little more efficient.
-
-2011-03-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c,src/conf-parser.c,src/conf-keywords.h
- Implemented a new config option "outgoing_ip", which
- makes it possible to bind outgoing connections to
- a specific interface.
-
-2011-02-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/netdev.c
- Fixed UDP socket descriptors leak in the implementation of
- is_local_addr() for the FreeBSD platform. Thanks to Ashish Shukla for
- reporting this bug.
-
-2011-02-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- In purge_all_rrsets(), also free the rrext array if it has become empty after
- purging all the RR sets.
-
-2011-02-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/conf-parser.c,src/conf-keywords.h,
- src/dns_query.c,src/dns_query.h,src/servers.c
- Changed "edns_query" from a "global" option to a "server"
- configuration option.
-
-2011-02-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/dns_query.c,src/dns_query.h,src/servers.c,
- src/conf-parser.c
- The query uptest sometimes fails because some DNS servers are configured
- to ignore empty queries. The new config option "query_test_name" makes
- it possible to query for a specific name instead.
-
-2011-02-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- When processing a reply from a remote name server which seems to delegate
- to other name servers, check if the names for which NS records have
- been supplied have locally defined NS records. If so, the local
- records will now override those supplied by the remote server.
-
-2011-01-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- Added support for defining TXT records in the configuration file.
-
-2011-01-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Do not cache additional records from a response that is rejected because
- it contains IP addresses in the reject list, even when the reply
- is processed as a NXDOMAIN reply.
-
-2011-01-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- Modified the function scan_string() to allow back-slashed escape
- sequences in strings.
-
-2011-01-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c,src/conff.h,src/conff.c,
- src/conf-parser.c
- Added support for EDNS (Extension mechanisms for DNS).
- Currently this is only useful for allowing UDP message sizes
- to be larger than 512 bytes.
-
-2011-01-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- To avoid frequent reallocs when composing a DNS reply message,
- grow the message buffer in multiples of a certain minimum chunk size.
-
-2011-01-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c,src/dns.h,src/dns_answer.c
- Extended debugging info with DNS-message lengths and flags of incoming
- messages.
-
-2011-01-17 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/conf-parser.c,src/dns_answer.c
- Made "ignore_cd" option obsolete. It is now effectively always on.
-
-2010-12-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/cache.h,src/dns_answer.c,src/dns_query.c,
- src/make_rr_types.pl,src/rr_types.in,src/rr_types.c
- The array of pointers to rr_set_t structs in the dns_cent_t struct
- contains mostly null pointers in practice, so is somewhat
- inefficient in storage usage. This problem is exacerbated if we add
- support for caching more RR-types. To ameliorate to the problem
- I have decided to split the array in two, with one part fixed in the
- dns_cent_t struct as before, and an extension part that will be
- separately allocated, if necessary. If the extension part is used only
- for very rarely cached types, in most cases the extension array will not
- need to be allocated thus hopefully saving memory overall.
- The lookup tables which are necessary to support the new cache entry
- structure are cumbersome to write by hand, so I have written a perl
- script to do this automatically. As an additional benefit, which RR
- types are cache-able is now configurable for each type separately via
- rr_types.in.
-
-2010-03-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Using randomized source ports for outgoing queries in IPv6 mode failed
- with the warning "Out of ports in the range 1024-65535, dropping query!",
- because the pdnsd tried to bind to the fixed port for incoming queries,
- instead of the dynamically chosen port. This is a very old bug, but it
- has only become apparent since source port randomization has become the
- default.
- Thanks to Philip-André Fillion, Phil Sutter, Radoslaw Szkodzinski and
- others for reporting this bug and sending patches.
-
-2009-12-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c,src/status.h,src/pdnsd-ctl/pdnsd-ctl.c
- Add a magic number to pdnsd-ctl command codes to guard against
- possible incompatibility between the pdnsd-ctl utility and the
- pdnsd server.
-
-2009-10-18 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Make root-server discovery a little more fault tolerant, i.e. if some
- of the root-server names don't resolve don't necessarily reject the
- whole result.
-
-2009-10-17 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/servers.c,src/dns_query.c,src/dns_query.h
- Implemented automatic root-server discovery, which can now be configured
- by setting "root_server=discover".
-
-2009-06-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c,src/consts.c,src/consts.h,src/conf-parser.c
- Changed the default behaviour of the "neg_rrs_pol" option. The default
- used to be to only cache records negatively in case the AA (authoritive
- answer) bit in the reply was set. The new default is to also allow
- negative caching in case the reply has the RA (recursion available) bit
- set and the query had the RD (recursion desired) bit set.
- This gives the behaviour that is usually wanted in case "proxy_only=on"
- is set without having to set "neg_rrs_pol=on", which can be more
- problematic. The new default can be explicitly set using
- "neg_rrs_pol=default". The values "on","off" and "auth" are also
- still available.
-
-2009-06-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/dns_answer.c,src/conf-parser.c,src/conf-keywords.h
- Included a patch contributed by Andreas Steinmetz that implements a new
- global configuration option "ignore_cd". pdnsd used to check that the CD
- bit in the DNS header of queries is zero and return the error code
- "format error" if it is not. However, considering the meaning of this
- bit today it appears to be harmless to ignore it, so the new "ignore_cd"
- is on by default. Setting "ignore_cd=off" gives the earlier strict
- behavior.
- Also renamed the the Z1, AU, Z2 bits to correspond with their modern names
- CD, AD, Z.
-
-2008-12-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * pdnsd-1.2.7/src/dns_query.c
- If pdnsd receives a SERVFAIL response with a non-empty answer section,
- use the information tentatively if no better response is available.
- The previous behaviour was to discard the reply completely, which could
- cause failure to resolve some names.
- Thanks to Rafal Wijata for providing an example involving PowerDNS servers
- replying with CNAME records.
-
-2008-09-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- In p_dns_resolve(), try to reduce the burden on root servers further for
- names ending in "arpa".
-
-2008-08-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- In p_exec_query(), if the reply from a remote name server is negative
- (either because the rcode is NXDOMAIN or because the answer section
- contains no records for the queried name), ignore the remaining records
- in the answer section (in particular do not add them to the cache).
-
-2008-07-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/dns_query.c
- Made the default of the configuration option query_port_start equal to
- 1024. Also improved the algorithm used by pdnsd to select random source
- ports to ensure that each (free) port gets an equal chance of being
- selected. This should guarantee random source ports in the range
- 1024-65535, making pdnsd less vulnerable to some of the issues described
- in CERT VU#800113.
- The old situation, where pdnsd lets the kernel select the source ports,
- is still available by specifying query_port_start=none.
-
-2008-07-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Fixed a dangling pointer bug in p_exec_query(), which could cause pdnsd
- to crash when processing a long reply with many entries in the answer
- section.
-
-2008-05-12 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c,src/conff.c
- Added a recursive-depth counter to the read_config_file() and
- confparse() functions to prevent the possibility of infinite
- recursion when processing include files.
- In confparse(), warn when in a server section the root_server option is
- set in combination with policy=simple_only or policy=fqdn_only.
-
-2008-05-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/ipvers.h
- Included a patch contributed by Georg Schwarz which selectively undoes
- a Debian patch contributed by Juliusz Chroboczek on platforms for which
- the IPV6_RECVPKTINFO macro is not defined (e.g. MacOS X).
-
-2008-05-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- The pdnsd-ctl add command can now also be used to define NS records.
- A wildcard record defined with this command now behaves the same way as
- one defined in the config file.
-
-2008-05-07 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c,src/conf-keywords.h,src/conff.c
- Added the ability to process "include" sections in the configuration
- file. This makes it possible to place local definitions in separate
- files and include them from the main configuration file.
-
-2008-05-05 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conf-parser.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- Implemented two new pdnsd-ctl commands, which make it easier to add
- definitions to the pdnsd cache at run time. "pdnsd-ctl include" is
- similar to "pdnsd-ctl config" but only processes configuration sections
- that effect the cache and disallows global and server sections.
- "pdnsd-ctl eval" directly parses its string arguments as if they were
- part of a configuration (include) file.
-
-2007-09-15 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.h,src/dns_answer.c,src/dns_query.c
- Changed the declarations of various packed structs, by moving the
- __attribute__((packed)) specifiers from the field level to the struct level.
- This was necessary to get the correct value for sizeof(rr_hdr_t) when
- compiling with gcc for the ARM architecture.
- Thanks to Dirk Armbrust for reporting the problem and supplying the solution.
-
-2007-08-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Applied a Debian patch contributed by Juliusz Chroboczek which
- reportedly fixes a problem with pdnsd running in IPv6 mode
- (IPV6_RECVPKTINFO instead of IPV6_PKTINFO).
-
-2007-08-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- When resolving a name recursively, pdnsd would stop querying further
- name servers as soon as it received a reply with the authority (aa) flag
- set. Unfortunately, it appears this flag is sometimes raised erroneously
- in replies. I have implemented a work-around that ignores the aa flag
- when there appears to be a clear delegation to a sub-domain.
- Thanks to Nico Erfurth for reporting this problem.
-
- It appears that pdnsd would also fail to consult servers in the authority
- section when configured with neg_rrs_pol=on. This has been fixed.
-
-2007-08-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c
- Made the matching of pdnsd-ctl command names and most of the arguments
- case-insensitive.
-
-2007-07-22 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Instead of sharing the responsibility for freeing the answer buffer in
- case of an error amongst different functions, only free it in
- compose_answer().
-
- * configure.in, src/Makefile.am, src/test/Makefile.am
- Merged patch contributed by Pierre Habouzit to deal with CFLAGS the
- automake way (allowing packagers to override CFLAGS properly).
-
-2007-07-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- For each target name in a SRV record in the answer section, add
- addresses to the additional section of the response, as is recommended
- by the RFCs.
-
-2007-07-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/list.c,src/list.h
- Made modifications to the implementation of dynamic arrays, which
- should ensure proper alignment on all supported architectures.
-
-2007-07-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * Upgraded pdnsd's license to GPL version 3.
-
-2007-07-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/dns_query.c
- The data field of the rr_bucket_t struct is now aligned such that
- it possible to use straightforward assignment to copy IP addresses,
- making memcpy unnecessary for this purpose.
-
-2007-07-07 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- If pdnsd fails to connect to a name server using a IPv6 address, it will
- now retry the connection using a IPv4 address, if available. This allows
- pdnsd to recover from situations where IPv6 connectivity is temporarily
- unavailable, but IPv4 connectivity still functions.
- Thanks to Andreas Ferber for reporting this problem.
-
-2007-07-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- I have reordered the arguments of the add_rr() and related
- functions to make them more consistent with each other.
-
-2007-07-03 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/hash.c
- pdnsd will no longer immediately abort in add_dns_hash() if it fails
- to allocate memory for a new hash entry.
-
-2007-07-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/consts.c,src/consts.h,
- src/conf-parser.c,src/conf-keywords.h,src/dns_query.c
- Implemented the new "reject", "reject_policy" and "reject_recursively"
- options for the server section of the configuration file.
-
- * src/ipvers.h,src/conf-parser.c,src/dns.c,src/status.c,
- src/pdnsd-ctl/pdnsd-ctl.c
- Allow local AAAA records to be defined even if pdnsd is compiled
- without --enable-ipv6, provided there is sufficient support in the
- C libraries and --disable-new-rrs was not used.
-
-2007-06-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Previously, when the answer buffer was realloced in add_rr(), an
- extra 2 bytes used to be reserved, which are unnecessary, as far
- as I can tell. I have decided to do without these extra 2 bytes,
- which originate from Thomas Moestl's code. As compensation, I have
- added extra PDNSD_ASSERT() statements to check that the answer
- buffer does not overflow.
-
-2007-06-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c, src/pdnsd-ctl/pdnsd-ctl.c
- Extended the pdnsd-ctl 'add a' and 'add aaaa' commands to allow
- multiple IP addresses to be specified.
-
-2007-06-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conff.h,src/conf-parser.c,src/conf-keywords.h,
- src/dns_query.c
- Implemented a new option for the server section of the configuration
- file: randomize_servers.
-
- * src/servers.c
- Improved the debug messages in uptest().
-
-2007-01-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/icmp.c
- Fixed up the code implementing the ping test in icmp.c,
- which was broken for 64-bit systems.
- Thanks to Michael Uleysky for reporting this bug.
-
-2007-01-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- auth_ok() now returns 1 if the cache entry has the DF_NEGATIVE flag set,
- without providing a list of authoritative servers to continue querying.
- Otherwise if we receive a non-authoritative NXDOMAIN reply and pdnsd
- is configured with neg_domain_pol=on, pdnsd will continue to try to
- get an authoritative answer. The intention is that pdnsd
- stops querying as soon as it gets an "unknown domain" answer.
-
-2006-04-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c
- pdnsd would segfault if it tried to call log_message() (via the
- log_warn() and log_error() macros) before the FILE pointer to the debug
- output stream was properly initialized.
- Thanks to Thomas Cort for discovering this problem and suggesting a fix.
-
-2006-04-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c,src/helpers.c,src/conff.h,src/conff.c
- I have included a patch contributed by Jan-Marek Glogowski, that
- implements the configuration option "use_nss". With use_nss=off pdnsd
- will avoid system functions that may use NSS (i.e. initgroups()), which
- may need DNS for LDAP lookups, which can lead to long timeouts and
- stalls if pdnsd itself is used for the DNS lookup.
-
-2006-03-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Negative caching of RR sets is now also supported with lean_query=off.
-
-2006-03-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c,src/conf-parser.c,src/main.c
- I have implemented a new query method: udp_tcp. With this method a UDP
- query is tried first and, if the UDP answer is truncated, the query is
- repeated using TCP. This is the behaviour that seems to be recommended
- by the DNS standards. However, pdnsd wil not discard the truncated
- answer if the TCP requery fails.
-
-2006-03-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Previously, pdnsd would add at most one additional A (and AAA) record
- for each record in the answer and authority sections. At the request of
- Angel Marin, pdnsd will now add all A and AAA records it can find in the
- cache for each name that produces additional records.
-
-2006-01-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- compose_answer() would leak memory if the query contained
- an unsupported QTYPE or QCLASS. This has now been fixed.
-
-2005-12-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in
- TCP-query support is now compiled in by default.
- It can still be disabled using the configure option
- --disable-tcp-queries.
-
-2005-12-23 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Queries received from clients with non-empty answer, authority or
- additional sections are now treated as malformed and rejected with
- rcode 1 (format error).
-
-2005-11-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- Time intervals in the configuration files can now be expressed in
- seconds, minutes, hours, days and weeks, using the suffixes
- s,m,h,d,and w.
-
-2005-10-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/consts.c
- In the pdnsd configuration file, true/false and yes/no are now accepted
- as synonyms for the constants on/off.
-
-2005-08-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c
- I have fixed a potential buffer overflow problem that could occur with
- the 'pdnsd-ctl dump' command.
- In case of the root domain, the function rhn2str() would write 2 bytes
- to the output buffer even if size==1. Theoretically (under pathological
- circumstances) this could have allowed the dbuf buffer in the function
- dump_cent() to overflow by one byte.
-
-2005-08-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * acconfig.h,src/cache.c,src/conff.c,src/conf-parser.c,src/dns.c,
- src/dns_answer.c,src/dns_query.c,src/error.h,src/helpers.c,src/main.c,
- status.c
-
- It appears the newer versions of gcc won't convert a pointer to char
- into a pointer to unsigned char and vice versa without complaining.
- The changes I have made should get rid of these distracting warning
- messages. Unfortunately I had to introduce casts in some cases,
- which reduces type safety :-(.
-
-2005-08-16 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.h
- Some changes were made to the endianess detection code to
- address problems on Mac OS X v10.4 Tiger.
-
-2005-08-15 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in
- Some changes where made to address the reported problems with the
- configure script on Mac OS X v10.4 Tiger.
-
-2005-08-05 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c,src/dns_answer.c
- The output of the 'pdnsd-ctl status' command now includes some
- statistics on the number of query threads.
-
-2005-07-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c
- It appears that sigwait() can return EINTR under certain conditions.
- This explains the problems reported by Sanjoy Mahajan with strace
- and ACPI S3 sleep, which both caused pdnsd to exit prematurely.
- The return value of sigwait() is now checked and sigwait() is retried
- if the return value is EINTR.
-
-2005-07-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- It appears that some servers that do not support recursive queries
- answer with "query refused" instead of "not supported". The
- p_exec_query() function now takes that possibility into account.
-
-2005-07-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- In the processing of queries, I will make a distinction between
- recoverable errors and non-recoverable ones (typically caused by out of
- memory conditions). In the case of non-recoverable errors, no attempt to
- query alternative name servers is made.
-
-2005-06-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- In p_recursive_query(), as soon as one of the servers in the q list
- replied "no error" or "name error", only this reply was examined and
- the other servers in the q list were ignored. Joshua Coombs has brought
- to my attention that this strategy sometimes fails when this reply is not
- authoritative and doesn't contain any usable references to name servers
- in the authority section.
- I have modified p_recursive_query() to allow pdnsd to continue querying
- the remaining servers in the q list as long as we haven't received an
- authoritative answer or usable authority information. This will allow
- pdnsd to arrive at the correct answer in some cases where it would
- formerly fail.
-
-2005-06-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c
- The "pdnsd dump" command may now also be given an argument
- consisting of a name beginning with a dot. This will dump information
- about all names in the cache ending in the given name. An argument
- consisting of a name without a leading dot will only give information
- about the exact name, as it did before.
-
-2005-06-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/servers.c,src/status.c
- All uptests are now conducted by the server status thread. If a retest
- is requested via a "pdnsd-ctl server", an existing server status thread
- is signaled or a new server status thread is spawned if the old one has
- exited. This has the effect that a "pdnsd-ctl server label retest"
- command will now return immediately without waiting for the tests to
- finish.
-
-2005-06-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c,src/servers.c,src/servers.h
- At the request of Al-Junaid Walker I have added a new configuration
- option for the uptest interval. With "interval=ontimeout" the server is
- not tested at startup/reconfig, or at regular intervals, but only after
- a DNS query to a server times out. However, once a server is declared
- dead it is never considered again unless it is revived using a
- "pdnsd-ctl config" or "pdnsd-ctl server" command.
-
-2005-06-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/servers.c,src/dns_query.c,src/icmp.c
- During an uptest the server configuration data is locked. Especially
- with ping or query uptests of unresponsive servers this means that the
- execution of "pdnsd-ctl config" or "pdnsd-ctl server" commands can be
- delayed for a long time (or even time out). I have made modifications
- that allow a "pdnsd-ctl config" or "pdnsd-ctl server" commands to
- interrupt pending uptests to allow these commands to proceed without
- delay in most cases.
-
- * src/thread.h
- Use the POSIX sigaction() instead of signal() to install signal handlers.
-
-2005-06-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c
- I have defined a struct dns_msg_t that includes a message length field.
- In the case of sending a DNS message over TCP, we no longer need a
- separate write() call to send the message length. This prevents possible
- packet fragmentation.
-
-2005-06-07 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- The query_method=tcp_udp option only used to work with cooperative name
- servers, i.e. servers that either send back a TCP reply or explicitly
- refuse the TCP connection request. This wasn't sufficiently satisfactory
- in practice, because some name servers are completely unresponsive to TCP
- connection requests. I have made modifications to allow pdnsd to try UDP
- queries in case TCP connections time out. When a short server timeout is
- combined with a global timeout that is at least twice as long, this may
- allow a query to a name server that only responds to UDP queries to
- succeed with query_method=tcp_udp.
-
-2005-04-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/hash.c,src/conff.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- The "pdnsd-ctl empty-cache" command now accepts additional arguments;
- these are interpreted as include/exclude names. During execution of the
- command the name of each cache entry is matched against the names in the
- include/exclude list. If the name ends in a name to be included, the
- cache entry is deleted, otherwise not.
- This feature was added at the request of Joshua Coombs.
-
-2005-04-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c, src/hash.c
- pdnsd will now (temporarily) unlock the cache between emptying hash
- buckets, this should allow pdnsd to remain responsive while executing
- the "pdnsd-ctl empty-cache" command. However, this only applies to DNS
- queries; pdnsd will not accept any new pdnsd-ctl commands while a
- pdnsd-ctl command is still running.
-
-2005-03-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in, src/hash.h
- I have added a new configure option --with-hash-buckets=...
- This makes it possible to specify a different number of
- hash buckets without editing the source files.
-
-2005-03-17 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/error.c
- When running in both daemon and debug mode, print warning and
- error messages to debug file as well as the syslog.
-
-2005-03-15 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Only call pthread_setspecific() in debug mode, because
- pthread_getspecific() is also only used in debug mode.
- If pthread_setspecific() fails, treat this as a non-fatal error.
-
-2005-03-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in
- On Linux systems the configure script will now try to detect automatically
- whether the system implements the Native POSIX Thread Library, but
- the method is not necessarily foolproof.
-
- * src/dns.c
- Local PTR records generated for resolving numeric IPv6 addresses back into
- names, are now based on ip6.arpa instead of ip6.int, because the latter domain
- will be phased out eventually.
-
-2005-03-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * Makefile.am,src/cache.c
- Create an empty cache-file at install time and don't complain about empty
- cache files at start up.
-
-2005-02-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * acconfig.h,configure.in,src/conf-parser.c,src/conff.h,src/dns.h,
- src/dns_answer.c,src/dns_query.c,src/error.h,src/helpers.h,src/icmp.c,
- src/ipvers.h
-
- I have applied some changes to the code proposed by Rodney Brown to improve
- portability. In particular, pdnsd should now compile on the Darwin platform
- (Apple Mac OS X).
- To support some of these changes, the source package is now built with a
- slightly more modern version of autoconf (2.57) and automake (1.6.3).
-
-2005-01-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c,src/dns_answer.c,src/dns_query.c
-
- I have added some extra debug code to make it easier to discover the
- reason that pdnsd considers a query or reply malformed (format error).
-
-2005-01-12 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c,src/dns_answer.c,src/dns_query.c
-
- I have extended some debug code contributed by Kiyo Kelvin Lee to dump
- the data received by pdnsd in debug mode (queries from clients, replies
- from name servers). Because this will give very verbose debug output,
- I've arranged it so that this data dump only occurs if pdnsd has been
- configured and compiled with --with-debug=9 and pdnsd has been called
- with -v9.
-
- Additionally, in the case that pdnsd rejects a reply from a name server
- because it is not well formed, I have refined the debug messages to
- distinguish between format errors due to unexpected truncation and
- others kinds of format errors.
-
-2004-10-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/rr_types.c
- I have included some changes proposed by Joseph Pecquet to address
- the compilation problems reported by FreeBSD users.
-
-2004-10-18 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * acconfig.h,configure.in,src/helpers.c,src/helpers.h,src/dns.h
- I have merged a patch for CYGWIN support by Kiyo Kelvin Lee into
- my version of the code.
-
-2004-10-15 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Invalidating local records with the pdnsd-ctl did not work the way the
- documentation described. An invalidated local record would be always be
- purged at the next lookup, thus invalidation would practically have the
- same effect as deletion. An invalidated local record is of no use at all and
- would occupy space until it is purged during a lookup (but not by purge_cache).
- The function invalidate_record() now behaves as the documentation describes, i.e.
- invalidation of local records has no effect.
-
-2004-09-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * doc/pdnsd.conf.5.in
- A new man page describing the format of the pdnsd config file has been
- added to the pdnsd package. I've used a customized Perl script to generate
- one automatically from the html documentation.
-
-2004-09-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/hash.c
- The cache entries in a hash chain are now stored in order of increasing long hash
- value. The advantage is that if an name is looked up that is not present in the
- cache, this can be done by comparing with only half (on average) of the number
- of entries in the hash chain. Not a huge speed up, but still worth while, I think.
- Additionally, the number of hash computations for each add_cache() call has
- been halved.
-
-2004-09-11 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- insert_rrl() will no longer add local records to the rr_l list, because
- purge_cache() ignores them anyway.
-
-2004-09-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.h,src/cache.c,src/dns_query.c,src/dns_answer.c,src/conf-parser.c
- I've started using GETINT16,GETINT32,PUTINT16,PUTINT32 macros, which are based
- on the NS_GET/NS_PUT macros that can be found in the BIND source, instead of memcpy
- for fetching and storing non-aligned integer data.
-
-2004-09-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- New pdnsd-ctl command: "pdnsd-ctl dump" will print information about all the
- entries contained in the cache.
- "pdnsd-ctl dump <name>" will only print entries belonging to <name>.
- The data fields of the more common rr-types will be printed in human readable
- form, the remaining ones in a hexadecimal representation.
- With thanks to Dan Jacobson for suggesting this feature.
-
-2004-08-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- At the suggestion of Dan Tihelka, I have expanded to the server_ip= option
- to allow the name of an interface to be specified instead of an IP address.
- pdnsd will not bind to the interface name, but will lookup the address the
- interface has at start up, and listen on that address. If the address
- of the interface changes while pdnsd is running, pdnsd will not notice that.
-
-2004-08-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/cache.c
- I've reversed the meaning of the CF_NOAUTH and renamed it CF_AUTH.
- I've also added a domain level flag DF_AUTH, which is used to
- mark cache entries obtained from authoritave replies in response to
- a query of type * (all)..
-
-2004-08-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've changed the format of the cache file. A typical cache entry has empty
- sets for most RR types (even more if DNS_NEW_RRS is defined). In the old
- format, each empty RR set was represented by a zero byte.
- In the new format only non-empty sets are respresented, leading
- to a (modest) reduction is size.
-
-2004-08-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- New option for "rr" sections in the config file: reverse=on/off.
- If you want a locally defined name to resolve to a numeric address and vice
- versa, you can now achieve this by setting reverse=on before defining the
- A record, making it unnecessary to define a seperate PTR record for the reverse
- resolving.
-
-2004-08-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/cache.c,src/conf-parser.c,src/dns_query.c
- At the request of Daniel Black, I have added support for defining local wildcard records
- in pdnsd. The only type supported presently is records beginning with '*.'.
-
-2004-08-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/hash.c,src/cache.c,src/dns_query.c,src/dns_answer.c
- Sampo Lehtinen has remarked that pdnsd sometimes failed to resolve classless
- reversed-delegated IP addresses, and that this has something to do with the fact
- that pdnsd did not accept '/' characters in domain names. After reading Sampo's
- and Thomas' remarks, and also rfc2317 and some of the rfc's referenced in rfc2317,
- I decided pdnsd should place no restrictions at all on the types of characters it
- allows in domain names, only on the lengths of the byte sequences.
- This led me to make some quite extensive internal changes to pdnsd. Among other
- things domain names are now stored in transport format (sequences of bytes preceded
- by length bytes) instead of C strings. This is also more efficient because there
- is no need any more to convert from one representation to the other, except when
- reading the config file, interacting with pdnsd-ctl or running in debug mode.
- Conversion between the two representations isn't always possible, though.
- For example, domain names in transport format might contain non-printable characters.
- These are now printed as escape sequences (three octal digits preceded by a back slash).
- Presently there are still restrictions on the characters in the domain names that can
- be defined in local records. I doubt this will ever be considered a problem.
-
-2004-08-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- The code for handling NXT records was flawed. A response from a remote server
- containing NXT records (even well-formed ones) could cause pdnsd to crash.
- The code for handling NAPTR records contained incorrect PDNSD_ASSERT statements,
- which could cause pdnsd to abort unnecessarily.
-
-2004-07-25 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/list.h,src/list.c,src/dns.c,src/dns_query,src/dns_answer.c
- I've noticed that some of the (dynamic) arrays that pdnsd uses are quite sparse.
- Instead of using an array structure with elements that are large enough to contain
- the largest possible domain name, I've implemented a "list" data structure that
- is more compact. The elements of a list can only be accessed sequentially from
- beginning to end, but it allows more efficient memory use in case the names are
- significantly shorter that the maximum.
-
-2004-07-22 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c
- I've expanded pdnsd's configuration options by adding support in pdnsd for reading
- /etc/resolv.conf style files. Instead of specifying IP addresses in a server section,
- the option "file=<filename>" can be used.
- The IP addresses in the lines beginning with "nameserver" will be added to
- the list of address for that section, the remaining lines will be ignored.
- To avoid the possibility that pdnsd will query itself, local addresses are skipped
- (unless pdnsd is configured to listen on a different port number).
-
-2004-07-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/cache.c,src/dns_query.c,src/conf-parser.c
- New option for "server" sections in the config file: root_server=on/off.
- In case a server section contains only addresses of root servers, which
- usually only give the nameservers of top level domains in their reply,
- setting root_server=on will enable certain optimizations. This involves using
- cached information to reduce queries to the root servers, thus speeding up
- the resolving of new names. This option is also necessary to make the
- delegation_only option work in combination with root servers.
-
-2004-07-16 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- New pdnsd-ctl command: "pdnsd-ctl empty-cache" will make pdnsd delete its entire
- cache, freeing all entries. This is useful for debugging purposes, or in situations
- where you suspect that stale cache entries are causing you problems, but you are not
- sure which ones.
-
-2004-07-11 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/dns_query.c
- I've removed the use of the function add_cache_rr_add(), which was used to
- add additional RR records to the cache one at a time. I've changed the code
- in dns_query.c such that additional (or off-topic) records are first collected
- in arrays of dns_cent_t structures, and then added to the cache using add_cache().
- With this approach only one function, viz. add_cache(), is used for adding
- new entries to the cache, which I believe leads to a cleaner programming
- interface. Added benefit is that query serial numbers are no longer
- necessary.
-
-2004-07-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/cache.c,src/dns_query.c,src/dns_answer.c
- I've added two new field to the dns_cent_t struct, namely c_ns and c_soa.
- These will be used to remember references to NS and SOA records in the authority
- sections of replies from remote name servers.
- This information can be used by pdnsd to fill in the authority section of its
- own reply.
-
-2004-06-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c,src/servers.c,src/consts.c
- I've added an new server availability test which can be selected with "uptest=query".
- This can be useful as an alternative to "uptest=ping" in case the remote server does not
- respond to ICMP_ECHO requests at all, which unfortunately is quite common these days.
- "uptest=query" causes pdnsd to send an empty query to remote nameservers. Any well-formed
- response (apart from SERVFAIL) within the timeout period will be interpreted as a sign that the
- server is "up".
- In a sense this new availability test can actually be considered more reliable than the
- other ones that pdnsd supports.
- With thanks to Juliusz Chroboczek for suggesting this feature.
-
-2004-06-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c
- Don't use getpwnam() while we are multi-threaded, because it returns a pointer to
- a statically allocated structure. I will use getpwnam_r() instead, which is thread
- safe. Unfortunately there seem to be some portability problems with getpwnam_r().
- For those platforms that lack getpwnam_r(), I will keep the old code with getpwnam()
- as an alternative.
-
-2004-06-23 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/servers.c
- Check that the number of IP addresses in a server section is nonzero before
- testing servers for availability. Otherwise pdnsd could crash in debug mode.
-
-2004-06-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conff.c,src/conf-parser.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- New pdnsd-ctl command: "pdnsd-ctl config" will make pdnsd re-load its configuration file.
- In most cases (but there are still some exceptions) this is preferable
- to restarting pdnsd after making changes to the configuration file.
- An important advantage is that there should be no perceptible interruption in the dns service
- when using the reload command.
- An alternative config file can be specified with "pdnsd-ctl config <filename>".
-
-2004-05-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c,src/dns_query.h
- I've made an adjustment to p_recursive_query() and related functions, so that
- when pdnsd chases name servers in pursuit of authoritative records, it avoids
- all the name servers already queried for the same name in the recursive calling
- chain, not just the servers most recently used.
- Although the hops counter will already break any possible cycles, this will
- allow pdnsd to detect pathological cycles earlier and waste less resources.
-
- * src/cache.c
- In add_cache(), don't add empty entries to the cache. Empty cache entries
- waste memory and are more persistent than non-empty ones, because purge_cache()
- cannot get rid of them.
-
-2004-05-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c,src/icmp.c,src/netdev.c
- I've removed the calls to getprotobyname() and used the constants IPPROTO_TCP
- and IPPROTO_UDP instead. First of all, it doesn't seem very efficient to call
- a function repeatedly to look up the same well-known protocol numbers.
- More importantly, getprotobyname() stores its results in a statically-allocated
- structure and thus cannot be considered thread safe. (getprotobyname_r()
- is thread safe, but is not portable.)
-
-2004-05-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- I've noticed that when pdnsd is restarted shortly after it has answered a TCP
- query, it is often not able to bind to the TCP socket again, resulting in a
- disabled TCP server thread. The solution appears to be to set the SO_REUSEADDR
- socket option before binding the socket. This allows you to use the same port even
- if it is busy (in the TIME_WAIT state).
- I found the code for this in a patch file from an old Debian package.
-
-2004-05-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Joseph Pecquet has reported that version 1.1.11 does not compile under FreeBSD v4.x
- because the macro ENONET is undefined. I've bypassed the problem by surrounding
- the case line using this value with conditional preprocessor directives.
-
-2004-05-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/rc/Slackware/rc.pdnsd
- I've included a Slackware start-up script contributed by Nikola Kotur.
-
-2004-05-05 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * doc/pdnsd.8
- I'm very grateful to Mahesh T. Pai for contributing a pdnsd man page,
- which was still missing up till now.
-
-2004-04-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/servers.c,src/dns_query.c
- After considering some suggestions made by Juliusz Chroboczek I have made the
- following changes:
-
- - After receiving a reply from a remote server mark the server up and update the
- timestamp so that pdnsd doesn't bother testing this server for availability for a
- while.
- - After detecting an error with an send/recv call that indicates a server is
- unavailable, mark a server down so that pdnsd doesn't bother testing this server
- for a while.
- - After server timeouts, uptests are never performed by a query/answer thread,
- because this may delay the sending of an answer to the client. Instead the
- timestamp of a server that needs to be tested for availability is set to zero and
- a condition signal is sent to alert the server status thread, which will carry out
- the test. Unresponsive servers with uptest=ping will not be marked down
- immediately any more, but only after the ping test has definitely failed.
-
- * src/error.c,src/error.h
- I've moved most of the code previously contained in the DEBUG_MSG macro to a new
- function debug_msg().
- The DEBUG_MSG macro now simply expands to "if(debug_p) debug_msg();".
- This should make the executable a little smaller, and be just as fast when
- debugging is off. The DEBUG_MSG macro still expands to nothing if pdnsd is built
- without debugging support.
-
-2004-04-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.h,src/dns_query.c
- I've tried to simplify the finite state machine used for processing parallel
- queries, by merging the "state" and "nstate" variables used by p_exec_query() and
- p_query_sm() resp. into one "state" variable.
- By introducing an extra field "iolen" to keep track of the number of bytes read
- from or written to a socket, I could also reduce the number of states for TCP
- queries. The new code has the additional advantage that it can handle situations
- that require multiple read() calls to receive a response.
-
-2004-04-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- I've added an extra check comparing the number if poll/select events actually
- handled to the return value of poll/select. This should reduce the chance that
- pdnsd will get caught in a busy spin due to unknown remaining bugs. An error
- message is logged and an error code is returned when this comparison fails.
-
-2004-04-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.h,src/dns_query.c
- I got rid of the event field in the query_stat_t struct.
- I think it is redundant, because its value can be quite simply derived from
- the nstate field.
-
-2004-04-12 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- I appears there was flaw in the code for handling a "Not Implemented" response
- from a remote server with the RA (recursion available) bit equal to zero. This
- could cause pdnsd to get into a busy spin. I traced the flaw back to Thomas
- Moestl's code, so it must be in all the versions of pdnsd I know of. In previous
- versions of pdnsd the busy spin would eventually time out. Due to some recent
- changes the loop would no longer time out, making the bug more noticeable.
- With thanks to Nicolas George for reporting the bug.
-
- I also discovered a closely related flaw that would cause pdnsd to poll() closed
- file descriptors. It usually works out OK in practice, but it is definitively not
- the correct way to do it.
-
- Additionally, I discovered some opportunities to save memory, e.g. by replacing
- the nsname buffer in the query_stat_t struct by a pointer to an already existing
- copy of a name.
-
-2004-04-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Nicolas George remarked that he thought it was strange that subdomains of domains
- negated with "neg" sections in the config file were not also negated. I thought that
- he had a point, and I've implemented a change so that negating example.com will
- now also negate www.example.com, xxx.adserver.example.com, etc.
-
-2004-04-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/error.c,src/error.h
- I noticed that the code for the log_warn() and log_error() functions was almost
- identical, even to the point that log_warn() called syslog() with LOG_ERR
- priority. I've merged these two functions into one log_message() function.
-
-2004-04-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c,src/conf-parser.c
- The -4 and -6 command-line options should now work as advertised.
- This wasn't entirely trivial. The rule is that options on the command line
- override those in the configuration file. The easiest way to implement this is to
- process the command-line options after reading the configuration file. But this
- doesn't work for the -4 and -6 options, because the run_ipv4 flag determines how
- IP addresses in the config file are parsed. I've inserted some extra tests and
- warning messages that will hopefully make this setting nearly foolproof.
-
- I've added two new command-line options, "-a" and "-i <prefix>".
- With the -a flag pdnsd will try to detect automatically if IPv6 support is
- available on a system, and fall back to IPv4 if not. The -a flag can be used
- instead of -4 or -6.
-
- In IPv6 mode, pdnsd will now automatically convert IPv4 addresses to IPv6-mapped
- addresses. The -i option can be used to specify a prefix for this mapping. The
- default is ::ffff.0.0.0.0
- There is also a corresponding ipv4_6_prefix= option for the config file.
-
- In IPv4 mode, if IPv6 support is compiled in, pdnsd will now skip IPv6 addresses
- in the config file (except for the server_ip and ping_ip options) with a warning
- message. This allows you to have mixed sets of IPv4 and IPv6 address in the same
- config file, although in IPv4 mode some server sections may become inactive.
-
- With thanks to Juliusz Chroboczek for suggesting these changes.
-
-2004-04-07 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've changed some of the cache-flag definitions to make debugging a little simpler.
- Unfortunately, this makes the cache files of previous pdnsd versions incompatible
- with the new one. I've introduced a cache version identifier to be added at the
- beginning of each cache file. This enables pdnsd to recognize and discard
- incompatible cache files.
-
-2004-04-05 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.h,src/cache.c
- I've changed the way CACHE_LAT (cache latency, normally 120 secs) is used to
- determine whether a cache entry has timed out. Instead of simply adding it to the
- ttl (time to live), I use CACHE_LAT if the ttl is less then CACHE_LAT, else the
- ttl itself, making CACHE_LAT the minimum ammount of time a cache entry stays in
- the cache.
-
-2004-04-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- I've introduced a global timeout parameter. This is the minimum period of time
- pdnsd will wait after sending the first query to a remote server before giving
- up without having received a reply.
- The timeout options in the configuration file are now only minimum timeout intervals.
- Setting the global timeout option makes it possible to specify quite short timeout
- intervals in the server sections. This will have the effect that pdnsd will start
- querying additional servers fairly quickly if the first servers are slow to respond
- (but will still continue to listen for responses from the first ones).
- This may allow pdnsd to get an answer more quickly in certain situations.
-
- * src/dns_query.c
- When receiving a NXDOMAIN (unknown domain) response from a remote name server,
- I think it is still useful to process the authority and additional sections,
- so that pdnsd can possibly add a SOA record to its own response.
-
-2004-04-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- In p_recursive_query(), I've slightly changed the way pdnsd does parallel
- queries. Active queries or not canceled until we have received a useful response
- from a remote name server, or all the queries have failed or timed out.
- Thus the par_queries parameter is no longer the maximum number of parallel
- queries, but rather the increment with which the number of parallel queries is
- increased when the previous set has timed out.
- In the worst case all the servers in the list of available servers will be queried
- simultaneously. We may be wasting more system resources this way, but the advantage
- is that we have a greater chance of catching a reply.
- After all, if we wait longer anyway, why not for more servers.
-
-2004-03-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- I've noticed that in compose_answer() that while adding the name in the query
- section it was not passed through compress_name(). While it is true that the
- first name occurrence cannot be compressed, it is still sensible to process the
- query name with compress_name() so that the offset can be stored and provide
- additional opportunities for future compressions.
- I've tested this with dig and the responses of pdnsd are now usually a little
- smaller in size or can hold more information within the 512 byte limit.
-
-2004-03-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've noticed that pdnsd stored rr records (of the same type) in reverse order
- in the cache.
- Although I don't see anything inherently wrong with that, I think it's neater to
- store them in the order they are processed.
-
-2004-03-29 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've rearranged the order of the arguments of some of the functions in cache.c
- to obtain a more consistent calling interface.
-
- * src/dns_answer.c
- I've noticed that pdnsd would only add NS records to an authority section if it could
- find such records matching the queried name (or the last CNAME in the answer) exactly.
- However, I understand that a server should try to give NS records as close as possible
- to the target name in the naming hierarchy.
- I also understand that if a domain name is reported as nonexisting, or no record of
- the requested type exists, it is customary to provide a SOA record, searching up the
- name hierarchy if necessary.
- I've tried to implement this in compose_answer(), although with some limitations.
- I only look in the cache, I don't search more then three levels up, and stop before
- the top level.
-
-2004-03-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/dns_answer.c
- There were some issues with add_cache_rr_add().
-
- First of all, the way it was used in rr_to_cache() (or rather not used) meant
- that if an "off topic" record was added for a name that lacked an entry in the
- cache, the rr set would be created with an incorrect serial number (namely zero).
- I've rewritten add_cache_rr_add so that it can create new cache entries if necessary.
- This simplifies the code in rr_to_cache() and ensures correct serial numbers.
-
- Secondly, in add_cache_rr_add() the ttl was compared with that of an existing rrset
- without adjusting for the min_ttl and max_ttl options. This could lead to all the
- previous records being deleted, retaining only the last one.
-
-2004-03-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- In compose_answer(), if the rd (recursion desired) bit is set in the query
- and the response contains a CNAME record (while a different type of record was
- requested), always do a recursive query on the CNAME, even if we have already
- added a record of the requested type to the response.
- Failing to honor the rd bit will cause some resolver libraries to complain,
- even if the answer contains a record of the requested type.
-
- I've slightly changed the calling interfaces of add_to_response() and add_rrset()
- to make them more consistent and efficient.
-
- In add_rrset() I've fixed a memory leak on one of the error paths.
-
- In add_additional_rr(), the return value of add_rr() was not checked.
- If add_rr() fails, it will free *ans, and functions higher up the calling
- chain could be referencing freed memory.
-
- I've fixed a potential referencing of freed memory or double freeing in add_additional_a().
- If a call of add_additional_rr() fails, it will free *ans.
- Previously, add_additional_rr() could be called a second time, in which case
- the second call would be referencing freed memory or freeing it a second time..
-
-2004-03-23 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * configure.in, src/Makefile.in,src/pdnsd-ctl/Makefile.in,src/test/Makefile.in
- Frédéric L. W. Meunier has reported that configure --srcdir option (for building
- in directory separate from the source directory) was broken.
- Should be fixed now.
-
-2004-03-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c,src/helpers.c,src/icmp.c,src/main.c,src/netdev.c,src/ipvers.h,src/test/if_up.c,src/test/is_local_addr.c,src/test/tping.c,src/test/random.c,src/conf-parser.c
- I've eliminated the global variable run_ipv6 from the code.
- Enabling both the IPv4 and IPv6 protocols at the same time is not supported
- in pdnsd, so the value of run_ipv6 (if it is defined) is simply !run_ipv4.
-
- * src/dns.c,src/test/is_local_addr.c,src/test/tping.c
- It appears the option to compile pdnsd without IPv4 support (i.e. only IPv6
- support) was broken. Should be fixed now.
-
-2004-03-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've discovered an incorrect use of cache locks in lookup_cache().
- We only read locks in place, it is possible for purge_cent() to delete a cache
- entry while another thread is trying to read it at the same time, which could
- lead to trouble. I've rewritten purge_cent() so that it can be used to test
- whether something needs to be purged without actually deleting anything.
- If something needs to be deleted, purge_cent() will be called again with
- the proper read/write locks in place, excluding access to the cache for all
- other threads.
-
-2004-03-18 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- I've added a new function sort_rrl() for sorting the rr_l list using a merge-sort
- algorithm. Usually the insertion sort used by insert_rrl() is good enough, because
- new entries belong near the end most of the time. Reading entries from disk forms
- an exception, though, because the rrsets in the file are completely out of order
- w.r.t. timestamps, leading to quadratic time complexity of the insertion sort method.
- In that case it should be faster to simply append items at the end of the rr_l list
- and sort using a more efficient algorithm afterwords.
- pdnsd now seems to start up noticeably faster when reading large cache files.
- I've also considered using a more sophisticated data structure than a doubly linked
- list, but this will add considerable complexity to the code and use more memory.
-
-2004-03-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Changed a declaration in udp_answer_thread() so that the buffer used for passing
- control messages on to sendmsg() is exactly the right size, instead of an arbitrary
- 512 bytes.
- Also initialized the msg_flags of the struct msghdr passed on to sendmsg() to zero,
- to keep Valgrind from complaining about uninitialized bytes.
-
-2004-03-12 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/icmp.c
- Fixed an incorrect call to select() in ping4(). A file descriptor set for detecting
- exceptions was initialized but not passed on to select(). This would lead subsequent
- code always to behave as if an IO exception had occurred.
- Valgrind seems to indicate that when a poll() call times out and returns 0,
- the revents field of the struct pollfd is not necessarily set.
- I've changed the code to check that the return value is > 0 before examining the
- revents field.
-
-2004-02-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parser.c,src/conf-parser.h,src/conf-keywords.h
- I've rewritten the parser for the configuration file in C from scratch.
- (f)lex and yacc/bison are no longer needed to build pdnsd.
-
-2004-01-16 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c
- Load the cache from disk without locking cache access because pdnsd
- is still single-threaded at that point.
-
-2004-01-15 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/hash.c
- Moved the responsibility for freeing the cache entries referred by
- the hash buckets from destroy_cache() to free_dns_hash() (which is called
- by destroy_cache()). Previously, the cache and hash tables were already
- completely destroyed by the time free_dns_hash() was called, and there was
- nothing left for free_dns_hash() to free.
-
-2004-01-14 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/hash.c,src/make_hashconvtable.c
- The hash conversion table is now generated at build time instead
- of at run time when pdnsd is started up.
-
-2004-01-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c
- In add_host() fixed incorrect generation of IPV6 type of name for PTR record
- due to use of && instead of & as masking operator.
-
-2004-01-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/icmp.c, src/dns_answer.c
- Use unsigned long instead of int error counters to reduce the danger
- of wraparound.
-
-2004-01-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c,src/thread.c,src/thread.h,src/server.c,src/status.c,src/dns_answer.c
- Initialize a global thread attribute object in main.c and use it to create all the detached
- threads, instead of initializing a separate attribute object for each new thread.
-
-2004-01-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Check the return value of pthread_create() in udp_server_thread()
- and tcp_server_thread() to ensure that a new answer thread has actually
- been created and free resources if not.
-
-2004-01-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c,src/cache.c,src/conff.c,src/status.c
- Stop writing to control socket after an error has been detected.
-
-2004-01-03 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c
- Tried to make the error messages of pdnsd-ctl more helpful.
- The complete usage description is now only printed if the 'help' command
- is used. For problems with other commands a much shorter message is generated
- specific for that command.
-
-2004-01-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.h
- Changed the definition of rhnlen(). For valid data this will make no difference,
- but it may change the behaviour of pdnsd in certain error situations.
-
-2004-01-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c
- Optimized compress_name() some more.
-
-2004-01-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Additional code cleanup in compose_answer().
-
-2004-01-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * doc/pdnsd-ctl.8
- Updated the pdnsd-ctl man page.
-
-2003-12-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c
- Cleaned up some code.
-
-2003-12-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c,src/conff.h,src/conff.c
- Some further code cleanup in status.c.
- Labels for server sections are no longer limited to 32 chars,
- but can have arbitrary length. The string that is used to specify
- new DNS-addresses with the "pdnsd-ctl server" command can now also
- have arbitrary length.
-
-2003-12-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * doc/html/doc.html
- Added information about CNAME and MX resource records, that were
- previously undocumented.
-
-2003-12-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Removed the function p_dns_resolve_from(). This function was essentially
- a call to p_recursive_query() with a dummy nocache argument.
- p_recursive_query() can now be called with nocache=NULL instead.
-
-2003-12-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Using a variable length array instead of an malloced buffer to hold the struct pollfd array
- in p_recursive_query(). This has the potential for causing portability problems, but I
- think that's unlikely because almost all the major C compilers I work with support variable
- length arrays nowadays.
-
-2003-10-18 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.h,src/helpers.c
- Fixed a mistake that caused a compile error when using the --with-random-device
- configuration option.
- Thanks to Daniel Black for reporting this bug.
-
-2003-10-02 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * conf-lex.l.in,src/conf-parse.y,src/conff.h,src/conff.c,src/dns_query.c
- Made the "delegation_only" feature configurable.
-
-2003-09-25 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c,src/helpers.h
- Added alternative implementations of strdup, strndup, stpcpy, getline and asprintf
- in an effort to make the code more portable.
-
-2003-09-22 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c,src/conf-parse.y
- Made some changes to the parser of the configuration file so that domain names
- missing a dot at the end will be tolerated.
-
-2003-09-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Implemented a first version of the "delegation-only" feature.
- It has been "hard-coded" to work for "com" and "net" zones,
- and is not yet configurable.
-
-2003-09-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c
- Rewrote domain_match(). Also changed the way it is used.
- I believe it has a cleaner semantics now.
-
-2003-09-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Changed the order of the arguments of p_exec_query() and p_recursive_query()
- to make it more consistent with the other functions.
-
-2003-09-18 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Reordered the code in process_query() so that a buffer for an error response is
- allocated only when it is actually needed.
-
-2003-09-17 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Added parentheses to correct mistaken operator precedence assumption in cache.c.
- !cent->flags&DF_NEGATIVE is parsed as (!(cent->flags))&DF_NEGATIVE but I think
- what Thomas Moestl must have intended was !((cent->flags)&DF_NEGATIVE).
-
-2003-09-12 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Fixed a mistake which caused the effect of the proxy_only option to be reversed.
- Thanks to Andrew M. Bishop <amb@xxxxxxxxxxxxxxxxxxxx> for reporting this bug.
-
-2003-09-11 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c
- Rewrote str2rhn() and rhn2str().
-
-2003-09-10 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns.c
- Rewrote read_hosts(), the function that reads /etc/hosts-style input.
- I believe the parsing algorithm is more robust now.
-
-2003-09-09 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
- Fixed a bug (my fault) that caused improper passing on of flags for the
- pdnsd-ctl source command.
- Also reordered some of the code, so that data is validated after all of it
- has been read from the control socket. This should prevent a "broken pipe"
- error message if data validation fails.
- Also fixed the reporting of success or failure of the pdnsd-ctl "neg" command.
-
-2003-09-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/list.c
- Rewrote da_grow1() and da_resize() so that they automatically allocate an array
- if given a NULL argument. This makes the use of da_create() redundant in most cases.
-
-2003-09-08 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parse.y,src/servers.c
- At the suggestion of Greg Norris, I changed the code to allow server sections in the
- configuration file that don't specify any IP addresses. Such a section will remain
- inactive until one or more IP addresses are assigned with the control utility pdnsd-ctl.
-
-2003-09-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c,src/dns_query.c
- Oops: in my zeal to declare variables in the smallest possible scope, I ended up
- using a pointer to a struct that was out of scope. My understanding of compilers tells me
- it should work out OK in practice, but it is definitely a no-no.
- Used a union declared in a larger scope instead (which is ugly in another way,
- but equally efficient).
- Also removed a section of redundant code in udp_server_thread().
-
-2003-09-01 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Corrected the iteration range of a for loop in p_dns_cached_resolve(), which would
- otherwise cause an array to be indexed out of bounds in the function set_flags_ttl().
-
-2003-08-31 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_answer.c
- Added cleanup handlers for freeing the resources passed on to udp_answer_thread() and
- tcp_answer_thread(). This should ensure the resources are freed even if the threads get
- canceled.
-
-2003-08-30 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Revised large portions of code in src/cache.c, used for adding and deleting entries in
- the cache. In particular, I rewrote purge_cache(), which I believe was incorrect.
- I wouldn't be surprised if this was the cause of the crashed (defunct) threads that some
- people were reporting.
- Also fixed some memory leaks.
-
-2003-08-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Eliminated the overhead of allocation debugging in the case that ALLOC_DEBUG is not defined.
-
-2003-08-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/conf-parse.y
- No longer allow certain settings of the query_method option in the configuration file
- if pdnsd is not compiled with the necessary support.
- Thanks to Nikolaus Rath <Nikolaus@xxxxxxxx> for reporting the bug.
-
-2003-08-23 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/netdev.c
- Fixed a bug in is_local_addr() where the result of fgetc(f) is restricted to type char
- before being compared to EOF, which can result in the comparison always being false.
- Thanks to Gerhard Tonn <GerhardTonn@xxxxxxxxxxx> for reporting the bug.
-
-2003-07-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * doc/html/index.html,doc/html/doc.html,doc/html/dl.html,doc/pdnsd-ctl.8,contrib/README
- Revised the documentation.
-
-2003-07-21 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c,src/status.c,src/icmp.c
- Setting stat_pipe=0 after opening or binding the control socket fails.
- This should prevent further use of the control socket if a problem with
- it has been detected previously.
- Also properly initialized the global variable int ping_isocket in src/icmp.c
-
-2003-07-13 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/main.c
- Polished the code in main().
-
-2003-07-04 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/helpers.c,src/dns_answer.c,src/dns_query.c
- Eliminated the use of inet_ntoa() in favor of the more modern inet_ntop().
- inet_ntop() makes more sense in threaded code and is also recommended in
- the glibc info pages.
-
-2003-07-03 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c
- Fixed an allocation size error (not mine) in p_exec_query().
- The erroneous size is almost always larger than necessary, so in practice this bug
- just wastes memory. But there is also a possibility that the allocated buffer is too
- small, which would mean trouble.
- Also fixed two memory leaks on some of the error paths in p_exec_query().
-
-2003-06-28 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * acconfig.h,configure.in,src/thread.h
- Extended the configuration option --with-thread-lib.
- Configuring with --with-thread-lib=linuxthreads2 will cause the alternative
- definition of THREAD_SIGINIT suggested by Thomas Moestl to be used.
-
-2003-06-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/consts.h,src/consts.c,src/conff.c,src/conf-parse.y,src/dns_answer.c
- Added two new configuration options for policies of inclusion/exclusion lists.
- The new policies options are "simple_only" and "fqdn_only".
- This allows me to control to which name servers pdnsd will direct queries for
- simple host names.
- I also polished the code a bit in report_conf_stat(), used for reporting the current configuration.
-
-2003-06-20 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * acconfig.h,configure.in,src/thread.h,src/thread.c
- Added a configuration option --with-thread-lib=nptl.
- This causes the macro THREAD_SIGINIT to be defined as empty in src/thread.h,
- and thread_sig() in src/thread.c is never used.
-
-2003-06-11 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/thread.h
- Undid the change to the definition of THREAD_SIGINIT suggested to me by
- Thomas Moestl, after receiving a report of a problem with this change
- from someone running SuSE 7.0.
-
-2003-06-06 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/dns_query.c:
- Discovered that I failed to preserve the semantics of Thomas Moestl's code
- when I rewrote a section of code in use_server(). Fixed.
-
-2003-05-19 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c,src/conf-lex.l.in,src/conf-parse.y,src/conff.h,src/dns_answer.c,src/dns_query.c,src/servers.c:
- Merged fixes contained in patch file sent to me by Thomas Moestl with my own version.
- Changing the version to 1.1.8b1 as suggested by the patch file.
-
-2003-02-26 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * pdnsd-1.1.7a-par.diff:
- Made one big patch file from all the changes I made up till now.
- Wrote a description of the changes in a file README.par
- Posted patch file on the web so others can use it.
-
-2003-02-24 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * src/cache.c
- Changed the code that writes the cache to disk.
- Data is now written strictly sequentially, eliminating the need for fseek().
- This seems to have successfully solved the problem I had with corrupt cache files.
-
-2002-05-27 Paul Rombouts <p.a.rombouts@xxxxxxx>
-
- * ChangeLog:
- Started experimenting with the source code.
- Made many changes between 2002-05-27 and 2002-07-13.
- Too lazy to maintain the ChangeLog.
-
-2002-01-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: Call it 1.1.7.
-
-2002-01-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/dns_query.c:
- Comment and debug message fixes, more assertions.
-
-2002-01-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.c, src/dns_answer.c, src/dns_query.c:
- More harmless fixes, correct some comments and debug messages, add more
- assertions.
-
- * NEWS, version: 1.1.7p2, correct NEWS entry.
-
- * src/helpers.c:
- Make sure the calling thread of pdnsd_exit() terminates immediately.
-
-2002-01-02 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/helpers.c, src/icmp.c:
- Fix a few more harmless bugs, more paranoia.
-
- * src/status.c: Fix yet more, probably harmless, problems.
-
-2002-01-01 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.h, src/dns_answer.c, src/dns_query.c:
- Fix a few more possible buffer size problems, and add a bunch of
- assertions as last lines of defence.
-
-2001-12-30 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.c: Build fix (include error.h).
-
- * NEWS, version: Call it 1.1.7p1, and add a NEWS entry.
-
- * TODO: Reduce TODO to what actually is still needed.
-
- * src/dns.c, src/error.h, src/helpers.c:
- Add a bunch of robustness PDNSD_ASSERT()'s.
-
- * src/dns_query.c:
- Fix a bug which may possibly be remotely exploitable to gain access as
- the user pdnsd runs as.
- This was caused by a dumb single-character mistake :(
-
- * doc/Makefile.am, configure.in:
- Avoid confusing automake 1.5 by not putting a comment into a make rule.
- Fix CONFDIR passing.
-
- Submitted by: GoTaR <gotar@xxxxxxxxxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c:
- Avoid crashing when the buffer contents received using the status command
- are not terminated.
-
-2001-10-14 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/pdnsd.in, THANKS:
- Fix the stop case for the SuSE rc script: killproc requires the full
- path of the binary as argument (reported by Bernhard Pelz).
-
-2001-09-23 Thomas Moestl <tmoestl@xxxxxxx>
-
- * configure.in:
- Revamp the OS autodetect test. OpenBSD and (hopefully) NetBSD are no longer
- unsupported.
-
- * src/helpers.c, THANKS:
- Do not try to use arc4random when compiling for NetBSD (submitted by
- Thomas Stromberg).
-
-2001-09-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * COPYING.BSD: s/REGENTS/AUTHOR/ in one place.
-
- * src/cache.c:
- It is possible no record of the requested type is present after calling
- cr_add_cent_rr_int() (when the record was marked as being local), so
- check before dereferencing the pointer to the respective rrset.
- Leave the record unmodified when cr_check_add() returns 0.x
-
-2001-07-26 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/RedHat/pdnsd.in:
- Add a workaround for @sysconfdir@ substitutions containing ${prefix}.
- Spotted by Robert Linden.
-
-2001-07-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/RedHat/pdnsd.in:
- Add a condrestart handler to the Red Hat rc script, and do some general
- cleanup. Contributed by Christian Engstler.
-
-2001-07-02 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/error.h:
- Attempt to detect a gcc that cannot yet handle ANSI variadic macros,
- and work around this by using the old GCC-style variant.
-
- * src/conff.c:
- Remove a + at the start of a line that got in when merging a diff by
- hand.
-
- * src/servers.c: waitpid() returns a pid_t.
-
- * src/dns.c:
- It's sizeof, not sizof. This should unbreak the IPv6 build. Also silence
- some warnings with appropriate casts.
-
- * NEWS, version: Call it 1.1.6, and add a NEWS entry.
-
-2001-07-01 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_query.c, THANKS, version, AUTHORS:
- Added a modified version of Andreas Steinmetz's code for
- query_port_start and query_port_range, and added him to AUTHORS and
- THANKS.
-
-2001-06-23 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c:
- Fix a bogon: deleted would not be reset correctly in the first
- purge_cache loop, which could cause pdnsd to loop forever when a
- negative record was after a deleted rr.
-
-2001-06-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/list.h:
- Add (currently unused) list macros that are going to be used in future
- code.
-
- * src/cache.c:
- Fix a bogon in the rw lock code: we need to wake up a writer if there
- are no readers. The old code was a leftover from a time when
- SUSP_THRESH was just r_pend * x.
- Fix a typo.
-
-2001-06-13 Thomas Moestl <tmoestl@xxxxxxx>
-
- * AUTHORS: Add mention of FreeBSD code to AUTHORS.
-
- * src/netdev.c:
- Add SIZEOF_ADDR_IFREQ (taken from FreeBSD: _SIZEOF_ADDR_IFREQ, net/if.h
- rev. 1.58.2.1) and add an appropriate copyright notice.
- The reason for this is that other BSDs don't have it, and we are not
- supposed to use underscored macros in portable software.
-
-2001-06-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/icmp.c: Fix double #inclusion of <netinet/ip.h>.
- Noticed by Sebastian Stark.
-
-2001-06-08 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_query.c, THANKS:
- Allow underscores in the query names reported back, as the comment next
- to the decompress_name call already indicated (but the call gave NULL
- as the uscore parameter, which disables underscores normally).
- Add Michael Ströder, who spotted this, to THANKS.
-
-2001-06-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/servers.c, THANKS:
- Fix a bug discovered by Stefan Erhardt (and add him to THANKS): the
- return value of waitpid was misinterpreted.
-
-2001-06-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * Makefile.am, file-list.base.in, version:
- Bump version to 1.1.6p1; wire up COPYING.BSD so that it gets included
- in RPM's and tarballs.
-
- * COPYING.BSD:
- Add the BSD-Style copyright notice so that it can be included in binary
- distributions.
-
-2001-06-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/status.c, NEWS, version:
- Bump version to 1.1.5, and add a NEWS entry for this release.
-
- Miscellaneous cleanups, mainly in the status.c code; fix a bug that
- could cause heap corruption (rhncpy always clobbered the whole buffer,
- but only the needed space was reserved in add_rr). This should solve
- the crashes some people were seeing (this bug is not an exploitable
- security hole as far as I know; the respective buffer is on the heap,
- as mentioned).
-
- * src/error.c:
- Paranoia: do not use the argument to crash_msg as a format string
- (crash_msg is only used with constant strings, though).
-
-2001-06-02 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/error.h, src/hash.c, src/helpers.c:
- Correct underscore handling for SRV records, and a few comment fixes.
-
- * src/cache.c, src/conff.c, src/dns_query.c, src/error.h, src/helpers.h, src/status.c:
- Numerous non-critical argument fixes for printf-like functions.
-
- * src/dns.c: Remove superfluous \n's.
-
- * src/conf-parse.y, src/dns_answer.c, src/status.c:
- Correct some DEBUG_MSG nits, and fix two format string bugs. One of
- them could allow users that are allowed to use pdnsd-ctl with the
- server (when the status socket is enabled) to gain the privileges of
- the user that runs (the run_as user or the user that started pdnsd on
- Linux when strict_setuid is set to off) pdnsd. The status socket is
- disabled by default, and if it is enabled, it's default permissions
- are quite restrictive, so this isn't a problem for most.
-
-2001-05-30 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/status.c:
- Make the status permissions actually work (missed last time).
-
- * src/dns_answer.c, src/main.c, src/status.c, src/status.h:
- Move the status socket initialization to a place where it gets executed
- before any threads are started; this way, we can use umask to set the
- permissions, and avoid a (in this case harmless, but anyway) race
- condition.
- While being there, remove obsoleted comments and places referring to
- the now-socket as fifo.
-
-2001-05-29 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c:
- Replace a misuse of CF_LOCAL with DF_LOCAL. This had no effect, because
- the values are the same.
-
-2001-05-22 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/hash.c, src/helpers.c, THANKS, acconfig.h, configure.in:
- Add an option for allowing underscores (_) in domain names. This
- violates the RFC's if enabled (which it isn't by default).
- Thanks to Eelco Vriezekolk for an initial patch.
-
- While being there, clean up configure.in and acconfig.c a bit.
-
- * src/helpers.c, src/status.c:
- Add a few comments about security implications.
-
- * src/cache.c, src/dns_answer.c, src/dns_query.c, src/helpers.c:
- Change some occurences of strcpy to strncpy. Again, no risk here, the
- buffer lentgh was carefully chosen, and while the data was partially of
- remote origin, it was carefully validated before entering the cache (and
- thus having a chance of being used by us).
- 3 occurences remain: 2 in cache.c, where we allocate a sufficient amount
- of memory before (mimicking the non-portable strdup) and one where
- we copy a constant and which is obviously correct.
-
- * src/dns.c:
- Change two occurences of strcat to strncat. Again, no risk here, the
- buffer lentgh was carefully chosen, the data was validated and supplied
- by the starting user.
-
- * src/dns.c:
- Change a sprintf to a snprintf and enlarge a buffer a bit. This is pure
- paranoia (alrhough makes code review easier for others), because a.) the
- lengths were carefully chosen so that no overrun could occur and
- b.) this was locally supplied data.
-
-2001-05-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/RedHat/Makefile.am:
- Add a missing semicolon in the RedHat rc Makefile.am (discovered by
- Christian Engstler).
-
-2001-05-19 Thomas Moestl <tmoestl@xxxxxxx>
-
- * HACKING: Remove the mostly outdated HACKING file.
-
- * src/debug.c:
- Catch a corner case in the allocation debug helpers: realloc() with a
- size of 0 is effectively a free operation. To my knowledge, this is
- not done in the pdnsd sources, however.
-
- * src/test/test.sh:
- Use the correct error function, forgotten in last commit.
-
- * src/test/clnt-test.sh, src/test/srv-test.sh, src/test/test.sh:
- Misc small improvements in the regression test scripts, mostly
- adding configuration variables and common error handlers.
- Comment a little on the tests that are done in clnt-test.sh
-
- * src/rr_types.c: Fix a typo in a comment.
-
- * src/cache.c, src/debug.c, src/dns_answer.c, src/dns_query.c, src/error.h, src/hash.c, src/list.c, src/main.c, src/status.c, src/thread.c, src/thread.h:
- New ANSI variadic debug macros (finally), which print a timestamp and
- a thread ID now for easier debugging with many parallel queries.
- It should be considered to make those inline functions instead. However,
- we have the advantage that we use printf in place here and benefit
- from parameter checking without specifying obscure function attributes.
-
- * src/rc/SuSE/.cvsignore, src/test/.cvsignore, src/rc/.cvsignore, src/rc/Debian/.cvsignore, src/rc/RedHat/.cvsignore, contrib/.cvsignore, doc/.cvsignore, src/.cvsignore, src/pdnsd-ctl/.cvsignore, .cvsignore:
- Brush up the rotten (pre-autoconf!) .cvsignore files and add some where
- necessary.
-
-2001-05-17 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/RedHat/Makefile.am, src/rc/RedHat/pdnsd.in, configure.in, pdnsd.spec.in:
- Red Hat rc script and RPM improvements by Christian Engstler.
-
-2001-05-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c:
- Fix a place missed when converting rr_info.
-
- * version: It's 1.1.4, finally.
-
- * src/rr_types.c, version:
- Change some class values in the rr type structure to better values.
- Bump beta version.
-
-2001-05-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/dns_answer.c, src/dns_query.c:
- Fix a signedness bug that could cause erraneous 0 ttls to be returned.
- Add some debug messages, and do some minor fixups.
-
-2001-05-09 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/rr_types.c:
- Fix some bugs in the new conflict resolution code and make it more
- complete.
-
- * src/cache.c, version:
- Add conflict resolution code. This needs a bit more checking, and
- the tables might still need to be tweaked.
- Bump version.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/Makefile.am, src/cache.c, src/cache.h, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.c, src/consts.h, src/debug.c, src/dns.c, src/dns_answer.c, src/dns_answer.h, src/dns_query.c, src/dns_query.h, src/error.c, src/error.h, src/hash.c, src/hash.h, src/helpers.c, src/helpers.h, src/icmp.c, src/icmp.h, src/list.c, src/main.c, src/netdev.c, src/netdev.h, src/rr_types.c, src/rr_types.h, src/servers.c, src/servers.h, src/status.c, src/status.h, src/thread.c, src/thread.h, configure.in, version:
- Remove the old infrastructure that theoretically could have allowed for
- multiple cache subsystems. This ability was never used, and if it should,
- the caching should probably be split into two layers, a higher level
- common one and the actual caching backends.
- src/cacheing/cache.c and src/cacheing/native/*.[ch] were repo-copied to
- src/.
- Substitute "conf.h" with <conf.h> for includes.
- Purge records a little more often (when adding records, and when
- retrieving from the cache). Handle cache_size properly when using
- purge_cent.
- Introduce some infrastructure in rr_types.[ch] for a record conflict
- checker which is to be introduced shortly to enforce cache consistency
- even in the purge_cache=off case.
-
-2001-05-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/RedHat/pdnsd.in, src/rc/SuSE/pdnsd.in, src/rc/Debian/pdnsd.in:
- Revert the last commit. It breaks the rc scripts by spamming them with
- make style variable expansions.
-
- * src/rc/SuSE/pdnsd.in, src/rc/RedHat/pdnsd.in, src/rc/Debian/pdnsd.in, AUTHORS, THANKS:
- Fix a rc script bug spotted by Frank Elsner, and add him to AUTHORS and
- THANKS.
-
-2001-05-01 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: Bump version to 1.1.4p2.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/status.c:
- Fix some bogons and remove some unneeded code in the pdnsd-ctl
- interface.
- Fix spelling and line length bugs.
-
-2001-04-30 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/conf-parse.y, src/status.c:
- Some corrections for the authrec config file and the pdnsd-ctl noauth
- support.
-
- * src/pdnsd-ctl/pdnsd-ctl.c:
- Fix wrong argv index (using getopt changed the indices).
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_query.c, src/status.c, THANKS, version, AUTHORS:
- Accumulated changes that should go in before 1.1.4:
- - merge Andrew M. Bishop's patch that adds a server label option
- - make local records authoritative for the domain by default, and add
- the authrec option to change this
- - add the auth keyword to the pdnsd-ctl source option to support that
- - fix a bug in the conf-parse.y grammar causing a shift/reduce conflict
- - sync up AUTHORS and THANKS: add Andrew M. Bishop, Kevin A. Burton and
- Michael Steinl
- - bump version to 1.1.4p1
-
- * src/conff.c, src/main.c:
- Fix two small bugs: the wrong element of argv was used for the pidfile
- option, which could cause pdnsd to segfault, and C_INCLUDED was always
- used in slist_add, regardless of the tp parameter.
-
- * src/helpers.c:
- Fix a bogon discovered by Michael Steiner: the fread() return value
- was tested against bytes, not the number of items.
-
- * src/hash.c, src/hash.h, src/cache.c:
- purge_cache used to walk over the cache quite inefficiently when it was
- called from add_cache. Add a lazy mode for purge_cache which uses the
- rrset_l to be efficient in this special case.
- Add some #ifdef'ed-out-by-default code to debug the hash function.
-
-2001-04-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * NEWS: Add NEWS entry for 1.1.3.
-
- * src/dns.c, src/helpers.c, src/icmp.c, contrib/Makefile.am, contrib/README, version:
- IPv6, ICMP and build fixes. It's 1.1.3 now!
-
- * src/debug.c, src/debug.h: Add the new debug support files.
-
- * src/test/clnt-test.sh, src/cache.c, src/cache.h, src/error.h, src/list.c, src/list.h, src/main.c, src/status.c, src/status.h, src/Makefile.am, src/conf-parse.y, src/conff.h, src/dns.c, src/dns_answer.c, src/dns_query.c:
- Add allocation debug support. Some small cleanups before the upcoming
- 1.1.3 release.
-
- * src/dns_query.h, src/helpers.c, src/list.c, src/conff.c, src/dns.c, src/dns_answer.c, src/dns_query.c:
- Lots of small bugfixes, cleanups, style and spelling fixes.
-
- * src/test/clnt-test.sh: Fix nc arguments.
-
- * src/test/clnt-test.sh, src/test/srv-test.sh, src/test/test.sh:
- Add regression test scripts.
-
-2001-04-11 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/servers.c, src/dns_answer.c, src/helpers.c, src/helpers.h, src/icmp.c, src/main.c:
- Further cleanups and bug, style and spelling fixes.
-
- * configure.in: Use -g again in the CFLAGS for a while.
-
- * version: Beta version bump.
-
- * src/rc/SuSE/pdnsd.in:
- killproc does not seem to take the full path, but only the process name
- (which is what one would expect).
-
- * src/hash.c, src/netdev.c, src/rr_types.c, src/status.c, src/conf-parse.y, src/conff.c, src/helpers.c:
- Misc. smaller fixes, and fixes on the new features. Also clean up style
- and spelling in some places.
-
- * src/dns_answer.c:
- Bring the glibc pthread_cleanup_push/pthread_cleanup_pop return bug
- workaround into the main tree.
- Without this, a return between those two macros would cause pdnsd
- to crash on system using a glibc between 2.1.2 and 2.2.2 (and possibly
- others). This could e.g. be cause by a TCP connect() port scan.
-
-2001-04-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c:
- Minor fixes, direct error messages to stderr.
-
- * src/list.c, src/list.h: Add the new list implementations.
-
- * src/cache.c, src/cache.h, src/conf-parse.y, src/dns.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/helpers.h, src/conf-lex.l.in:
- Introduce rhnlen and rhncpy and make use of it instead of kluged-up
- strcpy/strlen in the appropriate places.
- Check that incoming names contain only legal characters in
- decompress_name, return RC_FORMAT otherwise (this would result in
- wrong handling only, but not in a security hole).
- Reorganzie compose_answer and make it more correct for multiple
- questions. Get rid of the algorithm that tries to add a higher
- level name server; this might be readded in another place somewhen.
- Use some more da_* instead of hand-built lists.
- Some style cleanups.
-
- * src/rc/RedHat/Makefile.am:
- Add K45pdnsd links for rc6.d (reboot) and rc0.d (halt) following a
- suggestion by Stas Sergeev.
-
-2001-04-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/cache.h, src/error.h, src/helpers.c, src/helpers.h, src/main.c, src/servers.c, src/status.c, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/Makefile.am, version:
- Bump alpha version; introduce a generic dynamic array type and make use
- of it to ged rid of some ugly casts and redundant code.
- Minor fixes.
-
- * src/icmp.h, src/ipvers.h, src/conff.h, src/consts.h, src/dns.h, src/dns_answer.h, src/dns_query.h, src/helpers.h:
- Use macros without an underscore as first character to protect the
- headers. Underscores are reserved and should not be used in the
- application name space.
-
- * src/error.h: Add PDNSD_ASSERT, change style a little.
-
-2001-04-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/hash.c, src/netdev.c, src/servers.c, src/helpers.c, src/icmp.c, src/main.c:
- Another slew of small bugfixes, minor updates and small fixes.
-
- * src/rr_types.c, src/consts.c:
- Update rr_types.c copyright date, consts.c should have a rcsid string.
-
- * src/rr_types.c: cvs add rr_types.c.
-
- * src/dns.h, src/helpers.h, src/ipvers.h, src/rr_types.h, src/status.h, src/conf-parse.y, src/conff.h:
- cvs add rr_types.h that got missed before, update copyright dates,
- remove some old config cruft, some minor fixups.
-
- * src/conff.c, src/consts.c, src/dns_answer.c, src/error.c, src/conf-lex.l.in, src/conf-parse.y:
- Update copyright dates, fix some minor bugs. Update copyright dates.
- cvs add missed consts.c.
-
-2001-03-28 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/hash.c, src/error.c, src/servers.c, src/dns_answer.c, version:
- Bump version to 1.1.3p4
- Fix some non-critical locking issues (none of them could be fatal).
- Adjust copyright dates.
-
- * src/hash.c: Make the hash compare case insensitive.
-
-2001-03-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * contrib/Makefile.am: Add Id tag to Makefile.am
-
- * src/cache.c, src/dns_answer.c, src/icmp.c:
- Some more type fixes overlooked in last commit.
-
- * src/conf-parse.y, src/conff.h, src/dns.h, src/dns_answer.c, src/dns_query.c, src/icmp.c:
- More type cleanups. Use time_t for time specifications throughout, and
- make lengths singed longs. Cast cleanup in icmp.c to fix alpha
- unalinged access faults.
-
- * contrib/dhcp2pdnsd, contrib/pdnsd_dhcp.pl, contrib/save_ram.pl, contrib/Makefile.am, contrib/README, configure.in, version, Makefile.am:
- It's 1.1.3p3 now.
- Change the contrib infrastructure: there is a Makfile.am in contrib/
- now. Rename Marko Stolle's pdnsd_update.pl to pdnsd_dhcp.pl and bring
- it up to date (adding the rc script and save_ram.pl).
-
- * src/helpers.c, src/dns.c, src/dns_query.c, AUTHORS, THANKS:
- Bring in Bjoern Fischer's changes to make pdnsd conserve the case of
- cached names, and add him to AUTHORS and THANKS.
-
- * configure.in: The gdbm backend is discontinued.
-
- * src/cache.c, src/hash.c:
- Cleanup and small bugfixes of the cache code (esp. locking).
-
- * AUTHORS, THANKS, file-list.base.in, pdnsd.spec.in:
- SuSE fixes by Christian Engstler.
- Add him to AUTHORS, THANKS.
-
-2001-03-14 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_query.c:
- Fix a bug that could cause servers that were not used in the first
- parallel query not to be used at all (failure would be returned
- instead).
-
-2001-03-13 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/icmp.c: Add define for ip_p equivalent on Linux.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns_query.c, src/icmp.c, src/status.c, src/conf-parse.y, src/dns_answer.c, version:
- Bump alpha version, more alignment fixes. All casts should be correct
- now.
-
-2001-03-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/dns_query.c, AUTHORS, THANKS:
- Add the alpha fixes by P.J. Bostley, and add him to THANKS and AUTHORS.
-
-2001-03-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns.h, src/helpers.h:
- Remove prototype for removed function strtolower.
- Use unit16_t and uint32_t instead of unsinged short/long for dns
- protocol structures.
-
-2001-02-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/status.c, src/conf-lex.l.in, src/conf-parse.y, AUTHORS, Makefile.am, version:
- Add MX and CNAME for rr sections in the config file and MX setting
- for pdnsd-ctl.
- Typo fixes.
-
- * src/netdev.c: Two more fixes.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns.c, src/main.c:
- More small robustness fixes.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/netdev.c, src/status.c, src/status.h, src/conf-parse.y, src/helpers.c, src/main.c, configure.in, version, Makefile.am, NEWS:
- A batch of robustness fixes. Move the status socket to the cache
- directory. Various cleanups.
- It's 1.3 now (hopefully to be released soon).
-
-2001-02-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/main.c, src/conf-lex.l.in:
- Fix breakage of the -mtu option and the query_method option (the parser
- would not recognize constants that contained underscores).
-
-2001-02-20 Thomas Moestl <tmoestl@xxxxxxx>
-
- * contrib/README, contrib/pdnsd_dhcp.pl, AUTHORS, Makefile.am, THANKS, file-list.base.in:
- Add Marko Stolle's pdnsd_update.pl DHCP update script, add him to THANKS,
- and bring a contrib/ directory in place.
-
-2001-02-15 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, configure.in, version:
- Some minor build & misc fixes. Bump version to 1.1.2a and release a
- version with the spec file fixes to get proper Red Hat RPM's.
-
-2001-02-09 Thomas Moestl <tmoestl@xxxxxxx>
-
- * NEWS: Bring NEWS up to date.
-
- * src/icmp.c: Do not close the socket on error.
-
- * pdnsd.spec.in: Add spec file fixes for man pages by Sourav K. Mandal
-
-2001-02-07 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: It is now 1.1.2.
-
- * src/dns_query.c, src/main.c, Makefile.am, THANKS:
- Fix a too strict length checking that could cause SERVFAIL to be returned
- when the server returned NXDOMAIN. Add Markus Storm to THANKS (he has
- reported this bug and supplied helpful information).
- Minor tweaking in main.c.
- Remove emptying of GZIP_ENV in Makefile.am (this normally contains --best).
-
-2001-01-27 Thomas Moestl <tmoestl@xxxxxxx>
-
- * AUTHORS, THANKS:
- Add Michael Wiedmann to AUTHORS and THANKS for his pdnsd-ctl.8 man page.
-
- * doc/Makefile.am, doc/pdnsd-ctl.8, configure.in, Makefile.am:
- Add the pdnsd-ctl man page contributed by Michael Wiedmann. For this to
- build in a correct way, add doc/Makefile.am and move all doc and
- pdnsd.conf.sample related stuff in there.
-
-2001-01-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/main.c: Removed unneeded for the non-O_NOFOLLOW case.
-
-2001-01-24 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/main.c:
- Add a fchown and a fchmod to the new non-O_NOFOLLOW case (not yet used).
-
- * src/conf-parse.y, src/main.c, src/status.c: Misc small fixups.
-
- * version: It's called 1.1.1 now.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/status.c, src/main.c:
- Fix command line parsing. Add code to securely create pid files under
- OSs that do not support the O_NOFOLLOW flag (those OSs are not supported
- yet, though).
- Fix a possible race condition in socket creation/chmod. We now create
- a directory in /tmp (or whatever TEMPDIR was set) to hold the socket.
-
- * src/dns.c, src/dns_answer.c, src/icmp.c, src/main.c, src/status.c:
- Another slew of copyright notice upgrades.
-
- * version, configure.in:
- Bump beta revision, fix typo (missing $) in configure.in
-
- * src/dns.c, src/dns_answer.c, src/status.c:
- Silence BSD compile time warnings.
-
- * configure.in:
- Cleanup, add autoconf code for building pdnsd on FreeBSD-CURRENT with the
- new additionally-linked libc_r.
-
-2001-01-16 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/icmp.c, version:
- Bump beta revision, fix a comment. Also, generate ping id's using pdnsd's
- random wrappers instead of using rand() for paranoia.
-
-2001-01-15 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/helpers.c, configure.in: Improve wording.
-
- * src/helpers.c: Update copyright year (forgotten in last commit).
-
- * src/dns_answer.c, src/helpers.c, src/main.c, acconfig.h, configure.in, version:
- Bump versions. Small fixes (move socket intitializations from
- udp_server_thread to init_udp_sockets to prevent warning when startup
- takes long.
- Make arc4random an option for a query id RNG and make it the default
- on FreeBSD.
-
-2000-12-07 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/conf-parse.y, src/main.c, version:
- We are at 1.1.1p1. Removed the exec-uptest security warning printef if no
- explicit user is given in the strict_setuid case (it is not needed there,
- and confuses users).
-
-2000-11-28 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/helpers.c:
- Converted cache locks to use condition vars and have lock contention
- prevention. Added comments where not converted.
-
-2000-11-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * AUTHORS, THANKS, pdnsd.spec.in:
- Added spec file patches by Bernd Leibing and added him to AUTHORS and
- THANKS.
-
-2000-11-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/Makefile.am: Fixed a hopefully last SuSE rpm build bug.
-
- * src/rc/SuSE/Makefile.am:
- Another one: allow rc.conf manipulation to fail for a clean
- rpm build (SuSE only).
-
- * file-list.base.in:
- Last-minute fix: correct filelist for rpm build to reflect the new name
- for the sample configuration.
-
- * version: It's 1.1.0 now.
-
-2000-11-18 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns_query.c, version:
- Fixed a condition where the cache code did not give up a lock.
- Made the udp code use connect().
- Some small changes.
-
-2000-11-16 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: Calling it 1.1.0b3.
-
-2000-11-15 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/test/Makefile.am, src/pdnsd-ctl/Makefile.am, src/cache.c, src/Makefile.am, src/dns_answer.c, src/error.h, src/icmp.c, src/icmp.h, src/main.c, src/netdev.c, src/servers.c, src/thread.c, Makefile.am, configure.in, version:
- Enabled new rr support by default (some resolvers don't seem to like not
- supported answers - not our bug, but well).
- Made some globals volatile to avoid being bitten by optimisations.
-
-2000-11-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * TODO, version: Called it the first beta.
-
-2000-11-11 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/conf-lex.l.in, src/conf-parse.y, doc/pdnsd.conf.in:
- renanmed rrneg to neg in the config file.
- Misc small fixes.
- pdnsd-ctl record xxx inval will now also invalidate local records.
-
- * src/conf-lex.l.in, src/conf-parse.y, src/dns_answer.c, src/status.c, pdnsd.spec.in:
- Added --sysconfdir=/etc as argument to configure in the spec file.
- Implemented the new rrneg config file section.
-
- * src/test/Makefile.am, src/pdnsd-ctl/Makefile.am, src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/cache.h, src/status.c, src/status.h, TODO:
- Added the neg option to pdnsd-ctl.
-
- * src/cache.c, src/Makefile.am, src/conf-lex.l.in, src/consts.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/main.c, configure.in:
- Assorted fixes. The new features should be stabilized by now, will
- integrate the missing few features now.
- Also actived the tcp server by default.
-
-2000-11-07 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/dns_query.c, src/icmp.c, src/ipvers.h, THANKS, TODO:
- Fixed a possible memory and socket leak reported by Erich Reitz.
- Implemented udp source address discovery for FreeBSD.
-
- * src/dns_query.c: Part 2 of yesterdays fix.
-
-2000-11-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_query.c, version:
- Fixed a bug reported by Erich Reitz: pdnsd could leak fd's and memory if
- queries timed out.
-
- * src/cache.c, src/cache.h, src/Makefile.am, src/dns_answer.c, src/dns_query.c, TODO, configure.in:
- Sorted out some bugs for the new neg cacheing.
-
-2000-11-05 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/dns_query.c, TODO:
- Negative cacheing support is now present, but largely untested.
-
- * src/conff.c, TODO:
- The output of pdnsd-ctl status is now complete with all currently
- supported options.
-
- * src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/conf-lex.l.in:
- Added the config file options for the nefative cacheing support.
-
-2000-11-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/cache.h, src/conf-parse.y, src/dns.c, src/dns_query.c, src/status.c, version:
- The new cache infrastructure for negative cacheing is in place.
- Using and testing it remains.
-
- * src/cache.c, src/cache.h:
- First changes to support negative cacheing. This should not break
- anything, but the cache file format will be incompatible.
-
- * src/main.c, src/dns_answer.c:
- init_udp_socket() and init_tcp_socket() are now called after
- daemonizing on FreeBSD, as bind wants to lock the fd which
- can cause later calls to fail after an exit.
-
-2000-11-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_query.c, src/icmp.c, src/servers.c:
- Minor bugfixes and repository cleanup.
-
-2000-11-02 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/icmp.c, TODO, version:
- Called it 1.0.16p4. Fixed some compatability problems with the new code;
- the ipv4 implementation seems to be fairly stable, the ipv6 one needs
- some testing with dest unreach messages.
-
- * src/icmp.c, src/main.c:
- Rewrote large parts of the ping implementation to be more portable.
-
-2000-11-01 Thomas Moestl <tmoestl@xxxxxxx>
-
- * acconfig.h, configure.in, version:
- Some config fixes, version to 1.0.16p3. SOCKET_LOCKING should be
- off by default, as sendmsg can block.
-
- * src/pdnsd-ctl/pdnsd-ctl.c, src/error.h, configure.in:
- Removed -W* arguments from CFLAGS that were implied by -Wall.
-
- * src/thread.c, configure.in:
- Added some more safety tests to configure.in, and made it give
- an error on some conditions. Also made configure do poll and usleep
- detectione.
-
- * src/cache.h, src/test/Makefile.am, src/dns_answer.c, src/error.c, src/error.h, src/helpers.c, src/main.c, src/servers.c, src/status.c, src/thread.c, src/thread.h, src/Makefile.am:
- Code cleanup. Beautified some macros, and moved the thread
- specific things from error.[ch] over to the new thread.[ch].
- Also introduced usleep_r which tries to be thread safe for
- different Unices.
-
-2000-10-31 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl, src/pdnsd-ctl/pdnsd-ctl.c:
- The pdnsd-ctl binary got into cvs. Fixed that.
-
- * src/pdnsd-ctl/pdnsd-ctl, src/cache.c, src/cache.h, src/error.c, src/helpers.c, src/main.c, version:
- Another set of FreeBSD compatability patches. This seems to catch
- most of the problems, and pdnsd should be useable with libc_r now.
-
-2000-10-30 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/pdnsd-ctl, src/conff.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/icmp.c, src/main.c, AUTHORS, Makefile.am, THANKS, configure.in, version:
- FreeBSD fixes, mostly contributed by Roman Shterenzon.
-
-2000-10-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/pdnsd-ctl/Makefile.am, src/pdnsd-ctl/pdnsd-ctl:
- pdnsd-ctl was not in cvs.
-
- * src/dns_query.c, src/error.h, configure.in: Some fixups for 1.0.15.
-
-2000-10-23 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/dns_query.c, configure.in:
- Several fixes for pdnsd to work better when it receives error replys.
-
- * src/dns.c, src/dns_answer.c:
- Fixed another memory leak on an error path in dns_answer.c and did
- a pointer signedness fixup in dns.c
-
-2000-10-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, AUTHORS:
- Applied a patch by Paul Wagland that fixes some spelling mistakes
- and some memory leaks on error paths.
-
- * src/dns_query.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, NEWS, version:
- Bug fixes. Added the randomize_recs option and turned it on
- by default.
-
-2000-10-20 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/helpers.c, src/dns.c, src/dns_query.c:
- Fixes for the paranoid option to work with root servers
- properly.
-
- * src/dns_query.c, src/dns.h, src/dns_answer.c, AUTHORS, THANKS:
- Applied a patch by Paul Wagland for bind9-compatability and added
- him to AUTHORS and THANKS.
-
-2000-10-19 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, NEWS, version:
- Another POLL_* fix. It is now called 1.0.14.
-
- * src/dns_answer.c, src/dns_query.c, src/icmp.c: BSD build fixes.
-
- * src/dns_query.c:
- Made p_recurdive_query return immediately if a query returns
- NXDOMAIN.
-
- * src/dns_query.c, Makefile.am:
- Some bugifixes. It is now called 1.0.13. Releasing.
-
- * src/cache.c, src/dns_query.c, AUTHORS, NEWS:
- Updated AUTHORS and NEWS. Made destroy_cache() lock the cache so
- that no thread can access the cache afterwards (could lead to
- crashes).
-
- * src/helpers.c, NEWS, THANKS:
- Integrated a security fix contributed by Olaf Kirch: when
- changing user IDs, pdnsd did not reinitialize the supplementary
- group list, meaning that the process still had the privileges
- of the supplementary groups the original user was member of.
-
- * src/conf-lex.l.in, src/conf-parse.y, Makefile.am, TODO, version:
- Introduced the par_queries option.
-
- * src/dns_answer.c, src/dns_query.c, TODO:
- Updated TODO, did some fixups for string handling.
-
- * HACKING: Added HACKING with some comments about coding style.
-
-2000-10-18 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, src/dns_query.c, src/error.h, src/main.c, TODO:
- Revieved and fixed the new dns_query.c-poll/select loops.
-
- * src/test/tping.c, src/dns_query.c, src/icmp.c:
- Fixed the new poll/select ping support.
-
-2000-10-17 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_query.c, src/icmp.c, TODO:
- Got rid of the O_NONBLOCK loop in the icmp.c ping implementation.
- Beta tesing pending.
-
- * src/rc/Debian/Makefile.am, src/conff.c, src/conff.h, src/dns_query.c, src/dns_query.h, THANKS, TODO, acconfig.h, configure.in:
- Corrected the Debian rc script (bug reported by Michael Müller).
- Got rid of the nonblocking socket things in dns_query.c, and
- using poll/select now.
- Testing (esp. --no-poll) remains.
-
- * src/dns_answer.c:
- Got rid of O_NONBLOCK read loops in dns_answer.c, using poll/select
- now instead (after one issue about boundaries was cleared up).
-
-2000-10-16 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am:
- The generated rc scripts do not need to be in the distribution.
-
- * src/conff.c, src/main.c:
- Fixed a server structure members in conff.c. Only delete the socket
- if we are in status pipe mode now.
-
- * src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, src/dns_query.c, acconfig.h, configure.in:
- Added the --enable-tcp-subseq and --with-tcp-qtimeout configure
- options, added the tcp_qtimeout conf file option, tested things.
- 1.0.12 is ready for release.
-
-2000-10-15 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c, TODO, acconfig.h:
- Added TCP timeouts to the answer code. Still need an option in the
- conf file and documentation for that (besides beta testing).
-
- * src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns_query.c, src/helpers.c, src/helpers.h, NEWS, TODO:
- Introduced domain inclusion/exclusion lists in the server section
- (new options include=, exclude=, policy=).
-
-2000-10-14 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, src/main.c, NEWS, TODO, version:
- Upped version, updated NEWS and TODO and implemented a process
- count limit.
-
-2000-10-13 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/Debian/pdnsd.in, src/main.c:
- Added the --pdnsd-user option, and made the Debian rc script
- use it rather than trying to parse the config file itself.
-
-2000-10-11 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/pdnsd, src/rc/SuSE/pdnsd.in, src/rc/RedHat/pdnsd, src/rc/RedHat/pdnsd.in, src/rc/Debian/pdnsd, src/rc/Debian/pdnsd.in, AUTHORS, THANKS, configure.in:
- Added the 'configure'-able rc scripts contributed by Carsten Block
- and added him to THANKS and AUTHORS.
-
- * src/main.c:
- Added O_NOFOLLOW to the pidfile open() call (if it is defined)
- to prevent users creating files as the pdnsd user (using links)
- if the admin put the pidfile in a world-writeable directory
- against all good advice.
- This is not a bug fix! Admins were not, and are still not supposed
- to put the pidfile in a directory that is writeable for untrusted
- users!
-
-2000-10-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * THANKS: Added Milan P. Stanic to THANKS.
-
- * src/main.c:
- Fixed a missing O_WRONLY in the open() call for pidfile operation.
-
-2000-10-08 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/Makefile.am, src/dns.c, src/dns_answer.c, configure.in, version, acconfig.h:
- Released 1.0.11.
- Two security fixes in dns.c and dns_answer.c, and misc. smaller issues.
-
- * src/Makefile.am, src/conf-parse.y, src/dns_answer.c, src/dns_query.c, src/icmp.c, src/servers.c, AUTHORS, THANKS, TODO, acconfig.h, configure.in, version:
- 1.0.10 was released some time ago ;-)
- This had some IPv6 fixes.
- Also fixed minor bug when using SOCKET_LOCKING.
-
-2000-08-28 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/dns_answer.c: Fixed a parameter mismatch in getsockopt()
-
- * Makefile.am:
- Applied Sourav K. Mandal's rpm build patch to the toplevel
- Makefile.am
-
-2000-08-27 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/conf-lex.l.in, src/conf-parse.y, src/consts.h, src/servers.c, version:
- Added diald support. It's now called 1.0.9.
-
- * src/conf-parse.y, src/conff.c, src/netdev.c, pdnsd.spec.in:
- Fixed some ugly typos in conf-parse.y and netdev.c.
- Since I have no further bug reports and these bugs make some
- things inconvenient, I will release 1.0.9 immediately.
-
-2000-08-26 Thomas Moestl <tmoestl@xxxxxxx>
-
- * pdnsd.spec.in: small spec fix.
-
- * NEWS, configure.in: Last fixups for 1.0.8. Released it.
-
- * Makefile.am: Set mode and owner for cache file.
-
- * src/conf-parse.y, src/dns_answer.c, src/netdev.c, acconfig.h, configure.in, version:
- Misc fixes. Hopefully fixed the UDP socket problems under Linux SMP.
-
-2000-08-20 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/dns_answer.c, AUTHORS, THANKS, configure.in, pdnsd.spec.in, version:
- Build fixes by Alexandre Nunes, spec fixes (does now set distro for
- configure), first attempt at an "error in udp send"-fix, and fix
- for a problem with having records for the root domain in the disk
- cache file.
-
-2000-08-13 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/netdev.h, src/servers.c, src/status.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns.c, src/dns.h, src/main.c, src/netdev.c, AUTHORS, THANKS:
- Some minor fixes. Integrated the ppp device patch by Ron Yorston.
-
-2000-08-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * configure.in:
- configure.in was missing in repository. Also removed debugging
- flag for build.
-
- * src/main.c: Made the pid file handling safe for directories.
-
- * src/dns.c: Part II of the last fix.
-
- * src/dns.c:
- Fixed a nasty bug in decompress_name which would produce errors very
- rarely. That was a off-by-one bug, but on the safe side (no overflow,
- stopping one by too early).
-
- * src/main.c:
- Fixed several possible problems with strncat(). None of these was
- critical or involved remote data.
-
-2000-08-08 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/main.c: Changed FreeBSD signal latency to 250 ms.
-
- * src/main.c, acconfig.h:
- A set of last-minute FreeBSD fixes. pdnsd does now NEED linuxthreads on
- BSD.
-
-2000-08-07 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: It's now called 1.0.7.
-
- * src/main.c, doc/pdnsd.conf.in, Makefile.am: Misc build&BSD fixes.
-
- * src/conff.c, src/conf-parse.y, version:
- Version set to the hopefully last beta. Fixed the proxy_only option.
-
-2000-08-05 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_query.c, src/status.c, doc/pdnsd.conf.in, Makefile.am, TODO:
- Added the proxy_only options. Some build fixups.
-
-2000-07-30 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/rc/Makefile.am, src/main.c, src/status.h, AUTHORS, INSTALL, Makefile.am, TODO, version:
- Many small fixups for 1.0.7.
-
-2000-07-29 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/rc/README, src/status.c, src/servers.c, Makefile.am, TODO, acconfig.h:
- Assorted fixes.
-
- * src/cache.c, src/hash.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/icmp.c, src/ipvers.h, src/servers.c, src/servers.h, src/status.c, src/status.h, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, AUTHORS, Makefile.am, THANKS:
- Big heap of updates and fixes. Incorporated build changes from Sourav
- K. Mandal and pcmcia SCHEME support by Stephan Boettcher.
-
-2000-07-22 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/rc/Debian/pdnsd:
- Applied a patch by Markus Mohr to his debian rc script, which I had
- broken in some way.
-
-2000-07-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * src/cache.c, src/main.c, src/status.c, src/status.h:
- Worked on the new status socket (pdnsd-ctl) option.
-
- * src/Makefile.am, version: Upped version, fixed Makefile.am
-
- * src/cache.c, src/hash.c, src/hash.h, src/cache.h, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/dns_query.h, src/helpers.c, src/helpers.h, src/ipvers.h, src/main.c, src/status.c, src/status.h, AUTHORS, Makefile.am, THANKS, acconfig.h:
- Updated AUTHORS and THANKS. Merged in patches by Sourav K. Mandal
- and Lyonel Vincent.
-
-2000-07-20 Thomas Moestl <tmoestl@xxxxxxx>
-
- * doc/pdnsd.conf: Added pdnsd.conf. Well...
-
- * src/dns_query.c, src/dns_query.h, doc/pdnsd.conf:
- Added some ommited files.
-
- * src/test/Makefile.am, src/test/if_up.c, src/test/is_local_addr.c, src/test/random.c, src/test/tping.c, src/rc/SuSE/Makefile.am, src/rc/SuSE/pdnsd, src/rc/RedHat/Makefile.am, src/rc/RedHat/pdnsd, src/rc/Debian/pdnsd, src/rc/Makefile.am, src/rc/README, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_answer.h, src/error.c, src/error.h, src/helpers.c, src/helpers.h, src/icmp.c, src/icmp.h, src/ipvers.h, src/main.c, src/netdev.c, src/netdev.h, src/servers.c, src/servers.h, src/status.c, src/status.h, doc/pdnsd.conf.in, Makefile.am, acconfig.h, file-list.base.in, pdnsd.spec.in:
- Checked in the pdnsd files at their new locations.
-
- * doc/pdnsd.conf, Makefile, a-conf.sh, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
- Removed the moved files. Will add the new ones soon.
-
-2000-07-16 Thomas Moestl <tmoestl@xxxxxxx>
-
- * TODO: New tasks in TODO.
-
-2000-07-15 Thomas Moestl <tmoestl@xxxxxxx>
-
- * TODO:
- Updated TODO: Autoconf support was contributed by Sourav K. Mandal
-
- * conff.h, dns_query.c, ipvers.h, cache.c:
- Fixed some minor bugs and a showstopper in cache.c that caused
- crashes in some situations.
-
-2000-07-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * dns_query.c, error.c, error.h, main.c:
- Made pdnsd ignore SIGPIPE, which seemed to be responsible for some
- crashes.
- Accept (grudgingly) SOA rr's where NS ones would be The Right Thing.
-
-2000-07-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * AUTHORS, THANKS, conff.c:
- Updated AUTHORS, THANKS, and the fprintfs for the status pipe in
- conff.c
-
- * TODO, config.h.templ, dns.h, dns_answer.c, dns_query.c, dns_query.h, main.c, version:
- Added UDP queries and gave the user the choice between TCP and UDP
- queries (UDP is the default now). Made the TCP server optional.
- Fixed a authoritative record handling bug. Added pidfile support.
-
-2000-07-07 Thomas Moestl <tmoestl@xxxxxxx>
-
- * doc/pdnsd.conf:
- Inserted run_as="nobody"; again, it is The Right Thing and people
- should use it.
-
- * Makefile:
- The pdnsd cache directory is now created as nobody, since the
- default run_as in the example pdnsd.conf is also nobody.
-
- * doc/pdnsd.conf:
- Commented the run_as option out (people may run into permission
- problems).
-
- * version: Upped version to 1.0.5
-
- * AUTHORS, THANKS, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, icmp.c, icmp.h, main.c, version:
- Folded in the server_ip option code as contributed by Wolfgang Ocker
- and extended it to IPv6. Fixed a bug in IPv4 ping in IPv6 mode.
-
-2000-07-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * cache.c, dns_query.c:
- Killed a bug which could cause crashes with more than 2 servers.
-
- * cache.c: Fixed a bug reported by Bert Frederiks that would break the
- serve_aliases option when only one character was between official
- name and alias in the /etc/hosts-style file.
-
-2000-07-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * pdnsd-suse.spec.templ: The SuSE spec now uses the new makefile rule.
-
- * Makefile, THANKS, dns_query.c, helpers.c, version:
- Added people to THANKS, fixed a bug that caused uppercase hosts/
- rr-section entries to be ignored in the cache, fixed the SuSE
- makefile for pdnsd to run_as nobody, and other small fixups.
-
-2000-07-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * dns_answer.c:
- First change after release of 1.0.4: The questions received
- are now properly written into the debug file when starting
- with -g -d.
-
- * config.h.templ, dns_query.c:
- Fixed a possible way to get around paranoid restrictions.
-
- * version: Set version to 1.0.4
-
- * doc/pdnsd.conf: Added an entry for the paranoid option.
-
- * cache.c, config.h.templ, dns_answer.c, dns_query.c, ipvers.h:
- Revisions and fixups. The complete code revision is now complete.
-
-2000-06-29 Thomas Moestl <tmoestl@xxxxxxx>
-
- * dns_query.c: Overhaul.
-
- * dns_answer.c, dns_query.c, config.h.templ:
- Code overhault continued. dns_answer.c is finished.
-
-2000-06-27 Thomas Moestl <tmoestl@xxxxxxx>
-
- * conff.c, dns_answer.c, icmp.c, netdev.c, servers.c, status.c:
- Continued code overhaul. Fixed several bugs, and simplified some
- code.
-
- * conf.l.templ, conf.y, conff.c, ipvers.h, version: Fixups.
-
-2000-06-26 Thomas Moestl <tmoestl@xxxxxxx>
-
- * hash.c: Revised; fixed a minor bug.
-
- * cache.c: Overhauled.
-
- * dns_query.c, error.c, helpers.c, helpers.h, ipvers.h, main.c, version, dns.c:
- Manual code overhaul. Numerous small patches, greatly simplified
- decompress_name().
-
-2000-06-25 Thomas Moestl <tmoestl@xxxxxxx>
-
- * config.h.templ:
- Made the C random() RNG the default (using /dev/urandom, we suck up
- too much randomness on high load).
-
- * error.c, error.h, icmp.c, icmp.h, main.c:
- Small cleanups. Makes the testsuite compilation easier.
-
- * Makefile, config.h.templ: Preparing for release of 1.0.4.
-
-2000-06-24 Thomas Moestl <tmoestl@xxxxxxx>
-
- * Makefile, THANKS, a-conf.sh, dns_answer.c, dns_query.c, error.c, version:
- Fixed bugs with the paranoid option, connect() timeout handling, and
- a incompatability in response handling that caused the glibc
- resolver to misunderstand error messages pdnsd generated on unknown
- query types. This bug, that was reported by James MacLean, could
- for example cause ssh to hang some time.
-
- * Makefile, NEWS, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, dns.c, dns_query.c, dns_query.h, helpers.c, helpers.h, icmp.c, icmp.h, main.c:
- Added the paranoid option, and modified the ping uptest so that it
- works with strict_setuid. Also made strict_setuid=on the default.
- 1.0.4 should be out soon.
-
-2000-06-23 Thomas Moestl <tmoestl@xxxxxxx>
-
- * doc/pdnsd.conf: Added a run_as= line, which is sensible normally.
-
- * Makefile, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, dns_answer.h, helpers.c, helpers.h, main.c, servers.c, status.c, version:
- Some fixups, added the run_as and strict_setuid security options.
-
- * THANKS: Updated.
-
- * AUTHORS, ipvers.h, main.c, netdev.c, version:
- Fixed some definitions for glibc2.0-users. Repaced the return at the
- end of main() with _exit(). Should not build and run OK on glibc 2.0
- boxen.
- Fixed a typo in netdev.c
-
- * ipvers.h:
- Fixed a typo in ipvers.h to fix compile problems on systems without
- an IPv6-supporting C library, and possible IPv6 problems using the
- status pipe.
-
- * error.c, version:
- Fixed a bug that could cause signals to be delivered to the wrong
- process.
-
-2000-06-22 Thomas Moestl <tmoestl@xxxxxxx>
-
- * version: Set version to 1.0.1.
-
- * cache.c, dns_answer.c, error.c, error.h, main.c, pdnsd-suse.spec.templ:
- Fixed misc issues reported by Jonathan Hudson and Joachim Dorner, one
- of them a real showstopper in cache.c.
-
- * Makefile, NEWS, README, cache.h, config.h.templ, version:
- Updated things for 1.0.0 and released it finally.
-
- * AUTHORS, THANKS: Updated THANKS and AUTHORS
-
- * NEWS, a-conf.sh, cache.c, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, dns_query.c, error.c, error.h, main.c, servers.c, status.c:
- Fixed a-conf.sh and cleaned up signal handling as far as it can be
- done ;-). Added the max_ttl option.
-
-2000-06-21 Thomas Moestl <tmoestl@xxxxxxx>
-
- * dns_answer.c, error.c, error.h, main.c, servers.c, status.c:
- More signal fixes. This is a real pain with LinuxThreads.
-
- * NEWS, cache.c, dns_answer.c, error.c, error.h, helpers.c, helpers.h, main.c, servers.c, status.c, version:
- Fixups for signal handling. This is more than only a little tricky
- using the linuxthreads library. This hopefully fixes the deadlocks
- we had on signals.
-
-2000-06-13 Thomas Moestl <tmoestl@xxxxxxx>
-
- * AUTHORS, THANKS: Updated credits.
-
- * a-conf.sh:
- A primitive configure-like script intended as drop-in replacement
- until autoconf support finally comes.
-
- * .cvsignore, Makefile, cache.c, dns_query.c, ipvers.h, servers.c, version:
- Added a primitive configuration script as drop-in. Killed some bugs
- and changed the recently added linkdown_kluge option following
- suggestions from Daniel Smolik.
-
-2000-06-12 Thomas Moestl <tmoestl@xxxxxxx>
-
- * dns_query.h, exec-flex.sh, Makefile, cache.c, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, dns_query.c:
- Numerous cleanups and fixes. Implemented the linkdown_kluge option
- as proposed by Daniel Smolik. Hope to get ready for 1.0.0 know.
-
-2000-06-10 Thomas Moestl <tmoestl@xxxxxxx>
-
- * Makefile, NEWS, TODO, dns_answer.c:
- Modified some stuff in dns_answer.c (if no nameserver for a knot in
- the dns namespace is found now, its predecessors are tried now in
- order to return accurate authority results). This will be paid with a
- little more beta time, so the Makefile has developer switches again.
- Corrected NEWS and TODO.
-
- * Makefile, config.h.templ, dns_answer.c, dns_query.c, dns_query.h, hash.h, helpers.c, version:
- Removed some dead code, fixed some really minor bugs. Version is up
- to 1.0.0p7, which is hopefully the last beta.
-
- * Makefile, config.h.templ:
- Fixed things up for the 1.0.0 distribution version
-
-2000-06-06 Thomas Moestl <tmoestl@xxxxxxx>
-
- * Makefile, config.h.templ, icmp.c, netdev.c:
- Some minor comment fixes.
-
- * Makefile, TODO, main.c, version:
- BSD fix in Makefile and help update. It is now called 1.0.0p6. TODO
- was updated to reflect the project status.
-
- * dns_answer.c:
- BSD & misc fixes. pdnsd runs now nicely on my FreeBSD 4.0 box.
-
- * dns_answer.c, ipvers.h:
- Fixed IPv6 UDP dest address recovery. Also fixed a real stupid bug in
- ipvers.h.
-
- * cache.h, dns_query.c, error.h:
- Added DEBUG_MSG6 macros. Cleaned up requery handling.
-
- * dns.c, dns_answer.c, dns_query.c, dns_query.h:
- Fixed another heap of bugs, introduced some sanity checks, no requery
- on answers that have ra not set now.
-
-2000-06-05 Thomas Moestl <tmoestl@xxxxxxx>
-
- * cache.c:
- Fixed write_disk_cache.
-
- * cache.c, cache.h:
- Fixes for rr handling.
-
-2000-06-04 Thomas Moestl <tmoestl@xxxxxxx>
-
- * cache.c, dns_answer.c, dns_query.c:
- Fixes again: some missing checks for rrset existence added.
-
- * cache.c, dns_answer.c, helpers.c, icmp.c:
- Fixes for the new/modified code and its side effects on old code ;-)
-
- * ChangeLog.old, NEWS, cache.c, conf.l.templ, conf.y, conff.c, config.h.templ, dns.c, dns_answer.c, dns_query.c, error.c, hash.c, helpers.c, icmp.c, main.c, netdev.c, servers.c, status.c:
- Folded the ChangeLog and NEWS of the 0.9.x tree back in and added NEWS for the
- upcoming 1.0.0 release. Some compile fixes. Reorganized config.h.templ. Made
- the inclusion of the rcsid strings into the executable optional.
-
- * cache.c, dns_answer.c:
- Pile of fixes on recently added/modified code.
-
-2000-06-03 Thomas Moestl <tmoestl@xxxxxxx>
-
- * .cvsignore, Makefile, lex.inc.h:
- lex.inc.h should not be in CVS (it is automatically generated by
- exec-flex.sh). It should also be deleted by 'make mclean'.
-
- * TODO, cache.c, dns_answer.c, dns_query.c, lex.inc.h:
- rfc2181 conformance should be reached by now. Updated TODO. Bugfixing
- remains.
-
- * doc/html/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html:
- Removed the html documentation from CVS. It is maintained separately.
-
- * doc/pdnsd.conf:
- Added CVS/RCS $Id$ tag.
-
- * cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version, AUTHORS, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c:
- Added CVS/RCS $Id$ tags to most files, did some cleanups, introduced
- the new rrset granularity caching. The new code is still much of beta,
- use with care.
-
-2000-06-01 Thomas Moestl <tmoestl@xxxxxxx>
-
- * Makefile, cache.c, hash.c, helpers.c, icmp.c, netdev.c:
- Yet another set of BSD fixes (test programs do now work for me
- under FreeBSD). Some other minor fixes.
-
- * Makefile, error.c, error.h, helpers.c, helpers.h:
- Transplanted kill_pdnsd from error.c to helpers.c in order to get the
- tests compiled without the thread library.
-
-2000-05-31 Thomas Moestl <tmoestl@xxxxxxx>
-
- * pdnsd:
- Ooops, executable got in.
-
- * Makefile, pdnsd:
- Added test suite programs.
-
- * icmp.c, netdev.c:
- All basic BSD patches have been folded in. pdnsd will now compile on
- FreeBSD with (hopefully) all features.
-
- * dns_answer.c, Makefile:
- Disabled udp targed address discovery for BSD builds (this sadly ist
- OS specific at least for IPv4. Must be rewritten under BSD as it is
- an RFC compatability issue under some circumstances)
-
- * cache.c, cache.h, conf.y, conff.c, conff.h, config.h.templ, dns_answer.c, helpers.c, icmp.c, ipvers.h, netdev.c, Makefile:
- BSD include & misc build fixes. More to follow...
-
- * Makefile, cache.h:
- BSD Fixes: Makefile should work with BSD make, sed command line,
- sorted out naming clash in cache.h
-
- * .cvsignore:
- Added ChangeLog to .cvsignore
-
- * THANKS, conff.c:
- Fixed a bug reported by Jonathan Hudson and added him to THANKS
-
- * ChangeLog.old:
- Added the pre-CVS ChangeLog.
-
- * .cvsignore, AUTHORS, COPYING, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, doc/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html, doc/pdnsd.conf, doc/txt/.cvsignore, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, lex.inc.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
- Initial import of pdnsd-1.0.0p3 source tree into CVS.
-
-
- * .cvsignore, AUTHORS, COPYING, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, doc/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html, doc/pdnsd.conf, doc/txt/.cvsignore, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, lex.inc.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
- New file.
-
diff --git a/jni/pdnsd/ChangeLog.old b/jni/pdnsd/ChangeLog.old
deleted file mode 100644
index 0b3553e..0000000
--- a/jni/pdnsd/ChangeLog.old
+++ /dev/null
@@ -1,161 +0,0 @@
-2000-02-15
- Version 0.2. First working alpha with the extended feature set.
-
-2000-02-16
- Version 0.3 with many bugfixes, better standard conformity and
- some new features.
-
-2000-02-17
- Did a lint on the code, implemented soft timeouts, again bugfixes,
- drastically reduced cache memory requirements, implemented local
- records.
- Version 0.4 released.
-
-2000-02-19
- Recursive query finally implemented. Version 0.5 out.
-
-2000-02-20
- Various bugfixes. The server now always tries to get an AA answer
- if possible; this implies recursion. This is to deal better with
- caching servers that may return incomplete results on * queries.
- This may be a little sub-optimal since it may not take the full
- effect of caching, but it is the only real possibility of getting
- complete records.
- Redid the deps in the makefile for now.
- Version is now 0.6.
-
-2000-02-21
- Another set of bugfixes. Version is 0.6.1.
-
-2000-02-22
- Another set of bugfixes. It should stabilize by now. Answer compression
- is there finally. Version is therefore up again, 0.7 by now.
-
-2000-02-23
- Minor bugfixes, isdn interface uptest added. The new record types as of
- rfc1700 are implemented, but as a compile-time option, since normally
- there is no need to waste space for them.
- Version is 0.7.1.
-
-2000-02-24
- Version 0.7.2 with all rrs up to KX (36). #define DNS_NEW_RRS in
- config.h and (re)compile if you want to use them. Delete the cache
- file before using a version with this option changed!
- NSAP-PTR does NOT WORK (any incoming answer containing it may cause
- a format error) because it is ill-designed (see TODO). Never mind, it
- is officially deprecated anyway.
- The secure DNS extension record types defined in RFC 2065 (KEY, SIG,
- NXT) are cached only and therefore useless.
-
-2000-02-26
- Version 0.8 with parallel query (and probably new bugs) introduced.
-
-2000-02-27
- Version 0.8.1 with minor bugfixes on the new features.
-
-2000-02-27
- Version 0.8.5 with authority support and the usual bugifxes. Some issues
- with standard conformity were also fixed (wow, two versions a day).
-
-2000-02-28
- Implemented caching of non-authoritative records. This allows better
- usage of other caching name servers. This may return non-authoritative
- records to any non-wildcard query. If a wildcard query arrives, we
- always look for authoritative records, so we do if the non-authoritative
- answer does not contain at least one answering record to the query.
- This fixes the sub-optimal behaviour since 0.6.
- Version is therefore up to 0.8.7 (0.8.6 was also released today
- containing bugfixes)
-
-2000-02-29
- Better thread support, avoiding deadlocks in signal handling. The cost
- is unfortunately one more thread.
- New option server_port in config file.
- Version is 0.8.8.
-
-2000-03-01
- Nailed a renitent memory leak bug to the wall (shame, what a trivial
- mistake). Also improved handling of error conditions slightly.
- Version is 0.8.9.
-
-2000-03-01
- Cache code cleanup. The development of the non-parallel query code
- is discontinued, although it still works. If you want serial query,
- just set PAR_QUERIES to 1.
- Additional information finally implemented.
- We are up to 0.9.
-
-2000-03-02
- Fixed a DoS possibility.
- More rfc compatability fixups and a smarter resolver logic.
- Version 0.9.1
-
-2000-03-02
- Added the source section to the config file handling. This allows to
- source your /etc/hosts file. Version 0.9.2.
-
-2000-03-02
- Avoiding double additional records now. Version 0.9.3.
-
-2000-03-09
- Fixed some REALLY STUPID bugs. Uuummph, thought it was finished.
- However, the number of bugs remaining is always n+1...
- Anyway, we are up to 0.9.4. Hope that there are no mean bugs left.
-
-2000-03-14
- Added another uptest, exec. See README for details. Also grained the
- cache size finer (it's now specified in kB). Version 0.9.5
-
-2000-04-07
- Fixed some really stupid bugs, what else? Version is 0.9.6
- To be more exact: fixed misc bugs, cleaned up hash.c and cache.c
-
-2000-04-20
- Again fixed some bugs, version is now 0.9.7.
-
-2000-04-29
- Fixed a build problem caused by some missing #defines in glibc2.0 and a
- minor bug.
- Version is up to 0.9.8
-
-2000-04-30
- Fixed some unclean C code and did a general C lint. Thanks to Byrial
- Jensen for pointing out some issues. Now using stricter compiler flags.
- Also replaced the daemon() call in main.c for improved portability.
- Pre-Released 0.9.9p1
-
-2000-05-03
- Released 0.9.9p2 with the changes of 0.9.9p1, Documentation updates,
- bugfixes, and the Red Hat rc scripts contributed by Torben Janssen.
- Also, the meaning of the command line option -v has changed.
- There is a new config file option "lean_query" that is on by
- default. It is an optimization, so please look in the docs when
- updating whether you want it switched on or not.
- Removed the long-dead serial query code from the distribution tree.
- Some resolvers seem to be broken somehow in a respect that it cares
- about order in which the records appear. In particular, it wants
- cname to appear before other records. Ok, so it be...
-
-
-2000-05-04
- Save all names in lower case in the rrs.
- Tidying up the source tree.
- The long-awaited cache structure changes have been started. Please
- delete you cache files before using this new release.
-
-2000-05-05
- Fixed several bugs in the old and in the new source tree.
- Use time_t instead of long for internal time storage for compatibility.
-
-
-2000-05-06
- Version 0.9.10.
- This fixes a bug in uptest=if. Red Hat and configuration fixes
- suggested by Soeren J. Peters were included.
-
-2000-05-08
- Version 0.9.11
- This fixes a locally exploitable security problem (pdnsd.cache was
- world-writeable). This is actually a one-line fix; for a description of
- possible dangers, please refer to the html documentation.
- Thanks to Alan Swanson for reporting.
diff --git a/jni/pdnsd/INSTALL b/jni/pdnsd/INSTALL
deleted file mode 100644
index 0399189..0000000
--- a/jni/pdnsd/INSTALL
+++ /dev/null
@@ -1,190 +0,0 @@
-The installation instructions are in doc/html/doc.html and doc/txt/manual.txt.
-The system requirements are listed in doc/html/index.html and doc/txt/intro.txt.
-I recommend using the html version.
-Following are generic installation instructions for autoconf programs.
-I strongly recommend to read the Installation section in the docs!
-
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
- The file `configure.in' is used to create `configure' by a program
-called `autoconf'. You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory. After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
- CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
- If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/jni/pdnsd/Makefile.am b/jni/pdnsd/Makefile.am
deleted file mode 100644
index 146c32a..0000000
--- a/jni/pdnsd/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-
-SUBDIRS = src doc contrib
-
-EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
-
-# The sample configuration is handled in doc/Makefile.am
-install-data-hook:
- $(mkinstalldirs) "$(DESTDIR)$(cachedir)"
- test -f "$(DESTDIR)$(cachedir)/pdnsd.cache" || \
- touch "$(DESTDIR)$(cachedir)/pdnsd.cache"
- if test `whoami` = "root"; then \
- chown $(def_id) "$(DESTDIR)$(cachedir)/pdnsd.cache"; \
- chown $(def_id) "$(DESTDIR)$(cachedir)"; \
- fi
- chmod 0640 "$(DESTDIR)$(cachedir)/pdnsd.cache"
- chmod 0750 "$(DESTDIR)$(cachedir)"
-
-dist-hook: $(PACKAGE).spec.in
- sed -e '/^%{!?distro: %define distro /c\
- %if 0%{!?distro:1}\
- %if "%{_vendor}" == "redhat"\
- %define distro RedHat\
- %else\
- %if "%{_vendor}" == "suse"\
- %define distro SuSE\
- %else\
- %if "%{_vendor}" == "SuSE"\
- %define distro SuSE\
- %endif\
- %endif\
- %endif\
- %endif' \
- -e 's:[@]PACKAGE[@]:$(PACKAGE):g' \
- -e 's:[@]VERSION[@]:$(VERSION):g' \
- -e 's:[@]fullversion[@]:$(fullversion):g' \
- -e 's:[@]packagerelease[@]:$(packagerelease):g' \
- -e 's:[@]cachedir[@]:/var/cache/$(PACKAGE):g' \
- -e 's:[@]def_id[@]:$(PACKAGE):g' \
- $(PACKAGE).spec.in > $(distdir)/$(PACKAGE).spec
-
diff --git a/jni/pdnsd/Makefile.in b/jni/pdnsd/Makefile.in
deleted file mode 100644
index a865d54..0000000
--- a/jni/pdnsd/Makefile.in
+++ /dev/null
@@ -1,734 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/PKGBUILD.in \
- $(srcdir)/config.h.in $(srcdir)/file-list.base.in \
- $(srcdir)/pdnsd.spec.in $(top_srcdir)/configure AUTHORS \
- COPYING ChangeLog INSTALL NEWS THANKS TODO acconfig.h compile \
- depcomp install-sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = pdnsd.spec file-list.base PKGBUILD
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = src doc contrib
-EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
- @:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: $(am__configure_deps) $(top_srcdir)/acconfig.h
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-pdnsd.spec: $(top_builddir)/config.status $(srcdir)/pdnsd.spec.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-file-list.base: $(top_builddir)/config.status $(srcdir)/file-list.base.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-PKGBUILD: $(top_builddir)/config.status $(srcdir)/PKGBUILD.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
-
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
-
-dist-tarZ: distdir
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
-
-dist-shar: distdir
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
-
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile config.h
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-data-am install-strip \
- tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
- distcheck distclean distclean-generic distclean-hdr \
- distclean-tags distcleancheck distdir distuninstallcheck dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-data-hook install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
- tags-recursive uninstall uninstall-am
-
-
-# The sample configuration is handled in doc/Makefile.am
-install-data-hook:
- $(mkinstalldirs) "$(DESTDIR)$(cachedir)"
- test -f "$(DESTDIR)$(cachedir)/pdnsd.cache" || \
- touch "$(DESTDIR)$(cachedir)/pdnsd.cache"
- if test `whoami` = "root"; then \
- chown $(def_id) "$(DESTDIR)$(cachedir)/pdnsd.cache"; \
- chown $(def_id) "$(DESTDIR)$(cachedir)"; \
- fi
- chmod 0640 "$(DESTDIR)$(cachedir)/pdnsd.cache"
- chmod 0750 "$(DESTDIR)$(cachedir)"
-
-dist-hook: $(PACKAGE).spec.in
- sed -e '/^%{!?distro: %define distro /c\
- %if 0%{!?distro:1}\
- %if "%{_vendor}" == "redhat"\
- %define distro RedHat\
- %else\
- %if "%{_vendor}" == "suse"\
- %define distro SuSE\
- %else\
- %if "%{_vendor}" == "SuSE"\
- %define distro SuSE\
- %endif\
- %endif\
- %endif\
- %endif' \
- -e 's:[@]PACKAGE[@]:$(PACKAGE):g' \
- -e 's:[@]VERSION[@]:$(VERSION):g' \
- -e 's:[@]fullversion[@]:$(fullversion):g' \
- -e 's:[@]packagerelease[@]:$(packagerelease):g' \
- -e 's:[@]cachedir[@]:/var/cache/$(PACKAGE):g' \
- -e 's:[@]def_id[@]:$(PACKAGE):g' \
- $(PACKAGE).spec.in > $(distdir)/$(PACKAGE).spec
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/NEWS b/jni/pdnsd/NEWS
deleted file mode 100644
index 9a83bba..0000000
--- a/jni/pdnsd/NEWS
+++ /dev/null
@@ -1,324 +0,0 @@
-Version 1.2.9a fixes a bug in the 1.2.9 release that causes a build failure when
-pdnsd is configured with --enable-strict-rfc2181. Unless you use this option to
-compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
-
-Version 1.2.9 has support for many additional RR types, in particular those
-needed for DNSSEC (though no support for the DNSSEC protocol itself yet in
-pdnsd). Caching data structures are now more efficient when they only store the
-most commonly used RR types. Fine-grained configurability over which RR-types
-are cache-able. Pdnsd now has support for EDNS (Extension mechanisms for DNS),
-although its usefulness is currently limited to enabling UDP messages larger
-than 512 bytes. Defining local TXT records in the configuration file is now
-supported. A new configuration option provides a fix in case the query uptest
-fails due to remote servers ignoring empty queries. Several bugs have been fixed
-including a UDP socket descriptor leak that affected the FreeBSD platform, and
-an IPv6 port binding bug.
-
-Version 1.2.8 implements support for automatic discovery of root servers.
-There are also some improvements in the resolver and a new default setting for
-the neg_rrs_pol configuration option.
-
-Version 1.2.7-par fixes some security problems. It contains a fix for a
-"dangling pointer" bug that could cause pdnsd to crash when it received a long
-reply. It also addresses some of the issues raised in the CERT vulnerability
-note VU#800113 by making the default of query_port_start equal to 1024, thereby
-ensuring that source ports are randomly selected by the pdnsd resolver in the
-range 1024-65535. This release also fixes problems with compiling pdnsd for the
-ARM architecture and for the Darwin platform (Max OS X). There are a number of
-(minor) new features. pdnsd now supports "include" files, essentially
-configuration files that only contain definitions for local records. It is now
-possible to define interactively, using pdnsd-ctl, any local record that can be
-defined in a configuration file.
-
-Version 1.2.6-par has an upgraded license: GPL version 3.
-A bug has been fixed which which caused pdnsd to handle NXDOMAIN replies
-inefficiently when configured with neg_domain_pol=on. Also the code for the
-ping test has been fixed, which was broken for 64-bit systems. A new option
-randomize_servers can be used to give each server in a section of the
-configuration file an equal chance of being queried. The new options reject,
-reject_policy and reject_recursively make it possible to check for the presence
-of certain IP addresses in the replies of name servers and to correct some types
-of unwanted replies or to censor these IP addresses.
-The pdnsd-ctl 'add a' and 'add aaaa' commands now allow multiple IP addresses to
-be specified for the same name. There are some further improvements to pdnsd's
-recursive resolver.
-
-Version 1.2.5-par introduces a new query method: udp_tcp. With this method a UDP
-query is tried first and, if the UDP answer is truncated, the query is repeated
-using TCP, which is the behaviour that seems to be recommended by the DNS
-standards. There is a new configuration option use_nss, which can be turned off
-to prevent lengthy timeouts and stalls in certain situations. A bug has been
-fixed which could cause pdnsd to crash if debug output was generated before the
-debug output stream was properly initialized.
-
-In version 1.2.4-par a memory leak and a minor buffer-overflow problem have been
-fixed. There is now a fix for some situations that would previously cause pdnsd
-to exit prematurely (such as ACPI S3 sleep or trying to attach strace to pdnsd).
-Time intervals specified in the configuration file can now be expressed in
-minutes, hours, days and weeks as well as seconds. Support for Apple Mac OS X
-v10.4 Tiger has been improved. The "pdnsd-ctl status" command now also provides
-some information about the status of the running threads. There are some further
-improvements in the debugging information provided by pdnsd.
-TCP-query support is now compiled in by default (but can still be disabled using
-the configure option --disable-tcp-queries).
-
-In version 1.2.3-par the "pdnsd-ctl empty-cache" command can be provided with an
-include/exclude list, allowing the user to specify a selection of names to be
-removed, instead of emptying the cache completely.
-Additional improvements: pdnsd should now remain responsive while executing the
-"pdnsd-ctl empty-cache" command. With the query_method=tcp_udp option pdnsd will
-now also try a UDP query after a TCP connection times out, which should allow
-pdnsd to resolve the same names with query_method=tcp_udp as with
-query_method=udp_only, although perhaps with an occasional delay.
-"pdnsd-ctl config" or "pdnsd-ctl server" commands should now run without delays,
-even if pdnsd is performing ping or query uptests at the time. A problem with
-resolving certain names using root servers has been fixed.
-
-Version 1.2.2-par has a number of important portability improvements. A bug has
-been fixed that prevented pdnsd from compiling successfully on some 64 bit
-architectures. The code for determining endianness (most significant or least
-significant byte first) should now be more portable. This release has
-(experimental) support for the Darwin (Apple Mac OS X) platform. On Linux
-systems, the configure script will now try to detect automatically whether the
-system implements the Native POSIX Thread Library, but the method used may not
-necessarily be foolproof. In addition, the debug features have been improved and
-should make it easier to find out why pdnsd considers some queries or replies
-malformed.
-
-Version 1.2.1-par has improved support for non-Linux platforms. This release has
-(experimental) support for the Cygwin platform, and should also fix some
-compilation glitches that have been reported by FreeBSD users.
-
-Version 1.2-par is a new and improved version of pdnsd! Most of the changes
-effect the internal workings of pdnsd, but there are also a number of
-interesting new features (well, I think they are interesting). Among the bugs
-fixed are two rather nasty ones which involve the handling of NXT and NAPTR
-records and which can cause pdnsd to crash or abort. The new features include a
-new server availability test which can be specified with uptest=query, support
-for reading the DNS configuration from resolv.conf files, a new option for
-optimizing the use of root servers, a new option that makes defining local
-records for reverse resolving easier, support for defining wildcard records, a
-new pdnsd-ctl command for reloading the config file without restarting pdnsd,
-and a new pdnsd-ctl command for dumping information about the names stored in
-the cache.
-The documentation has also been updated: there is now a pdnsd.conf man page. For
-a more complete list of the changes I'll have to refer you to README.par and the
-ChangeLog.
-
-Version 1.1.11a-par contains a fix for FreeBSD users that bypasses a problem
-with the macro ENONET, which can cause a compilation failure when it is
-undefined. Linux users will notice no difference between 1.1.11a-par and
-1.1.11-par.
-
-Version 1.1.11-par has a rather large number of small changes, which are rather
-difficult to summarize. Among the bugs fixed are a race condition in the cache
-lookup code, a flaw in the code that caused a busy spin when a remote server
-answered with "Not Implemented", and problems with the -4 and -6 command-line
-options. Among the improvements are an alternative sorting algorithm which
-should allow pdnsd to start up faster when reading a large cache file from disk,
-automatic mapping of IPv4 to IPv6 addresses when running in IPv6 mode, somewhat
-more efficient memory use, better compression of the replies and changes in the
-parallel querying algorithm that should improve the chances of catching a reply
-from a remote server. For a more complete list of the changes I'll have to
-refer you to README.par and the ChangeLog.
-
-Version 1.1.10-par has a new parser for configuration files, completely
-rewritten from scratch in C. The main advantages are: (f)lex and yacc/bison are
-no longer needed to build pdnsd, more informative error messages instead of
-merely "parse error", and string literals no longer need to be enclosed in
-quotes in most cases. Furthermore, a bug has been fixed that caused incorrect
-IPV6-type PTR records to be generated when sourcing /etc/hosts like files.
-There have been other small changes, more details can be found in the ChangeLog.
-
-Version 1.1.9-par adds some missing pieces to the documentation (the pdnsd
-manual and the man page for pdnsd-ctl). The changes to the code consist mostly
-of optimizations, removal of some size limits due to fixed-size buffers, and
-some cleaning up. I've also tried to make the error responses of pdnsd-ctl more
-helpful. More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par8 introduces a "delegation-only" feature that may be useful
-for blocking Verisign's Sitefinder. The parser for the configuration file now
-tolerates domain names missing a dot at the end. I have provided alternative
-implementations for some GNU extensions that I used in an effort to make the
-code more portable. In particular, the code should build on FreeBSD again. More
-details can be found in the README.par file.
-
-Version 1.1.8b1-par7 fixing a number of bugs. I have also reworked some of the
-code for adding and removing entries in the cache in an effort to improve
-efficiency and stability. More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par6 introduces some further code cleanup. In addition the
-documentation has been revised.
-
-Version 1.1.8b1-par5 fixes a troublesome allocation size error that has been
-discovered in Thomas Moestl's code. In practice this bug only wastes memory but
-it could also potentially lead to memory corruption. Upgrading is
-recommended. More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par4 has been released. Due to incompatibilities between
-various implementations of the pthread library on Linux systems, problems can
-occur with signal handling in pdnsd. The usual symptom is failure by pdnsd to
-save the cache to disk, and /var/cache/pdnsd/pdnsd.cache remaining empty. If you
-experience this kind of trouble, try reconfiguring with different values for the
-new --with-thread-lib option. The allowable values are described in the
-documentation.
-
-pdnsd is no longer maintained by Thomas Moestl: I have not had time to maintain
-pdnsd for quite a while now, and have been very slow to respond to issues, or
-did not respond at all. It is time that I officially announce that pdnsd is no
-longer actively maintained; I apologize to all those who reported bugs or asked
-questions without receiving any reply. However, Paul A. Rombouts has published a
-patch set against the last released version at
-http://www.phys.uu.nl/~rombouts/pdnsd.html, which cleans up a lot of code fixes
-many bugs.
-
-Version 1.1.7a fixes a reversed assertion that would cause pdnsd to terminate
-if used with the ping uptest. No other changes were made.
-
-Version 1.1.7 fixes some problems that might be remotely exploitable to
-gain access as the user pdnsd runs as (an unprivileged user by default). To do
-this, an attacker needs to control a name server that is queried by pdnsd, and
-send a malicious reply to such a query. Upgrading is strongly recommended!
-There are also minor bug fixes and stability improvements.
-
-Version 1.1.6 adds the query_port_start and query_port_end options (contributed
-by Andreas Steinmetz), that allow confining the ports pdnsd uses for outgoing
-queries to a certain range. It also fixes numerous bugs, one of which could
-cause pdnsd to hang; update is therefore recommended.
-
-Version 1.1.5 contains a fix for a security bug that would allow local users
-that are allowed to use pdnsd-ctl on a running pdnsd server to execute
-arbitrary code as the user that pdnsd runs as (or on Linux, when strict_setuid
-is not enabled, as the user that started pdnsd). The danger of this is usually
-quite limited; the status socket is not enabled by default, it's default
-permissions do only allow the user pdnsd runs as to use the socket,
-strict_setuid is enabled by default and pdnsd runs as an unprivileged user.
-There is also a new configure option, --enable-underscores, that will make
-pdnsd allow underscores in domain names. Furthermore, the SRV record handling
-has been fixed to allow underscores in any case (this was not allowed
-previously, but is required by the RFC). SOA records are not put in the
-answer section any more if no answers are found (this violates the RFC's).
-It may be put in the authority section in a later version.
-There are also various bugfixes in this release.
-Upgrade is recommended.
-
-Version 1.1.4 fixes various smaller bugs, and should also improve the cache
-write performance especially for larger caches. There are also two new
-features: servers can now be given a label (using the label server option)
-which can be used to identify them for the pdnsd-ctl server command
-(contributed by Andrew M. Bishop), and local records can be marked to make
-the domain record authoritative in pdnsd's cache (which means that pdnsd will
-assume that records that are not present in the cache for that domain are
-non-existent); this is on by default now, and can be controlled using the new
-authrec server option).
-
-Version 1.1.3 added contrib/ and had a lot of robustness fixes.
-This release addresses a security hole that affects only Linux systems. Due to
-a bug in glibc, pdnsd could crash during a port scan. This release contains
-a workaround for this, as well as a fix for a deadlock under heavy load
-conditions. It also fixes a possible problem that could be triggered by
-malicious servers, and contains numerous bug fixes.
-A script, contributed by Marko Stolle, makes pdnsd useful in a DHCP setup.
-pdnsd also preservers the case of names in the cache, and should work much
-better on alpha machines (thanks for the contributions by Bjoern Fischer
-and P.J. Bostley that made this possible). New types were dded for rr
-sections and pdnsd-ctl.
-Upgrade is recommended.
-
-Version 1.1.2 has a fix for a bug that could cause SERVFAIL to be
-returned when NXDOMAIN would be appropriate. The bug surfaced only when
-pdnsd queried name servers with a behaviour different from BIND's in the
-NXDOMAIN case, e.g. pdnsd querying another pdnsd or e.g. djbdns.
-
-Version 1.1.1 fixes a possible race condition in status socket creation.
-This race might be used by a local attacker to change the access
-permissions of a certain file in /tmp. The risk of this is probably
-negligible. The default setup uses a non-privileged user, default mode
-0600, and the status socket is disabled normally, so this should be
-relatively safe. I don't see any possibility to exploit this, it is
-more of a paranoia fix.
-There are also some other minor fixes and documentation improvements.
-Upgrade is recommended.
-
-Version 1.1.0 introduces negative cacheing, pdnsd-ctl enhancements and
-a much improved FreeBSD support. The cache file format has changed from
-prior releases. Some configuration defaults have changed, too.
-
-Version 1.0.15 is mostly a bugfix release. It also has a new option:
-randomize_recs in the global section.
-
-Version 1.0.14 has a fix in icmp.c that will make it build properly
-on FreeBSD and older Linux systems.
-
-Version 1.0.13 has some code cleanup, a fix for the Debian rc install,
-and a security fix (contributed by Olaf Kirch): when changing
-user and group id, pdnsd did not drop supplementary group IDs that
-the original user was member of.
-
-Version 1.0.12 is a bugfix release and contains some security
-enhancements. There are also inclusion/exclusion lists for servers
-(new options include=, exclude=, policy= in the server
-section).
-
-Version 1.0.11 fixes two bugs that might be used for denial-of-service
-attacks, upgrading is recommended.
-
-Versions 1.0.9 and 1.0.10 are bugfix releases.
-
-Version 1.0.8 introduces special linux ppp device support contributed
-by Ron Yorston, and has some bugfixes.
-
-Version 1.0.7 introduces autoconf support, many new config file options and
-the new pdnsd-ctl run-time configuration program.
-
-Version 1.0.6 has another set of bugfixes, in addition to higher compile-
-time configurability and UDP query support. It also contains Debian rc
-scripts contributed by Markus Mohr.
-
-Version 1.0.5 has some bugfixes and the new "server_ip" option
-contributed by Wolfgang Ocker.
-
-Version 1.0.4 introduces the new options run_as, strict_setuid and
-paranoid. These new options are optional security enhancements.
-
-Versions 1.0.1, 1.0.2 and 1.0.3 are bugfix releases.
-
-Version 1.0.0 has a lot of changes compared to the 0.9.x tree, but much of
-them "under the hood":
-- IPv6 support (experimental; compile- and run-time configurable)
-- FreeBSD (and such hopefully *BSD) support
-- better rfc2181 compatability
-- new options:
- - serve_aliases in source section
- - linkdown_kluge in global section
- - max_ttl in global section
-- cache-code reorganization, only one unified hash (of variable depth)
-- Optimizations & cleanups
-- Automatic deps (only interesting for developers ;-)
-
-Version 0.9.11 fixes a locally exploitable security hole (the cache file was
-world writeable by default). Please see ChangeLog.old for details.
-
-Version 0.9.10 fixes some bugs and improves build on Red Hat.
-
-Version 0.9.9 contains the rc scripts for Red Hat Linux contributed by Torben
-Janssen, in addition to code cleanups and bugfixes.
-The meaning of the option -v has changed in this release.
-There is also a new config file option "lean_query" that is on by default. It
-is an optimization, so please look in the docs when updating whether you want
-it switched on or not.
-
-When compiling versions after 0.9.8, you will probably get more
-compiler warningsthan before. This is because the C compiler settings
-have been made stricter.
-
-Version 0.9.8 fixes a minor bug some build problems with glibc2.0 systems.
-
-The versions 0.9.6 and 0.9.7 are bugfix releases.
-
-Version 0.9.5 introduces uptest=exec, and a modified config file syntax (cache
-sizes are now specified in kB).
-
-Version 0.9.4 was the first to be released to the public. For information on
-changes, see ChangeLog.
-
diff --git a/jni/pdnsd/PKGBUILD.in b/jni/pdnsd/PKGBUILD.in
deleted file mode 100644
index 3d61765..0000000
--- a/jni/pdnsd/PKGBUILD.in
+++ /dev/null
@@ -1,24 +0,0 @@
-# Package build script for Arch Linux,
-# contributed by Alexander Drozdov.
-
-pkgname=@PACKAGE@
-pkgver=@VERSION@
-pkgrel=@packagerelease@
-pkgdesc="pdnsd is a proxy DNS server with permanent caching (the cache contents are written to hard disk on exit) that is designed to cope with unreachable or down DNS servers."
-url="http://members.home.nl/p.a.rombouts/pdnsd.html"
-license="GPLv3"
-depends=()
-makedepends=(glibc)
-conflicts=()
-replaces=()
-backup=()
-install=
-source=(http://members.home.nl/p.a.rombouts/pdnsd/releases/$pkgname-$pkgver-$pkgrel.tar.gz)
-md5sums=()
-
-build() {
- cd $startdir/src/$pkgname-$pkgver
- ./configure --prefix=/usr --enable-ipv6 --sysconfdir=/etc --with-distribution=ArchLinux
- make || return 1
- make DESTDIR=$startdir/pkg install
-}
diff --git a/jni/pdnsd/README b/jni/pdnsd/README
deleted file mode 100644
index 7042e93..0000000
--- a/jni/pdnsd/README
+++ /dev/null
@@ -1,22 +0,0 @@
-You can find the documentation for pdnsd in the doc/ directory. The html
-documentation (which I recommend) is in the doc/html/ subdirectory.
-The pure text documentation (which is generated automatically from the
-html documentation) is in doc/txt/.
-The following documents are available:
-
-index.html / intro.txt Overview, system requirements
-doc.html / manual.txt Building, installation and usage instructions
-faq.html / faq.txt The FAQ
-
-Share and enjoy!
- Thomas <tmoestl@xxxxxxx>
-
-
-For news about recent changes in pdnsd the following files may be of
-interest to you:
-
- README.par
- ChangeLog
- NEWS
-
-Last revised: 08 July 2007 by Paul Rombouts
diff --git a/jni/pdnsd/README.par b/jni/pdnsd/README.par
deleted file mode 100644
index ea181bc..0000000
--- a/jni/pdnsd/README.par
+++ /dev/null
@@ -1,216 +0,0 @@
- pdnsd version 1.2.9a by Paul Rombouts
- =====================================
-
-This file describes the version of pdnsd that I maintain personally and am
-making available so other people can enjoy the latest features and fixes. Thomas
-Moestl no longer maintains pdnsd himself, so I am effectively the new
-maintainer. This README describes the new features in version 1.2. This version
-has a rather large number of internal changes and also some new features, which
-I am rather pleased with, even if I say so myself. I think the changes are
-significant enough to warrant increasing the minor version number from 1.1 to
-1.2. The differences between my previous "official" release 1.1.11 and Thomas'
-last release 1.1.7a are described in my previous README, which I have renamed
-REAME.par.old. In this README I restrict myself to describing changes between
-1.1.11 and 1.2.
-The main difference between versions 1.2 and 1.2.1, aside from some minor
-changes, is that 1.2.1 has (experimental) support for the Cygwin platform.
-Version 1.2.2 has further improvements in portability and should in
-particular now also compile on the Darwin (Apple Mac OS X) platform.
-Version 1.2.4 has some important fixes for a memory leak, a minor buffer-
-overflow problem and some situations which could cause pdnsd to exit
-prematurely. Note that TCP-query support is now compiled in by default, but can
-still be disabled using a configure option.
-The main new feature of version 1.2.5 is the new query method "udp_tcp".
-Version 1.2.6 has an updated license: GPL version 3. The main new feature of
-version 1.2.6 is the "reject" option, which makes it possible to censor or
-correct for unwanted IP addresses in replies.
-Version 1.2.7 contains an important fix for a "dangling pointer" bug and
-attempts to make pdnsd less vulnerable to the issues raised in CERT
-vulnerability note VU#800113. It also contains some improvements for defining
-local records interactively using the pdnsd-ctl utility.
-The main new feature of version 1.2.8 is automatic discovery of root servers,
-as well as some minor improvements in the resolver.
-Version 1.2.9 among other things supports many addtional RR types, uses data
-structures that should be more slightly more memory efficient and has support
-for EDNS, which allows DNS UDP messages to be larger than 512 bytes.
-Version 1.2.9a is a simple bugfix release that fixes a problem with compiling
-1.2.9 after configuring with --enable-strict-rfc2181. Unless you use this option
-to compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
-
-For instructions how to compile and install pdnsd see doc/html/doc.html or
-doc/txt/manual.txt. Note that I am no longer distributing a patch w.r.t. Thomas'
-version because the (compressed) patch file is barely smaller than the
-(compressed) tar archive.
-
-Here follows a list of some of changes in version 1.2 from a user's perspective.
-For a more technical description of some of the changes in the code see the ChangeLog.
-For a short history about recent releases have a look at NEWS or doc/html/index.html.
-
-- First of all, two potentially rather nasty bugs have been fixed in the code
- for the handling of NXT and NAPTR records. A response from a remote server
- containing NXT records (even well-formed ones) will very likely cause pdnsd to
- crash. The code for handling NAPTR records contained incorrect ASSERT
- statements, which could cause pdnsd to abort in a controlled fashion, but
- completely unnecessarily.
-
-- Sampo Lehtinen has remarked that pdnsd sometimes failed to resolve classless
- reversed-delegated IP addresses, and that this has something to do with the
- fact that pdnsd didn't accept '/' characters in domain names. After reading
- some of the relevant RFCs I decided to remove all restrictions on the types
- of characters that pdnsd accepts in domain names. Of course for most
- applications, there are many characters which don't make sense in domain
- names, but I feel that it is the responsibility of the client application to
- reject these, not the proxy server.
-
-- At the suggestion of Dan Tihelka, I have expanded to the server_ip= option to
- allow the name of an interface to be specified instead of an IP address.
- Presently this has been tested on Linux only. Can someone running pdnsd on
- *BSD tell me if the code for getting the address of an interface is different
- for Linux and BSD-type systems?
-
-- At the suggestion of Juliusz Chroboczek I've added an new server availability
- test which can be specified with uptest=query. This can be useful as an
- alternative to "uptest=ping" in case the remote server does not respond to
- ICMP_ECHO requests at all, which unfortunately is quite common these days.
- "uptest=query" causes pdnsd to send an empty query to remote name servers. Any
- well-formed response (apart from SERVFAIL) within the timeout period will be
- interpreted as a sign that the server is "up".
-
-- Instead of specifying the IP addresses of the name servers that pdnsd should
- query in a server section of the config file, you may also specify a
- resolv.conf-style file. Preferably this should not be /etc/resolv.conf. If the
- contents of the resolv.conf type file changes while pdnsd is running, you can
- make pdnsd aware of the changes with the "pdnsd-ctl config" command, see
- below. Example:
-
- server {
- label=myisp;
- file=/etc/ppp/resolv.conf;
- timeout=10;
- }
-
-- There is a new option for "server" sections in the config file:
- root_server=on/off.
- In case a server section contains only addresses of root servers, which
- usually only give the name servers of top level domains in their reply,
- setting root_server=on will enable certain optimizations. This involves using
- cached information to reduce queries to the root servers, thus speeding up the
- resolving of new names.
-
-- New option for "rr" sections in the config file: reverse=on/off.
- If you want a locally defined name to resolve to a numeric address and vice
- versa, you can now achieve this by setting reverse=on before defining the A
- record, making it unnecessary to define a separate PTR record for the reverse
- resolving.
- Example:
-
- rr {
- name = localhost;
- reverse = on;
- a = 127.0.0.1;
- }
-
- has the same effect as:
-
- rr {
- name = localhost;
- a = 127.0.0.1;
- }
- rr {
- name = 1.0.0.127.in-addr.arpa;
- ptr = localhost;
- }
-
-- In rr sections it is now possible to specify a wildcard name, i.e. a name
- starting with the label *. The * in a wildcard can match one or more labels in
- a queried name, but only whole labels. For example, *.mydomain will match
- a.mydomain or www.a.mydomain, but not mydomain. Before you can specify an rr
- section with name=*.mydomain you must define some records for mydomain,
- typically NS and/or SOA records.
- Example:
-
- rr {
- name = mydomain;
- ns = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = *.mydomain;
- a = 192.168.1.10;
- }
-
-- There is a slight backwards compatibility problem which involves the name= and
- owner= options in rr sections. The new version does not allow you to place
- owner= before name=. On the other hand, you may now freely mix the owner
- option with the a,ptr,cname,mx and soa options and define as many records of
- this type as you like (including zero).
-
-- pdnsd-ctl has three new commands:
-
- config: Reloads pdnsd's configuration file. This is more efficient than
- restarting pdnsd, and should not cause only noticeable interruption in DNS
- service. However, some types of configuration changes cannot be put into
- effect this way, and you will be prompted to restart pdnsd instead.
-
- empty-cache: Empties the cache completely, freeing all existing entries.
- In version 1.2.3 you can specify a selection of entries to delete by providing
- a list of include/exclude patterns.
-
- dump: Prints information about all the names stored in the cached. This is
- mainly useful for diagnostic purposes.
-
-- There is now a pdnsd.conf(5) man page, describing pdnsd's configuration file.
- The man page has been generated from the html documentation using a customized
- Perl script.
-
-- New in version 1.2.4: Time intervals in the configuration files can now be
- expressed in seconds, minutes, hours, days and weeks, using the suffixes
- s,m,h,d,and w.
- Example: 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-
-- Version 1.2.5 introduces a new configuration option, contributed by Jan-Marek
- Glogowski, called "use_nss" which can be turned off to prevent nasty delays in
- certain situations.
- Besides the query methods "udp_only", "tcp_only" and "tcp_udp" you can now
- also specify "udp_tcp", which more closely adheres to the behaviour
- recommended by DNS standards.
-
-- Version 1.2.6 introduces the "randomize_servers" and "reject" options. By
- setting "randomize_servers" on you can give each server in a server section an
- equal chance of being queried, which is useful when resolving from root
- servers, for instance. The "reject" option can be used to censor certain IP
- addresses or correct for unwanted replies from servers you don't completely
- trust.
-
-- Version 1.2.7 contains support for "include" files which can be referenced
- from configuration files or read interactively using pdnsd-ctl. These files
- can be used to add local definitions to the cache without reconfiguring pdnsd.
- The new "pdnsd-ctl eval" command can be used to interactively define local
- records that could previously only be defined in configuration files but not
- with the "pdnsd-ctl add" command.
-
-- Version 1.2.8 contains support for automatic discovery of root servers.
- Instead of supplying a complete list of IP addresses of root servers in a
- server section of the configuration file, you need only enter one or two
- addresses of name servers which know the names and addresses of the root
- servers and set "root_server=discover".
- The "neg_rrs_pol" option has a new default setting, which should allow
- sensible negative caching of RRs in most situations, even if "proxy_only=on".
-
-- Version 1.2.9 contains support for EDNS (Extension mechanisms for DNS), which
- allows UDP messages to be larger than 512 bytes. Whether pdnsd uses EDNS in
- outgoing queries is determined by the configuration option "edns_query". If
- pdnsd receives a query using EDNS, it will reply using EDNS regardless of the
- configuration settings.
- Local TXT records can now be defined in the configuration file.
- If the query uptest fails due to remote servers ignoring empty queries, this
- can now be remedied using the new "query_test_name" config option.
-
-The new features are described in greater detail in the manual doc/html/doc.html
-or doc/txt/manual.txt.
-
-Enjoy!
-
-If you have any questions about my version of pdnsd, you can send these
-to <p.a.rombouts@xxxxxxx>. Questions about the original (unmaintained) pdnsd
-version should be sent to <tmoestl@xxxxxxx> or <t.moestl@xxxxxxxx>.
diff --git a/jni/pdnsd/README.par.old b/jni/pdnsd/README.par.old
deleted file mode 100644
index 4bf0eda..0000000
--- a/jni/pdnsd/README.par.old
+++ /dev/null
@@ -1,249 +0,0 @@
- pdnsd maintenance version 1.1.11-par by Paul Rombouts
- =======================================================
-
-This file describes the version of pdnsd that I maintain personally and am
-making available so other people can enjoy the latest features and fixes.
-Thomas Moestl no longer maintains pdnsd himself, so I am effectively the new
-maintainer. The current version is 1.1.11-par, which has a rather large number
-of small changes. Among the bugs fixed are a race condition in the cache lookup
-code, a flaw in the code that caused a busy spin when a remote server answered
-with "Not Implemented", and problems with the -4 and -6 command-line options.
-Among the improvements are an alternative sorting algorithm which should allow
-pdnsd to start up faster when reading a large cache file from disk, automatic
-mapping of IPv4 to IPv6 addresses when running in IPv6 mode, somewhat more
-efficient memory use, and better compression of the replies. Some of the new
-features are described in the second half of this file (look for "new in version
-1.1.11"). For the rest of the changes I will have to refer you to the ChangeLog.
-For a short history about recent releases have a look at doc/html/index.html.
-
-Since version 1.1.9 I've added some missing pieces to the documentation (the
-manual doc/html/doc.html,doc/txt/manual.txt and the man page doc/pdnsd-ctl.8).
-Version 1.1.11 finally has a man page doc/pdnsd.8, thanks to a contribution by
-Mahesh T. Pai.
-
-The first part of this file describes how to patch, compile, install and run
-pdnsd. The second part describes some of the changes I've made to Thomas
-Moestl's code.
-
-Unless you're using the pre-patched source archive pdnsd-1.1.11-par.tar.gz you
-must first apply my patch file pdnsd-1.1.11-par.diff.gz before compiling and
-installing pdnsd according to Thomas Moestl's instructions described in the the
-documentation. Use a freshly untarred copy of Thomas Moestl's original version
-1.1.7a source, cd into the source directory pdnsd-1.1.7a and apply the command:
-
-gzip -cd <path_to_patch>/pdnsd-1.1.11-par.diff.gz | patch -p2 -N -Z
-
-Note: I have used GNU extensions so there may be some portability issues. I have
-supplied alternatives for some of the less portable functions. There should be no
-problem with most Linux distributions.
-
-That's it! You should now be able to compile, install and run pdnsd. See the
-documentation in doc/html/doc.html or doc/txt/manual.txt for more detailed
-instructions.
-
-Some people may want change the compiler optimization flag. I use the -O2 flag,
-but it might be safer to use a lower level of optimization or no optimization at
-all. In that case prefix the configure command with the desired compiler flags
-like this (assuming you're using a bash shell):
-
- CFLAGS="-O1 -g -Wall" ./configure ...
-
-I have added a new configuration option "--with-thread-lib=<lib>", which you
-should use if you experience problems with signal handling under Linux. The
-usual symptom is failure by pdnsd to save the cache to disk, and
-/var/cache/pdnsd/pdnsd.cache remaining empty. If you experience this kind of
-trouble, try reconfiguring with different values for the --with-thread-lib
-option. The allowable values are "linuxthreads" (the default), "linuxthreads2"
-(or "lt2" for short), and "nptl". I recommend that you first configure and
-compile without the --with-thread-lib option, then if you experience trouble try
-again with --with-thread-lib=lt2 and recompile.
-If your Linux system has an implementation of the Native POSIX Thread Library,
-which is the case with Red Hat 9 for instance, you should use
---with-thread-lib=nptl .
-Ideally, I would like to write a configure script which automatically detects
-which kind of thread library is being used on a Linux system, but I don't have a
-clue yet how to do this. If you can help me with this please write to me at the
-email address listed at the end of this file.
-
-The rest of this file describes some of the modifications I've made, but you
-don't have to read it if you simply want to run pdnsd as you're used to.
-
-
-- The main new feature I've added enables you to change the server addresses
- that pdnsd uses at run-time using pdnsd-ctl. I've done this because the ISPs I
- use do not specify fixed DNS server addresses, but expect their clients to use
- dynamic DNS configuration (DHCP in the case of the cable connection, RFC1877
- in case of isdn). I've extended the options that can be given with the
- "server" command to pdnsd-ctl, to allow IP addresses to be specified as an
- additional argument after "up|down|retest". This allows me to put something
- like this in my ifup-local script:
-
- pdnsd-ctl server isp-label up "$DNS1 $DNS2"
-
- For more details how to use pdnsd-ctl read the updated documentation in
- the doc/html directory. There is also a manpage for pdnsd-ctl.
- This was quite tricky to implement because there might be pending queries
- while the addresses are being changed. It certainly was an interesting
- exercise in writing multi-threaded code for me.
-
-
-- I've implemented a feature which allowed me to specify multiple IP addresses
- per server section in the configuration file. This allowed for a much more
- compact configuration file (3 server sections instead of 7 in my case),
- because most configuration options are identical for servers belonging to the
- same ISP. It also made the output of "pdnsd-ctl status" more compact. And it
- was necessary to enable a satisfactory implementation of the previous feature.
- Example of the new syntax:
-
- ip = 123.456.789.001, 123.456.789.002, 123.456.789.003;
-
- At the suggestion of Greg Norris server sections no longer have to specify IP
- addresses. A server section without IP addresses will remain inactive until it
- is assigned one more addresses at run-time with pdnsd-ctl.
-
-- I've changed the implementation of dynamic arrays to make it slightly more
- efficient, and improve type safety. I also got rid of several arrays of fixed
- size in favor of dynamically allocated arrays. In particular, I got rid of
- all occurrences of MAXPATH. I also made several static variables "automatic".
-
-- The output of the "status" command of pdnsd-ctl now gives more meaningful
- constant names "ping|none|if|exec" instead of numbers for the "uptest" option.
- I've also added some information that was previously missing.
-
-- I've fixed I a problem that caused pdnsd to use up a lot of CPU time and slow
- down my system considerably when it received a query that took a long time to
- resolve. It turned out that pdnsd can get into a "busy spin" when one of the
- DNS servers pdnsd is querying refuses the connection. Apart from fixing this
- bug, to speed things up additionally, I thought it would be a good idea to
- mark a server down (without retesting it) after detecting errno==ECONNREFUSED.
- This gives me very satisfactory performance, with the problematic server being
- tried only once during every testing interval.
-
- New in version 1.1.11: An additional busy spin condition, triggered when a
- remote server answers with "Not Implemented", has been discovered and fixed.
- In case there are remaining bugs in the multiplexing code, I've added a test
- that checks if the number of events reported by poll/select matches the number
- of events handled by pdnsd. If not, pdnsd will log an error message and give
- up. Although the bugs still need to be reported and fixed, at least this
- should prevent pdnsd from wasting CPU cycles.
-
-- Due to a bug in Thomas' code, pdnsd tries, but fails, to remove the control
- socket "pdnsd.status" before exiting. This has also been fixed. In version
- 1.1.8b1-par6 I have cleaned this up some more so that pdnsd will handle
- situations where it can't open or bind the control socket more gracefully.
-
-- I've rewritten some of the code that saves the contents of the cache to the
- file "pdnsd.cache" just before pdnsd exits. This is because I noticed in my
- logfiles that pdnsd occasionally had problems reading this file back at
- startup. I eliminated the use of fseek() in Thomas' code. I could not find
- anything that was demonstrably incorrect about his use of fseek(), but it
- seemed better to me to do without it and write the file in a strictly
- sequential order. Anyway, it turned out my hunch paid off: no more error
- messages about "pdnsd.cache" in my logfile.
-
- New in version 1.1.11: I've added some new code for sorting the queue used for
- purging stale cache entries. This should allow pdnsd to start up faster when
- reading large cache files from disk.
-
-- I've extended the configuration options for policies of inclusion/exclusion
- lists in server sections. The new policies options are "simple_only" and
- "fqdn_only". Setting policy=simple_only will cause the server to used only for
- simple hostnames if no other rule matches. On the other hand, setting
- policy=fqdn_only will cause the server to be used only for fully qualified
- domain names (i.e. the name has at least one dot in-between). I find these
- options useful for controlling which name servers (if any) will be used by
- pdnsd for simple host names.
-
-- I've added a new "delegation_only" option that can be used to undo the
- unwanted effects of DNS "wildcards". It works roughly as the feature by the
- same name in BIND. It is turned off by default. To block Verisign's
- Sitefinder, add the following line to the global section of the configuration
- file:
-
- delegation_only= com, net;
-
- If you find that this feature blocks some legitimate domain names, you will
- probably need to add the address of a nameserver that provides good authority
- information. More information can be found at
- http://www.phys.uu.nl/~rombouts/pdnsd/delegationonly.html
-
-- It is no longer mandatory that domain names in the configuration file end in a
- dot.
-
-- The parser for configuration files has been rewritten purely in C, so (f)lex
- and yacc/bison are no longer needed to build pdnsd.
- It is no longer necessary to place strings between quotes in the configuration
- file, unless a string contains a special character such as whitespace, a token
- that normally starts a comment, or one of the characters ",;{}". Note that
- these special characters are illegal in domain names anyway.
-
-- New in version 1.1.11: Negating whole domains with a neg section in the
- config file will result in all the subdomains being negated as well.
- For example, adding the lines
-
- neg {name=doubleclick.com; types=domain;}
- neg {name=doubleclick.net; types=domain;}
-
- will also negate ad.doubleclick.com, ad.fr.doubleclick.net, etc.
-
-- New in version 1.1.11: When running in IPv6 mode, pdnsd will now automatically
- map any IPv4 addresses it reads in the config file to IPv6 addresses.
- When pdnsd has been compiled with IPv6 support and runs in IPv4 mode, it will
- skip IPv6 addresses with a warning message. This may result in certain server
- sections becoming inactive, though.
-
- The -4 and -6 options should now work as advertised.
- I've added two new command-line options, "-a" and "-i <prefix>".
- With the -a flag pdnsd will try to detect automatically if IPv6 support is
- available on a system, and fall back to IPv4 if not. The -a flag can be used
- instead of -4 or -6.
- The -i option can be used to specify a prefix for mapping IPv4 to IPv6
- address. The default is ::ffff.0.0.0.0. There is also a corresponding
- ipv4_6_prefix= option for the config file.
-
-- New in version 1.1.11: I've slightly changed the way pdnsd does parallel
- queries. Active queries or not canceled until we have received a useful
- response from a remote name server, or all the queries have failed or timed
- out. Thus the par_queries parameter is no longer the maximum number of
- parallel queries, but rather the increment with which the number of parallel
- queries is increased when the previous set has timed out. In the worst case
- there will be pending queries to all the servers in the list of available
- servers simultaneously. We may be wasting more system resources this way, but
- the advantage is that we have a greater chance of catching a reply. After all,
- if we wait longer anyway, why not for more servers.
- I've also introduced a global timeout parameter. This is the minimum period of
- time pdnsd will wait after sending the first query to a remote server before
- giving up without having received a reply. The timeout options in the
- configuration file are now only minimum timeout intervals. Setting the global
- timeout option makes it possible to specify quite short timeout intervals in
- the server sections. This will have the effect that pdnsd will start querying
- additional servers fairly quickly if the first servers are slow to respond
- (but will still continue to listen for responses from the first ones). This
- may allow pdnsd to get an answer more quickly in certain situations.
-
- After receiving a reply from a remote server the server is marked up and its
- time stamp is updated. This will have the effect that pdnsd doesn't bother
- testing this server for availability for a period of time, and thus the
- overhead caused by testing is reduced. After server timeouts, uptests are
- performed by the separate server status thread, not by threads that have to
- answer queries. Unresponsive servers with uptest=ping will not be marked down
- immediately any more, but only after the ping test has definitely failed.
-
-I've also included a number of bug-fixes contained in a patch file supplied to
-me by Thomas Moestl. In addition to the things I had already fixed, the
-following issues are addressed: some memory leaks, dropping of root privileges
-before calling uptest scripts in case pdnsd was started setuid root (which is a
-bad idea anyway), passing on open fd's to uptests, integer overruns in the
-status reporting code, fixing string passing from the lexer, more consistent
-treatment of underscores in domain names.
-
-In addition to the things I've listed above, I've made various little changes to
-fix minor bugs, improve efficiency or elegance, or simply to suit my my own
-coding style. These changes are too numerous to list here, but some of them are
-listed in the ChangeLog. Of course if you are really interested in the
-nitty-gritty you can always compare the source of my version with Thomas'
-original code.
-
-If you have any questions about the modifications I've made, you can send these
-to <p.a.rombouts@xxxxxxx>. Questions about the original pdnsd version should
-be sent to <tmoestl@xxxxxxx> or <t.moestl@xxxxxxxx>.
diff --git a/jni/pdnsd/THANKS b/jni/pdnsd/THANKS
deleted file mode 100644
index 9c7e3bb..0000000
--- a/jni/pdnsd/THANKS
+++ /dev/null
@@ -1,66 +0,0 @@
-This is a (hopefully complete) list of people I have to thank for helping me
-develop and improve pdnsd:
-
-David G. Andersen
-Andrew M. Bishop
-Daniel Black
-Carsten Block
-Stephan Boettcher
-P.J. Bostley
-Rodney Brown
-Kevin A. Burton
-Juliusz Chroboczek
-Joachim Dorner
-Frank Elsner
-Christian Engstler
-Stefan Erhardt
-Bjoern Fischer
-Stefan Förster
-Bert Frederiks
-Mike Hammer
-Jonathan Hudson
-Torben Janssen
-Byrial Jensen
-Olaf Kirch
-Nikola Kotur
-Kiyo Kelvin Lee
-Bernd Leibing
-Patrick Loschmidt
-James MacLean
-Sourav K. Mandal
-Fraser McCrossan
-Markus Mohr
-Michael Müller
-Gustavo Niemeyer
-Alexandre Nunes
-Wolfgang Ocker
-Mahesh T. Pai
-Bernhard Pelz
-Soenke J. Peters
-Erich Reitz
-Paul A. Rombouts
-Brian Schroeder
-Roman Shterenzon
-Daniel Smolik
-Milan P. Stanic
-Michael Steiner
-Norbert Steinl
-Andreas Steinmetz
-Marko Stolle
-Markus Storm
-Michael Ströder
-Thomas Stromberg
-Alan Swanson
-Lyonel Vincent
-Eelco Vriezekolk
-Paul Wagland
-Sverker Wiberg
-Michael Wiedmann
-Ron Yorston
-Nikita V. Youshchenko
-Jan-Marek Glogowski
-Thomas Cort
-Pierre Habouzit
-Dirk Armbrust
-Georg Schwarz
-Ashish Shukla
diff --git a/jni/pdnsd/TODO b/jni/pdnsd/TODO
deleted file mode 100644
index f6a1650..0000000
--- a/jni/pdnsd/TODO
+++ /dev/null
@@ -1,20 +0,0 @@
-- Implement a reference counter to ensure that newly entered records are not
- purged immediately (really needed?)
-- Perhaps do a two-step form of recursive query: first query those servers we
- have got cached, then (if unsuccessful) look the others up and query again.
- The impact of this optimisation may not be very big, because all sane servers
- give A records for NS records if possible.
-- Test for compatibility on other Unix-like Systems other than the BSDs and
- Linux; rewrite the functions in netdev.c and icmp.c for those OSs if
- necessary. Also try to get compatibility for other compilers than gcc.
-- Write an install rule for the Slackware start-up script.
-- Update the FAQ.
-- Implement DNSSEC support. Since version 1.2.9, pdnsd is able to cache the RR
- types necessary for DNSSEC, but the resolver is not yet security aware.
-- Implement a lookup table (hash table) for queries in progress. This would
- enable a thread that is resolving a query that is already being handled by
- another thread to wait for that other thread to finish and copy its result
- rather than independently query remote servers. It is very common for
- resolvers to resend UDP queries if they don't get a reply within a timeout
- period and if the answer is not yet cached, this will result in multiple
- threads duplicating each others work in the current implementation.
diff --git a/jni/pdnsd/acconfig.h b/jni/pdnsd/acconfig.h
deleted file mode 100644
index c864071..0000000
--- a/jni/pdnsd/acconfig.h
+++ /dev/null
@@ -1,191 +0,0 @@
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-#undef ISDN_SUPPORT
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#undef ENABLE_IPV4
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- * no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- * against DNS spoofing. Note that some name servers on the
- * internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- * error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- * the query is retried using TCP. */
-#define M_PRESET UDP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-#undef NO_UDP_QUERIES
-#undef NO_TCP_QUERIES
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-#undef NO_TCP_SERVER
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#undef SRC_ADDR_DISC
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-#undef NO_POLL
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-#undef RFC2181_ME_HARDER
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-#undef RANDOM_DEVICE
-#undef R_DEFAULT
-#undef R_RANDOM
-#undef R_ARC4RANDOM
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CACHEDIR "/var/cache/pdnsd"
-
-#define TEMPDIR "/tmp";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
- This has nothing to to with the debug option (-g), but may be set with -v
- option. 0 is for normal operation, up to 3 for debugging.
- Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-#undef DEBUG_HASH
-
-/* Define if you have working C99 Variadic macro support */
-#undef CPP_C99_VARIADIC_MACROS
-
-/* Define as int if socklen_t typedef is missing */
-#undef socklen_t
-
-/* Lock the UDP socket before using it? */
-#undef SOCKET_LOCKING
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 30
-
-/* Allow subsequent TCP queries on one connection? */
-#undef TCP_SUBSEQ
-
-/* Default value for parallel query number */
-#define PAR_QUERIES 2
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX 0
-#define TARGET_BSD 1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#undef THREADLIB_NPTL
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-#undef THREADLIB_LINUXTHREADS2
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
- a pointer to unsigned char and vice versa without complaining.
- By using casts these warning messages can be suppressed, but at the cost
- of losing some type safety.
- Define charp and ucharp to be empty if you are a developer and find type
- safety more important.
- Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "@VERSION@"
-
-#endif
diff --git a/jni/pdnsd/aclocal.m4 b/jni/pdnsd/aclocal.m4
deleted file mode 100644
index 7224f6c..0000000
--- a/jni/pdnsd/aclocal.m4
+++ /dev/null
@@ -1,1021 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
-You have another version of autoconf. It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
- [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too. Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory. The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run. This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-# fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-# fails if $ac_aux_dir is absolute,
-# fails when called from a subdirectory in a VPATH build with
-# a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-# MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH. The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# This was merged into AC_PROG_CC in Autoconf.
-
-AU_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-AC_DIAGNOSE([obsolete], [$0:
- your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
- `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when
- you adjust the code. You can also remove the above call to
- AC_PROG_CC if you already called it elsewhere.])
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-])
-AU_DEFUN([fp_PROG_CC_STDC])
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- am__universal=false
- m4_case([$1], [CC],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac],
- [CXX],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac])
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
-# Do all the work for Automake. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 16
-
-# This macro actually does too much. Some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names. We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
- [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
- [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
- [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[[\\\"\#\$\&\'\`$am_lf]]*)
- AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
- *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball. -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-# tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-# $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
-
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
-
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
- rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
diff --git a/jni/pdnsd/compile b/jni/pdnsd/compile
deleted file mode 100644
index 1b1d232..0000000
--- a/jni/pdnsd/compile
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
-
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@xxxxxxxxxx>.
-#
-# 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 2, 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@xxxxxxx> or send patches to
-# <automake-patches@xxxxxxx>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
-
-Report bugs to <bug-automake@xxxxxxx>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "compile $scriptversion"
- exit $?
- ;;
-esac
-
-ofile=
-cfile=
-eat=
-
-for arg
-do
- if test -n "$eat"; then
- eat=
- else
- case $1 in
- -o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we strip `-o arg' only if arg is an object.
- eat=1
- case $2 in
- *.o | *.obj)
- ofile=$2
- ;;
- *)
- set x "$@" -o "$2"
- shift
- ;;
- esac
- ;;
- *.c)
- cfile=$1
- set x "$@" "$1"
- shift
- ;;
- *)
- set x "$@" "$1"
- shift
- ;;
- esac
- fi
- shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
- # pattern rule where we don't need one. That is ok -- this is a
- # normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
- # ok.
- exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use `[/.-]' here to ensure that we don't use the same name
-# that we are using for the .o file. Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
-while true; do
- if mkdir "$lockdir" >/dev/null 2>&1; then
- break
- fi
- sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
- mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
- mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/config.h b/jni/pdnsd/config.h
deleted file mode 100644
index 2bfa268..0000000
--- a/jni/pdnsd/config.h
+++ /dev/null
@@ -1,437 +0,0 @@
-/* config.h. Generated from config.h.in by configure. */
-/* config.h.in. Generated from configure.in by autoheader. */
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-/* #undef ISDN_SUPPORT */
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#define ENABLE_IPV4 1
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- * no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- * against DNS spoofing. Note that some name servers on the
- * internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- * error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- * the query is retried using TCP. */
-#define M_PRESET TCP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-/* #undef NO_UDP_QUERIES */
-/* #undef NO_TCP_QUERIES */
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-/* #undef NO_TCP_SERVER */
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#define SRC_ADDR_DISC 1
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-/* #undef NO_POLL */
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-/* #undef RFC2181_ME_HARDER */
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-/* #undef RANDOM_DEVICE */
-#define R_DEFAULT 1
-/* #undef R_RANDOM */
-/* #undef R_ARC4RANDOM */
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CONFDIR "/data/data/net.typeblog.socks"
-
-#define CACHEDIR "/data/data/net.typeblog.socks"
-
-#define TEMPDIR "/data/data/net.typeblog.socks/cache";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
- This has nothing to to with the debug option (-g), but may be set with -v
- option. 0 is for normal operation, up to 3 for debugging.
- Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-/* #undef DEBUG_HASH */
-
-/* Define if you have working C99 Variadic macro support */
-#define CPP_C99_VARIADIC_MACROS 1
-
-/* Define as int if socklen_t typedef is missing */
-/* #undef socklen_t */
-
-/* Lock the UDP socket before using it? */
-/* #undef SOCKET_LOCKING */
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 5
-
-/* Allow subsequent TCP queries on one connection? */
-/* #undef TCP_SUBSEQ */
-
-/* Default value for parallel query number */
-#define PAR_QUERIES 4
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX 0
-#define TARGET_BSD 1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#define THREADLIB_NPTL 1
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-/* #undef THREADLIB_LINUXTHREADS2 */
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
- a pointer to unsigned char and vice versa without complaining.
- By using casts these warning messages can be suppressed, but at the cost
- of losing some type safety.
- Define charp and ucharp to be empty if you are a developer and find type
- safety more important.
- Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "1.2.9a-par"
-
-#endif
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the `asprintf' function. */
-#define HAVE_ASPRINTF 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `getline' function. */
-#if defined(__aarch64__) || defined(__x86_64__)
-#define HAVE_GETLINE 1
-#endif
-
-/* Define to 1 if you have the `getpwnam_r' function. */
-//#define HAVE_GETPWNAM_R 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#define HAVE_INET_NTOP 1
-
-/* Define to 1 if you have the `inet_pton' function. */
-#define HAVE_INET_PTON 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#define HAVE_LIBPTHREAD 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mempcpy' function. */
-//#define HAVE_MEMPCPY 1
-
-/* Define to 1 if you have the `mkfifo' function. */
-#define HAVE_MKFIFO 1
-
-/* Define to 1 if you have the `nanosleep' function. */
-#define HAVE_NANOSLEEP 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if you have the `poll' function. */
-#define HAVE_POLL 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if the system has the type `socklen_t'. */
-#define HAVE_SOCKLEN_T 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `stpcpy' function. */
-#if defined(__aarch64__) || defined(__x86_64__)
-#define HAVE_STPCPY 1
-#endif
-
-/* Define to 1 if you have the `stpncpy' function. */
-//#define HAVE_STPNCPY 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlcpy' function. */
-/* #undef HAVE_STRLCPY */
-
-/* Define to 1 if you have the `strndup' function. */
-#define HAVE_STRNDUP 1
-
-/* Define to 1 if the system has the type `struct ifreq'. */
-#define HAVE_STRUCT_IFREQ 1
-
-/* Define to 1 if the system has the type `struct in6_addr'. */
-#define HAVE_STRUCT_IN6_ADDR 1
-
-/* Define to 1 if the system has the type `struct in_pktinfo'. */
-#define HAVE_STRUCT_IN_PKTINFO 1
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#define HAVE_SYSLOG_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#define HAVE_SYS_POLL_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to 1 if you have the `uname' function. */
-#define HAVE_UNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `vasprintf' function. */
-#define HAVE_VASPRINTF 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT ""
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME ""
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING ""
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION ""
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef pid_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/jni/pdnsd/config.h.in b/jni/pdnsd/config.h.in
deleted file mode 100644
index c4ac994..0000000
--- a/jni/pdnsd/config.h.in
+++ /dev/null
@@ -1,430 +0,0 @@
-/* config.h.in. Generated from configure.in by autoheader. */
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-#undef ISDN_SUPPORT
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#undef ENABLE_IPV4
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- * no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- * against DNS spoofing. Note that some name servers on the
- * internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- * error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- * the query is retried using TCP. */
-#define M_PRESET UDP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-#undef NO_UDP_QUERIES
-#undef NO_TCP_QUERIES
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-#undef NO_TCP_SERVER
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#undef SRC_ADDR_DISC
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-#undef NO_POLL
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-#undef RFC2181_ME_HARDER
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-#undef RANDOM_DEVICE
-#undef R_DEFAULT
-#undef R_RANDOM
-#undef R_ARC4RANDOM
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CACHEDIR "/var/cache/pdnsd"
-
-#define TEMPDIR "/tmp";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
- This has nothing to to with the debug option (-g), but may be set with -v
- option. 0 is for normal operation, up to 3 for debugging.
- Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-#undef DEBUG_HASH
-
-/* Define if you have working C99 Variadic macro support */
-#undef CPP_C99_VARIADIC_MACROS
-
-/* Define as int if socklen_t typedef is missing */
-#undef socklen_t
-
-/* Lock the UDP socket before using it? */
-#undef SOCKET_LOCKING
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 30
-
-/* Allow subsequent TCP queries on one connection? */
-#undef TCP_SUBSEQ
-
-/* Default value for parallel query number */
-#define PAR_QUERIES 2
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX 0
-#define TARGET_BSD 1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#undef THREADLIB_NPTL
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-#undef THREADLIB_LINUXTHREADS2
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
- a pointer to unsigned char and vice versa without complaining.
- By using casts these warning messages can be suppressed, but at the cost
- of losing some type safety.
- Define charp and ucharp to be empty if you are a developer and find type
- safety more important.
- Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "@VERSION@"
-
-#endif
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `getline' function. */
-#undef HAVE_GETLINE
-
-/* Define to 1 if you have the `getpwnam_r' function. */
-#undef HAVE_GETPWNAM_R
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#undef HAVE_INET_NTOP
-
-/* Define to 1 if you have the `inet_pton' function. */
-#undef HAVE_INET_PTON
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#undef HAVE_LIBPTHREAD
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mempcpy' function. */
-#undef HAVE_MEMPCPY
-
-/* Define to 1 if you have the `mkfifo' function. */
-#undef HAVE_MKFIFO
-
-/* Define to 1 if you have the `nanosleep' function. */
-#undef HAVE_NANOSLEEP
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#undef HAVE_NET_IF_H
-
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
-
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
-
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if the system has the type `socklen_t'. */
-#undef HAVE_SOCKLEN_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `stpcpy' function. */
-#undef HAVE_STPCPY
-
-/* Define to 1 if you have the `stpncpy' function. */
-#undef HAVE_STPNCPY
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strlcpy' function. */
-#undef HAVE_STRLCPY
-
-/* Define to 1 if you have the `strndup' function. */
-#undef HAVE_STRNDUP
-
-/* Define to 1 if the system has the type `struct ifreq'. */
-#undef HAVE_STRUCT_IFREQ
-
-/* Define to 1 if the system has the type `struct in6_addr'. */
-#undef HAVE_STRUCT_IN6_ADDR
-
-/* Define to 1 if the system has the type `struct in_pktinfo'. */
-#undef HAVE_STRUCT_IN_PKTINFO
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#undef HAVE_SYSLOG_H
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#undef HAVE_SYS_POLL_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the `uname' function. */
-#undef HAVE_UNAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vasprintf' function. */
-#undef HAVE_VASPRINTF
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/jni/pdnsd/configure b/jni/pdnsd/configure
deleted file mode 100644
index a3b7822..0000000
--- a/jni/pdnsd/configure
+++ /dev/null
@@ -1,11389 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-if test "x$CONFIG_SHELL" = x; then
- if (eval ":") 2>/dev/null; then
- as_have_required=yes
-else
- as_have_required=no
-fi
-
- if test $as_have_required = yes && (eval ":
-(as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=\$LINENO
- as_lineno_2=\$LINENO
- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
- :
-else
- as_candidate_shells=
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- case $as_dir in
- /*)
- for as_base in sh bash ksh sh5; do
- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
- done;;
- esac
-done
-IFS=$as_save_IFS
-
-
- for as_shell in $as_candidate_shells $SHELL; do
- # Try only shells that exist, to save several forks.
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-_ASEOF
-}; then
- CONFIG_SHELL=$as_shell
- as_have_required=yes
- if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
- (exit $1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
- break
-fi
-
-fi
-
- done
-
- if test "x$CONFIG_SHELL" != x; then
- for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
- if test $as_have_required = no; then
- echo This script requires a shell more modern than all the
- echo shells that I found on your system. Please install a
- echo modern shell, or manually run the script under such a
- echo shell if you do have one.
- { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
- echo Please tell bug-autoconf@xxxxxxx about your system,
- echo including any error possibly output before this message.
- echo This can help us improve future autoconf versions.
- echo Configuration will now proceed without shell functions.
-}
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-
-ac_unique_file="src"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-ALLOCA
-thread_CFLAGS
-RANLIB
-threadlib
-specbuild
-def_id
-cachedir
-distribution
-packagerelease
-fullversion
-EGREP
-GREP
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_dependency_tracking
-with_distribution
-with_target
-with_cachedir
-enable_isdn
-enable_ipv4
-enable_ipv6
-enable_ipv4_startup
-enable_ipv6_startup
-enable_udp_queries
-enable_tcp_queries
-with_query_method
-enable_tcp_server
-enable_src_addr_disc
-enable_socket_locking
-enable_poll
-enable_new_rrs
-enable_strict_rfc2181
-with_random_device
-enable_underscores
-with_default_id
-with_debug
-with_verbosity
-with_hash_buckets
-enable_hash_debug
-enable_rcsids
-with_tcp_qtimeout
-enable_tcp_subseq
-with_par_queries
-with_max_nameserver_ips
-enable_specbuild
-with_thread_lib
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { $as_echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
- { (exit 1); exit 1; }; } ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; }
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { $as_echo "$as_me: error: working directory cannot be determined" >&2
- { (exit 1); exit 1; }; }
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
- { (exit 1); exit 1; }; }
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-isdn Enable ISDN support (may cause problems on
- some systems; only for Linux)
- --disable-ipv4 Disable IPv4 networking support
- (default=enabled)
- --enable-ipv6 Enable IPv6 networking support
- --disable-ipv4-startup Disable IPv4 on pdnsd startup by default
- (default=enabled)
- --enable-ipv6-startup Enable IPV6 on pdnsd startup by default
- (default=IPv4)
- --disable-udp-queries Disable udp as query method.
- --disable-tcp-queries Disable tcp as query method.
- --disable-tcp-server Disable the TCP serving ability of pdnsd
- --disable-src-addr-disc Disable the UDP source address discovery
- --enable-socket-locking Enable the UDP socket locking
- --disable-poll Disable poll(2) and use select(2)
- (default=enabled)
- --disable-new-rrs Disable new DNS RR types (obsolete, currently ignored)
- --enable-strict-rfc2181 Enforce strict RFC 2181 compliance
- --enable-underscores Allow _ in domain names (obsolete, currently ignored)
- --enable-hash-debug Debug hash tables (warning: massive output)
- --enable-rcsids Enable RCS IDs in executables (obsolete, currently ignored)
- --enable-tcp-subseq Enable multiple dns querys using one
- tcp connection
- --enable-specbuild Only used when building pdnsd from spec files
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-distribution=distro Specify target distribution (default=Generic;
- others: RedHat, SuSE, Debian, ArchLinux)
- --with-target=platform Change compilation target platform (default:
- autodetect; others: Linux, BSD, Cygwin)
- --with-cachedir=dir Default directory for pdnsd cache
- (default=/var/cache/pdnsd)
- --with-query-method=qm Specify the query method (default=udponly;
- others: tcponly, tcpudp, udptcp)
- --with-random-device=device Specify random device other than
- /dev/random; default: C Library random() PRNG;
- special value arc4random for BSD C Library
- arc4random function (default on FreeBSD)
- --with-default-id=id Specify default uid/gid for pdnsd
- (default=nobody)
- --with-debug=level Specify debugging level (0 means no debug support)
- --with-verbosity=level Specify default message verbosity
- --with-hash-buckets=num Number of hash buckets to use (default=1024).
- The number actually used is the smallest power of two
- greater or equal to the number specified here.
- --with-tcp-qtimeout=secs Specify default tcp query timeout (default=30)
- --with-par-queries=num Specify default parallel query number (default=2)
- --with-max-nameserver-ips=num Specify maximum number of IP addresses used per nameserver obtained from NS records (default=3)
- --with-thread-lib=lib Specify thread library, overriding automatic detection (for Linux only).
- Possible values: LinuxThreads,
- LinuxThreads2 (implements a fix for newer glibcs)
- or NPTL (Native POSIX Thread Library)
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.63
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.63. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- esac
- done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
- { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-package="pdnsd"
-version=`cut -d - -f 1 "$srcdir"/version`
-fullversion=`cat "$srcdir"/version`
-packagerelease=`cut -d - -f 2- "$srcdir"/version`
-
-distribution="Generic"
-target="autodetect"
-cachedir="/var/cache/$package"
-ipv4_default=1
-have_ipv4="yes"
-#newrrs="yes"
-query_m="udponly"
-have_tcp_server="yes"
-adisc="default"
-slock="no";
-def_id="nobody"
-#have_rcsids="no"
-udp_queries="yes"
-tcp_queries="yes"
-tempdir="/tmp"
-randomdev=default
-freebsd_pthread="4"
-specbuild=no
-threadlib=default
-
-am__api_version='1.11'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
-done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[\\\"\#\$\&\'\`$am_lf]*)
- { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
-$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-case $srcdir in
- *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
-$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
- { (exit 1); exit 1; }; }
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
- program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
- if test "${ac_cv_path_mkdir+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in mkdir gmkdir; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
- 'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
- break 3;;
- esac
- done
- done
-done
-IFS=$as_save_IFS
-
-fi
-
- if test "${ac_cv_path_mkdir+set}" = set; then
- MKDIR_P="$ac_cv_path_mkdir -p"
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for MKDIR_P within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- test -d ./--version && rmdir ./--version
- MKDIR_P="$ac_install_sh -d"
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:$LINENO: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- SET_MAKE=
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- am__isrc=' -I$(srcdir)'
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
- { (exit 1); exit 1; }; }
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE=$package
- VERSION=$version
-
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { (ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- ac_file=''
-fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
- fi
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_c89=$ac_arg
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- # Broken: success on invalid input.
-continue
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- # Broken: success on invalid input.
-continue
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_stdc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
- if test "${ac_cv_header_minix_config_h+set}" = set; then
- { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
-$as_echo_n "checking for minix/config.h... " >&6; }
-if test "${ac_cv_header_minix_config_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-$as_echo "$ac_cv_header_minix_config_h" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
-$as_echo_n "checking minix/config.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <minix/config.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
-$as_echo_n "checking minix/config.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <minix/config.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
-
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
-$as_echo_n "checking for minix/config.h... " >&6; }
-if test "${ac_cv_header_minix_config_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_header_minix_config_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-$as_echo "$ac_cv_header_minix_config_h" >&6; }
-
-fi
-if test "x$ac_cv_header_minix_config_h" = x""yes; then
- MINIX=yes
-else
- MINIX=
-fi
-
-
- if test "$MINIX" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_SOURCE 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_1_SOURCE 2
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define _MINIX 1
-_ACEOF
-
- fi
-
-
-
- { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_safe_to_define___extensions__=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_safe_to_define___extensions__=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- cat >>confdefs.h <<\_ACEOF
-#define __EXTENSIONS__ 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define _ALL_SOURCE 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define _GNU_SOURCE 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define _POSIX_PTHREAD_SEMANTICS 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define _TANDEM_SOURCE 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$fullversion"
-_ACEOF
-
-
-
-
-
-# Check whether --with-distribution was given.
-if test "${with_distribution+set}" = set; then
- withval=$with_distribution; distribution=$withval
-fi
-
-
-
-
-# Check whether --with-target was given.
-if test "${with_target+set}" = set; then
- withval=$with_target; target=$withval
-fi
-
-case $target in
- Linux|linux)
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_LINUX
-_ACEOF
-
- target="Linux"
- ;;
- BSD| bsd)
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_BSD
-_ACEOF
-
- target="BSD"
- ;;
- Cygwin|CYGWIN|cygwin)
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_CYGWIN
-_ACEOF
-
- target="cygwin"
- ;;
- autodetect)
- ;;
- *)
- { { $as_echo "$as_me:$LINENO: error: --with-target must have Linux, BSD or Cygwin as parameter." >&5
-$as_echo "$as_me: error: --with-target must have Linux, BSD or Cygwin as parameter." >&2;}
- { (exit 1); exit 1; }; }
- ;;
-esac
-
-
-# Check whether --with-cachedir was given.
-if test "${with_cachedir+set}" = set; then
- withval=$with_cachedir; cachedir=$withval
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CACHEDIR "$cachedir"
-_ACEOF
-
-
-
-# Check whether --enable-isdn was given.
-if test "${enable_isdn+set}" = set; then
- enableval=$enable_isdn; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define ISDN_SUPPORT 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-ipv4 was given.
-if test "${enable_ipv4+set}" = set; then
- enableval=$enable_ipv4; have_ipv4=$enableval
-fi
-
-
-test $have_ipv4 = "yes" && cat >>confdefs.h <<\_ACEOF
-#define ENABLE_IPV4 1
-_ACEOF
-
-
-# Check whether --enable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then
- enableval=$enable_ipv6; if test $enableval = "yes" ; then
- cat >>confdefs.h <<\_ACEOF
-#define ENABLE_IPV6 1
-_ACEOF
-
- if test $have_ipv4 != "yes" ; then
- ipv4_default=0
- fi
- fi
-fi
-
-
-# Check whether --enable-ipv4-startup was given.
-if test "${enable_ipv4_startup+set}" = set; then
- enableval=$enable_ipv4_startup; if test $enableval = "yes" ; then
- ipv4_default=1
- else
- ipv4_default=0
- fi
-fi
-
-
-# Check whether --enable-ipv6-startup was given.
-if test "${enable_ipv6_startup+set}" = set; then
- enableval=$enable_ipv6_startup; if test $enableval = "yes" ; then
- ipv4_default=0
- else
- ipv4_default=1
- fi
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_IPV4 $ipv4_default
-_ACEOF
-
-
-# Check whether --enable-udp-queries was given.
-if test "${enable_udp_queries+set}" = set; then
- enableval=$enable_udp_queries; udp_queries=$enableval
-fi
-
-
-# Check whether --enable-tcp-queries was given.
-if test "${enable_tcp_queries+set}" = set; then
- enableval=$enable_tcp_queries; tcp_queries=$enableval
-fi
-
-
-
-# Check whether --with-query-method was given.
-if test "${with_query_method+set}" = set; then
- withval=$with_query_method; query_m=$withval
-fi
-
-case $query_m in
- udponly|UDPonly)
- cat >>confdefs.h <<\_ACEOF
-#define M_PRESET UDP_ONLY
-_ACEOF
-
- udp_queries=yes;
- ;;
- tcponly|TCPonly)
- cat >>confdefs.h <<\_ACEOF
-#define M_PRESET TCP_ONLY
-_ACEOF
-
- tcp_queries=yes;
- ;;
- tcpudp|TCPUDP)
- cat >>confdefs.h <<\_ACEOF
-#define M_PRESET TCP_UDP
-_ACEOF
-
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- udptcp|UDPTCP)
- cat >>confdefs.h <<\_ACEOF
-#define M_PRESET UDP_TCP
-_ACEOF
-
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- *)
- { { $as_echo "$as_me:$LINENO: error: --with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter." >&5
-$as_echo "$as_me: error: --with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter." >&2;}
- { (exit 1); exit 1; }; }
- ;;
-esac
-
-test $udp_queries != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_UDP_QUERIES 1
-_ACEOF
-
-test $tcp_queries != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_TCP_QUERIES 1
-_ACEOF
-
-
-# Check whether --enable-tcp-server was given.
-if test "${enable_tcp_server+set}" = set; then
- enableval=$enable_tcp_server; have_tcp_server=$enableval
-fi
-
-
-test $have_tcp_server != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_TCP_SERVER 1
-_ACEOF
-
-
-# Check whether --enable-src-addr-disc was given.
-if test "${enable_src_addr_disc+set}" = set; then
- enableval=$enable_src_addr_disc; adisc=$enableval
-fi
-
-
-# Check whether --enable-socket-locking was given.
-if test "${enable_socket_locking+set}" = set; then
- enableval=$enable_socket_locking; slock=$enableval
-fi
-
-
-test $slock = "yes" && cat >>confdefs.h <<\_ACEOF
-#define SOCKET_LOCKING 1
-_ACEOF
-
-
-# Check whether --enable-poll was given.
-if test "${enable_poll+set}" = set; then
- enableval=$enable_poll; test $enableval != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_POLL 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-new-rrs was given.
-if test "${enable_new_rrs+set}" = set; then
- enableval=$enable_new_rrs; newrrs=$enableval
-fi
-
-
-# Check whether --enable-strict-rfc2181 was given.
-if test "${enable_strict_rfc2181+set}" = set; then
- enableval=$enable_strict_rfc2181; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define RFC2181_ME_HARDER 1
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-random-device was given.
-if test "${with_random_device+set}" = set; then
- withval=$with_random_device; randomdev=$withval
-fi
-
-
-if test "$randomdev" = arc4random ; then
- cat >>confdefs.h <<\_ACEOF
-#define R_ARC4RANDOM 1
-_ACEOF
-
-elif test "$randomdev" = random ; then
- cat >>confdefs.h <<\_ACEOF
-#define R_RANDOM 1
-_ACEOF
-
-elif test "$randomdev" = default ; then
- cat >>confdefs.h <<\_ACEOF
-#define R_DEFAULT 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define RANDOM_DEVICE "$randomdev"
-_ACEOF
-
-fi
-
-# Check whether --enable-underscores was given.
-if test "${enable_underscores+set}" = set; then
- enableval=$enable_underscores; underscores=$enableval
-fi
-
-
-
-# Check whether --with-default-id was given.
-if test "${with_default_id+set}" = set; then
- withval=$with_default_id; def_id=$withval
-fi
-
-
-
-
-# Check whether --with-debug was given.
-if test "${with_debug+set}" = set; then
- withval=$with_debug; cat >>confdefs.h <<_ACEOF
-#define DEBUG $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-verbosity was given.
-if test "${with_verbosity+set}" = set; then
- withval=$with_verbosity; cat >>confdefs.h <<_ACEOF
-#define VERBOSITY $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-hash-buckets was given.
-if test "${with_hash_buckets+set}" = set; then
- withval=$with_hash_buckets; powof2=1
- hashsz=0
-
- while test $powof2 -lt "$withval"
- do
- powof2=`expr 2 '*' $powof2`
- hashsz=`expr $hashsz '+' 1`
- done
- cat >>confdefs.h <<_ACEOF
-#define HASH_SZ $hashsz
-_ACEOF
-
-
-fi
-
-
-# Check whether --enable-hash-debug was given.
-if test "${enable_hash_debug+set}" = set; then
- enableval=$enable_hash_debug; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define DEBUG_HASH 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-rcsids was given.
-if test "${enable_rcsids+set}" = set; then
- enableval=$enable_rcsids; have_rcsids=$enableval
-fi
-
-
-
-# Check whether --with-tcp-qtimeout was given.
-if test "${with_tcp_qtimeout+set}" = set; then
- withval=$with_tcp_qtimeout; cat >>confdefs.h <<_ACEOF
-#define TCP_TIMEOUT $withval
-_ACEOF
-
-fi
-
-
-# Check whether --enable-tcp-subseq was given.
-if test "${enable_tcp_subseq+set}" = set; then
- enableval=$enable_tcp_subseq; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define TCP_SUBSEQ 1
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-par-queries was given.
-if test "${with_par_queries+set}" = set; then
- withval=$with_par_queries; cat >>confdefs.h <<_ACEOF
-#define PAR_QUERIES $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-max-nameserver-ips was given.
-if test "${with_max_nameserver_ips+set}" = set; then
- withval=$with_max_nameserver_ips; cat >>confdefs.h <<_ACEOF
-#define MAXNAMESERVIPS $withval
-_ACEOF
-
-fi
-
-
-# Check whether --enable-specbuild was given.
-if test "${enable_specbuild+set}" = set; then
- enableval=$enable_specbuild; specbuild=$enableval
-fi
-
-
-
-
-
-# Check whether --with-thread-lib was given.
-if test "${with_thread_lib+set}" = set; then
- withval=$with_thread_lib; threadlib=$withval
-fi
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_c89=$ac_arg
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_c89=$ac_arg
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-
-if test "x$CC" != xcc; then
- { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
- { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
- sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); };
-then
- eval ac_cv_prog_cc_${ac_cc}_c_o=yes
- if test "x$CC" != xcc; then
- # Test first that cc exists at all.
- if { ac_try='cc -c conftest.$ac_ext >&5'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
- rm -f conftest2.*
- if { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); };
- then
- # cc works too.
- :
- else
- # cc exists but doesn't like -o.
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
- fi
- fi
- fi
-else
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define NO_MINUS_C_MINUS_O 1
-_ACEOF
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
-done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-if test "$target" = "autodetect" ; then
- { $as_echo "$as_me:$LINENO: checking for autodetect build target" >&5
-$as_echo_n "checking for autodetect build target... " >&6; }
- uname_sys=`uname`
- if test $? -ne 0 ; then
- { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
- { { $as_echo "$as_me:$LINENO: error: uname failed or was not found in path" >&5
-$as_echo "$as_me: error: uname failed or was not found in path" >&2;}
- { (exit 1); exit 1; }; }
- else
- case "${uname_sys}" in
- Linux)
- { $as_echo "$as_me:$LINENO: result: Linux" >&5
-$as_echo "Linux" >&6; }
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_LINUX
-_ACEOF
-
- target="Linux"
- ;;
- FreeBSD|NetBSD|OpenBSD|Darwin)
- { $as_echo "$as_me:$LINENO: result: \"${uname_sys}\"" >&5
-$as_echo "\"${uname_sys}\"" >&6; }
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_BSD
-_ACEOF
-
- target="BSD"
- ;;
- CYGWIN*)
- { $as_echo "$as_me:$LINENO: result: \"${uname_sys}\"" >&5
-$as_echo "\"${uname_sys}\"" >&6; }
- cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_CYGWIN
-_ACEOF
-
- target="cygwin"
- ;;
- *)
- { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
- { { $as_echo "$as_me:$LINENO: error: Your system type could not be identified. Try setting it manually using
---with-target" >&5
-$as_echo "$as_me: error: Your system type could not be identified. Try setting it manually using
---with-target" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
- fi
-fi
-
-#if test "$target" = BSD ; then
-# uname_sys=`uname`
-# if test "$uname_sys" = FreeBSD ; then
-# AC_MSG_CHECKING([for FreeBSD version])
-# osrel=`sysctl -n kern.osreldate`
-# if test $osrel -ge 500016 ; then
-# AC_MSG_RESULT([5.0 (>= 500016)])
-# freebsd_pthread="5"
-# else
-# AC_MSG_RESULT([<=5.0 (< 500016)])
-# freebsd_pthread="4"
-# fi
-# fi
-#fi
-
-if test "$adisc" = "default"; then
- if test "$target" = "cygwin" ; then
-# Don't do UDP source address discovery on Cygwin platform by default.
- adisc="no"
- else
- adisc="yes"
- fi
-fi
-
-test "$adisc" = "yes" && cat >>confdefs.h <<\_ACEOF
-#define SRC_ADDR_DISC 1
-_ACEOF
-
-
-
-if test "$target" = "Linux"; then
-{ $as_echo "$as_me:$LINENO: checking if we can compile and link with -pthread" >&5
-$as_echo_n "checking if we can compile and link with -pthread... " >&6; }
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -pthread"
-cat >conftest.$ac_ext <<_ACEOF
-
-#include <pthread.h>
-
-void *thread_func(void *data)
-{
- *((int *)data)=1;
- return data;
-}
-
-int main()
-{
- pthread_t thread;
- void *retval;
- int val;
-
- if(pthread_create(&thread, NULL, thread_func, &val))
- return 1;
-
- if(pthread_join(thread,&retval))
- return 1;
-
- return (*((int *)retval)!=1);
-}
-
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- gcc_pthread_flag="yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- gcc_pthread_flag="no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-CFLAGS="$old_CFLAGS"
-{ $as_echo "$as_me:$LINENO: result: $gcc_pthread_flag" >&5
-$as_echo "$gcc_pthread_flag" >&6; }
-
- if test "$gcc_pthread_flag" = yes ; then
- thread_CFLAGS="-pthread"
-
- else
-
-{ $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_create ();
-int
-main ()
-{
-return pthread_create ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_pthread_pthread_create=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_pthread_pthread_create=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
-_ACEOF
-
- LIBS="-lpthread $LIBS"
-
-fi
-
- fi
-fi
-if test "$target" = "BSD" -a `uname` != Darwin ; then
-# if test $freebsd_pthread = 4 ; then
- thread_CFLAGS="-pthread"
-
-# else
-# AC_CHECK_LIB(c_r, pthread_create, ,
-# AC_MSG_ERROR([You must have libc_r installed to build/run pdnsd!]))
-# fi;
-fi
-
-if test "$target" = "Linux" -a "$threadlib" = default; then
-{ $as_echo "$as_me:$LINENO: checking if this is an NPTL-based system" >&5
-$as_echo_n "checking if this is an NPTL-based system... " >&6; }
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS $thread_CFLAGS"
-if test "$cross_compiling" = yes; then
-
- { $as_echo "$as_me:$LINENO: result: couldn't run test program" >&5
-$as_echo "couldn't run test program" >&6; }
- threadlib=linuxthreads
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-
-/* All this function does is return its PID (in a roundabout way). */
-void *thread_func(void *data)
-{
- *((int *)data)=getpid();
- return data;
-}
-
-int main()
-{
- pthread_t thread;
- void *retval;
- int err,mainpid,thrdpid;
-
- err=pthread_create(&thread, NULL, thread_func, &thrdpid);
- if(err) {
- fprintf(stderr,"pthread_create failed: %s\n",strerror(err));
- return 1;
- }
- err=pthread_join(thread,&retval);
- if(err) {
- fprintf(stderr,"pthread_join failed: %s\n",strerror(err));
- return 1;
- }
- mainpid=getpid();
- /* In LinuxThreads implementations, the pids of the threads will usually differ
- in a non Posix-compliant way. */
- fprintf(stderr,"main pid=%d, thread pid=%d\n",mainpid,*((int *)retval));
- return (*((int *)retval)!=mainpid);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- threadlib=nptl
-
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- threadlib=linuxthreads
-
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-CFLAGS="$old_CFLAGS"
-fi
-
-if test "$threadlib" = nptl -o "$threadlib" = NPTL; then
- cat >>confdefs.h <<\_ACEOF
-#define THREADLIB_NPTL 1
-_ACEOF
-
-elif test "$threadlib" = linuxthreads2 -o "$threadlib" = LinuxThreads2 -o "$threadlib" = lt2; then
- cat >>confdefs.h <<\_ACEOF
-#define THREADLIB_LINUXTHREADS2 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_stdc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
- int s;
- wait (&s);
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_sys_wait_h=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_sys_wait_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_WAIT_H 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-for ac_header in fcntl.h malloc.h sys/ioctl.h sys/time.h syslog.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-for ac_header in sys/types.h sys/socket.h net/if.h netinet/in.h sys/poll.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset cs;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *pcpcc;
- char **ppc;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- pcpcc = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++pcpcc;
- ppc = (char**) pcpcc;
- pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- if (s) return 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- if (!foo) return 0;
- }
- return !cs[0] && !zero.x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_c_const=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const /**/
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5
-$as_echo_n "checking for pid_t... " >&6; }
-if test "${ac_cv_type_pid_t+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_pid_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (pid_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((pid_t)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_pid_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-$as_echo "$ac_cv_type_pid_t" >&6; }
-if test "x$ac_cv_type_pid_t" = x""yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_size_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((size_t)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_size_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-$as_echo "$ac_cv_type_size_t" >&6; }
-if test "x$ac_cv_type_size_t" = x""yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_time=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if test "${ac_cv_struct_tm+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <time.h>
-
-int
-main ()
-{
-struct tm tm;
- int *p = &tm.tm_sec;
- return !p;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_struct_tm=time.h
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_struct_tm=sys/time.h
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TM_IN_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for socklen_t" >&5
-$as_echo_n "checking for socklen_t... " >&6; }
-if test "${ac_cv_type_socklen_t+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_socklen_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (socklen_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((socklen_t)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_socklen_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
-$as_echo "$ac_cv_type_socklen_t" >&6; }
-if test "x$ac_cv_type_socklen_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SOCKLEN_T 1
-_ACEOF
-
-
-else
- cat >>confdefs.h <<\_ACEOF
-#define socklen_t int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for struct in6_addr" >&5
-$as_echo_n "checking for struct in6_addr... " >&6; }
-if test "${ac_cv_type_struct_in6_addr+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_struct_in6_addr=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct in6_addr))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct in6_addr)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_struct_in6_addr=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_in6_addr" >&5
-$as_echo "$ac_cv_type_struct_in6_addr" >&6; }
-if test "x$ac_cv_type_struct_in6_addr" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN6_ADDR 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for struct in_pktinfo" >&5
-$as_echo_n "checking for struct in_pktinfo... " >&6; }
-if test "${ac_cv_type_struct_in_pktinfo+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_struct_in_pktinfo=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct in_pktinfo))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct in_pktinfo)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_struct_in_pktinfo=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_in_pktinfo" >&5
-$as_echo "$ac_cv_type_struct_in_pktinfo" >&6; }
-if test "x$ac_cv_type_struct_in_pktinfo" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN_PKTINFO 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for struct ifreq" >&5
-$as_echo_n "checking for struct ifreq... " >&6; }
-if test "${ac_cv_type_struct_ifreq+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_struct_ifreq=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct ifreq))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct ifreq)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_struct_ifreq=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_ifreq" >&5
-$as_echo "$ac_cv_type_struct_ifreq" >&6; }
-if test "x$ac_cv_type_struct_ifreq" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFREQ 1
-_ACEOF
-
-
-fi
-
-
-{ $as_echo "$as_me:$LINENO: checking for CPP C99 Variadic macro support" >&5
-$as_echo_n "checking for CPP C99 Variadic macro support... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-
-#define a(...) junk(0,__VA_ARGS__)
-extern void junk(int i,...);
-int main()
-{
- a(0);
- a("a");
- a(0, "a", 1);
- return 0;
-}
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cpp_c99_variadic="yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cpp_c99_variadic="no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $cpp_c99_variadic" >&5
-$as_echo "$cpp_c99_variadic" >&6; }
-if test $cpp_c99_variadic = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define CPP_C99_VARIADIC_MACROS 1
-_ACEOF
-
-else
- if test "$GCC" != yes; then
- { { $as_echo "$as_me:$LINENO: error: Compiler must support C99 or gcc variadic macros" >&5
-$as_echo "$as_me: error: Compiler must support C99 or gcc variadic macros" >&2;}
- { (exit 1); exit 1; }; }
- fi;
-fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if test "${ac_cv_working_alloca_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_working_alloca_h=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_working_alloca_h=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA_H 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if test "${ac_cv_func_alloca_works+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_func_alloca_works=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_alloca_works=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA 1
-_ACEOF
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-cat >>confdefs.h <<\_ACEOF
-#define C_ALLOCA 1
-_ACEOF
-
-
-{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if test "${ac_cv_os_cray+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if test "${ac_cv_c_stack_direction+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_c_stack_direction=0
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-find_stack_direction ()
-{
- static char *addr = 0;
- auto char dummy;
- if (addr == 0)
- {
- addr = &dummy;
- return find_stack_direction ();
- }
- else
- return (&dummy > addr) ? 1 : -1;
-}
-
-int
-main ()
-{
- return find_stack_direction () < 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_stack_direction=1
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_stack_direction=-1
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-if test $ac_cv_c_compiler_gnu = yes; then
- { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-else
- ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
-
- if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
- fi
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for working memcmp" >&5
-$as_echo_n "checking for working memcmp... " >&6; }
-if test "${ac_cv_func_memcmp_working+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp_working=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Some versions of memcmp are not 8-bit clean. */
- char c0 = '\100', c1 = '\200', c2 = '\201';
- if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
- return 1;
-
- /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
- or more and with at least one buffer not starting on a 4-byte boundary.
- William Lewis provided this test program. */
- {
- char foo[21];
- char bar[21];
- int i;
- for (i = 0; i < 4; i++)
- {
- char *a = foo + i;
- char *b = bar + i;
- strcpy (a, "--------01111111");
- strcpy (b, "--------10000000");
- if (memcmp (a, b, 16) >= 0)
- return 1;
- }
- return 0;
- }
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_memcmp_working=yes
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_memcmp_working=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
-$as_echo "$ac_cv_func_memcmp_working" >&6; }
-test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
- *" memcmp.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
- ;;
-esac
-
-
-{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if test "${ac_cv_type_signal+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_signal=int
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_signal=void
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-
-for ac_func in vprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5
-$as_echo_n "checking for _doprnt... " >&6; }
-if test "${ac_cv_func__doprnt+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define _doprnt innocuous__doprnt
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _doprnt (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef _doprnt
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char _doprnt ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub__doprnt || defined __stub____doprnt
-choke me
-#endif
-
-int
-main ()
-{
-return _doprnt ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_func__doprnt=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func__doprnt=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
-$as_echo "$ac_cv_func__doprnt" >&6; }
-if test "x$ac_cv_func__doprnt" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOPRNT 1
-_ACEOF
-
-fi
-
-fi
-done
-
-
-{ $as_echo "$as_me:$LINENO: checking for library containing nanosleep" >&5
-$as_echo_n "checking for library containing nanosleep... " >&6; }
-if test "${ac_cv_search_nanosleep+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nanosleep ();
-int
-main ()
-{
-return nanosleep ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' rt; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_search_nanosleep=$ac_res
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_nanosleep+set}" = set; then
- break
-fi
-done
-if test "${ac_cv_search_nanosleep+set}" = set; then
- :
-else
- ac_cv_search_nanosleep=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_nanosleep" >&5
-$as_echo "$ac_cv_search_nanosleep" >&6; }
-ac_res=$ac_cv_search_nanosleep
-if test "$ac_res" != no; then
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for library containing socket" >&5
-$as_echo_n "checking for library containing socket... " >&6; }
-if test "${ac_cv_search_socket+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' socket; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib -lnsl $ac_func_search_save_LIBS"
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_search_socket=$ac_res
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_socket+set}" = set; then
- break
-fi
-done
-if test "${ac_cv_search_socket+set}" = set; then
- :
-else
- ac_cv_search_socket=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5
-$as_echo "$ac_cv_search_socket" >&6; }
-ac_res=$ac_cv_search_socket
-if test "$ac_res" != no; then
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for library containing inet_aton" >&5
-$as_echo_n "checking for library containing inet_aton... " >&6; }
-if test "${ac_cv_search_inet_aton+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char inet_aton ();
-int
-main ()
-{
-return inet_aton ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' resolv; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_search_inet_aton=$ac_res
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext
- if test "${ac_cv_search_inet_aton+set}" = set; then
- break
-fi
-done
-if test "${ac_cv_search_inet_aton+set}" = set; then
- :
-else
- ac_cv_search_inet_aton=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5
-$as_echo "$ac_cv_search_inet_aton" >&6; }
-ac_res=$ac_cv_search_inet_aton
-if test "$ac_res" != no; then
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-
-
-
-
-
-
-
-
-for ac_func in nanosleep gettimeofday mkfifo select socket strerror uname snprintf vsnprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- true
-else
- { { $as_echo "$as_me:$LINENO: error: One of the functions required for pdnsd were not found." >&5
-$as_echo "$as_me: error: One of the functions required for pdnsd were not found." >&2;}
- { (exit 1); exit 1; }; }
-fi
-done
-
-
-for ac_func in poll
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- true
-else
- cat >>confdefs.h <<\_ACEOF
-#define NO_POLL 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in strdup strndup stpcpy stpncpy strlcpy mempcpy getline asprintf vasprintf getpwnam_r inet_ntop inet_pton
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-ac_config_files="$ac_config_files pdnsd.spec Makefile file-list.base contrib/Makefile doc/Makefile doc/pdnsd.8 doc/pdnsd.conf.5 doc/pdnsd.conf src/Makefile src/pdnsd-ctl/Makefile src/rc/Makefile src/rc/RedHat/Makefile src/rc/RedHat/pdnsd src/rc/SuSE/Makefile src/rc/SuSE/pdnsd src/rc/Debian/Makefile src/rc/Debian/pdnsd src/rc/Slackware/Makefile src/rc/Slackware/rc.pdnsd src/rc/ArchLinux/Makefile src/rc/ArchLinux/pdnsd src/test/Makefile PKGBUILD"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
- { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
- else
- { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
- if test -n "$EXEEXT"; then
- am__EXEEXT_TRUE=
- am__EXEEXT_FALSE='#'
-else
- am__EXEEXT_TRUE='#'
- am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-
-# Save the log message, to keep $[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.63. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTION]... [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@xxxxxxx>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.63,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h)
- # Conflict between --help and --header
- { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "pdnsd.spec") CONFIG_FILES="$CONFIG_FILES pdnsd.spec" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "file-list.base") CONFIG_FILES="$CONFIG_FILES file-list.base" ;;
- "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "doc/pdnsd.8") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.8" ;;
- "doc/pdnsd.conf.5") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.conf.5" ;;
- "doc/pdnsd.conf") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.conf" ;;
- "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
- "src/pdnsd-ctl/Makefile") CONFIG_FILES="$CONFIG_FILES src/pdnsd-ctl/Makefile" ;;
- "src/rc/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Makefile" ;;
- "src/rc/RedHat/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/RedHat/Makefile" ;;
- "src/rc/RedHat/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/RedHat/pdnsd" ;;
- "src/rc/SuSE/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/SuSE/Makefile" ;;
- "src/rc/SuSE/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/SuSE/pdnsd" ;;
- "src/rc/Debian/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Debian/Makefile" ;;
- "src/rc/Debian/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/Debian/pdnsd" ;;
- "src/rc/Slackware/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Slackware/Makefile" ;;
- "src/rc/Slackware/rc.pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/Slackware/rc.pdnsd" ;;
- "src/rc/ArchLinux/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/ArchLinux/Makefile" ;;
- "src/rc/ArchLinux/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/ArchLinux/pdnsd" ;;
- "src/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;;
- "PKGBUILD") CONFIG_FILES="$CONFIG_FILES PKGBUILD" ;;
-
- *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp=
- trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} ||
-{
- $as_echo "$as_me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr='
'
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\).*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\).*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
- { (exit 1); exit 1; }; }
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
- break
- elif $ac_last_try; then
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any. Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[ ]*#[ ]*define[ ][ ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- for (key in D) D_is_set[key] = 1
- FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
- line = \$ 0
- split(line, arg, " ")
- if (arg[1] == "#") {
- defundef = arg[2]
- mac1 = arg[3]
- } else {
- defundef = substr(arg[1], 2)
- mac1 = arg[2]
- }
- split(mac1, mac2, "(") #)
- macro = mac2[1]
- prefix = substr(line, 1, index(line, defundef) - 1)
- if (D_is_set[macro]) {
- # Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
- next
- } else {
- # Replace #undef with comments. This is necessary, for example,
- # in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
- if (defundef == "undef") {
- print "/*", prefix defundef, macro, "*/"
- next
- }
- }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
- { (exit 1); exit 1; }; }
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
- { (exit 1); exit 1; }; };;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
- { (exit 1); exit 1; }; };;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- ac_file_inputs="$ac_file_inputs '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
- ac_MKDIR_P=$MKDIR_P
- case $MKDIR_P in
- [\\/$]* | ?:[\\/]* ) ;;
- */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p
-'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
-
- rm -f "$tmp/stdin"
- case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
- esac \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- :H)
- #
- # CONFIG_HEADER
- #
- if test x"$ac_file" != x-; then
- {
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
- else
- rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- fi
- else
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
- || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
- { (exit 1); exit 1; }; }
- fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$_am_arg" : 'X\(//\)[^/]' \| \
- X"$_am_arg" : 'X\(//\)$' \| \
- X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
- :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir=$dirpart/$fdir
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
- ;;
-
- esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/jni/pdnsd/configure.in b/jni/pdnsd/configure.in
deleted file mode 100644
index 473abf1..0000000
--- a/jni/pdnsd/configure.in
+++ /dev/null
@@ -1,548 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(src)
-
-package="pdnsd"
-version=`cut -d - -f 1 "$srcdir"/version`
-fullversion=`cat "$srcdir"/version`
-packagerelease=`cut -d - -f 2- "$srcdir"/version`
-
-distribution="Generic"
-target="autodetect"
-cachedir="/var/cache/$package"
-ipv4_default=1
-have_ipv4="yes"
-#newrrs="yes"
-query_m="udponly"
-have_tcp_server="yes"
-adisc="default"
-slock="no";
-def_id="nobody"
-#have_rcsids="no"
-udp_queries="yes"
-tcp_queries="yes"
-tempdir="/tmp"
-randomdev=default
-freebsd_pthread="4"
-specbuild=no
-threadlib=default
-
-AM_INIT_AUTOMAKE($package, $version, [no-define])
-AM_CONFIG_HEADER(config.h)
-AC_GNU_SOURCE
-AC_DEFINE_UNQUOTED(VERSION,"$fullversion")
-AC_SUBST(fullversion)
-AC_SUBST(packagerelease)
-
-AC_ARG_WITH(distribution,
-[ --with-distribution=distro Specify target distribution (default=Generic;
- others: RedHat, SuSE, Debian, ArchLinux)],
- distribution=$withval)
-AC_SUBST(distribution)
-
-AC_ARG_WITH(target,
-[ --with-target=platform Change compilation target platform (default:
- autodetect; others: Linux, BSD, Cygwin)],
- target=$withval)
-case $target in
- Linux|linux)
- AC_DEFINE(TARGET, TARGET_LINUX)
- target="Linux"
- ;;
- BSD| bsd)
- AC_DEFINE(TARGET, TARGET_BSD)
- target="BSD"
- ;;
- Cygwin|CYGWIN|cygwin)
- AC_DEFINE(TARGET, TARGET_CYGWIN)
- target="cygwin"
- ;;
- autodetect)
- ;;
- *)
- AC_MSG_ERROR([--with-target must have Linux, BSD or Cygwin as parameter.])
- ;;
-esac
-
-AC_ARG_WITH(cachedir,
-[ --with-cachedir=dir Default directory for pdnsd cache
- (default=/var/cache/pdnsd)],
- cachedir=$withval)
-AC_DEFINE_UNQUOTED(CACHEDIR, "$cachedir")
-AC_SUBST(cachedir)
-
-AC_ARG_ENABLE(isdn,
-[ --enable-isdn Enable ISDN support (may cause problems on
- some systems; only for Linux)],
- test $enableval = "yes" && AC_DEFINE(ISDN_SUPPORT))
-
-AC_ARG_ENABLE(ipv4,
-[ --disable-ipv4 Disable IPv4 networking support
- (default=enabled)],
- have_ipv4=$enableval)
-
-test $have_ipv4 = "yes" && AC_DEFINE(ENABLE_IPV4)
-
-AC_ARG_ENABLE(ipv6,
-[ --enable-ipv6 Enable IPv6 networking support],
-[ if test $enableval = "yes" ; then
- AC_DEFINE(ENABLE_IPV6)
- if test $have_ipv4 != "yes" ; then
- ipv4_default=0
- fi
- fi])
-
-AC_ARG_ENABLE(ipv4-startup,
-[ --disable-ipv4-startup Disable IPv4 on pdnsd startup by default
- (default=enabled)],
-[ if test $enableval = "yes" ; then
- ipv4_default=1
- else
- ipv4_default=0
- fi])
-
-AC_ARG_ENABLE(ipv6-startup,
-[ --enable-ipv6-startup Enable IPV6 on pdnsd startup by default
- (default=IPv4)],
-[ if test $enableval = "yes" ; then
- ipv4_default=0
- else
- ipv4_default=1
- fi])
-
-AC_DEFINE_UNQUOTED(DEFAULT_IPV4, $ipv4_default)
-
-AC_ARG_ENABLE(udp-queries,
-[ --disable-udp-queries Disable udp as query method.],
- udp_queries=$enableval)
-
-AC_ARG_ENABLE(tcp-queries,
-[ --disable-tcp-queries Disable tcp as query method.],
- tcp_queries=$enableval)
-
-AC_ARG_WITH(query-method,
-[ --with-query-method=qm Specify the query method (default=udponly;
- others: tcponly, tcpudp, udptcp)],
- query_m=$withval)
-case $query_m in
- udponly|UDPonly)
- AC_DEFINE(M_PRESET, UDP_ONLY)
- udp_queries=yes;
- ;;
- tcponly|TCPonly)
- AC_DEFINE(M_PRESET, TCP_ONLY)
- tcp_queries=yes;
- ;;
- tcpudp|TCPUDP)
- AC_DEFINE(M_PRESET, TCP_UDP)
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- udptcp|UDPTCP)
- AC_DEFINE(M_PRESET, UDP_TCP)
- udp_queries=yes;
- tcp_queries=yes;
- ;;
- *)
- AC_MSG_ERROR([--with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter.])
- ;;
-esac
-
-test $udp_queries != "yes" && AC_DEFINE(NO_UDP_QUERIES)
-test $tcp_queries != "yes" && AC_DEFINE(NO_TCP_QUERIES)
-
-AC_ARG_ENABLE(tcp-server,
-[ --disable-tcp-server Disable the TCP serving ability of pdnsd],
- have_tcp_server=$enableval)
-
-test $have_tcp_server != "yes" && AC_DEFINE(NO_TCP_SERVER)
-
-AC_ARG_ENABLE(src-addr-disc,
-[ --disable-src-addr-disc Disable the UDP source address discovery],
- adisc=$enableval)
-
-AC_ARG_ENABLE(socket-locking,
-[ --enable-socket-locking Enable the UDP socket locking],
- slock=$enableval)
-
-test $slock = "yes" && AC_DEFINE(SOCKET_LOCKING)
-
-AC_ARG_ENABLE(poll,
-[ --disable-poll Disable poll(2) and use select(2)
- (default=enabled)],
- test $enableval != "yes" && AC_DEFINE(NO_POLL))
-
-AC_ARG_ENABLE(new-rrs,
-[ --disable-new-rrs Disable new DNS RR types (obsolete, currently ignored)],
- newrrs=$enableval)
-
-AC_ARG_ENABLE(strict-rfc2181,
-[ --enable-strict-rfc2181 Enforce strict RFC 2181 compliance],
- test $enableval = "yes" && AC_DEFINE(RFC2181_ME_HARDER))
-
-AC_ARG_WITH(random-device,
-[ --with-random-device=device Specify random device other than
- /dev/random; default: C Library random() PRNG;
- special value arc4random for BSD C Library
- arc4random function (default on FreeBSD)],
- randomdev=$withval)
-
-if test "$randomdev" = arc4random ; then
- AC_DEFINE(R_ARC4RANDOM)
-elif test "$randomdev" = random ; then
- AC_DEFINE(R_RANDOM)
-elif test "$randomdev" = default ; then
- AC_DEFINE(R_DEFAULT)
-else
- AC_DEFINE_UNQUOTED(RANDOM_DEVICE, "$randomdev")
-fi
-
-AC_ARG_ENABLE(underscores,
-[ --enable-underscores Allow _ in domain names (obsolete, currently ignored)],
- underscores=$enableval)
-
-AC_ARG_WITH(default-id,
-[ --with-default-id=id Specify default uid/gid for pdnsd
- (default=nobody)],
- def_id=$withval)
-AC_SUBST(def_id)
-
-AC_ARG_WITH(debug,
-[ --with-debug=level Specify debugging level (0 means no debug support)],
- AC_DEFINE_UNQUOTED(DEBUG, $withval))
-
-AC_ARG_WITH(verbosity,
-[ --with-verbosity=level Specify default message verbosity],
- AC_DEFINE_UNQUOTED(VERBOSITY, $withval))
-
-AC_ARG_WITH(hash-buckets,
-[ --with-hash-buckets=num Number of hash buckets to use (default=1024).
- The number actually used is the smallest power of two
- greater or equal to the number specified here.],
- powof2=1
- hashsz=0
-
- while test $powof2 -lt "$withval"
- do
- powof2=`expr 2 '*' $powof2`
- hashsz=`expr $hashsz '+' 1`
- done
- AC_DEFINE_UNQUOTED(HASH_SZ, $hashsz)
-)
-
-AC_ARG_ENABLE(hash-debug,
-[ --enable-hash-debug Debug hash tables (warning: massive output)],
- test $enableval = "yes" && AC_DEFINE(DEBUG_HASH))
-
-AC_ARG_ENABLE(rcsids,
-[ --enable-rcsids Enable RCS IDs in executables (obsolete, currently ignored)],
- have_rcsids=$enableval)
-
-AC_ARG_WITH(tcp-qtimeout,
-[ --with-tcp-qtimeout=secs Specify default tcp query timeout (default=30)],
- AC_DEFINE_UNQUOTED(TCP_TIMEOUT, $withval))
-
-AC_ARG_ENABLE(tcp-subseq,
-[ --enable-tcp-subseq Enable multiple dns querys using one
- tcp connection],
- test $enableval = "yes" && AC_DEFINE(TCP_SUBSEQ))
-
-AC_ARG_WITH(par-queries,
-[ --with-par-queries=num Specify default parallel query number (default=2)],
- AC_DEFINE_UNQUOTED(PAR_QUERIES, $withval))
-
-AC_ARG_WITH(max-nameserver-ips,
-[ --with-max-nameserver-ips=num Specify maximum number of IP addresses used per nameserver obtained from NS records (default=3)],
- AC_DEFINE_UNQUOTED(MAXNAMESERVIPS, $withval))
-
-AC_ARG_ENABLE(specbuild,
-[ --enable-specbuild Only used when building pdnsd from spec files],
- specbuild=$enableval)
-
-AC_SUBST(specbuild)
-
-AC_ARG_WITH(thread-lib,
-[ --with-thread-lib=lib Specify thread library, overriding automatic detection (for Linux only).
- Possible values: LinuxThreads,
- LinuxThreads2 (implements a fix for newer glibcs)
- or NPTL (Native POSIX Thread Library)],
- threadlib=$withval)
-
-AC_SUBST(threadlib)
-
-dnl Checks for programs.
-AC_PROG_CC
-AM_PROG_CC_STDC
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-
-dnl For dbm subsystem libraries
-AC_PROG_RANLIB
-
-if test "$target" = "autodetect" ; then
- AC_MSG_CHECKING([for autodetect build target])
- uname_sys=`uname`
- if test $? -ne 0 ; then
- AC_MSG_RESULT([failed])
- AC_MSG_ERROR([uname failed or was not found in path])
- else
- case "${uname_sys}" in
- Linux)
- AC_MSG_RESULT(Linux)
- AC_DEFINE(TARGET, TARGET_LINUX)
- target="Linux"
- ;;
- FreeBSD|NetBSD|OpenBSD|Darwin)
- AC_MSG_RESULT("${uname_sys}")
- AC_DEFINE(TARGET, TARGET_BSD)
- target="BSD"
- ;;
- CYGWIN*)
- AC_MSG_RESULT("${uname_sys}")
- AC_DEFINE(TARGET, TARGET_CYGWIN)
- target="cygwin"
- ;;
- *)
- AC_MSG_RESULT([failed])
- AC_MSG_ERROR(
-[Your system type could not be identified. Try setting it manually using
---with-target])
- ;;
- esac
- fi
-fi
-
-#if test "$target" = BSD ; then
-# uname_sys=`uname`
-# if test "$uname_sys" = FreeBSD ; then
-# AC_MSG_CHECKING([for FreeBSD version])
-# osrel=`sysctl -n kern.osreldate`
-# if test $osrel -ge 500016 ; then
-# AC_MSG_RESULT([5.0 (>= 500016)])
-# freebsd_pthread="5"
-# else
-# AC_MSG_RESULT([<=5.0 (< 500016)])
-# freebsd_pthread="4"
-# fi
-# fi
-#fi
-
-if test "$adisc" = "default"; then
- if test "$target" = "cygwin" ; then
-# Don't do UDP source address discovery on Cygwin platform by default.
- adisc="no"
- else
- adisc="yes"
- fi
-fi
-
-test "$adisc" = "yes" && AC_DEFINE(SRC_ADDR_DISC)
-
-
-dnl Checks for libraries.
-if test "$target" = "Linux"; then
-AC_MSG_CHECKING([if we can compile and link with -pthread])
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -pthread"
-AC_LINK_IFELSE([
-#include <pthread.h>
-
-void *thread_func(void *data)
-{
- *((int *)data)=1;
- return data;
-}
-
-int main()
-{
- pthread_t thread;
- void *retval;
- int val;
-
- if(pthread_create(&thread, NULL, thread_func, &val))
- return 1;
-
- if(pthread_join(thread,&retval))
- return 1;
-
- return (*((int *)retval)!=1);
-}
-],
- gcc_pthread_flag="yes", gcc_pthread_flag="no")
-CFLAGS="$old_CFLAGS"
-AC_MSG_RESULT([$gcc_pthread_flag])
-
- if test "$gcc_pthread_flag" = yes ; then
- thread_CFLAGS="-pthread"
- AC_SUBST(thread_CFLAGS)
- else
- AC_CHECK_LIB(pthread, pthread_create)
- fi
-fi
-if test "$target" = "BSD" -a `uname` != Darwin ; then
-# if test $freebsd_pthread = 4 ; then
- thread_CFLAGS="-pthread"
- AC_SUBST(thread_CFLAGS)
-# else
-# AC_CHECK_LIB(c_r, pthread_create, ,
-# AC_MSG_ERROR([You must have libc_r installed to build/run pdnsd!]))
-# fi;
-fi
-
-if test "$target" = "Linux" -a "$threadlib" = default; then
-AC_MSG_CHECKING([if this is an NPTL-based system])
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS $thread_CFLAGS"
-AC_RUN_IFELSE([
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-
-/* All this function does is return its PID (in a roundabout way). */
-void *thread_func(void *data)
-{
- *((int *)data)=getpid();
- return data;
-}
-
-int main()
-{
- pthread_t thread;
- void *retval;
- int err,mainpid,thrdpid;
-
- err=pthread_create(&thread, NULL, thread_func, &thrdpid);
- if(err) {
- fprintf(stderr,"pthread_create failed: %s\n",strerror(err));
- return 1;
- }
- err=pthread_join(thread,&retval);
- if(err) {
- fprintf(stderr,"pthread_join failed: %s\n",strerror(err));
- return 1;
- }
- mainpid=getpid();
- /* In LinuxThreads implementations, the pids of the threads will usually differ
- in a non Posix-compliant way. */
- fprintf(stderr,"main pid=%d, thread pid=%d\n",mainpid,*((int *)retval));
- return (*((int *)retval)!=mainpid);
-}
-],
-[
- AC_MSG_RESULT([yes])
- threadlib=nptl
-],
-[
- AC_MSG_RESULT([no])
- threadlib=linuxthreads
-],
-[
- AC_MSG_RESULT([couldn't run test program])
- threadlib=linuxthreads
-])
-CFLAGS="$old_CFLAGS"
-fi
-
-if test "$threadlib" = nptl -o "$threadlib" = NPTL; then
- AC_DEFINE(THREADLIB_NPTL)
-elif test "$threadlib" = linuxthreads2 -o "$threadlib" = LinuxThreads2 -o "$threadlib" = lt2; then
- AC_DEFINE(THREADLIB_LINUXTHREADS2)
-fi
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h malloc.h sys/ioctl.h sys/time.h syslog.h unistd.h)
-AC_CHECK_HEADERS(sys/types.h sys/socket.h net/if.h netinet/in.h sys/poll.h,,,
-[#include <stdio.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-])
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_HEADER_TIME
-AC_STRUCT_TM
-AC_CHECK_TYPES(socklen_t,, AC_DEFINE(socklen_t,int),[#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>])
-AC_CHECK_TYPES([struct in6_addr, struct in_pktinfo, struct ifreq],,,[#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>])
-
-AC_MSG_CHECKING([for CPP C99 Variadic macro support])
-AC_COMPILE_IFELSE([
-#define a(...) junk(0,__VA_ARGS__)
-extern void junk(int i,...);
-int main()
-{
- a(0);
- a("a");
- a(0, "a", 1);
- return 0;
-}
-],
- cpp_c99_variadic="yes", cpp_c99_variadic="no")
-AC_MSG_RESULT([$cpp_c99_variadic])
-if test $cpp_c99_variadic = yes; then
- AC_DEFINE(CPP_C99_VARIADIC_MACROS)
-else
- if test "$GCC" != yes; then
- AC_MSG_ERROR([Compiler must support C99 or gcc variadic macros])
- fi;
-fi
-
-dnl Checks for library functions.
-AC_FUNC_ALLOCA
-AC_PROG_GCC_TRADITIONAL
-AC_FUNC_MEMCMP
-AC_TYPE_SIGNAL
-AC_FUNC_VPRINTF
-AC_SEARCH_LIBS(nanosleep, rt)
-AC_SEARCH_LIBS(socket, socket,,,-lnsl)
-AC_SEARCH_LIBS(inet_aton, resolv)
-AC_CHECK_FUNCS(nanosleep gettimeofday mkfifo select socket strerror uname snprintf vsnprintf, true,
- AC_MSG_ERROR([One of the functions required for pdnsd were not found.]))
-AC_CHECK_FUNCS(poll, true, AC_DEFINE(NO_POLL))
-AC_CHECK_FUNCS(strdup strndup stpcpy stpncpy strlcpy mempcpy getline asprintf vasprintf getpwnam_r inet_ntop inet_pton)
-
-AC_OUTPUT([
-pdnsd.spec
-Makefile
-file-list.base
-contrib/Makefile
-doc/Makefile
-doc/pdnsd.8
-doc/pdnsd.conf.5
-doc/pdnsd.conf
-src/Makefile
-src/pdnsd-ctl/Makefile
-src/rc/Makefile
-src/rc/RedHat/Makefile
-src/rc/RedHat/pdnsd
-src/rc/SuSE/Makefile
-src/rc/SuSE/pdnsd
-src/rc/Debian/Makefile
-src/rc/Debian/pdnsd
-src/rc/Slackware/Makefile
-src/rc/Slackware/rc.pdnsd
-src/rc/ArchLinux/Makefile
-src/rc/ArchLinux/pdnsd
-src/test/Makefile
-PKGBUILD
-])
diff --git a/jni/pdnsd/contrib/Makefile.am b/jni/pdnsd/contrib/Makefile.am
deleted file mode 100644
index 5bdec20..0000000
--- a/jni/pdnsd/contrib/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-
-EXTRA_DIST = pdnsd_dhcp.pl dhcp2pdnsd change_pdnsd_server_ip.pl README
diff --git a/jni/pdnsd/contrib/Makefile.in b/jni/pdnsd/contrib/Makefile.in
deleted file mode 100644
index a400dfe..0000000
--- a/jni/pdnsd/contrib/Makefile.in
+++ /dev/null
@@ -1,323 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = contrib
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = pdnsd_dhcp.pl dhcp2pdnsd change_pdnsd_server_ip.pl README
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu contrib/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/contrib/README b/jni/pdnsd/contrib/README
deleted file mode 100644
index 19e4f44..0000000
--- a/jni/pdnsd/contrib/README
+++ /dev/null
@@ -1,30 +0,0 @@
-Last revised: 27 July 2003 by Paul Rombouts
-
-This directory contains user-contributed scripts for use with pdnsd.
-So far there are:
-
-pdnsd_dhcp.pl, save_ram.pl
- A perl script contributed by Marko Stolle (derived from a script by
- Mike Stella) to watch a ISC DHCPD leases file and add local records for
- the hosts listed there. This makes pdnsd useable in a DHCP setup.
- Please look into the script for usage instructions (you will probably
- also need to customize some settings there).
- For details about save_ram.pl, please look into pdnsd_dhcp.pl
-
-dhcp2pdnsd
- A rc script for pdnsd, also by Marko Stolle. You might need to change
- it slightly to make it run with your distro.
-
-change_pdnsd_server_ip.pl
- A perl script contributed by Paul Rombouts for automatically updating
- the configuration file if the DNS server configuration has changed.
- For instance, you could place the following line in the script
- /sbin/ifup-local
-
- /usr/local/sbin/change_pdnsd_server_ip.pl isplabel "$DNS" /etc/pdnsd.conf
-
- where $DNS contains the IP addresses (in comma separated format) of the
- DNS servers obtained by DHCP negotiation. The perl script only
- overwrites /etc/pdnsd.conf if the DNS configuration has actually
- changed, in which case the previous configuration file is saved as
- /etc/pdnsd.conf.save
diff --git a/jni/pdnsd/contrib/change_pdnsd_server_ip.pl b/jni/pdnsd/contrib/change_pdnsd_server_ip.pl
deleted file mode 100644
index 1eafca0..0000000
--- a/jni/pdnsd/contrib/change_pdnsd_server_ip.pl
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/perl -w
-#
-# A Perl script to change the ip addresses of dns servers
-# in the pdnsd configuration file.
-#
-# Written by Paul A. Rombouts
-#
-# This file Copyright 2002, 2004 Paul A. Rombouts
-# It may be distributed under the GNU Public License, version 2, or
-# any higher version. See section COPYING of the GNU Public license
-# for conditions under which this file may be redistributed.
-#
-
-use strict;
-
-unless(@ARGV) {die "Error: no label specified.\n"}
-my $label=shift;
-unless(@ARGV) {die "Error: no DNS addresses specified.\n"}
-my $dns_str=shift;
-my $pdnsd_conf='/etc/pdnsd.conf';
-if(@ARGV) {
- $pdnsd_conf=shift;
- if(@ARGV) {warn "Warning: spurious arguments ignored: @ARGV\n"}
-}
-
-#unless($label =~ /^\".*\"$/) {$label="\"$label\""}
-#unless($dns_str =~ /^\".*\"$/) {$dns_str =~ s/^[\s,]*/\"/; $dns_str =~ s/[\s,]*$/\"/}
-#unless($dns_str =~ /\"\s*\,\s*\"/) {$dns_str =~ s/[\s,]+/","/g}
-
-my @lines=();
-my $found_section=0;
-my $changed=0;
-my $ip_patt = qr/^((?:[^#]*?(?:\{|;))*?)(\s*ip\s*=\s*)("?[\w.:]+"?(?:\s*,\s*"?[\w.:]+"?)*)\s*;/;
-
-open(CONFFILE,$pdnsd_conf) or die "Can't open $pdnsd_conf: $!\n";
-
-while(<CONFFILE>) {
- if(/^\s*server\s*\{/) {
- my $sect_beg=$#lines+1;
- my $sect_end;
- my $found_label=0;
- LOOP: {
- do {
- push @lines,$_;
- if(/^(?:.*(?:\{|;))?\s*label\s*=\s*"?\Q$label\E"?\s*;/) {
- if($found_label++) {
- warn "Server section with multiple labels found.\n";
- close(CONFFILE);
- exit 2;
- }
- }
- if(/\}\s*$/) {
- $sect_end=$#lines;
- last LOOP;
- }
- } while(<CONFFILE>);
- }
- unless(defined($sect_end)) {
- warn "Server section without proper ending found.\n";
- close(CONFFILE);
- exit 2;
- }
- if(!$found_label) {next}
- if(!($found_section++)) {
- my $found_ip=0;
- for(my $i=$sect_beg; $i<=$sect_end;++$i) {
- if($lines[$i] =~ $ip_patt) {
- my $matched=''; my $rest;
- do {
- $rest=$';
- if(!($found_ip++)) {
- if($3 eq $dns_str) {
- $matched.=$&;
- }
- else {
- $matched.="$1$2$dns_str;";
- $changed=1;
- }
- }
- else {
- $matched.=$1;
- $changed=1;
- }
- } while($rest =~ $ip_patt);
- $lines[$i] = $matched.$rest;
- }
- }
- if(!$found_ip) {
- unless($lines[$sect_end] =~ s/\}\s*$/ ip=$dns_str;\n$&/) {
- warn "Can't add ip specification to server section labeled $label.\n";
- close(CONFFILE);
- exit 2;
- }
- $changed=1;
- }
- }
- else {
- splice @lines,$sect_beg;
- $changed=1;
- }
- }
- else {push @lines,$_}
-}
-
-close(CONFFILE) or die "Can't close $pdnsd_conf: $!\n";
-
-if(!$found_section) {
- warn "No server sections labeled $label found.\n";
- exit 2;
-}
-elsif(!$changed) {
- exit 0;
-}
-
-rename($pdnsd_conf,"$pdnsd_conf.save") or die "Can't rename $pdnsd_conf: $!\n";
-
-unless((open(CONFFILE,">$pdnsd_conf") or (warn("Can't open $pdnsd_conf for writing: $!\n"),0)) and
- (print CONFFILE (@lines) or (warn("Can't write to $pdnsd_conf: $!\n"),0)) and
- (close(CONFFILE) or (warn("Can't close $pdnsd_conf after writing: $!\n"),0))) {
- rename("$pdnsd_conf.save",$pdnsd_conf) or die "Can't rename $pdnsd_conf.save: $!\n";
- exit 3;
-}
-
-exit 1;
diff --git a/jni/pdnsd/contrib/dhcp2pdnsd b/jni/pdnsd/contrib/dhcp2pdnsd
deleted file mode 100644
index 73b631c..0000000
--- a/jni/pdnsd/contrib/dhcp2pdnsd
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /bin/sh
-#
-# dhcp2pdnsd Start/Stop DHCP to DNS update script
-#
-# chkconfig: 345 96 99
-# description: DHCP to DNS update script
-# processname: dhcp2pdnsd.pl
-#
-# $Id: dhcp2pdnsd,v 1.1 2001/03/25 20:01:34 tmm Exp $
-
-where="/usr/local/bin/"
-name="pdnsd_dhcp.pl"
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Get config.
-. /etc/sysconfig/network
-
-# See how we were called.
-case "$1" in
- start)
- $where$name > /dev/null 2> /dev/null &
- action "Starting DHCP to DNS update script: " /bin/true
- ;;
- stop)
- p=`ps h -C $name | awk '{print $1}'`
- [ $p -gt 0 ] 2> /dev/null && kill $p && action "Stopping DHCP to DNS update script: " /bin/true
- [ $p -gt 0 ] 2> /dev/null || action "Stopping DHCP to DNS update script: " /bin/false
- ;;
- status)
- p=`ps h -C $name | awk '{print $1}'`
- [ $p -gt 0 ] 2> /dev/null && echo 'running as '$p
- [ $p -gt 0 ] 2> /dev/null || echo 'not running'
- ;;
- restart|reload)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: dhcp2pdnsd {start|stop|status|restart|reload}"
- exit 1
-esac
-
-exit 0
diff --git a/jni/pdnsd/contrib/pdnsd_dhcp.pl b/jni/pdnsd/contrib/pdnsd_dhcp.pl
deleted file mode 100644
index 9cf0c87..0000000
--- a/jni/pdnsd/contrib/pdnsd_dhcp.pl
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/perl
-# $Id: pdnsd_dhcp.pl,v 1.2 2001/03/25 20:01:34 tmm Exp $
-##########################################################################
-#
-# Filename: pdnsd_dhcp.pl
-# Description: Dynamic DNS-DHCP update script for pdnsd
-# Author: Mike Stella
-# Modified by: Marko Stolle
-# Created: November 19, 2001
-# Last Updated: February 28, 2001
-# Email: fwd2m@xxxxxx
-#
-###########################################################################
-#
-# This code is Copyright (c) 1998-2001 by Mike Stella and Marko Stolle
-#
-# NO WARRANTY is given for this program. If it doesn't
-# work on your system, sorry. If it eats your hard drive,
-# again, sorry. It works fine on mine. Good luck!
-#
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-###########################################################################
-#
-# This script reads a dhcpd.leases file and dynamically updates pdnsd with
-# hostname and ip information.
-#
-# It assumes that your DHCP server recieves hostnames from the
-# clients, and that your clients offer their hostnames to the server.
-# Some versions of Linux DHCP clients don't do that. I use ISC's
-# DHCPD, found at http://www.isc.org - though others may work just
-# fine.
-#
-# This version of the script updates the pdnsd database. The status
-# control socket of pdnsd has to be enabled (psnsd -d -s).
-#
-###########################################################################
-#
-# 02/20/2001 - first working version
-# 02/21/2001 - security patches by Thomas Moestl
-# 02/22/2001 - re-read dhcpd.leases if ttl has expireds since last update
-# 02/24/2001 - try to get domainname if not specified
-# 02/28/2001 - randomized temporary filename
-# added possibility to save some RAM (read below)
-#
-###########################################################################
-
-
-# You may save some memory if you use absolute values with sysopen
-# in sub update_dns and don't use tmpnam()..
-# Just switch the '#' in front of the 'until sysopen' in the sub
-# update_dns, check the necessary modes on your system using save_ram.pl
-# and add a '#' in front of the following three lines.
-# Not using the tmpnam() function may open a security breach on systems
-# with not absolute trustworthy local users (Risk: a user may write a
-# script which creates files with the same names as this script and block
-# it that way. Unlikely because the filenames are now even without tmpnam()
-# randomized and an attacker has to create a very large number of files.)
-
-use Fcntl;
-use strict;
-use POSIX qw(tmpnam);
-
-$|=1;
-
-###########################################################################
-### Globals - you can change these as needed
-
-# Domain name
-# if not changed script will try to get it from the system
-my $domain_name = "domain";
-
-# DHCPD lease file
-my $lease_file = "/var/lib/dhcp/dhcpd.leases";
-
-# path to pdnsd-ctl
-my $pdnsd_ctl = "/usr/local/sbin/pdnsd-ctl";
-
-# owning name server for the newly added records
-my $nameserver = "localhost.";
-
-# TTL (Time To Live) for the new records
-my $ttl = "86400";
-
-# number of seconds to check the lease file for updates
-my $update_freq = 30;
-
-my $debug = 0;
-
-###########################################################################
-### Don't mess with anything below unless you REALLY need to modify the
-### code. And if you do, please let me know, I'm always interested in
-### in improving this program.
-
-# Make a pid file
-`echo $$ > /var/run/pdnsd_update.pid`;
-
-my $logstr;
-my $modtime = 0;
-my $temp_dir = -d '/tmp' ? '/tmp' : $ENV{TMP} || $ENV{TEMP};
-
-use vars qw (%db);
-
-my $version = "1.03";
-
-
-###########################################################################
-# Main Loop
-
- # try to find domainname if necessary
- if ($domain_name eq "domain") {
- $domain_name = `dnsdomainname`;
- }
- else {
- $domain_name = "$domain_name\n";
- }
-
-while (1) {
-
- # check the file's last updated time, if it's been changed, update
- # the DNS and save the time. Update DNS even if there a no changes on
- # the leases file if ttl since last DNS update has expired.
- # This will ALWAYS run once - on startup, since $modtime starts at zero.
-
-
- my @stats = stat ($lease_file);
-
-
- if (($stats[9] > $modtime) or (time >= $modtime+$ttl)){
-
- # clear the old hash
- undef %db;
-
- printf STDERR "updating DNS with dhcpd.leases\n";
- $modtime = time;
- &read_lease_file;
- &update_dns;
- }
-
- # wait till next check time
- sleep $update_freq;
-
-} # end main
-###########################################################################
-
-
-### write out the import file
-sub update_dns {
- my ($ip, $hostname, $fname);
-
- do { $fname = tmpnam() }
- until sysopen(DNSFILE, $fname, O_WRONLY|O_CREAT|O_EXCL, 0600);
-# do { $fname = "$temp_dir/d2d".int(rand(time())) }
-# until sysopen(DNSFILE, $fname, 1|64|128, 0600);
-
- while (($hostname,$ip) = each (%db)) {
- print DNSFILE "$ip $hostname.$domain_name";
- }
- close DNSFILE;
-
- system ("$pdnsd_ctl source $fname $nameserver $ttl");
- unlink($fname);
-}
-
-
-### reads the lease file & makes a hash of what's in there.
-sub read_lease_file {
-
- unless (open(LEASEFILE,$lease_file)) {
- #`logger -t dns_update.pl error opening dhcpd lease file`;
- print STDERR "Can't open lease file\n";
- return;
- }
-
- my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
- my $curdate = sprintf "%02d%02d%02d%02d%02d%20d%20d",
- ($year+1900),($mon+1),$mday,$hour,$min,$sec;
-
- ## Loop here, reading from LEASEFILE
- while (<LEASEFILE>) {
- my ($ip, $hostname, $mac, $enddate,$endtime);
-
- if (/^\s*lease/i) {
-
- # find ip address
- $_ =~ /^\s*lease\s+(\S+)/;
- $ip = $1;
-
- # do the rest of the block - we're interested in hostname,
- # mac address, and the lease time
- while ($_ !~ /^}/) {
- $_ = <LEASEFILE>;
- # find hostname
- if ($_ =~ /^\s*client/i) {
- #chomp $_;
- #chop $_;
- $_ =~ /\"(.*)\"/;
- $hostname = $1;
-
- # change spaces to dash, remove dots - microsoft
- # really needs to not do this crap
- $hostname =~ s/\s+/-/g;
- $hostname =~ s/\.//g;
- }
- # get the lease end date
- elsif ($_ =~ /^\s*ends/i) {
- $_ =~ m/^\s*ends\s+\d\s+([^;]+);/;
- $enddate = $1;
- $enddate =~ s|[/: ]||g;
- }
- }
- # lowercase it - stupid dhcp clients
- $hostname =~ tr/[A-Z]/[a-z]/;
-
- ($debug < 1 ) || print STDERR "$hostname $ip $enddate $curdate\n";
-
- # Store hostname/ip in hash - this way we can do easy dupe checking
- if (($hostname ne "") and ($enddate > $curdate)) {
- $db{$hostname} = $ip;
- }
- }
- }
- close LEASEFILE;
-}
-
-### left around for testing
-sub print_db {
- my ($key,$value);
-
- while (($key,$value) = each (%db)) {
- print "$key - $value\n";
- }
-}
-
diff --git a/jni/pdnsd/depcomp b/jni/pdnsd/depcomp
deleted file mode 100644
index 04701da..0000000
--- a/jni/pdnsd/depcomp
+++ /dev/null
@@ -1,530 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2005-07-09.11
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-# 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 2, 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@xxxxxxxxxxxxxx>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@xxxxxxx>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
- if test "$libtool" = yes; then
- "$@" -Wc,-M
- else
- "$@" -M
- fi
- stat=$?
-
- if test -f "$tmpdepfile"; then :
- else
- stripped=`echo "$stripped" | sed 's,^.*/,,'`
- tmpdepfile="$stripped.u"
- fi
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
-
- if test -f "$tmpdepfile"; then
- outname="$stripped.o"
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mecanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no
- for arg in "$@"; do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
- "$@" || exit $?
- IFS=" "
- for arg
- do
- case "$arg" in
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/doc/Makefile.am b/jni/pdnsd/doc/Makefile.am
deleted file mode 100644
index b3e2198..0000000
--- a/jni/pdnsd/doc/Makefile.am
+++ /dev/null
@@ -1,28 +0,0 @@
-
-man_MANS = pdnsd.8 pdnsd-ctl.8 pdnsd.conf.5
-
-# Note: pdnsd-ctl.8, pdnsd.conf.5.in, dl.html and the txt docs are handled by dist-hook rule.
-EXTRA_DIST = pdnsd.conf.in pdnsd.8.in \
- html/dl.html.in html/doc.html html/faq.html html/index.html \
- doc_makefile html/doc_makefile txt/doc_makefile \
- html2confman.pl html/htmlsubst.pl
-
-# XXX: Do not insist to set the config file owner to root to avoid breaking RPM
-# builds
-install-data-hook:
- $(mkinstalldirs) "$(DESTDIR)$(sysconfdir)"
- if test `whoami` = "root"; then \
- $(INSTALL) -o 0 -g 0 -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
- else \
- $(INSTALL) -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
- fi
-
-dist-hook: doc_makefile
- @$(MAKE) -f doc_makefile doc
- cp -p --parents pdnsd-ctl.8 pdnsd.conf.5.in \
- html/dl.html txt/faq.txt txt/intro.txt txt/manual.txt \
- $(distdir)
-
-distclean-local: doc_makefile
- @$(MAKE) -f doc_makefile clean
-
diff --git a/jni/pdnsd/doc/Makefile.in b/jni/pdnsd/doc/Makefile.in
deleted file mode 100644
index 7f07fe6..0000000
--- a/jni/pdnsd/doc/Makefile.in
+++ /dev/null
@@ -1,483 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/pdnsd.8.in $(srcdir)/pdnsd.conf.5.in \
- $(srcdir)/pdnsd.conf.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd.8 pdnsd.conf.5 pdnsd.conf
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-man5dir = $(mandir)/man5
-am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(man_MANS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-man_MANS = pdnsd.8 pdnsd-ctl.8 pdnsd.conf.5
-
-# Note: pdnsd-ctl.8, pdnsd.conf.5.in, dl.html and the txt docs are handled by dist-hook rule.
-EXTRA_DIST = pdnsd.conf.in pdnsd.8.in \
- html/dl.html.in html/doc.html html/faq.html html/index.html \
- doc_makefile html/doc_makefile txt/doc_makefile \
- html2confman.pl html/htmlsubst.pl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd.8: $(top_builddir)/config.status $(srcdir)/pdnsd.8.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-pdnsd.conf.5: $(top_builddir)/config.status $(srcdir)/pdnsd.conf.5.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-pdnsd.conf: $(top_builddir)/config.status $(srcdir)/pdnsd.conf.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-man5: $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
- @list=''; test -n "$(man5dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.5[a-z]*$$/p'; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
- done; }
-
-uninstall-man5:
- @$(NORMAL_UNINSTALL)
- @list=''; test -n "$(man5dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.5[a-z]*$$/p'; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
-install-man8: $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
- @list=''; test -n "$(man8dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.8[a-z]*$$/p'; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list=''; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.8[a-z]*$$/p'; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them" >&2; \
- exit 1; \
- else :; fi; \
- else :; fi
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS)
-installdirs:
- for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man5 install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man
-
-uninstall-man: uninstall-man5 uninstall-man8
-
-.MAKE: install-am install-data-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic dist-hook \
- distclean distclean-generic distclean-local distdir dvi dvi-am \
- html html-am info info-am install install-am install-data \
- install-data-am install-data-hook install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-man5 \
- install-man8 install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am uninstall-man uninstall-man5 uninstall-man8
-
-
-# XXX: Do not insist to set the config file owner to root to avoid breaking RPM
-# builds
-install-data-hook:
- $(mkinstalldirs) "$(DESTDIR)$(sysconfdir)"
- if test `whoami` = "root"; then \
- $(INSTALL) -o 0 -g 0 -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
- else \
- $(INSTALL) -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
- fi
-
-dist-hook: doc_makefile
- @$(MAKE) -f doc_makefile doc
- cp -p --parents pdnsd-ctl.8 pdnsd.conf.5.in \
- html/dl.html txt/faq.txt txt/intro.txt txt/manual.txt \
- $(distdir)
-
-distclean-local: doc_makefile
- @$(MAKE) -f doc_makefile clean
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/doc/doc_makefile b/jni/pdnsd/doc/doc_makefile
deleted file mode 100644
index f5e8f86..0000000
--- a/jni/pdnsd/doc/doc_makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file was written by Paul Rombouts.
-# Because pdnsd currently has a very idiosyncratic method of building documentation
-# I prefer to keep the actual build rules outside of the Makefiles an ordinary user
-# would use to compile pdnsd and therefore I have put them into separate 'doc_makefile's.
-#
-# To rebuild pdnsd docs after you have modified something that other files depend on,
-# run 'make -f doc_makefile doc' in the doc/ directory.
-# This makefile is also invoked when you build a pdnsd distribution tarball
-# using 'make dist' in the toplevel pdnsd source directory.
-#
-# If anyone thinks there is a much more elegant method for building the pdnsd docs
-# using a conventional autoconf/automake process, please let me know.
-
-versionfile = ../version
-
-doc: pdnsd-ctl.8 pdnsd.conf.5.in html txt
-.PHONY: pdnsd-ctl.8 doc html txt clean
-
-pdnsd-ctl.8:
- @pver=`cat $(versionfile)` && \
- mver=`perl -e 'while(<>) {if(/^\s*\.TH(?:\s+(?:"[^"]*"|[^"\s]+)){3}\s+"pdnsd\s+([^"]*)"/) {print "$$1\n";exit 0}} \
- die "Cannot find version in $$ARGV\n"' $@` && { \
- test "$$mver" = "$$pver" || { \
- perl -p -i.makesave -e 's/^(\s*\.TH(?:\s+(?:"[^"]*"|[^"\s]+)){3}\s+"pdnsd\s+)[^"]*(")/$${1}'"$$pver"'$${2}/' $@ && \
- echo "Updated version in $@: $$mver -> $$pver"; \
- }; \
- }
-
-pdnsd.conf.5.in: html/doc.html html2confman.pl
- perl html2confman.pl $< > $@
-
-html txt:
- @cd $@ && $(MAKE) -f doc_makefile
-
-clean:
- @rm -fv pdnsd.conf.5.in
- @cd html && $(MAKE) -f doc_makefile clean
- @cd txt && $(MAKE) -f doc_makefile clean
diff --git a/jni/pdnsd/doc/html/dl.html b/jni/pdnsd/doc/html/dl.html
deleted file mode 100644
index 3f9c614..0000000
--- a/jni/pdnsd/doc/html/dl.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>pdnsd Download Page</title>
- <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
- <style type="text/css">
- <!--
- .small { font-family:helvetica; font-size:small; text-align:center; }
- // -->
- </style>
- </head>
- <!--notext(-->
- <body bgcolor="#EEEEEE">
- <table width="100%">
- <tr>
- <td> <span class="small">
- <a href="index.html">pdnsd Homepage</a>
- </span></td>
- <td> <span class="small">
- <a href="faq.html">pdnsd FAQ</a>
- </span></td>
- <td> <span class="small">
- <a href="doc.html">Documentation</a>
- </span></td>
- <td> <span class="small">
- <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
- </span> </td>
- <td><span class="small">
- <a href="dl.html">Download Section</a>
- </span></td>
- </tr>
- </table>
- <!--)notext-->
- <center><h1>pdnsd Download Page</h1></center>
- <!-- For obvious reasons, the real download page is not included in the distribution ;-) -->
- <p>The original author of pdnsd is <a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a>,
- but since 2003, he no longer maintains pdnsd.
- However, <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a> has extensively revised the code and maintains
- a version with many fixes and improvements at
- <a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>.<br>
- He has pre-patched tarballs and RPM packages available for download at this site.<br>
- </p>
- <p>
- If you are interested in the very latest code or if you want to participate in
- pdnsd development, checkout the <a href="http://gitorious.org/pdnsd/pdnsd">pdnsd git repository</a>
- at <a href="http://gitorious.org/">gitorious.org</a>.
- </p>
-
- The most recent tarball is <a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.tar.gz">pdnsd-1.2.9b-par.tar.gz</a>
- (<a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.tar.gz.asc">GPG signature</a>).<br>
- The most recent RPM packages are:
-<table cellspacing=1 cellpadding=7>
- <tr>
- <td width="30%"><b>Package Name</b></td>
- <td width="10%" align=right><b>Size</b></td>
- <td width="60%"><b>Description</b></td>
- </tr>
- <tr>
- <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.src.rpm">pdnsd-1.2.9b-par.src.rpm</a></td>
- <td width="10%" align=right>514kB</td>
- <td width="60%">Source RPM (binary packages can also be built directly from the tarball).
- </td>
- </tr>
- <tr>
- <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par_sl6.i686.rpm">pdnsd-1.2.9b-par_sl6.i686.rpm</a></td>
- <td width="10%" align=right>???</td>
- <td width="60%">i686 binary built on a Scientific Linux 6.2 system.
- </td>
- </tr>
- <tr>
- <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par_sl6.x86_64.rpm">pdnsd-1.2.9b-par_sl6.x86_64.rpm</a></td>
- <td width="10%" align=right>282kB</td>
- <td width="60%">x86_64 binary built on a Scientific Linux 6.2 system.
- </td>
- </tr>
-</table>
- If you want to check the signatures on these packages you will need a copy of my GPG key
- which you can get <a href="http://members.home.nl/p.a.rombouts/paromb.asc">here</a>
- or from a public key server.
- <p>
- There are also <a href="http://packages.debian.org/pdnsd">Debian</a>,
- Ubuntu,
- <a href="http://packages.gentoo.org/package/net-dns/pdnsd">Gentoo</a>,
- <a href="http://www.rpmfind.net/linux/rpm2html/search.php?query=pdnsd">Mandriva</a>
- and <a href="http://cvsweb.freebsd.org/ports/dns/pdnsd">FreeBSD</a>
- packages, but these may not include the latest version.<br>
- If you are looking for other versions released by Paul Rombouts, visit this
- <a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/">download directory</a>.
- </p>
- <hr>
- <br>
- <p>
- <i>Last revised: 24 Apr 2012 by Paul A. Rombouts</i>
- </p>
- </body>
-</html>
diff --git a/jni/pdnsd/doc/html/dl.html.in b/jni/pdnsd/doc/html/dl.html.in
deleted file mode 100644
index dffe2b0..0000000
--- a/jni/pdnsd/doc/html/dl.html.in
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>pdnsd Download Page</title>
- <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
- <style type="text/css">
- <!--
- .small { font-family:helvetica; font-size:small; text-align:center; }
- // -->
- </style>
- </head>
- <!--notext(-->
- <body bgcolor="#EEEEEE">
- <table width="100%">
- <tr>
- <td> <span class="small">
- <a href="index.html">pdnsd Homepage</a>
- </span></td>
- <td> <span class="small">
- <a href="faq.html">pdnsd FAQ</a>
- </span></td>
- <td> <span class="small">
- <a href="doc.html">Documentation</a>
- </span></td>
- <td> <span class="small">
- <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
- </span> </td>
- <td><span class="small">
- <a href="dl.html">Download Section</a>
- </span></td>
- </tr>
- </table>
- <!--)notext-->
- <center><h1>pdnsd Download Page</h1></center>
- <!-- For obvious reasons, the real download page is not included in the distribution ;-) -->
- <p>The original author of pdnsd is <a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a>,
- but since 2003, he no longer maintains pdnsd.
- However, <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a> has extensively revised the code and maintains
- a version with many fixes and improvements at
- <a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>.<br>
- He has pre-patched tarballs and RPM packages available for download at this site.<br>
- </p>
- <p>
- If you are interested in the very latest code or if you want to participate in
- pdnsd development, checkout the <a href="http://gitorious.org/pdnsd/pdnsd">pdnsd git repository</a>
- at <a href="http://gitorious.org/">gitorious.org</a>.
- </p>
-
- The most recent tarball is <a href="${baseurl}releases/pdnsd-$version.tar.gz">pdnsd-$version.tar.gz</a>
- (<a href="${baseurl}releases/pdnsd-$version.tar.gz.asc">GPG signature</a>).<br>
- The most recent RPM packages are:
-<table cellspacing=1 cellpadding=7>
- <tr>
- <td width="30%"><b>Package Name</b></td>
- <td width="10%" align=right><b>Size</b></td>
- <td width="60%"><b>Description</b></td>
- </tr>
- <tr>
- <td width="30%"><a href="${baseurl}releases/pdnsd-$version.src.rpm">pdnsd-$version.src.rpm</a></td>
- <td width="10%" align=right>$sizeof("$HOME/rpmbuild/SRPMS/pdnsd-$version.src.rpm")</td>
- <td width="60%">Source RPM (binary packages can also be built directly from the tarball).
- </td>
- </tr>
- <tr>
- <td width="30%"><a href="${baseurl}releases/pdnsd-${version}${extver}.${arch}.rpm">pdnsd-${version}${extver}.${arch}.rpm</a></td>
- <td width="10%" align=right>$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch}.rpm")</td>
- <td width="60%">${arch} binary built on a $system.
- </td>
- </tr>
- <tr>
- <td width="30%"><a href="${baseurl}releases/pdnsd-${version}${extver}.${arch2}.rpm">pdnsd-${version}${extver}.${arch2}.rpm</a></td>
- <td width="10%" align=right>$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch2}.rpm")</td>
- <td width="60%">${arch2} binary built on a $system.
- </td>
- </tr>
-</table>
- If you want to check the signatures on these packages you will need a copy of my GPG key
- which you can get <a href="http://members.home.nl/p.a.rombouts/paromb.asc">here</a>
- or from a public key server.
- <p>
- There are also <a href="http://packages.debian.org/pdnsd">Debian</a>,
- Ubuntu,
- <a href="http://packages.gentoo.org/package/net-dns/pdnsd">Gentoo</a>,
- <a href="http://www.rpmfind.net/linux/rpm2html/search.php?query=pdnsd">Mandriva</a>
- and <a href="http://cvsweb.freebsd.org/ports/dns/pdnsd">FreeBSD</a>
- packages, but these may not include the latest version.<br>
- If you are looking for other versions released by Paul Rombouts, visit this
- <a href="${baseurl}releases/">download directory</a>.
- </p>
- <hr>
- <br>
- <p>
- <i>Last revised: $date by Paul A. Rombouts</i>
- </p>
- </body>
-</html>
diff --git a/jni/pdnsd/doc/html/doc.html b/jni/pdnsd/doc/html/doc.html
deleted file mode 100644
index 95828c5..0000000
--- a/jni/pdnsd/doc/html/doc.html
+++ /dev/null
@@ -1,2630 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>pdnsd Documentation</title>
- <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
- <style type="text/css">
- <!--
- .small { font-family:helvetica; font-size:small; text-align:center; }
- .indented { text-indent: 2em; }
- .nowrap { white-space:nowrap; }
- // -->
- </style>
- </head>
-
- <body bgcolor="#EEEEEE">
- <!--notext(-->
- <table width="100%">
- <tr>
- <td> <span class="small">
- <a href="index.html">pdnsd Homepage</a>
- </span></td>
- <td> <span class="small">
- <a href="faq.html">pdnsd FAQ</a>
- </span></td>
- <td> <span class="small">
- <a href="doc.html">Documentation</a>
- </span></td>
- <td> <span class="small">
- <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
- </span> </td>
- <td><span class="small">
- <a href="dl.html">Download Section</a>
- </span></td>
- </tr>
- </table>
- <!--)notext-->
- <center><h1>pdnsd Documentation</h1></center>
- This is the "official" pdnsd documentation and reference written by
- <a href="index.html#authors">Thomas Moestl</a> with revisions by
- <a href="index.html#authors">Paul A. Rombouts</a>.<br>
- This manual is a part of the pdnsd package, and may be distributed in
- original or modified form under terms of the GNU General Public
- License, as published by the Free Software Foundation; either version
- 3, or (at your option) any later version.<br>
- You can find a copy of the GNU GPL in the file <code>COPYING</code> in the source or documentation directory.<br>
- This manual is up-to-date for version 1.2.9b. For older documentation, please refer to the doc
- directory of the respective pdnsd package.<br>
- If you want a quicker introduction to pdnsd, you can try some of the
- <a href="http://www.google.com/search?q=pdnsd+howto">HOWTOs available on the web</a>.
- For Apple Mac users, Brian Wells has published a good HOWTO at
- <a href="http://web.mac.com/brianwells/main/pdnsd.html">http://web.mac.com/brianwells/main/pdnsd.html</a>.
-
-
- <h2>0. Installation</h2>
- <h3>0.1 Installing binary RPM's</h3>
- To install a binary RPM, just do<br>
- <p class="indented"><code>rpm -i pdnsd-<<i>version</i>>.rpm</code></p>
- This should install pretty much everything automatically. The only thing left
- for you to do is adapt your configuration file (stored in <code>/etc/pdnsd.conf</code>)
- according to your needs (see below).
- In the Red Hat and SuSE RPMs, a start script is also installed; read the section
- <i>0.4, Start at Boot Time</i> about that.
-
- <br>
- <h3>0.2 Building RPM's</h3>
- It is possible to build a binary RPM from a source package using the command<br>
- <p class="indented"><code>rpmbuild --rebuild pdnsd-<<i>version</i>>.src.rpm</code></p>
- or alternatively from a tarball using the command<br>
- <p class="indented"><code>rpmbuild -tb pdnsd-<<i>version</i>>.tar.gz</code></p>
- You can do this as root, but it is safer to build a binary package first as a normal user,
- and then, when all has gone well, install the resulting binary package as root as in the previous section.
- How to build an RPM package without being root is described at
- <a href="http://www.ibm.com/developerworks/linux/library/l-rpm1/">
- http://www.ibm.com/developerworks/linux/library/l-rpm1/</a>.<br><br>
- Several pdnsd-specific options are available when building RPM packages:
- <table cellpadding=7>
- <tr>
- <td class="nowrap">
- <code>--with isdn</code>
- </td>
- <td>
- Has the same effect as <code>--enable-isdn</code> (<a href="#enableisdn">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--without poll</code>
- </td>
- <td>
- Has the same effect as <code>--disable-poll</code> (<a href="#disablepoll">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--without nptl</code>
- </td>
- <td>
- Has the same effect as <code>--with-thread-lib=linuxthreads</code> (<a href="#threadlib">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with ipv6</code>
- </td>
- <td>
- Has the same effect as <code>--enable-ipv6</code> (<a href="#enableipv6">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--without tcpqueries</code>
- </td>
- <td>
- Has the same effect as <code>--disable-tcp-queries</code> (<a href="#disabletcpqueries">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--without debug</code>
- </td>
- <td>
- Has the same effect as <code>--with-debug=0</code> (<a href="#withdebug">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--define "distro <<i>distro</i>>"</code>
- </td>
- <td>
- Has the same effect as <code>--with-distribution=<<i>distro</i>></code> (<a href="#withdistro">see below</a>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--define "run_as_user <<i>user</i>>"</code>
- </td>
- <td>
- Has the same effect as <code>--with-default-id=<<i>user</i>></code> (<a href="#defaultid">see below</a>).<br>
- For RPMs the default <code><<i>user</i>></code> is <code>"pdnsd"</code>.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--define "run_as_uid <<i>uid</i>>"</code>
- </td>
- <td>
- If the user defined by the previous option does not exist when the RPM is installed,
- the pre-install script will try to create a new user with numerical id <code><<i>uid</i>></code>.
- The default is to let the system choose the numerical id at install time.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--define "cachedir <<i>dir</i>>"</code>
- </td>
- <td>
- Has the same effect as <code>--with-cachedir=<<i>dir</i>></code> (<a href="#withcachedir">see below</a>).
- </td>
- </tr>
- </table>
- You can also configure which compiler flags will be used by setting the environment variable
- <code>CFLAGS</code>.
- Using a bash shell, you can do that on the command line like this:
- <code> CFLAGS="-O1 -Wall" rpmbuild ...</code><br>
- This is useful if you prefer a different level of optimization, for instance.
-
- <br>
- <h3>0.3 Installing from pure sources (tar archives or git repositories)</h3>
- <h4>0.3.1 Setting up the source code tree</h4>
- Source code is available in the form of snapshots (tarballs) or a git repository
- with the very latest development code and a (nearly) complete history of all the revisions.
- Cloning a git repository is useful if you need a recent fix or feature
- that is not yet contained in a main release or you want to participate in pdnsd development.
- Otherwise you will probably find the tarballs more convenient because they are much more compact.
- <h5>0.3.1.1 Unpacking a tar archive</h5>
- The pdsnsd snapshot releases come in the form of a gzip'ed tar archive.
- To decompress it (using a modern tar) do<br>
- <p class="indented"><code>tar -xzf pdnsd-<version>.tar.gz</code></p>
- If your tar doesn't do this, use:<br>
- <p class="indented"><code>gzip -dc pdnsd-<version>.tar.gz | tar -xf -</code></p>
- <h5>0.3.1.2 Cloning a git repository</h5>
- To clone a git repository you need to install, if not already installed,
- the git version control system, which is available as a package in most modern Linux distributions.
- Then run the command:<br>
- <p class="indented"><code>git clone git://gitorious.org/pdnsd/pdnsd.git pdnsd</code></p>
- In rare cases, if you are behind some kind of firewall, the special git protocol can't be used
- and you will need to fall back to the http protocol.
- See the <a href="http://gitorious.org/pdnsd">gitorious.org</a> website or git documentation for more information.
-
- <h4>0.3.2 Configuring the source</h4>
- Change into the pdnsd source directory and run configure. It takes the following command line
- options (if you do not specify an option, defaults will be used):<br>
- <table bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td class="nowrap">
- <code>--prefix=<i>dir</i></code>
- </td>
- <td>
- Specify the prefix directory. The pdnsd files are installed in subdirectories
- of the prefix, the pdnsd and pdnsd-ctl executables are for example installed
- in the sbin subdirectory of the prefix. The default for this is /usr/local;
- you might want to set this to /usr (using <code>--prefix=/usr</code>).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--sysconfdir=<i>dir</i></code>
- </td>
- <td>
- Specify the config directory. pdnsd expects its pdnsd.conf file to reside
- there if the <code>-c</code> option is not given at startup.
- The default for this is the <code>etc</code> subdirectory of your prefix, e.g. <code>/usr/local/etc</code>
- if you did not specify a prefix. To set this e.g. to <code>/etc</code>, use <code>--sysconfdir=/etc</code>.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="withdistro">--with-distribution=<i>distro</i></a></code>
- </td>
- <td>
- Specify target distribution (default=Generic; others: RedHat, SuSE, Debian)<br>
- See below for the effect of these settings.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-target=<i>platform</i></code>
- </td>
- <td>
- Change compilation target platform (default: autodetect; others: Linux, BSD, Cygwin).<br>
- autodetect will attempt to detect whether you are using Linux, *BSD or Cygwin and
- should normally be sufficient. If this does not work, try specifying
- your system manually (for the Darwin platform (Apple Mac OS X) specify BSD here).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="withcachedir">--with-cachedir=<i>dir</i></a></code>
- </td>
- <td>
- Default directory for pdnsd cache (default=/var/cache/pdnsd)<br>
- This setting can be changed via config file settings when pdnsd has been built.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-hash-buckets=<i>num</i></code>
- </td>
- <td>
- Number of hash buckets to use (default=1024). The default should be
- sufficient for most purposes, but if you want to store a large number of names
- in the cache, cache lookups may be faster if the number of hash buckets
- is comparable to the number of names stored in the cache.
- The number actually used is the smallest power of two
- greater or equal to the number specified here.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="enableisdn">--enable-isdn</a></code>
- </td>
- <td>
- Enable ISDN support<br>
- This option will work only on Linux and may cause problems with 2.0.x or
- old 2.2.x kernels. You will need it for a proper <code>if</code> uptest
- under Linux for ISDN ppp devices.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-ipv4</code>
- </td>
- <td>
- Disable IPv4 networking support (default=enabled)
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="enableipv6">--enable-ipv6</a></code>
- </td>
- <td>
- Enable IPv6 networking support.<br>
- If your OS does support IPv6 properly, you should be able to serve also
- IPv4 queries using this. Normally, this is disabled and you won't need
- it.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-ipv4-startup</code>
- </td>
- <td>
- Disable IPv4 on pdnsd startup by default (default=enabled)
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--enable-ipv6-startup</code>
- </td>
- <td>
- Enable IPV6 on pdnsd startup by default (default=IPv4).
- These options are only defaults, you can specify on
- the command line or in the config files which IP version
- will really be used.
- Normally, you won't need to change these.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-udp-queries</code>
- </td>
- <td>
- Disable UDP as query method. You shouldn't need to change
- this.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="disabletcpqueries">--disable-tcp-queries</a></code>
- </td>
- <td>
- Disable TCP as query method. This only effects the querying of
- name servers by pdnsd, not the ability of pdnsd to answer
- TCP queries from clients.
- TCP queries are slower than UDP queries, but can be more secure
- against certain types of attacks and are able to handle large answers.
- For normal use this can be disabled.
- (Note that the default has changed: TCP-query support
- is now compiled in by default, but it still depends on the run-time
- options whether it is actually used.)
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-query-method=<i>qm</i></code>
- </td>
- <td>
- Specify the query method (default=udponly, others: tcponly, tcpudp, udptcp).
- If you have enabled both UDP and TCP queries, this lets you control
- which query method pdnsd will use by default. tcpudp will try TCP
- first and fall back to UDP if TCP is not supported by the server;
- udptcp will try UDP first and, if the answer was truncated, will repeat
- the query using TCP.
- udponly and tcponly should be clear. Note that this only effects
- the compiled-in default; the query method can still be changed using
- command-line options or options in the configuration file.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-tcp-server</code>
- </td>
- <td>
- Disable the TCP server.
- In this case pdnsd will not be able to respond to TCP queries from clients.
- This may cause problems with very large answers.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-src-addr-disc</code>
- </td>
- <td>
- Disable the UDP source address discovery.<br>
- You need this only if you have trouble with messages saying
- "could not discover udp source address".<br>
- For the Cygwin target, this option is disabled by default.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="disablepoll">--disable-poll</a></code>
- </td>
- <td>
- Disable poll(2) and use select(2) (default=enabled)<br>
- You will normally not need this.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--disable-new-rrs</code>
- </td>
- <td>
- Since version 1.2.9 this option is obsolete and ignored.
- It is now possible to configure for each RR type separately whether it is
- cacheable by pdnsd by editing the file <code>src/rr_types.in</code>.
- The comments in this file explain how to do this.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--enable-strict-rfc2181</code>
- </td>
- <td>
- Enforce strict RFC 2181 compliance.<br>
- This will cause pdnsd to reject DNS answers with incorrect
- timestamp settings (multiple RRs of the same type and for the same domain with
- different TTLs). Normally not needed.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="enableunderscores">--enable-underscores</a></code>
- </td>
- <td>
- This option is obsolete. Since version 1.2, pdnsd places no restrictions
- on the types of characters in domain names (there are still a few restrictions
- for locally defined names, though).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-random-device=<i>device</i></code>
- </td>
- <td>
- Specify random device; default: C Library <code>random()</code> PRNG<br>
- pdnsd uses (pseudo-) random numbers as query IDs for security reasons
- (this makes forging DNS answers more difficult). This option
- controls where pdnsd gets these from. The default is the C library
- <code>random()</code> function, which is relatively weak.
- You can specify a device like /dev/urandom here if you like; pdnsd will read
- random numbers from it 16-bit-wise. /dev/urandom is present under Linux and
- most BSD derivates. You should not use /dev/random - it is more secure, but
- may block and delay pdnsd's answers for a long time.<br>
- You can specify <code>arc4random</code> to use the BSD <code>arc4random()</code>
- library function (default for FreeBSD target), which is considered safe.<br>
- You can also specify <code>random</code> as device to use the C Library
- <code>random()</code> function (described above).
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="defaultid">--with-default-id=<i>user</i></a></code>
- </td>
- <td>
- Specify default user for pdnsd (default=nobody).
- This is the user that will be entered for the <code>run_as</code>
- option in the config file (see <a href="#runas">below</a>) that will be installed during <code>make install</code>.
- You can change this any time in your config file.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="withdebug">--with-debug=<i>level</i></a></code>
- </td>
- <td>
- Specify debugging level. Normally you can safely switch debugging off
- by setting the level to 0. This will increase speed (although only
- marginally) and save space in the executable (only about 12kB).
- However, more significant may be the savings in stack space, especially
- if pdnsd is put under heavy load and there are many simultaneous
- running threads.<br>
- Presently the only defined debug levels are in the range 0 - 9.
- Setting the level to 9 enables hex dumps of the queries and replies
- pdnsd receives and should normally not be needed. Debug output will only
- be generated if you turn on special switches; it might be useful for
- debugging your config files, so I recommend using the default (1).
- However, if you use pdnsd under heavy load, a better strategy may be
- to compile one version of pdnsd without debug support (configured with
- <code>--with-debug=0</code>) for production use, and one version with
- with debug support (e.g. <code>--with-debug=9</code>)
- for diagnostic purposes.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-verbosity=<i>level</i></code>
- </td>
- <td>
- Specify default message verbosity. The default should be ok.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--enable-rcsids</code>
- </td>
- <td>
- Enable RCS IDs in executables (default=disabled).<br>
- For personal use, there is no need to do this. If you build rpm's, it
- might have advantages.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--enable-tcp-subseq</code>
- </td>
- <td>
- Enable subsequent tcp queries. The DNS protocol standard
- requires that servers must be capable of answering multiple
- subsequent queries that are sent over the same tcp connection, and that
- the server may only close the connection by himself after a certain
- timeout. This feature is rarely used, but may make denial-of-service
- attacks easier, as it allows for an attacker to hold a connection open
- a long time (although the attacker's IP is most likely revealed then).
- For full standard compliance, you should use this option.
- If you do not use <code>--enable-tcp-server</code>, is option is not honored.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-tcp-qtimeout=<i>secs</i></code>
- </td>
- <td>
- Specify default tcp query timeout after which the connection is closed
- if no full query has been received. The default is 30s.
- You can also change this option at run time using the tcp_qtimeout
- config file option.
- If you do not use <code>--enable-tcp-server</code>, is option is not honored.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-par-queries=<i>num</i></code>
- </td>
- <td>
- Specify the default number of queries that can be executed in parallel.
- You can also change this option at run time using the par_queries
- config file option. See the description of that option for an explanation
- of what it really does.<br>
- The default for this option is 2.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code>--with-max-nameserver-ips=<i>num</i></code>
- </td>
- <td>
- <em>New in version 1.2.9b:</em>
- Specify the maximum number of IP addresses that can be used per nameserver obtained
- from NS records (when resolving names recursively).
- Just one IP address per nameserver is sufficient in the vast majority of cases
- (and this was the strategy used by pdnsd in previous versions),
- but in rare cases this will cause unnecessary resolve failures if the address chosen
- for each nameserver happens to be unreachable while the other addresses would lead to
- successful resolution.<br>
- The default for this option is 3.
- </td>
- </tr>
- <tr>
- <td class="nowrap">
- <code><a name="threadlib">--with-thread-lib=<i>lib</i></a></code>
- </td>
- <td>
- <em>Added by Paul Rombouts</em>: Use this option if you experience problems with
- signal handling under Linux. The usual symptom is that pdnsd fails to save
- the cache to disk, and <code>/var/cache/pdnsd/pdnsd.cache</code> remains empty.
- If you experience this kind of trouble, try reconfiguring with different values
- for the <code>--with-thread-lib</code> option. The allowable values are
- <code>linuxthreads</code> (or <code>lt</code> for short), <code>linuxthreads2</code>
- (or <code>lt2</code> for short), and <code>nptl</code>.
- By default the configure script tries to detect automatically whether
- <code>linuxthreads</code> or <code>nptl</code> is more appropriate for your system,
- but the method used is not foolproof. Look for the line:
- <code>checking if this is an NPTL-based system...</code><br>
- If the automatic test mistakenly indentifies the thread library on your system as
- NPTL based, you should reconfigure with <code>--with-thread-lib=lt</code> and recompile.
- If the result of the automatic test is "<code>no</code>" or if
- <code>--with-thread-lib=lt</code> does not have the desired effect, try again using
- <code>--with-thread-lib=lt2</code> .
- </td>
- </tr>
- </table>
- Normally, you will need only <code>--prefix</code>, <code>--sysconfdir</code> and
- <code>--with-distribution</code>.
- If you specify your distribution using <code>--with-distribution</code>, this has the
- following effects:
- <ul>
- <li> An rc script is copied in the appropriate localtion, which enables pdnsd to start
- at machine boot time (see 0.4)
- <li> Distribution-specific portions might be included in the generated pdnsd.spec
- file (only important if you want to build rpm archives yourself).
- </ul>
- If you choose <code>Generic</code>, no rc script is installed, and a generic spec
- file is generated.<br>
-
- Further instructions are in the INSTALL document in the pdnsd source directory.
- <code>./configure --help</code> will give you a list of all supported command line
- options.<br><br>
- <em>Note added by Paul Rombouts</em>: Some people may want change the compiler optimization flag.
- I use the <code>-O2</code> flag, but it might be safer to use a lower level of
- optimization or no optimization at all. In that case prefix the
- <code>configure</code> command with the desired compiler flags like this
- (assuming you're using a bash shell):
- <p class="indented"><code>CFLAGS="-O1 -Wall" ./configure ...</code></p>
-
-
- <br>
- <h4>0.3.3 Building & installing </h4>
- Type <code>make</code> in the source directory. <i>Should</i> work by now.<br>
- To install, type <code>make install</code> or do the installation by hand (see <i>0.3.4</i>).<br>
- <code>make install</code> will do the following ($prefix is the prefix directory; see above):<br>
- <ol>
- <li> copies pdnsd to <code>$(prefix)/sbin/</code>
- <li> copies pdnsd-ctl to <code>$(prefix)/sbin/</code>
- <li> copies docs/pdnsd.conf.sample (a sample configuration) to the pdnsd config directory.
- <li> creates your cache directory if it is not there.
- After installation, you should check the file permissions and create or edit
- <code>/etc/pdnsd.conf</code> to fit your needs (see below).
- If you use the <a href="#runas"><code>run_as</code></a> option, please make sure that your
- cache directory is owned by the user you specified with this option!
- </ol>
- You must be root for this installation!<br>
- <b>Security notes:</b> <b><i>never</i></b> make the pdnsd cache directory
- writeable for untrusted users, or you will get several security holes:
- the users might modify the cache contents, or plant dangerous links.<br>
- If you use a pidfile, you should be aware that you introduce security
- problems if you place the pidfile in a directory in a NFS filesystem that
- is writeable for untrusted users. Generally, the pidfile directory
- (typically /var/run) should not be writeable for untrusted users.
- <br>
- <h4>0.3.4 Manual installation </h4>
- For a manual installation, you need to do the following steps:
- <ol>
- <li> Copy pdnsd and pdnsd-ctl from your build directory to an appropriate location (e.g. <code>/usr/sbin</code>).
- <li> Copy <code>docs/pdnsd.conf</code> into the directory you want it to reside (<code>/etc</code> by default,
- and change it according to your needs (see below).
- <li> Create your caching directory; default is <code>/var/cache/pdnsd</code> (you may change this
- in your <code>pdnsd.conf</code>); Permissions should be at max <code>rwxr-xr-x</code> (if you want to
- protect your cache and status socket, make it <code>rwx------</code>).
- </ol>
- Thats it!
- <br>
-
- <h3>0.4 Start at boot time</h3>
- In the <code>src/rc</code> folder of the pdnsd distribution are start scripts
- for pdnsd designed for different Linux distros. There are scripts
- for SuSE, Redhat, Debian, Arch Linux and Slackware now.<br>
- The start scripts are automatically installed during RPM install, and also during <code>make install</code>
- if you specified your distro.<br>
- For Slackware Linux there is a start-up script contributed by Nikola Kotur, but presently
- it must be installed manually.
- See <code>src/rc/README</code> and <code>src/rc/Slackware/rc.pdnsd</code> for details.
-
- <h4>0.4.1 SuSE Linux startup</h4>
- <code>rc/SuSE/pdnsd</code> is a start script for SuSE Linux. It was tested for 6.? but should run on some
- versions below. You can do <code>make install</code> as root in the <code>rc/SuSE</code>
- directory to install it, or you can install manually:<br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=5>
- <tr>
- <td>
- <b>manual installation</b>
- </td>
- </tr>
- <tr>
- <td>
- For manual installation, copy <code>rc/SuSE/pdnsd</code> into <code>/sbin/init.d/</code>, go to
- <code>/sbin/init.d/rc2.d/</code> and create there the following two symlinks:<br>
- S11pdnsd to ../pdnsd (do <code>ln -s ../pdnsd S11pdnsd</code> in that dir) <br>
- K34pdnsd to ../pdnsd (do <code>ln -s ../pdnsd K34pdnsd</code> in that dir) <br>
- The numbers dictate the order different services are started and
- might need to be modified. Then edit your <code>/etc/rc.config</code> file and
- add the line <code>START_PDNSD=yes</code> to start pdnsd at boot time.
- </td>
- </tr>
- </table>
- <p>
- If you used the <code>make install</code> command, <code>START_PDNSD=yes</code> has been
- appended to your <code>/etc/rc.config</code> file, causing pdnsd to be started
- at boot time. If you don't want that, change the <code>yes</code> into <code>no</code>.
- </p>
- This start script was created from <code>/sbin/init.d/skeleton</code> by me, so the
- most is copyrighted by SuSE. They put it under the GPL, however, so
- the license stated in <a href="../../COPYING">COPYING</a> also applies to this script.
- There is NO WARRANTY OF ANY KIND on these scripts.
- This is no official SuSE script, and SuSE naturally does NO support
- for it.
- <h4>0.4.2 Red Hat Linux startup</h4>
- <code>rc/Redhat/pdnsd</code> is a start script for Red Hat Linux. It was contibuted by Torben
- Janssen. <br>
- This was tested for 6.1 but should run on 5.0+. You can do <code>make install</code> as root in the
- <code>rc/Redhat</code> directory to install it, or you can install manually:<br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=5>
- <tr>
- <td>
- <b>manual installation</b>
- </td>
- </tr>
- <tr>
- <td>
- For manual installation, copy <code>rc/Redhat/pdnsd</code> into <code>/etc/rc.d/init.d/</code><br>
- Then go to <code>/etc/rc.d/rc3.d</code> and create there the following symlink:<br>
- S78pdnsd -> ../init.d/pdnsd
- (do <code>ln -f -s ../init.d/pdnsd S78pdnsd</code> in that dir)<br>
-
- Then go to <code>/etc/rc.d/rc0.d</code> and create there the following symlink:<br>
- K78pdnsd -> ../init.d/pdnsd
- (do <code>ln -f -s ../init.d/pdnsd K78pdnsd</code> in that dir)<br>
-
- Then go to /etc/rc.d/rc6.d and create there the following symlink:<br>
- K78pdnsd -> ../init.d/pdnsd
- (do <code>ln -f -s ../init.d/pdnsd K78pdnsd</code> in that dir)
- </td>
- </tr>
- </table>
- This script is also covered by license stated in <a href="../../COPYING">COPYING</a>.
- Again, there is NO WARRANTY OF ANY KIND on these scripts.
- This is no offical Redhat script, and Redhat naturally does NO support
- for it
- <br>
- <h3>0.5 Notes for FreeBSD users</h3>
- The special handling of ISDN ppp devices is only supported on Linux. It is not needed in FreeBSD, the normal
- device handling also works fine with isdn4bsd devices.<br>
- When compiled for FreeBSD, pdnsd as a small RFC compatability issue: RFC2181 demands answers on dns querys
- to be sent with the same source address the query packet went to. In seldom cases, this will not be the case,
- because the kernel selects the source address depending on the interface that was used for sending the answer.<br>
- Setting the source address currently does not work for IPv4. I have written a kernel patch that will provide an easy way
- to program this. We'll see if or when it gets commited.<br>
- <br>
- <br>
- <h2>1 Invocation</h2>
- When invoking pdnsd, you can specify various options at the command line. Command line options
- always override config file options. The various <b>--noX</b> options are present to override
- config file options.
- <p>
- pdnsd <b>--help</b> (or <b>-h</b>) gives you an overview of the pdnsd command line options.
- </p>
- <p>
- pdnsd <b>--version</b> (or <b>-V</b> for short) prints licence and version information.
- </p>
- <p>
- To start pdnsd as background daemon, specifiy <b>--daemon</b> (or <b>-d</b> for short) on
- the command line. Diagnostic and error messages after the actual daemon start
- will be printed to the syslog instead of the console. <b>--nodaemon</b> will disable this.
- </p>
- <p>
- When starting pdnsd as a daemon, the <b>-p</b> option may be helpful: It writes the pid
- of the server process to the file of the name given as argument to this option. <br>
- Example: <code>pdnsd -d -p /var/run/pdnsd.pid</code>
- </p>
- <p>
- If you want to specify a configuration file other than <code>/etc/pdnsd.conf</code>, specify
- <b>-c</b> or <b>--config-file</b> on the command line, followed by a filename.
- </p>
- <p>
- If pdnsd was compiled with debugging support, you may specify <b>-g</b> or
- <b>--debug</b> on the command line. This will cause extra diagnostic messages to be
- printed. When pdnsd runs in daemon mode, the messages will be written to the <code>pdnsd.debug</code>
- file in your cache directory. <b>--nodebug</b> disables debugging.
- </p>
- <p>
- pdnsd <b>-v</b><i>n</i> sets the verbosity level of pdnsd. <i>n</i> is normally a digit from 0 to 3,
- where 0 means normal operation, while 3 will most verbose.
- Level 9 can be used in combination with the <code>--debug</code> option for very
- extensive debug information.<br>
- <i>Note</i>: The current implementation mostly ignores the verbosity level,
- so you may not notice much difference between the various levels.
- </p>
- <p>
- The option <b>-s</b> or <b>--status</b> enables the status control socket. This is a named socket in
- the cache directory called <code>pdnsd.status</code>. This socket allows run-time configuration of pdnsd
- using the utility <code>pdnsd-ctl</code>. See <a href="#pdnsdctl">below</a> for more details about <code>pdnsd-ctl</code>.
- <b>--nostatus</b> disables status control.
- See also the configuration option <a href="#statusctl"><code>status_ctl</code></a> in the global section.
- </p>
- <p>
- The option <b>--notcp</b> disables the seldom needed TCP server thread, which may
- save you some resources. <b>-t</b> or <b>--tcp</b> will enable it.
- See also the <a href="#tcpserver"><code>tcp_server</code></a> configuration option.
- </p>
- <p>
- Using the <a name="querymethodcommandlineoption"><b>-m</b></a> option, you can select the method pdnsd uses to query other name servers.
- Following methods are supported (see also the <a href="#querymethod"><code>query_method</code></a>
- configuration option):<br>
- <b>-muo</b>: pdnsd will use UDP only. This is the fastest method, and should be supported by all name servers
- on the Internet. <br>
- <b>-mto</b>: pdnsd will use TCP only. TCP queries usually take longer time than UDP queries, but are more secure
- against certain attacks, where an attacker tries to guess your query id and to send forged answers. TCP queries
- are not supported by some name servers.<br>
- <b>-mtu</b>: pdnsd will try to use TCP, and will fall back to UDP if its connection is refused or times out.<br>
- <b>-mut</b>: <em>New in version 1.2.5:</em> pdnsd will try to use UDP, and will repeat the query using TCP if the UDP reply was truncated
- (i.e. the <code>tc</code> bit is set). This is the behaviour recommended by the DNS standards.<br>
- </p>
- <p>
- The <b>-4</b> option switches to IPv4 mode, providing pdnsd was compiled with IPv4 support.<br>
- The <b>-6</b> option switches to IPv6 mode, providing pdnsd was compiled with IPv6 support.<br>
- The <b>-a</b> option is only available when pdnsd was compiled with both IPv4 and IPv6 support.
- With this option, pdnsd will try to detect automatically if a system supports IPv6, and fall back to IPv4 otherwise.<br>
- </p>
- <p>
- With <b>-i</b> <em>prefix</em> or <b>--ipv4_6_prefix=</b><em>prefix</em> you can set the prefix pdnsd uses (when running in IPv6
- mode) to map IPv4 addresses in the configuration file to IPv6 addresses.
- There is also a corresponding option for the config file, <a href="#ipv46prefix">see below</a>.
- Must be a valid IPv6 address.
- The default is <code>::ffff:0.0.0.0</code>
- </p>
-
- <h2>2 The configuration file</h2>
- This section describes the layout of the configuration file and the available
- configuration options.
- The default location of the file is <code>/etc/pdnsd.conf</code>. This may be changed
- with the -c command line option.
- An example pdnsd.conf comes with the pdnsd distribution in the docs directory
- and will be installed to <code>/etc/</code> by <code>make install</code>.
-
- <br>
- <h3>2.1 Layout</h3>
- The configuration file is divided into sections. Each section is prefixed with
- the section name and opening curlies ({) and closed with closing curlies (}).
- In each section, configuration options can be given in the form
- <br><code>
- <i>option_name</i>=<i>option_value</i>;
- </code><br>
- Option value may be a string literal, a number, a time specification or a constant.
- In previous versions of pdnsd strings had to be enclosed
- in quotes ("), but since version 1.1.10 this is no longer necessary, unless
- a string contains a special character such as whitespace, a token that normally starts
- a comment, or one of "<code>,;{}\</code>".
- Since version 1.2.9 a backslash (\) inside a string is interpreted as an escape character,
- so it is possible to include special characters in strings (both quoted or unquoted)
- by preceding them with a backslash. Some escape sequences are in interpreted as in the C
- programming language, e.g. <code>\t</code> becomes a tab,
- <code>\n</code> becomes a new-line control char.<br>
- A time specification consists a sequence of digits followed by a one-letter suffix.
- The following suffixes are recognized:
- <code>s</code> (seconds), <code>m</code> (minutes), <code>h</code> (hours),
- <code>d</code> (days) and <code>w</code> (weeks).
- If the suffix is missing, seconds are assumed.
- If several time specifications are concatenated, their values are added together;
- e.g. <code>2h30m</code> is interpreted as 2*60*60 + 30*60 = 9000 seconds.<br>
- Some options take more than one value; in this case, the values are separated with commas.<br>
- If you may supply one of a set of possible values to an option, this is noted
- in the documentation as
- <code>(option1|option2|option3|...)</code><br>
- The constants <code>true|false</code> and <code>yes|no</code>
- are accepted as synonyms for the constants <code>on|off</code>.<br>
- Comments may be enclosed in /* and */, nested comments are possible. If the
- # sign or two slashes (//) appear in the configuration file, everything from
- these signs to the end of the current line is regarded as a comment and ignored.<br>
- There are examples for nearly all options in the sample config file.
- <br>
- <h3>2.1.1 <a name="globalsection"><code>global</code> Section</a></h3>
- The global section specifies parameters that affect the overall behaviour of the
- server. If you specify multiple global sections, the settings of those later in
- the file will overwrite the earlier given values.<br>
- These are the possible options:<br><br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>perm_cache=(<i>number</i>|off);</code></b><br>
- Switch the disk cache off or supply a maximum cache size in kB. If the disk
- cache is switched off, 8 bytes will still be written to disk.
- The memory cache is always 10kB larger than the file cache.
- This value is 2048 (2 MB) by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>cache_dir=<i>string</i>;</code></b><br>
- Set the directory you want to keep the cache in.
- The default is <code>"/var/cache/pdnsd"</code>
- (unless pdnsd was compiled with a different default).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>server_port=<i>number</i>;</code></b><br>
- Set the server port. This is especially useful when you want to start the
- server and are not root. Note that you may also not specify uptest=ping in
- the server section as non-root.<br>
- The default port is 53, the RFC-standard one. Note that you should only use
- non-standard ports when you only need clients on your machine to communicate
- with the server; others will probably fail if the try to contact the server
- on the basis of an NS record, since the A record that supplies the address for
- (among others) name servers does not have a port number specification.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>server_ip=<i>string</i>;</code></b><br>
- or<br>
- <b><code>interface=<i>string</i>;</code></b><br>
- Set the IP address pdnsd listens on for requests. This can be useful
- when the host has several interfaces and you want pdnsd not to listen on
- all interfaces. For example, it is possible to bind pdnsd to listen on
- 127.0.0.2 to allow pdnsd to be a forwarder for BIND.
- The default setting for this option is <code>server_ip=any</code>, which means that
- pdnsd will listen on all of your local interfaces.
- Presently you can only specify one address here; if you want pdnsd to listen on multiple
- interfaces but not all you will have to specify <code>server_ip=any</code>
- and use firewall rules to restrict access.<br>
- The IP address used to need quotation marks around it, but since version 1.1.10
- this is no longer necessary.<br>
- If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
- specify an IPv6 address here, then unless pdnsd was compiled to start up in IPv6 mode
- by default, you will need to use the <code>-6</code> command-line option or
- set <code>run_ipv4=off</code> first (see <a href="#runipv4">below</a>) in order to ensure that the
- IPv6 address is parsed correctly.<br>
- If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
- it will automatically be mapped to an IPv6 address.<br>
- <em>New in version 1.2:</em> You may also give the name of an interface
- such as <code>"lo"</code> or <code>"eth0"</code> here, instead of an IP address
- (this has been tested on Linux, and may or may not work on other platforms).
- pdnsd will not bind to the interface name, but will look up the address of the
- interface at start-up and listen on that address. If the address of the interface
- changes while pdnsd is running, pdnsd will not notice that. You will need to
- restart pdnsd in that case.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>outgoing_ip=<i>string</i>;</code></b><br>
- or<br>
- <b><code>outside_interface=<i>string</i>;</code></b><br>
- <em>New in version 1.2.9:</em>
- Set the IP address of the interface used by pdnsd for outgoing queries.
- This can be useful when the host has several interfaces and you want pdnsd
- to send outgoing queries via only one of them.
- For example, if pdnsd is running on a host with one interface with IP address
- 192.168.1.1 connected to the local network, and another with IP address 123.xxx.yyy.zzz
- connected to the internet, you may specify <code>server_ip=192.168.1.1</code>
- and <code>outgoing_ip=123.xxx.yyy.zzz</code> to enforce that pdnsd only responds
- to queries received from the local network, and only sends outgoing queries via
- the interface connected to the internet.<br>
- The default setting for this option is <code>any</code>, which means that
- the kernel is free to decide which interface to use.
- Like with the <code>server_ip</code> option, you may also give the name of an
- interface here, instead of an IP address.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>linkdown_kluge=(on|off);</code></b><br>
- This option enables a kluge that some people might need: when all servers are
- marked down, with this option set the cache is not even used when a query is
- received, and a DNS error is returned in any case. The only exception from this
- is that local records (as specified in <code>rr</code> and <code>source</code>
- sections are still served normally.
- In general, you probably want to get cached entries even when the network is down,
- so this defaults to off.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>max_ttl=<i>timespec</i>;</code></b><br>
- This option sets the maximum time a record is held in cache. All dns
- resource records have a time to live field that says for what period of time the
- record may be cached before it needs to be requeried. If this is more than the
- value given with <code>max_ttl</code>, this time to live value is set to <code>max_ttl</code>.
- This is done to prevent records from being cached an inappropriate long period of time, because
- that is almost never a good thing to do. Default is 604800s (one week).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>min_ttl=<i>timespec</i>;</code></b><br>
- This option sets the minimum time a record is held in cache. All dns
- resource records have a time to live field that says for what period of time the
- record may be cached before it needs to be requeried. If this is less than the
- value given with <code>min_ttl</code>, this time to live value is set to <code>min_ttl</code>.
- Default is 120 seconds.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>neg_ttl=<i>timespec</i>;</code></b><br>
- This option sets the time that negatively cached records will remain valid in the
- cache if no time to live can be determined. This is always the case when whole
- domains are being cached negatively, and additionally when record types are cached
- negatively for a domain for which no SOA record is known to pdnsd. If a SOA is present,
- the ttl of the SOA is taken.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>neg_rrs_pol=(on|off|auth|default);</code></b><br>
- This sets the RR set policy for negative caching; this tells pdnsd under which circumstances
- it should cache a record type negatively for a certain domain. <code>off</code> will
- turn the negative caching of record types off, <code>on</code> will always add a negative
- cache entry when a name server did not return a record type we asked it for, and <code>auth</code>
- will only add such entries if the answer came from an authoritative name server for that
- domain.<br>
- <em>New in version 1.2.8:</em> The <code>default</code> setting will add a negatively cached record
- if either the answer was authoritive or the answer indicated the name server had "recursion available"
- while the query explicitly requested such recursion.<br>
- The preset is "<code>default</code>" (used to be <code>auth</code>).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>neg_domain_pol=(on|off|auth);</code></b><br>
- This is analogue to <code>neg_rrs_pol</code> for whole domain negative caching. It should be safe
- to set this <code>on</code>, because I have not seen a caching server that will falsely claim that a
- domain does not exist.<br>
- The default is <code>auth</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="runas">run_as=<i>string</i>;</a></code></b><br>
- This option allows you to let pdnsd change its user and group id after operations that needed
- privileges have been done. This helps minimize security risks and is therefore recommended. The
- supplied string gives a user name whose user id and primary group id are taken. <br>
- A little more details: after reading the config file, becoming a daemon (if specified) and starting
- the server status thread, the main thread changes its gid and uid, as do all newly created threads
- thereafter. By taking another uid and gid, those threads run with the privileges of the
- specified user.
- Under Linux and FreeBSD, the server status thread runs with the original privileges only when the strict_setuid option
- is set to <code>off</code> (see below, <code>on</code> by default), because these may be needed
- for exec uptests. The manager thread also retains its original privileges in this case.
- You should take care that the user you specify has write permissions on your cache file and
- status pipe (if you need a status pipe). You should look out for error messages like "permission denied"
- and "operation not permitted" to discover permission problems.<br>
- </td>
- </tr>
- <tr>
- <td>
- <b><code>strict_setuid=(on|off);</code></b><br>
- When used together with the <code>run_as</code> option, this option lets you specify that all threads of the
- program will run with the privileges of the <code>run_as</code> user. This provides higher security than
- the normal <code>run_as</code>
- option, but is not always possible. See the <a href="#runas"><code>run_as</code></a> option for further discussion.<br>
- This option is on by default.<br>
- Note that this option has no effect on Non-Linux systems.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>paranoid=(on|off);</code></b><br>
- Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers to query other servers themselves
- if possible,
- and to give back answers for domains that may not be in its authority), and accepts additional records with information
- for servers that are not in the authority of the queried server. This opens the possibility of so-called cache poisoning:
- a malicious attacker might set up a dns server that, when queried, returns forged additional records. This way, he might
- replace trusted servers with his own ones by making your dns server return bad IP addresses. This option protects
- you from cache poisoning by rejecting additional records
- that do not describe domains in the queried servers authority space and not doing recursive queries any more.
- An exception
- to this rule are the servers you specify in your config file, which are trusted.<br>
- The penalty is a possible performance decrease, in particular, more queries might be necessary for the same
- operation.<br>
- You should also notice that there may be other similar security problems, which are essentially problems of
- the DNS, i.e.
- any "traditional" server has them (the DNS security extensions solve these problems, but are not widely
- supported).
- One of this vulnerabilities is that an attacker may bombard you with forged answers in hopes that one may match a
- query
- you have done. If you have done such a query, one in 65536 forged packets will be succesful (i.e. an average packet
- count of 32768 is needed for that attack). pdnsd can use TCP for queries,
- which has a slightly higher overhead, but is much less vulnerable to such attacks on sane operating systems. Also, pdnsd
- chooses random query ids, so that an attacker cannot take a shortcut. If the attacker is able to listen to your network
- traffic, this attack is relatively easy, though.<br>
- This vulnerability is not pdnsd's fault, and is possible using any conventional
- name server (pdnsd is perhaps a little more secured against this type of attacks if you make it use TCP).<br>
- The <code>paranoid</code> option is off by default.<br>
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ignore_cd=(on|off);</code></b><br>
- <em>New in version 1.2.8:</em> This option lets you specify that the CD bit of a DNS query will be ignored.
- Otherwise pdnsd will reply FORMERR to clients that set this bit in a query.
- It is safe to enable this option, as the CD bit refers to 'Checking Disabled'
- which means that the client will accept non-authenticated data.<br>
- This option is on by default. Turn it off if you want the old behaviour (before version 1.2.8).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>scheme_file=<i>string</i>;</code></b><br>
- In addition to normal uptests, you may specify that some servers shall only be queried when a certain
- pcmcia-cs scheme is active (only under linux). For that, pdnsd needs to know where the file resides that
- holds the pcmcia scheme information. Normally, this is either <code>/var/lib/pcmcia/scheme</code> or
- <code>/var/state/pcmcia/scheme</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="statusctl">status_ctl=(on|off);</a></code></b><br>
- This has the same effect as the <code>-s</code> command line option: the status control is enabled when
- <code>on</code> is specified.<br>
- <em>Added by Paul Rombouts</em>: Note that <code>pdnsd-ctl</code> allows run-time configuration of pdnsd,
- even the IP addesses of the name servers can be changed. If you're not using <code>pdnsd-ctl</code> and
- you want maximum security, you should not enable this option. It is disabled by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>daemon=(on|off);</code></b><br>
- This has the same effect as the <code>-d</code> command line option: the daemon mode is enabled when
- <code>on</code> is specified.<br>
- Default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="tcpserver">tcp_server=(on|off);</a></code></b><br>
- <code>tcp_server=on</code> has the same effect as the <code>-t</code> or <code>--tcp</code>
- command-line option: it enables TCP serving.
- Similarly, <code>tcp_server=off</code> is like the <code>--notcp</code> command-line option.<br>
- Default is <code>on</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>pid_file=<i>string</i>;</code></b><br>
- This has the same effect as the <code>-p</code> command line option: you can specify a file that pdnsd
- will write its pid into when it starts in daemon mode.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>verbosity=<i>number</i>;</code></b><br>
- This has the same effect as the <code>-v</code> command line option: you can set the verbosity of pdnsd's
- messages with it. The argument is a number between 0 (few messages) to 3 (most messages).
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="querymethod">query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);</a></code></b><br>
- This has the same effect as the <code>-m</code> command line option.
- Read the documentation for the <a href="#querymethodcommandlineoption">command line option</a> on this.
- <code>tcp_only</code> corresponds to the <code>to</code>, <code>udp_only</code> to the <code>uo</code>,
- <code>tcp_udp</code> to the <code>tu</code> and <code>udp_tcp</code> to the <code>ut</code>
- argument of the command line option.<br>
- If you use <code>query_method=tcp_udp</code>, it is recommended that you also set the <a href="#globaltimeout">global timeout option</a> to at least twice the longest server timeout.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="runipv4">run_ipv4=(on|off);</a></code></b><br>
- This has the same effect as the <code>-4</code> or <code>-6</code> command line option:
- if on is specified, IPv4 support is enabled, and IPv6 support is disabled (if available).
- If off is specified, IPv4 will be disabled and IPv6 will be enabled.
- For this option to be meaningful, pdnsd needs to be compiled with support for the protocol you choose.
- If pdnsd was compiled with both IPv4 and IPv6 support, and you want to include IPv6 addresses
- in the configuration file, you will probably need to specify <code>run_ipv4=off</code> first to
- ensure that the IPv6 addresses are parsed correctly.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>debug=(on|off);</code></b><br>
- This has the same effect as the <code>-g</code> command line option: the debugging messages are enabled when
- <code>on</code> is specified.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ctl_perms=<i>number</i>;</code></b><br>
- This option allows you to set the file permissions that the pdnsd status control socket will have. These
- are the same as file permissions. The owner of the file will be the run_as user, or, if none is specified,
- the user who started pdnsd. If you want to specify the permissions in octal (as usual), don't forget
- the leading zero (0600 instead of 600!). To use the status control, write access is needed. The default
- is 0600 (only the owner may read or write).<br>
- Please note that the socket is kept in the cache directory, and that the cache directory permissions
- might also need to be adjusted. Please ensure that the cache directory is not writeable for untrusted
- users.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>proc_limit=<i>number</i>;</code></b><br>
- With this option, you can set a limit on the pdnsd threads that will be active simultaneously. If
- this number is exceeded, queries are queued and may be delayed some time.
- See also the <code>procq_limit</code> option.<br>
- The default for this option is 40.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>procq_limit=<i>number</i>;</code></b><br>
- When the query thread limit <code>proc_limit</code> is exceeded, connection attempts to pdnsd will be queued.
- With this option, you can set the maximum queue length.
- If this length is also exceeded, the incoming queries will be dropped.
- That means that tcp connections will be closed and udp queries will just be dropped, which
- will probably cause the querying resolver to wait for an answer until it times out.<br>
- See also the <code>proc_limit</code> option. A maximum of <code>proc_limit+procq_limit</code>
- query threads will exist at any one time (plus 3 to 6 threads that will always
- be present depending on your configuration).<br>
- The default for this option is 60.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>tcp_qtimeout=<i>timespec</i>;</code></b><br>
- This option sets a timeout for tcp queries. If no full query has been received on a tcp connection
- after that time has passed, the connection will be closed. The default is set using the
- <code>--with-tcp-qtimeout</code> option to <code>configure</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>par_queries=<i>number</i>;</code></b><br>
- This option used to set the maximum number of remote servers that would be queried simultaneously,
- for every query that pdnsd receives.<br>
- Since version 1.1.11, the meaning of this option has changed slightly.
- It is now the increment with which the number of parallel queries is
- increased when the previous set of servers has timed out.
- For example, if we have a list <i>server1, server2, server3,</i> etc. of available servers
- and <code>par_queries=2</code>, then pdnsd will first send queries to <i>server1</i> and <i>server2</i>,
- and listen for responses from these servers.<br>
- If these servers do not send a reply within their timeout period, pdnsd will send additional
- queries to <i>server3</i> and <i>server4</i>, and listen for responses from
- <i>server1, server2, server3</i> and <i>server4</i>, and so on until a useful reply is
- received or the list is exhausted.<br>
- In the worst case there will be pending queries to all the servers in the list of available servers.
- We may be using more system resources this way (but only if the first servers in the list
- are slow or unresponsive), but the advantage is that we have a greater chance of catching a reply.
- After all, if we wait longer anyway, why not for more servers.<br>
- See also the explanation of the global timeout option below.<br>
- 1 or 2 are good values for this option.
- The default is set at compile time using the <code>--with-par-queries</code> option to <code>configure</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="globaltimeout">timeout=<i>timespec</i>;</a></code></b><br>
- This is the global timeout parameter for dns queries.
- This specifies the minimum period of time pdnsd will wait after sending the
- first query to a remote server before giving up without having
- received a reply. The timeout options in the configuration file are
- now only minimum timeout intervals. Setting the global timeout option
- makes it possible to specify quite short timeout intervals in the
- server sections (see below). This will have the effect that pdnsd will start
- querying additional servers fairly quickly if the first servers are
- slow to respond (but will still continue to listen for responses from
- the first ones). This may allow pdnsd to get an answer more quickly in
- certain situations.<br>
- If you use <code>query_method=tcp_udp</code> it is recommended that
- you make the global timeout at least twice as large as the largest
- server timeout, otherwise pdnsd may not have time to try a UDP query
- if a TCP connection times out.<br>
- Default value is 0.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>randomize_recs=(on|off);</code></b><br>
- If this option is turned on, pdnsd will randomly reorder the cached records of one type
- when creating an answer. This supports round-robin DNS schemes and increases fail
- safety for hosts with multiple IP addresses, so this is usually a good idea.<br>
- On by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="queryportstart">query_port_start=(<i>number</i>|none);</a></code></b><br>
- If a number is given, this defines the start of the port range used for queries of pdnsd. The
- value given must be >= 1024. The purpose of this option is to aid certain firewall
- configurations that are based on the source port. Please keep in mind that another application
- may bind a port in that range, so a stateful firewall using target port and/or process uid may
- be more effective. In case a query start port is given pdnsd uses this port as the first port of a
- specified port range (see <a href="#queryportend"><code>query_port_end</code></a>) used for queries.
- pdnsd will try to randomly select a free port from this range as local port for the query.<br>
- To ensure that there are enough ports for pdnsd to use, the range between <code>query_port_start</code> and
- <code>query_port_end</code> should be adjusted to at least (<code>par_queries</code> * <code>proc_limit</code>).
- A larger range is highly recommended for security reasons, and also because other applications may
- allocate ports in that range. If possible, this range should be kept out of the space
- that other applications usually use.<br>
- The default for this option is 1024. Together with the default value of <code>query_port_end</code>,
- this makes it the hardest for an attacker to guess the source port used by the pdnsd resolver.
- If you specify <code>none</code> here, pdnsd will let the kernel choose the source port, but
- this may leave pdnsd more vulnerable to an attack.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="queryportend">query_port_end=<i>number</i>;</a></code></b><br>
- Used if <code>query_port_start</code> is not <code>none</code>. Defines the last port of the range started by query_port_start
- used for querys by pdnsd. The default is 65535, which is also the maximum legal value for this option.
- For details see the description of <a href="#queryportstart"><code>query_port_start</code></a>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="delegationonly">delegation_only=<i>string</i>;</a></code></b><br>
- <em>Added by Paul Rombouts</em>: This option specifies a "delegation-only" zone.
- This means that if pdnsd receives a query for a name that is in a
- subdomain of a "delegation-only" zone but the remote name server
- returns an answer with an authority section lacking any NS RRs for
- subdomains of that zone, pdnsd will answer NXDOMAIN (unknown domain).
- This feature can be used for undoing the undesired effects of DNS
- "wildcards". Several "delegation-only" zones may be specified together.
- If you specify root servers in a <a href="#serversection"><code>server</code></a> section it is
- important that you set <code><a href="#rootserver">root_server</a>=on</code> in such a section.<br>
- Example:
- <p class="indented"><code>delegation_only="com","net";</code></p>
- This feature is off by default. It is recommended that you only use
- this feature if you actually need it, because there is a risk that
- some legitimate names will be blocked, especially if the remote
- name servers queried by pdnsd return answers with empty authority
- sections.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="ipv46prefix">ipv4_6_prefix=<i>string</i>;</a></code></b><br>
- This option has the same effect as the <code>-i</code> command-line option.
- When pdnsd runs in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4 addresses in
- the configuration file (or addresses specified with <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>)
- to IPv6-mapped addresses.
- The string must be a valid IPv6 address. Only the first 96 bits are used.
- Note that this only effects the parsing of IPv4 addresses listed after this option.<br>
- The default is <code>"::ffff.0.0.0.0"</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>use_nss=(on|off);</code></b><br>
- If this option is turned on, pdnsd will call <code>initgroups()</code> to set up the group access list,
- whenever pdnsd changes its user and group id (see <a href="#runas"><code>run_as</code></a> option).
- There is a possible snag, though, if <code>initgroups()</code> uses NSS (Name Service Switch) and
- NSS in turn uses DNS. In such a case you may experience lengthy timeouts and stalls.
- By setting <code>use_nss=off</code>, you can disable the <code>initgroups()</code> call
- (only possible in versions 1.2.5 and later).<br>
- This option was contributed by Jan-Marek Glogowski.<br>
- On by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="udpbufsize">udpbufsize=<i>number</i>;</a></code></b><br>
- <em>New in version 1.2.9:</em>
- This option sets the upper limit on the size of UDP DNS messages. The default is 1024.<br>
- See also the <code><a href="#ednsquery">edns_query</a></code> server option below.
- </td>
- </tr>
- </table>
-
- <br>
- <h3>2.1.2 <a name="serversection"><code>server</code> Section</a></h3>
- Each server section specifies a set of name servers that pdnsd should try to get
- resource records or authoritative name server information from. The servers are
- queried in the order of their appearance (or parallel to a limited extend).
- If one fails, the next one is taken and so on.<br>
- You probably want to specify the dns server in your LAN, the caching dns servers
- of your internet provider or even a list of root servers in one or more server sections.<br>
- The supported options in this section are:<br><br>
-
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>label=<i>string</i>;</code></b><br>
- Specify a label for the server section. This can be used to refer to this section
- when using <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>, the pdnsd control utility.<br>
- You can give several server sections the same label, but if you want to change the addresses
- of a server section (see <b><code>ip</code></b> option below) during run-time with
- <code>"pdnsd-ctl server <i>label</i> up <i>dns1</i>,<i>dns2</i>,..."</code>,
- the label must be unique.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ip=<i>string</i>;</code></b><br>
- Give the IP (the address, <em>not</em> the host name) of the server.<br>
- Multiple IP addresses can be given per server section.
- This can be done by entering multiple lines of the form <code>ip=<i>string</i>;</code>
- or a single line like this:
- <p class="indented"><code>ip=<i>string</i>,<i>string</i>,<i>string</i>;</code></p>
- IP addresses do not have to be specified in the configuration file.
- A server section without IP addresses will remain inactive until it is assigned
- one or more addresses with <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>,
- the pdnsd control utility.<br>
- If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses you specify
- here will be skipped with a warning message, unless pdnsd is running in IPv6 mode.
- Thus, unless pdnsd was compiled to startup in IPv6 mode by default, you need to use the
- command-line option <code>-6</code> or set <code>run_ipv4=off</code>
- first (see <a href="#runipv4"><code>global</code></a> section) in order to ensure
- that IPv6 addresses are parsed correctly.<br>
- If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
- it will automatically be mapped to an IPv6 address.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="resolvfile">file=<i>string</i>;</a></code></b><br>
- <em>New in version 1.2:</em> This option allows you to give the name of a <code>resolv.conf</code>-style file.
- Of the lines beginning with the <code>nameserver</code> keyword, the second field will be parsed as an
- IP address, as if it were specified with the <code>ip=</code> option. The remaining lines will be ignored.
- If the contents of the file changes while pdnsd is running, you can make pdnsd aware of the changes through the
- use of <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>, the pdnsd control utility.
- This is usually most conveniently done by placing the command <code>"pdnsd-ctl config"</code> in a script
- that is automatically run whenever the DNS configuration changes.<br>
- For example, suppose you have a ppp client that writes the DNS configuration for your ISP to the file
- <code>/etc/ppp/resolv.conf</code> and runs the script <code>/etc/ppp/ip-up</code> when a new
- connection is established. One way of ensuring that pdnsd is automatically reconfigured is to
- add a <code>server</code> section in the config file with <code>file=/etc/ppp/resolv.conf</code> and to
- add the command <code>"pdnsd-ctl config"</code> to <code>/etc/ppp/ip-up</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>port=<i>number</i>;</code></b><br>
- Give the port the remote name server listens on. Default is 53 (the official
- dns port)
- </td>
- </tr>
- <tr>
- <td>
- <b><code>uptest=(ping|none|if|dev|diald|exec|query);</code></b><br>
- Determine the method to check whether the server is available. Currently
- defined methods are:
-
- <ul>
- <li><b><code>ping</code></b>: Send an ICMP_ECHO request to the server. If it doesn't respond
- within the timeout, it is regarded to be unavailable until the next probe.
- <li><b><code>none</code></b>: The availability status is not changed, only the time stamp is updated.
- <li><b><code>if</code></b>: Check whether the interface (specified in the <code>interface=</code> option) is
- existent, up and running. This currently works for all "ordinary"
- network interfaces, interfaces that disappear when down (e.g. ppp?),
- and additionally for Linux isdn interfaces (as of kernel 2.2). Note that
- you need a <code>/dev/isdninfo</code> device file (major#45, minor#255), or the
- isdn uptest will always fail.
- <li><b><code>dev</code></b> and <b><code>diald</code></b>: Perform an <code>if</code> uptest, and, if that
- was succesful, additionally check whether a program is running that
- has locked a given (modem-) device. The needed parameters are an interface (specified as for the <code>if</code>
- uptest, e.g. <code>"ppp0"</code>) and a device relative to <code>/dev</code> (e.g.
- <code>"modem"</code> for <code>/dev/modem</code> specified using the <code>device=</code> option.
- pdnsd will then look for a pid file for the given interface in <code>/var/lock</code> (e.g.
- <code>/var/run/ppp0.pid</code>) and for a lockfile for the given device (e.g. <code>/var/lock/LCK..modem</code>),
- and then test whether the locking process is the process that created the pid file and this process is still
- alive. If this is the case, the normal <code>if</code> uptest is executed for the given interface.<br>
- The <code>dev</code> option is for pppd dial-on-demand, <code>diald</code> is the same for diald users.
- <li><b><code>exec</code></b>: Executes a given command in the <code>/bin/sh</code> shell
- (as <code>/bin/sh -c <command></code>)
- and evaluates the result (the return code of the last command) in the shell's way of handling return codes,
- i.e. 0 indicates success, all other indicate failure. The shell's process name will be
- <code>uptest_sh</code>. The command is given with the <code>uptest_cmd</code> option (see below).
- For secuity issues, also see that entry.
- <li><b><code>query</code></b>: <em>New in version 1.2:</em>
- This works like the ping test, except it sends an (empty) DNS query to the remote server.
- If the server sends a well-formed response back within the timeout period (except SERVFAIL),
- it will be regarded as available.
- This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
- which unfortunately is quite common these days.
- It can also happen that a remote server is online but ignores empty DNS queries.
- Then you will need the set the <code><a href="#querytestname">query_test_name</a></code> option (see below).
- In many cases this test will be a more reliable indicator of availability
- than the ones mentioned before.
- </ul>
- <p>
- The default value is <b><code>none</code></b>.
- <br><br>
- <b>NOTE</b>: If you use on-demand dialing, use <code>none</code>, <code>if</code>,
- <code>dev</code>, <code>diald</code> or <code>exec</code>,
- since <code>ping</code> or <code>query</code> will send packets
- in the specified interval and the interface will thus frequently dial!
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ping_timeout=<i>number</i>;</code></b><br>
- Sets the timeout for the ping test in tenths of seconds
- (this unit is used for legacy reasons; actually the current implementation is
- only accurate to a second).<br>
- The default is 600 (one minute).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ping_ip=<i>string</i>;</code></b><br>
- The IP address for the ping test. The default is the IP of the name server.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="querytestname">query_test_name=<i>string</i>;</a></code></b><br>
- <em>New in version 1.2.9:</em>
- Sets the name to be queried when using <code>uptest=query</code> availability test.
- If the string is the unquoted constant <code>none</code>,
- an empty query is used (this the default), otherwise a query of type A will be
- sent for the domain name specified here. It is not necessary for the domain name
- to exist or have a record of type A in order for the uptest to succeed.<br>
- If the the remote server ignores empty queries, you will probably want to set
- <code>query_test_name="."</code> (the root domain).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>uptest_cmd=<i>string</i>,<i>string</i>;</code></b><br>
- or<br>
- <b><code>uptest_cmd=<i>string</i>;</code></b><br>
- Sets the command for the uptest=exec function to the first string.
- If the second string is given, it specifies a user with whose user
- id and primary group id the command is executed.<br>
- This is especially useful if you are executing the server as root,
- but do not want the uptest to be performed with root privileges.
- In fact, you should never execute the uptest as root if you can help
- it.<br>
- If the server is running setuid or setgid, the privileges thus gained
- are attempted to be dropped even before changing identity to the
- specified user to prevent setuid/gid security holes (otherwise, any
- user might execute commands as root if you setuid the executable).<br>
- <b>Note that this is not always possible, and that pdnsd should never
- be installed as setuid or setgid.</b>
- The command is executed using <code>/bin/sh</code>, so you should be able to use
- shell builtin commands.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>interval=(<i>timespec</i>|onquery|ontimeout);</code></b><br>
- Sets the interval for the server up-test. The default is 900 seconds;
- however, a test is forced when a query times out and the timestamp is reset then.<br>
- If you specify <code>onquery</code> instead of a timeout, the interface will be
- tested before every query. This is to prevent automatically dialing
- interfaces (diald/pppd or ippp) to dial on dns queries. It is intended to be
- used in connection with an interface-testing uptest ;-) <br>
- Note that using uptest=exec, you might run into performance problems
- on slow machines when you use that option.
- DON'T use <code>onquery</code> with <code>uptest=ping</code> or
- <code>uptest=query</code>, as it may cause delays if the server does not answer
- (btw, it doesn't make sense anyway).
- Note also that using <code>onquery</code> is no guarantee that the interface
- will not be used. When another (reachable) dns server tells pdnsd
- to query a third dns server for data, pdnsd will do that and has
- no means of checking whether this will dial up the interface or not.
- This however should be a rare situation.<br>
- <em>New in version 1.2.3:</em>
- A third possibility is to specify <code>interval=ontimeout</code>.
- In this case the server is not tested at startup/reconfiguration, nor at regular intervals,
- but only after a DNS query to a server times out. Certain types of network problems
- such as a refused connection will also cause the server to be considered unavailable.
- However, once a server is declared dead it is never considered again unless it is revived using a
- <code><a href="#pdnsdctl">pdnsd-ctl</a> config</code> or <code>server</code> command.
- The idea behind this option is to minimize uptests by assuming all
- servers are available until there is reason to believe otherwise.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>interface=<i>string</i>;</code></b><br>
- The network interface (or network device, e.g. <code>"eth0"</code>) for the <code>uptest=if</code> option.
- Must be specified if <code>uptest=if</code> is given.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>device=<i>string</i>;</code></b><br>
- The (modem-) device that is used for the <code>dev</code> uptest. If you use this for a dial-on-demand
- ppp uptest (together with <code>uptest=dev</code>), you need to enter the device you are using for your
- pppd here, e.g. <code>modem</code> for <code>/dev/modem</code>.<br>
- Must be specified if <code>uptest=dev</code> is given.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>timeout=<i>timespec</i>;</code></b><br>
- Set the timeout for the dns query. The default is 120 seconds. You probably want to set this lower.<br>
- Timeouts specified in the configuration file are only treated as the
- minimum period of time to wait for a reply. A queries to a remote
- server are not canceled until a useful reply has been received, or all
- the other queries have timed out or failed.<br>
- If you have also set the global timeout option, you may consider setting a fairly small value here.
- See the explanation of the timeout option in the <a href="#globaltimeout"><code>global</code></a>
- section for what that means.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>purge_cache=(on|off);</code></b><br>
- In every fetched dns record, there is a cache timeout given, which
- specifies how long the fetched data may be cached until it needs to be
- reloaded. If <code>purge_cache</code> is set to <code>off</code>, the stale records are not purged
- (unless the cache size would be exceeded, in this case the oldest records are purged).
- Instead, they are still served if they cannot succesfully be
- updated (e.g. because all servers are down).<br>
- Default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>caching=(on|off);</code></b><br>
- Specifies if caching shall be performed for this server at all. Default is
- <code>on</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>lean_query=(on|off);</code></b><br>
- Specifies whether to use the "lean" query mode. In this mode, only the
- information actually queried from pdnsd is resolved and cached. This has
- the advantage that usually less cache space is used and the query is
- usually faster. In 90% of the cases, only address (A) records are needed
- anyway. If switched off, pdnsd will always cache all data about a host
- it can find and will specifically ask for all available records
- (well, at least it is a good approximation for what it really does ;-)
- This will of course increase the answer packet sizes.<br>
- Some buggy name servers may not deliver CNAME records when not asked for
- all records. I do not know if such servers are around, but if you have
- trouble resolving certain host names, try turning this option off.<br>
- A last note: If you use multiple pdnsd's that access each other, turning
- this option on is probably a big win.<br>
- This on by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="ednsquery">edns_query=(on|off);</a></code></b><br>
- <em>New in version 1.2.9:</em>
- Specifies whether to use EDNS (Extension mechanisms for DNS) for outgoing queries.
- Currently this is only useful for allowing UDP message sizes larger than 512 bytes.
- Note that setting this option on can give problems in combination with some legacy
- systems or software, including, embarrassingly enough, previous versions of pdnsd.<br>
- The default is <code>off</code>, but if your network can handle UDP payloads
- significantly larger than 512 bytes, the recommended value is <code>on</code>.<br>
- Note that this option only effects outgoing queries. If pdnsd receives a query using
- EDNS, it will reply using EDNS regardless of the value of this option.
- <br>
- See also the <code><a href="#udpbufsize">udpbufsize</a></code> option above.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>scheme=<i>string</i>;</code></b><br>
- You can specify a pcmcia-cs scheme that is used in addition to the uptests. If you specify
- a scheme here, the server this section is for will only be queries if the given scheme
- is active. Shell wildcards (* and ?) are allowed in the string under their special
- meanings. You need to use the <code>scheme_file</code> option on the <code>global</code>
- section to make this option work.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>preset=(on|off);</code></b><br>
- This allows you to specify the initial state of a server before any uptest is performed.
- <code>on</code> specifies that the server is regarded available. The default is <code>on</code>.
- This is especially useful when you set <code>uptest=none;</code> and want to change
- the status of a server only via pdnsd-ctl.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="proxyonly">proxy_only=(on|off);</a></code></b><br>
- When this option is set to <code>on</code>, answers given by the servers are always accepted, and no
- other servers (as, for example, specified in the NS records of the query domain) are
- queried. If you do not turn this option on, pdnsd will do such queries in some cases
- (in particular when processing ANY queries).<br>
- This option is useful when you do not want pdnsd to make connections to outside servers
- for some reasons (e.g. when a firewall is blocking such queries).<br>
- I recommend that you turn on <code>lean_query</code> when using this option.<br>
- Default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code><a name="rootserver">root_server=(on|off|discover);</a></code></b><br>
- Set this option to <code>on</code> if the servers specified in a section are root servers.
- A root server will typically only give the name servers for the top-level domain in its reply.
- Setting <code>root_server=on</code> will cause pdnsd to try to use cached information about
- top-level domains to reduce to number of queries to root servers, making the resolving of
- new names more efficient.
- You can get a list of available root servers by running the command
- <code>"dig . ns"</code>.<br>
- This option is also necessary if you use the <a href="#delegationonly"><code>delegation_only</code></a> option.<br>
- <em>New in version 1.2.8:</em> This option may also be set to "<code>discover</code>".
- This will cause pdnsd to query the servers provided with the <code>ip=</code> option
- to obtain the full list of root servers. The root-server addresses will replace the addresses
- specified with the <code>ip=</code> option.
- This will only be done once on startup, or after a "<code>pdnsd-ctl config</code>" command.
- In this case the name servers specified with the <code>ip=</code> option don't have to be
- root servers, they just have to know the names and addresses of the root servers.
- After root-server discovery pdnsd will behave just as if <code>root_server=on</code>
- had been specified.<br>
- Default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>randomize_servers=(on|off);</code></b><br>
- <em>New in version 1.2.6:</em> Set this option to <code>on</code> to give each name server
- in this section an equal chance of being queried. If this option is off, the name servers
- are always queried starting with the first one specified. Even with this option on, the
- query order is not truly random. Only the first server is selected randomly; the following
- ones are queried in consecutive order, wrapping around to the beginning of the list when
- the end is reached. Note that this option only effects the order within a section. The
- servers in the first (active) section are always queried before those in the second one,
- etc.<br> The default is off, but if you are resolving from root servers setting this
- option on is highly recommended. If <code>root_server=on</code> this option also effects
- the query order of the name servers for the top-level domains.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>reject=<i>string</i>;</code></b><br>
- <em>New in version 1.2.6:</em> This option can be used to make pdnsd reject replies that
- contain certain IP addresses. You can specify a single IP address, which will be matched
- exactly, or a range of addresses using an address/mask pair.
- The mask can be specified as a simple integer, indicating the number of initial 1 bits in
- the mask, or in the usual IP address notation. IP addresses may be either IPv4 or IPv6
- (provided there is sufficient support in the C libraries and support for AAAA records was
- not disabled).
- When addresses in the reject list are compared with those in a reply, only the bits
- corresponding to those set in the netmask are significant, the rest are ignored.<br>
- Multiple addresses or address/mask pairs may be specified; this can be done by entering
- multiple lines of the form <code>reject=<i>string</i>;</code>
- or a single line like this:
- <p class="indented"><code>reject=<i>string</i>,<i>string</i>,<i>string</i>;</code></p>
- How pdnsd reacts when an address in the reply matches one in the <code>reject</code> list,
- depends on the <code>reject_policy</code> option, see below.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>reject_policy=(fail|negate);</code></b><br>
- <em>New in version 1.2.6:</em>
- This option determines what pdnsd does when an address in the reply from a name server
- matches the <code>reject</code> list (see above). If this option is set to
- <code>fail</code>, pdnsd will try another server, or, if there no more servers to try,
- return the answer SERVFAIL. If this option is set to <code>negate</code>, pdnsd will
- immediately return the answer NXDOMAIN (unknown domain) without querying additional
- servers. The <code>fail</code> setting is useful if you don't always trust the servers in
- this section, but do trust the servers in the following section. The <code>negate</code>
- setting can be used to completely censor certain IP addresses. In this case you should put
- the same <code>reject</code> list in every server section, and also set the
- <code>reject_recursively</code> option (see below) to true.<br>
- The default is <code>fail</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>reject_recursively=(on|off);</code></b><br>
- <em>New in version 1.2.6:</em> Normally pdnsd checks for addresses in the
- <code>reject</code> list (see above) only when the reply comes directly from a name server
- listed in the configuration file. With this option set to <code>on</code>, pdnsd will
- also do this check for name servers that where obtained from NS records in the authority
- section of a previous reply (which was incomplete and non-authoritative).<br>
- Default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>policy=(included|excluded|simple_only|fqdn_only);</code></b><br>
- pdnsd supports inclusion/exclusion lists for server sections: with <code>include=</code>
- and <code>exclude=</code> (see below) you can specify domain names for which this server
- will be used or will not be used. The first match counts (i.e., the first include or
- exclude rule in a server section that matches a domain name is applied, and the
- search for other rules is terminated). If no rule matched a given domain name,
- the <code>policy=</code> option determines whether this server is used for the
- lookup for that domain name; when <code>included</code> is given, the server will
- be asked, and when <code>excluded</code> is given, it will not.
- If <code>simple_only</code> is given the server will be used if the name to lookup
- is a simple (single-label) domain name, on the other hand if <code>fqdn_only</code>
- is given the server will be used only for names consisting of two or more labels
- (i.e. the name has at least one dot in-between).<br>
- If no server is available for a queried domain, pdnsd will return an error message
- to the client that usually will stop the client's attempts to resolve a specific
- domain from this server (the libc resolver will e.g. return an error to the application that
- tried to resolve the domain if no other servers are available in the <code>resolv.conf</code>).
- This may be of use sometimes.<br>
- <em>Note</em>: the <code>simple_only</code> and <code>fqdn_only</code> constants
- were added by Paul Rombouts.
- They are useful for controlling which name servers (if any) will be used by
- pdnsd for resolving simple (single-label) host names.
- <code>fqdn_only</code> used to stand for "fully qualified domain name only", but this is
- actually a misnomer. The names in queries received by pdnsd are always considered to be
- fully qualified. If you do not exactly understand what the options <code>simple_only</code> and
- <code>fqdn_only</code> are good for, you are probably better off not using them.<br>
- The default for this option is <code>included</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>include=<i>string</i>;</code></b><br>
- This option adds an entry to the exclusion/inclusion list. If a domain matches
- the name given as string, the server is queried if this was the first matching rule
- (see also the entry for <code>policy</code>).<br>
- If the given name starts with a dot, the whole subdomain
- of the given name including the one of that name is matched, e.g. <code>".foo.bar."</code>
- will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.<br>
- If it does not start in a dot, only exactly the given name (ignoring the case, of course)
- will be matched (hint: if you want to include all subdomains, but not the domain of the given
- name itself, place an exact-match exclude rule before the include rule, e.g:
- <code>exclude="foo.bar."; include=".foo.bar.";</code><br>
- Previous versions of pdnsd
- required that names given with this and the next option ended in a dot, but since
- version 1.1.8b1-par8, pdnsd automatically adds a dot at the end if it
- is missing.<br>
- pdnsd now also accepts a more compact notation for adding several <code>"include"</code> entries in
- one line, e.g.:
- <p class="indented"><code>include=".foo",".bar",".my.dom";</code></p>
- </td>
- </tr>
- <tr>
- <td>
- <b><code>exclude=<i>string</i>;</code></b><br>
- This option adds an entry to the exclusion/inclusion list. If a domain matches
- the name given as string, the server is not queried if this was the first matching rule
- (see also the entry for <code>policy</code>).<br>
- If the given name starts with a dot, the whole subdomain
- of the given name including the one of that name is matched, e.g. <code>".foo.bar."</code>
- will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.<br>
- If it does not start in a dot, only exactly the given name (ignoring the case, of course)
- will be matched (hint: if you want to exclude all subdomains, but not the domain of the given
- name itself, place an exact-match include rule before the exclude rule, e.g:
- <code>include="foo.bar."; exclude=".foo.bar.";</code><br>
- pdnsd now also accepts a more compact notation for adding several <code>"exclude"</code> entries in
- one line, e.g.:
- <p class="indented"><code>exclude=".foo",".bar",".my.dom";</code></p>
- </td>
- </tr>
- </table>
- <br>
- <h3>2.1.3 <a name="rrsection"><code>rr</code> Section</a></h3>
- Every <code>rr</code> section specifies a dns resource record that is stored locally. It
- allows you to specify own dns records that are served by pdnsd in a limited way.
- Only A, PTR, CNAME, MX, NS and SOA records are implemented.<br>
- This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
- and localhost. (and perhaps even one or two hosts) without having to start an
- extra named if your cached name servers do not serve those records.
- It is <b>NOT</b> intended and not capable to work as a full-featured name server.
- <br><br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>name=<i>string</i>;</code></b><br>
- Specifies the name of the resource records, i.e. the domain name of
- the resource the record describes. This option must be specified
- before any <code>a</code>, <code>ptr</code>, <code>cname</code>,
- <code>mx</code>, <code>ns</code> or <code>soa</code> records.
- Names are interpreted as absolute domain names
- (i.e. pdnsd assumes they end in the root domain).
- For this and all following arguments that take domain names, you need to
- specify domain names in dotted notation (example venera.isi.edu.).<br>
- Previous versions of pdnsd
- required that domain names given in the configuration file ended in a
- dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
- dot at the end if it is missing.<br>
- <em>New in version 1.2:</em> It is also possible to specify a name starting
- with the label *. Such a name is called a wildcard. The * in a wildcard
- can match one or more labels in a queried name, but only whole labels.
- Any other * characters in a wildcard, apart from the leading one,
- will only match a literal *.<br>
- For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
- mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
- *a.mydomain will only match itself.<br>
- Before you can specify an <code>rr</code> section with <code>name=*.mydomain</code>
- you must define some records for mydomain, typically NS and/or SOA records.
- Example:
- <pre>
- rr {
- name = mydomain;
- ns = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = *.mydomain;
- a = 192.168.1.10;
- }</pre>
- In this example, www.mydomain and ftp.mydomain will resolve to the numeric
- address 192.168.1.10 (unless you add <code>rr</code> sections explicitly
- specifying different addresses for www.mydomain or ftp.mydomain).
- If you want mydomain also to resolve to a numeric address,
- add an A record to the first <code>rr</code> section.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ttl=<i>timespec</i>;</code></b><br>
- Specifies the ttl (time to live) for all resource records in this section after this entry.
- This may be redefined. The default is 86400 seconds (=1 day).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>authrec=(on|off);</code></b><br>
- If this is turned on, pdnsd will create authoritative local records for this <code>rr</code> section.
- This means that pdnsd flags the domain record so that records of this domain that are not
- present in the cache are treated as non-existent, i.e. no other servers are queried for
- that record type, and an response containing none of those records is returned. This is
- most time what people want: if you add an A record for a host, and it has no AAAA record
- (thus no IPv6 address), you normally don't want other name servers to be queried for it.<br>
- This is on by default.<br>
- Please note that this only has an effect if it precedes the <code>name</code> option!
- </td>
- </tr>
- <tr>
- <td>
- <b><code>reverse=(on|off);</code></b><br>
- <em>New in version 1.2:</em> If you want a locally defined name to resolve to a numeric address
- and vice versa, you can achieve this by setting reverse=on before defining the A record
- (see below). The alternative is to define a separate PTR record, but you will
- probably find this option much more convenient.<br>
- The default is <code>off</code>.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>a=<i>string</i>;</code></b><br>
- Defines an A (host address) record. The argument is an IPv4 address in dotted notation.
- pdnsd will serve this address for the host name given in the <code>name</code> option.<br>
- Provided there is sufficient support in the C libraries and support for AAAA records was not
- disabled, the argument string may also be an IPv6 address, in which case an AAAA record
- will be defined.<br>
- This option be may used multiple times within an <code>rr</code> section, causing
- multiple addresses to be defined for the name. However, if you put the different addresses
- in different <code>rr</code> sections for the same name, the definition in the last
- <code>rr</code> section will cancel the definitions in the previous ones.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ptr=<i>string</i>;</code></b><br>
- Defines a PTR (domain name pointer) record. The argument is a host name in
- dotted notation (see name). The ptr record is for resolving adresses into names. For example, if
- you want the adress 127.0.0.1 to resolve into localhost, and localhost into 127.0.0.1, you need something
- like the following sections:<br>
- <pre>
- rr {
- name = localhost;
- a = 127.0.0.1;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = 1.0.0.127.in-addr.arpa;
- ptr = localhost;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }</pre>
- The second section is for reverse resolving and uses the <code>ptr</code> option.
- Note that you can get the same effect by specifying only the first <code>rr</code> section
- with <code>reverse=on</code>.<br>
- There is something special about the name in the second section:
- when a resolver wants to get a host name from an internet address,
- it composes an address that is built of the IP address in reverse byte order
- (<code>1.0.0.127</code> instead of <code>127.0.0.1</code>) where each byte of the adress written
- as number constitutes a sub-domain under the domain <code>in-addr.arpa.</code> <br>
- So, if you want to compose an adress for reverse resolving, take your ip in dotted notation (e.g. <code>1.2.3.4</code>),
- reverse the byte order (<code>4.3.2.1</code>) and append in-addr.arpa. (<code>4.3.2.1.in-addr.arpa.</code>)
- Then, define an <code>rr</code> section giving this address as <code>name</code> and the domain name corresponding to
- that ip in the <code>ptr</code> option.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>cname=<i>string</i>;</code></b><br>
- Defines a CNAME (canonical name) record.
- The argument should be a fully-qualified host name in dotted notation (see name).
- A CNAME is the DNS equivalent of an alias or symbolic link.<br>
- A useful application for CNAMEs is giving short, easy to remember nicknames to hosts with complicated names.
- For example, you might want the name "<tt>news</tt>" to refer to your ISP's news server "<tt>nntp2.myisp.com</tt>".
- Instead of adding an A record for "<tt>news</tt>" with the same address as "<tt>nntp2.myisp.com</tt>", you could
- put in a CNAME pointing to "<tt>nntp2.myisp.com</tt>", so that if the IP address of the news server changes,
- there is no need to update the record for "<tt>news</tt>".<br>
- To implement this with pdnsd, you could add the following section to your configuration file:<br>
- <pre>
- rr {
- name = news;
- cname = nntp2.myisp.com;
- owner = localhost;
- }</pre>
- </td>
- </tr>
- <tr>
- <td>
- <b><code>mx=<i>string</i>,<i>number</i>;</code></b><br>
- Defines an MX (mail exchange) record. The string is the host name of the mail server in dotted notation (see name).
- The number specifies the preference level.<br>
- When you send mail to someone, your mail typically goes from your E-mail client to an SMTP server.
- The SMTP server then checks for the MX record of the domain in the E-mail address.
- For example, with <tt>joe@xxxxxxxxxxx</tt>, it would look for the MX record for <tt>example.com</tt> and find
- that the name of mail server for that domain is, say, <tt>mail.example.com</tt>.
- The SMTP server then gets the A record for <tt>mail.example.com</tt>, and connects to the mail server.<br>
- If there are multiple MX records, the SMTP server will pick one based on the preference level
- (starting with the lowest preference number, working its way up).<br>
- Don't define MX records with pdnsd unless you know what you're doing.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>owner=<i>string</i>;</code></b><br>
- or<br>
- <b><code>ns=<i>string</i>;</code></b><br>
- Defines an NS (name server) record. Specifies the name of the host which should be authoritative for the records
- you defined in the <code>rr</code> section. This is typically the host pdnsd runs on.<br>
- <em>Note:</em> In previous versions of pdnsd this option had to be specified before
- any <code>a</code>, <code>ptr</code>, <code>cname</code>, <code>mx</code> or <code>soa</code> entries.
- In version 1.2, the restrictions on this option are same as the options just mentioned,
- and it must listed after the <code>name=</code> option.
- This can be a pain if you want to use an old config file which specifies <code>owner=</code>
- before <code>name=</code> (sorry about that).
- Apart from greater consistency, the advantage is that you can now specify as many NS records as you like (including zero).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>soa=<i>string</i>,<i>string</i>,<i>number</i>,<i>timespec</i>,<i>timespec</i>,<i>timespec</i>,<i>timespec</i>;</code></b><br>
- This defines a soa (start of authority) record. The first string is the
- domain name of the server and should be equal to the name you specified as
- owner. <br>
- The second string specifies the email address of the maintainer of the name
- server. It is also specified as a domain name, so you will have to replace the
- @ sign in the name with a dot (.) to get the name you have to specify here.
- The next parameter (the first number) is the serial number of the record. You
- should increment this number if you change the record.<br>
- The 4th parameter is the refresh timeout. It specifies after what amount
- of time a caching server should attempt to refresh the cached record.<br>
- The 5th parameter specifies a time after which a caching server should attempt
- to refresh the record after a refresh failure.<br>
- The 6th parameter defines the timeout after which a cached record expires if it
- has not been refreshed.<br>
- The 7th parameter is the ttl that is specified in every rr and should be the
- same as given with the ttl option (if you do not specify a ttl, use the default 86400).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>txt=<i>string</i>,...,<i>string</i>;</code></b><br>
- <em>New in version 1.2.9:</em>
- Defines an TXT record. You can specify one or more strings here.
- </td>
- </tr>
- </table>
- <br>
- <h3>2.1.4 <a name="negsection"><code>neg</code> Section</a></h3>
- Every <code>neg</code> section specifies a dns resource record or a dns domain that should be
- cached negatively locally. Queries for negatively cached records are always answered
- immediatley with an error or an empty answer without querying other hosts as long
- as the record is valid. The records defined with <code>neg</code> sections remain
- valid until they are explicitely invalidated or deleted by the user using
- <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>.<br>
- This is useful if a certain application asks periodically for nonexisting hosts or
- RR types and you do not want a query to go out every time the cached record has
- timed out. Example: Netscape Communicator will ask for the servers news and mail
- on startup if unconfigured. If you do not have a dns search list for your network,
- you can inhibit outgoing queries for these by specifying<br>
- <pre>
- neg {
- name = news;
- types = domain;
- }
- neg {
- name = mail;
- types = domain;
- }</pre>
- in your config file. If you have a search list, you have to repeat that for any
- entry in your search list in addition to the entries given above!<br>
- In versions 1.1.11 and later, if you negate whole domains this way, all subdomains
- will be negated as well. Thus if you specify<br>
- <code>neg {name=example.com; types=domain;}</code> in the
- config file, this will also negate www.example.com, xxx.adserver.example.com, etc.
- <br><br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>name=<i>string</i>;</code></b><br>
- Specifies the name of the domain for which negative cache entries are created.
- This option must be specified before the types option.
- Names are interpreted as absolute domain names (i.e. pdnsd
- assumes they end in the root domain).
- You need to specify domain names in dotted notation (example venera.isi.edu.).<br>
- Previous versions of pdnsd
- required that domain names given in the configuration file ended in a
- dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
- dot at the end if it is missing.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ttl=<i>timespec</i>;</code></b><br>
- Specifies the ttl (time to live) for all resource records in this section after this entry.
- This may be redefined. The default is 86400 seconds (=1 day).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>types=(domain|<i>rr_type</i>[,<i>rr_type</i>[,<i>rr_type</i>[,...]]]);</code></b><br>
- Specifies what is to be cached negatively: <code>domain</code> will cache the whole
- domain negatively; alternatively, you can specify a comma-separated list of RR types
- which are to be cached negatively. You may specify multiple types options, but
- <code>domain</code> and the RR types are mutually exclusive.<br>
- The RR types are specified using their official names from the RFC's in capitals,
- e.g. <code>A</code>, <code>CNAME</code>, <code>NS</code>, <code>PTR</code>, <code>MX</code>,
- <code>AAAA</code>, ...<br>
- The command <code>pdnsd-ctl list-rrtypes</code> will give you a complete list
- of those types. <a href="#pdnsdctl"><code>pdnsd-ctl</code></a> is built along with pdnsd
- and will be installed in the same directory as the pdnsd binary during <code>make install</code>.
- </td>
- </tr>
- </table>
- <br>
- <h3>2.1.5 <a name="sourcesection"><code>source</code> Section</a></h3>
- Every source section allows you to let pdnsd read the records from a file in an
- <code>/etc/hosts</code>-like format. pdnsd will generate records to resolve the entries
- address from its host name and vice versa for every entry in the file. This is
- normally easier than defining an rr for every of your addresses, since localhost
- and your other FQDNs are normally given in <code>/etc/hosts</code>.<br>
- The accepted format is as follows: The #-sign initiates a comment, the rest of
- the line from the first occurence of this character on is ignored. Empty lines
- are tolerated.<br>
- The first entry on a line (predeceded by an arbitrary number of tabs and spaces)
- is the IP in dotted notation, the second entry on one line (separated by the
- first by an arbitrary number of tabs and spaces) is the FQDN (fully qualified
- domain name) for that ip. The rest of the line is ignored by default (in the original
- <code>/etc/hosts</code>, it may contain information not needed by pdnsd).
- <br><br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>owner=<i>string</i>;</code></b><br>
- Specifies the name of the host pdnsd runs on and that are specified in dns
- answers (specifically, nameserver records).
- Must be specified before any file entries.<br>
- Names are interpreted as absolute domain names (i.e. pdnsd
- assumes they end in the root domain).
- You need to specify domain names in dotted notation (example venera.isi.edu.).<br>
- Previous versions of pdnsd
- required that domain names given in the configuration file ended in a
- dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
- dot at the end if it is missing.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>ttl=<i>timespec</i>;</code></b><br>
- Specifies the ttl (time to live) for all resource records in this section after
- this entry. This may be redefined. The default is 86400 seconds (=1 day).
- </td>
- </tr>
- <tr>
- <td>
- <b><code>file=<i>string</i>;</code></b><br>
- The string specifies a file name. For every file entry in a source section,
- pdnsd will try to load the given file as described above. Failure is indicated
- only when the file cannot be opened, malformed entries will be ignored.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>serve_aliases=(on|off);</code></b><br>
- If this is turned on pdnsd will serve the aliases given in a <code>hosts</code>-style file.
- These are the third entry in a line of a hosts-style file, which usually give a "short name" for the host.
- This may be used to support broken clients without a proper domain-search option.
- If no aliases are given in a line of the file, pdnsd behaves as without this option for this line.<br>
- This feature was suggested by Bert Frederiks.<br>
- It is off by default.
- </td>
- </tr>
- <tr>
- <td>
- <b><code>authrec=(on|off);</code></b><br>
- If this is turned on, pdnsd will create authoritative local records with the data from the hosts file.
- Please see the description of the option of the same name in the rr section for a closer description of
- what this means. Please note that this only has an effect for files sourced with <code>file</code> options
- subsequent to this option.<br>
- This is on by default.
- </td>
- </tr>
- </table>
- <br>
- <h3>2.1.6 <a name="includesection"><code>include</code> Section</a></h3>
- A configuration file may include other configuration files.
- However, only the top-level configuration file may contain <a href="#globalsection"><code>global</code></a>
- and <a href="#serversection"><code>server</code></a> sections,
- thus include files are effectively limited to sections that add local definitions to the cache.<br>
- Include sections currently only have one type of option, which may be given multiple times within a single section.
- <br><br>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td>
- <b><code>file=<i>string</i>;</code></b><br>
- The string specifies a file name. For every <code>file</code> option in an include section,
- pdnsd will parse the given file as described above. The file may contain include sections itself,
- but as a precaution pdnsd checks that a certain maximum depth is not exceeded to guard against
- the possibility of infinite recursion.
- </td>
- </tr>
- </table>
- <br>
- <h2>3 <a name="pdnsdctl">pdnsd-ctl</a></h2>
- <p>
- pdnsd-ctl allows you to configure pdnsd at run time. To make this work, you have to start pdnsd with the <code>-s</code>
- option (or use the <code><a href="#statusctl">status_ctl</a></code> option in the config file). You also should make sure that you
- have appropriate permissions on the control socket (use the <code>ctl_perms</code> option to make this sure) and of your pdnsd
- cache directory (pdnsd keeps its socket there). Please make sure the pdnsd cache directory is not writeable for untrusted users!</p>
- <p>
- pdnsd-ctl accepts two command-line options starting with a dash.<br>
- <code>-c</code> may be used to specify the cache directory (and takes this as argument).
- The default for this setting is the pdnsd default cache directory (specified at compile time).
- The cache directory for pdnsd-ctl must be the same pdnsd uses!<br>
- <code>-q</code> can be used to make the output of pdnsd-ctl less verbose.</p>
- <p>
- The following table lists the commands that pdnsd-ctl supports. The command must always be
- the first command-line option (not starting with a dash), the arguments to the command must follow in the given order.<br>
- In the following table, keywords are in a normal font, while placeholders are in italics.<br>
- Alternatives are specified like (alt1|alt2|alt3).
- Optional arguments are placed between square brackets [].</p>
- <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
- <tr>
- <td><b>Command</b></td>
- <td><b>Arguments</b></td>
- <td><b>Description</b></td>
- </tr>
- <tr>
- <td class="nowrap">help</td>
- <td></td>
- <td>Print a command summary.</td>
- </tr>
- <tr>
- <td class="nowrap">version</td>
- <td></td>
- <td>Print version and license info.</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>status</td>
- <td></td>
- <td>
- Print a description of pdnsd's cache status, thread status and configuration.
- Also shows which remote name servers are assumed to be available.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>server</td>
- <td valign=top>(<i>index</i>|<i>label</i>) (up|down|retest) [<i>dns1</i>[,<i>dns2</i>[,...]]]</td>
- <td>
- Set the status of the server with the given <i>index</i> or <i>label</i> (where the given label
- matches the one given with the label option in the respective server section in the config file)
- to up or down, or force a retest. The index is assigned in the order of definition in
- <code>pdnsd.conf</code> starting with 0. Use the status command to view the indices and labels.
- You can specify <code>all</code> instead of an index or label to perform the action for all
- servers registered with pdnsd. Example:<br>
- <code>pdnsd-ctl server 0 retest</code><br>
- An optional third argument consisting of a list of IP addresses (separated by commas or
- white-space characters) can be given.
- This list will replace the previous list of addresses of name servers used by pdnsd in the
- specified section of the config file.
- For example in the <code>/etc/ppp/ip-up</code> script called by <code>pppd</code> you could
- place the following line:<br>
- <code>pdnsd-ctl server isplabel up $DNS1,$DNS2</code><br>
- If white space is used to separate addresses the list will have to be quoted.
- Spurious commas and white-space characters are ignored.
- The last argument may also be an empty string, in which case the existing IP addresses are
- removed and the corresponding server section becomes inactive.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>record</td>
- <td valign=top><i>name</i> (delete|invalidate)</td>
- <td>
- Delete or invalidate the records of the given domain <i>name</i> if it is in the
- cache. Invalidation means that the records are marked as timed out, and
- will be reloaded if possible (if purge_cache is set to on, they will
- be deleted in any case).<br>
- For local records (i.e., records that were given in the config file
- using a <code>rr</code> section, records read from a hosts-style file
- and records added using pdnsd-ctl), invalidation has no effect. Deletion
- will work, though. Example:<br>
- <code>pdnsd-ctl record localhost. delete</code>
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>source</td>
- <td valign=top><i>fn</i> <i>owner</i> [<i>ttl</i>] [(on|off)] [noauth]</td>
- <td>
- Load a hosts-style file. Works like using the pdnsd
- <a href="#sourcesection">source configuration section</a>.
- <i>owner</i> and <i>ttl</i> are used as in the source section. <i>ttl</i> has a default
- of 900 (it does not need to be specified). The next to last argument corresponds
- to the serve_aliases option, and is off by default (i.e. if it is not specified).
- <code>noauth</code> is used to make the domains non-authoritative - please see
- the description of the <code>authrec</code> config file options for a description of what
- that means.
- <i>fn</i> is the filename. The file must be readable by pdnsd! Example:<br>
- <code>pdnsd-ctl source /etc/hosts localhost. 900 off</code>
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>a <i>addr</i> <i>name</i> [<i>ttl</i>] [noauth]</td>
- <td rowspan=6>
- Add a record of the given type to the pdnsd cache, replacing existing
- records for the same <i>name</i> and type. The 2nd argument corresponds
- to the value of the option in the rr section that is named like
- the first argument: a is a record for hostname-to-address mapping,
- aaaa is the same thing for IPv6 addresses, and ptr is for address-to-hostname
- mapping. See the documentation for the <code>rr</code> section for more details.
- In case of A and AAAA records, the <i>addr</i> argument may be a list of IP addresses,
- separated by commas or white space, causing multiple addresses to be defined
- for the same <i>name</i>.
- The <i>ttl</i> is optional, the default is 900 seconds.
- <code>noauth</code> is used to make the domains non-authoritative - please see
- the description of the <code>authrec</code> config file options for a description of what
- that means.
- If you want no other record than the newly added in the cache, do<br>
- <code>pdnsd-ctl record <i>name</i> delete</code>
- before adding records. This is also better when overwriting local records. Example:<br>
- <code>pdnsd-ctl add a 127.0.0.1 localhost. 900</code>
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>aaaa <i>addr</i> <i>name</i> [<i>ttl</i>] [noauth]</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>ptr <i>host</i> <i>name</i> [<i>ttl</i>] [noauth]</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>cname <i>host</i> <i>name</i> [<i>ttl</i>] [noauth]</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>mx <i>host</i> <i>name</i> <i>pref</i> [<i>ttl</i>] [noauth]</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>add</td>
- <td valign=top>ns <i>host</i> <i>name</i> [<i>ttl</i>] [noauth]</td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>neg</td>
- <td valign=top><i>name</i> [<i>type</i>] [<i>ttl</i>]</td>
- <td>
- Add a negatively cached record to pdnsd's cache, replacing existing
- records for the same <i>name</i> and <i>type</i>. If no type is given, the whole
- domain is cached negatively. For negatively cached records, errors are
- immediately returned on a query, without querying other servers first.
- The <i>ttl</i> is optional, the default is 900 seconds.<br>
- You can get a list of all types you can pass to this command using
- <code>pdnsd-ctl list-rrtypes</code>. The type is treated case-sensitive!
- Example:<br>
- <code>pdnsd-ctl neg foo.bar A 900</code><br>
- <code>pdnsd-ctl neg foo.baz 900</code><br>
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>config</td>
- <td valign=top>[<i>filename</i>]</td>
- <td>
- Reload pdnsd's configuration file.<br>
- The config file must be owned by the uid that pdnsd had when it was
- started, and be readable by pdnsd's <a href="#runas"><code>run_as</code></a> uid. If no file name is
- specified, the config file used at start-up is reloaded.<br>
- Note that some configuration changes, like the port or IP address pdnsd listens on,
- cannot be made this way and you will receive an error message.
- In these cases, you will have to restart pdnsd instead.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>include</td>
- <td valign=top><i>filename</i></td>
- <td>
- Parse the given file as an include file, see the documentation on
- <a href="#includesection">include sections</a> for a description
- what this file may contain.<br>
- This command is useful for adding definitions to the cache without reconfiguring pdnsd.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>eval</td>
- <td valign=top><i>string</i></td>
- <td>
- Parse the given string as if it were part of pdnsd's configuration file.
- The string should hold one or more complete configuration sections.
- However, <a href="#globalsection"><code>global</code></a> and
- <a href="#serversection"><code>server</code></a> sections are not allowed,
- just as in <a href="#includesection">include files</a>.
- If multiple strings are given, they will be joined using newline chars
- and parsed together.<br>
- This command is useful for adding records interactively to the cache
- that cannot be defined using the "<code>pdnsd-ctl add</code>" command,
- (e.g. soa records).
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>empty-cache</td>
- <td valign=top>[[+|-]<i>name</i> ...]</td>
- <td>
- If no arguments are provided, the cache will be completely emptied,
- freeing all existing entries.
- Note that this also removes local records, as defined by the config file.
- To restore local records, run <code>"pdnsd-ctl config"</code> or
- <code>"pdnsd-ctl include <i>filename</i>"</code> immediately afterwards.<br>
- The <code>"pdnsd-ctl empty-cache"</code> command now accepts additional arguments;
- these are interpreted as include/exclude names. If an argument starts with a '+'
- the name will be included. If an argument starts with a '-' it will be
- excluded. If an argument does not begin with '+' or '-', a '+' is
- assumed. If the domain name of a cache entry ends in one of the names in
- the list, the first match will determine what happens. If the matching
- name is to be included, the cache entry is deleted, otherwise not.
- If there are no matches, the default action is not to delete.
- Note that if you want to delete exactly one name and no others, you should
- use <code>"pdnsd-ctl record <i>name</i> delete"</code>,
- this is also much more efficient.<br>
- Examples:<br>
- <code>pdnsd-ctl empty-cache</code><br>
- This command will remove all cache entries.<br>
- <br>
- <code>pdnsd-ctl empty-cache microsoft.com msft.net</code><br>
- This will remove all entries ending in microsoft.com or msft.net.<br>
- <br>
- <code>pdnsd-ctl empty-cache -localdomain -168.192.in-addr.arpa .</code><br>
- This will remove all entries except those ending in localdomain or
- 168.192.in-addr.arpa. Note that '.' is the root domain which matches any
- domain name.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>dump</td>
- <td valign=top>[<i>name</i>]</td>
- <td>
- Print information stored in the cache about <i>name</i>.
- If <i>name</i> begins with a dot and is not the root domain, information about
- the names in the cache ending in <i>name</i> (including <i>name</i> without
- the leading dot) will be printed.
- If <i>name</i> is not specified, information about all the names in the cache will
- be printed.<br>
- For each RR record the time and date that this record has been added to the cache
- will be printed in the form mm/dd HH:MM:SS (locally defined records are printed without a time stamp).
- After that the type of record is printed with the data. For the more common types
- of RR records the data will be printed in human readable form, the remaining ones in a
- hexadecimal representation.<br>
- This command is mainly useful for diagnostic purposes.<br>
- Note that if you pipe the output of this command through an application that
- reads only part of the output and then blocks (such as <code>more</code> or <code>less</code>),
- pdnsd will not be able to add new entries to the cache until the pipe is closed.
- It is preferable to capture the output in a file in such a case.
- </td>
- </tr>
- <tr>
- <td class="nowrap" valign=top>list-rrtypes</td>
- <td></td>
- <td>
- List available rr types for the neg command.
- Note that those are only used for the neg command, not for add!
- </td>
- </tr>
- </table>
- <br>
- <br>
- <h2>4 contrib/</h2>
- The contrib directory in the pdnsd distribution contains useful user-contributed scripts.<br>
- So far, there are scripts contributed by Marko Stolle and Paul Rombouts that make pdnsd
- usable in a DHCP setup.
- Please take a look into the README file in the contrib directory for further information.
- <br>
- <br>
- <h2>5 Problems...</h2>
- If you have problems with configuring or running pdnsd, be sure to read the <a href="faq.html">FAQ</a>.
- If this does not help you, pdnsd crashes or you find bugs, please mail one of the authors.<br>
- <em>Note added by <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a></em>:
- Thomas Moestl no longer maintains the code. I have revised the code and added new features.
- See <a href="../../README.par"><code>README.par</code></a> and the
- <a href="../../ChangeLog"><code>ChangeLog</code></a> in the source directory
- (or <code>/usr/share/doc/pdnsd-<version></code> if you have installed a binary package)
- for more details.
- If you have questions about my modifications, you can find my email address at the end of
- <a href="../../README.par"><code>README.par</code></a>.
- <br>
- <br>
- <h2>6 Hacking</h2>
- Here comes some information you might find useful for hacking pdnsd.
- <br>
- <h3>6.1 Source files</h3>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">Makefile.am, configure.in, acconfig.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- autoconf/automake/autoheader scripts. Makefile.am's are in most subdirectories.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">pdnsd.spec.in</td>
- <td bgcolor="#CCFFFF" width="80%">
- A template from which configure generates a spec file for building rpm's for various
- distributions.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">version</td>
- <td bgcolor="#CCFFFF" width="80%">
- Contains only the program version string. Needed for several templates.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/rc/*</td>
- <td bgcolor="#CCFFFF" width="80%">
- rc (start-up) scripts for various linux distributions.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/cache.c</td>
- <td bgcolor="#CCFFFF" width="80%">
- The pdnsd cache subsystem(s) as defined in src/cache.h.
- This is the "traditional" pdnsd system which keeps the cache in memory and uses hash tables for accesses.
- Sourav K. Mandal is working on a system using gdbm.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/pdnsd-ctl/*</td>
- <td bgcolor="#CCFFFF" width="80%">
- Contains the code for pdnsd-ctl, a program that allows you to control pdnsd at run time.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/conf-lex.l.in</td>
- <td bgcolor="#CCFFFF" width="80%">
- The lex/flex source file for the config file lexer. This is a template because there might be
- inserted "%option yylineno" for proper flex support.
- <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/conf-lex.l</td>
- <td bgcolor="#CCFFFF" width="80%">
- This is automatically generated by configure from conf-lex.l.in. It may be overwritten
- in any make, so never modify this, but conf-lex.l.in instead!
- <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/conf-parse.y</td>
- <td bgcolor="#CCFFFF" width="80%">
- The yacc/bison source of the config file parser.
- <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/conf-parser.c, src/conf-parser.h, src/conf-keywords.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- The config file parser written purely in C (versions 1.1.10-par and later).
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/conff.c, src/conff.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- The configuration handler functions and their prototypes. The parser is called from here.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/consts.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Some constants used by the parser, config file handler functions and in the server status thread,
- among others.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/dns.c, src/dns.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define dns message structures, constants, and some common dns data handlers. dns.h contains gcc-specific
- code (in praticular, "__attribute__((packed))").
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/dns_answer.c, src/dns_answer.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define functions that answer incoming dns queries.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/dns_query.c, src/dns_query.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define functions to manage outgoing dns queries.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/error.c, src/error.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Functions for error output to stderr or the syslog, and debug output to stderr or <code>pdnsd.debug</code>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/hash.c, src/hash.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Contains the code for storing and looking up cache entries in the hash table.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/helpers.c, src/helpers.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define miscellaneous helper functions.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/icmp.c, src/icmp.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define a function for performing a ping test. This contains OS-specific code.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/main.c</td>
- <td bgcolor="#CCFFFF" width="80%">
- Contains main(), which holds the command line parser, performs initialisations and signal handling.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/make_hashconvtable.c</td>
- <td bgcolor="#CCFFFF" width="80%">
- Contains the code for the executable <code>make_hashconvtable</code>, which is only run once, during build time, to generate the file <code>hashconvtable.h</code>, used by <code>src/hash.c</code> (versions 1.1.10-par and later).
- <font color="#990000">(obsolete since version 1.2)</font>
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/make_rr_types_h.pl</td>
- <td bgcolor="#CCFFFF" width="80%">
- A perl script for generating src/rr_types.h,
- a C header file containing macro definitions and tables needed for handling the
- RR types known to pdnsd, from the text file src/rr_types.in.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/rr_types.c, src/rr_types.h, src/rr_types.in</td>
- <td bgcolor="#CCFFFF" width="80%">
- These define tables and macros needed for handling the RR types known to pdnsd.
- Since version 1.2.9, rr_types.h is an automatically generated file,
- see make_rr_types_h.pl.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/netdev.c, src/netdev.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define functions for network device handling. OS-specific.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/servers.c, src/servers.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define functions for the server status thread that performs the periodical uptests.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%">src/status.c, src/status.h</td>
- <td bgcolor="#CCFFFF" width="80%">
- Define functions for the status control thread. This is pdnsd's interface to pdnsd-ctl.
- </td>
- </tr>
- </table>
-
- <br>
- <hr>
- <address>
- Copyright (C) 2000, 2001 <a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a><br>
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2012 <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a>
- </address>
- <p>
- <i>Last revised: 19 April 2012 by Paul A. Rombouts</i>
- </p>
- </body>
-</html>
diff --git a/jni/pdnsd/doc/html/doc_makefile b/jni/pdnsd/doc/html/doc_makefile
deleted file mode 100644
index 28fb7d5..0000000
--- a/jni/pdnsd/doc/html/doc_makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-
-versionfile = ../../version
-arch = i686
-arch2 = x86_64
-extver = _sl6
-system = Scientific Linux 6.2 system
-
-doc: dl.html
-.PHONY: doc clean
-
-# If the existing dl.html contains '???', then certain packages were missing
-# during the previous build and dl.html needs to be built again.
-ifneq ($(shell grep -F -l -e '???' dl.html),)
-.PHONY: dl.html
-endif
-
-dl.html: %.html: %.html.in htmlsubst.pl $(versionfile)
- perl htmlsubst.pl version=`cat $(versionfile)` \
- baseurl='http://members.home.nl/p.a.rombouts/pdnsd/' \
- arch=$(arch) arch2=$(arch2) extver=$(extver) system="$(system)" $< > $@
-
-clean:
- @rm -fv dl.html
diff --git a/jni/pdnsd/doc/html/faq.html b/jni/pdnsd/doc/html/faq.html
deleted file mode 100644
index eec6599..0000000
--- a/jni/pdnsd/doc/html/faq.html
+++ /dev/null
@@ -1,412 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>The pdnsd FAQ</title>
- <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
- <style type="text/css">
- <!--
- .small { font-family:helvetica; font-size:small; text-align:center; }
- // -->
- </style>
- </head>
-
- <body bgcolor="#EEEEEE">
- <!--notext(-->
- <table width="100%">
- <tr>
- <td> <span class="small">
- <a href="index.html">pdnsd Homepage</a>
- </span></td>
- <td> <span class="small">
- <a href="faq.html">pdnsd FAQ</a>
- </span></td>
- <td> <span class="small">
- <a href="doc.html">Documentation</a>
- </span></td>
- <td> <span class="small">
- <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
- </span> </td>
- <td><span class="small">
- <a href="dl.html">Download Section</a>
- </span></td>
- </tr>
- </table>
- <!--)notext-->
- <h1>The pdnsd FAQ</h1>
- <a name="q001"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- There are complete and well-tested name servers around, such as the BIND.
- These do also perform caching. Why should I use pdnsd?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- pdnsd does not aim to be a complete name server implementation, such as the
- BIND. It is optimized for caching, and you can only specify a small subset of all
- dns record types pdnsd knows in your local "zone" definitions.
- This of course reduces the code size drastically, and such the memory footprint.
- There are some features especially interesting for dialin networks, ordinary
- (non-server) internet hosts and computers that are often not connected to
- to their network, e.g. notebooks (I originally wrote this program for use
- with my notebook).
- These features are:
- <ul>
- <li> permanent disk cache (useful for frequent power-offs/reboots)
- <li> usually smaller memory footprint (depends on cache size) (see next question)
- <li> offline-detection prevents hangs (e.g. the typical hang on startup of some
- Netscape Navigator versions if not dialled in)
- <li> better control about timeouts (also to prevent hangs)
- <li> better control over the cache
- <li> better run-time control
- </ul>
- </td>
- </tr>
- </table>
- <hr>
- <a name="q002"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- When I look at the process size with ps, top, gtop, or a similar tool, I see
- some processes with a total size well above 3.5 MB. This is much more than
- e.g. BIND named (about 1.4 MB). Why?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- Really, it is not.
- pdnsd uses multithreading, not multiprocessing. That means that the processes
- share most of their process space. In the LinuxThreads library
- or NPTL (Native Posix Thread Libary),
- which are used by pdnsd on Linux, in fact the total process address space is shared
- (although the processes have different stacks, these are in one process
- address space). You may check this by looking at the at the process sizes of
- the pdnsd threads: all should be the same. The effective size that pdnsd
- occupies is thus the size of any of the processes, not the sum of those.
- So, pdnsd with empty cache occupies about 800 kB, and the maximum size
- should be about the cache size plus this size (in fact, ca 5-10% more).
- </td>
- </tr>
- </table>
- <hr>
- <a name="q003"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- What do I need the status control (option -s) for?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- It enables you to do some things you might or might not need. With it, you can:
- <ul>
- <li> query pdnsd's settings at runtime to debug configuration files and
- see which servers are regarded to be available
- <li> mark servers as available or unavailable, or force a status retest - very
- handy if you want to control which servers pdnsd queries, e.g for muliple
- dial-up accounts
- <li> delete, invalidate or add DNS records - useful e.g. when you want to build
- records for dynamically assigned IP addresses or domain names
- <li> reload pdnsd's configuration file without restarting pdnsd
- <li> print information about the contents of pdnsd's cache.
- </ul>
- </td>
- </tr>
- </table>
- <hr>
- <a name="q004"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- What do I need local records (rr- and source-sections in the config file) for?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- Some resolver programs, e.g. nslookup, want to look up the name of the
- server they are using before doing anything else. This option is for defining
- a PTR record for your IP such that those programs get an answer even if the
- name server you are caching is not available or does not offer these records.
- By extension, you may also define A and SOA records. This allows you to build
- very small zones without having to use a "big" name server. It is NOT
- intended to replace such a complete server in anything but VERY small
- networks. Alternatively, you may start a named on another host or on the
- same host on another port and cache it with pdnsd in addition to other (more
- distant) name servers.
- <br>
- The <code>source</code> section allows you to let pdnsd read in your
- <code>/etc/hosts</code> file on startup and serve its contents. This file is used by your local
- resolver before it even tries the name servers and usually contains
- fully-qualified domain names (FQDNs) for all of the internet addresses your host has.
- If you source this file, you usually won't need any additional <code>rr</code> sections. Sourcing it also allows
- other hosts (eg. in your local network) to access the names defined in your
- hosts file. You can of course just add other hosts in your local network to the
- servers <code>hosts</code> file, thus making them known to your server's resolver
- and pdnsd (if you sourced that file).
- <br>
- If you don't know what this answer was all about, you should just take the
- source section in the sample config file that comes with pdnsd, copy it
- into your config file and forget about it.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q005"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- When compiling, I get an error message like <br><i>Please define __BYTE_ORDER to
- be __LITTLE_ENDIAN or __BIG_ENDIAN</i><br> What's up?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- Normally, this macros should be defined in your C library's header files.
- There are two different methods, most C libraries support both (and pdnsd
- honors both): either <code>__BYTE_ORDER</code> is set to <code>__LITTLE_ENDIAN</code>
- or <code>__BIG_ENDIAN</code>, or <code>__LITTLE_ENDIAN</code> or <code>__BIG_ENDIAN</code>
- are directly defined as macros.
- <br>
- Linux glibc, for example, does set those macros correctly. Never mind. You just have to know
- whether your machine is little-endian or big-endian, this means wheter your
- machine saves the least significant byte of a word or double-word first in memory (little-endian) or
- the most significant first (big-endian).
- All intel x86 and Alpha machines are little-endian, for example, while SPARC
- and PowerPC architectures are big-endian.
- If your machine is little-endian, add the following line to your config.h:
- <br><code>
- #define __BYTE_ORDER __LITTLE_ENDIAN
- </code><br>
- Likewise, if your machines byte order is big-endian:
- <br><code>
- #define __BYTE_ORDER __BIG_ENDIAN
- </code><br>
- Pathological byte orders like pdp-endian are not yet supported really;
- However, for the place the endianess is needed, <code>__LITTLE_ENDIAN</code> should do
- (it deals only with 16 bits; for all other occurances, ntoh[sl]/hton[sl] is used).
- </td>
- </tr>
- </table>
- <hr>
- <a name="q007"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- At startup, I get a warning saying:<br>
- <i>
- Uptest command [...] will implicitly be executed as root
- </i> <br>
- What does that mean?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- This warning only occurs if you use the <code>uptest=exec</code> option in your
- configuration. It means that the uptest command is run as root
- because pdnsd is running as root, and this was not explicitely specified.
- The idea is that it may introduce security holes (in the programs being run)
- when they run as root, and so they shouldn't do that if possible.
- You can specify the user that shall run the command by appending its name
- comma-separated as string to the <code>uptest_cmd</code> line: <br>
- <code>
- uptest_cmd="<your command>","<user>";
- </code> <br>
- If it is correctly running as root, just append the user string <code>"root"</code> to
- the command and the warning will not occur again.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q008"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- I cannot run my <code>uptest_cmd</code> command as root (it says <i>permission denied</i>),
- although the pdnsd executable is setuid root. Why?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- pdnsd will drop privileges gained through setuid/setgid before executing the
- uptest commands (you shouldn't set the pdnsd executable setuid/setgid anyway).
- The reason is clear: if you install the pdnsd
- executable as setuid root and this wouln't be done, any user could execute
- shellcode with root privileges using that option!
- </td>
- </tr>
- </table>
- <hr>
- <a name="q009"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- At startup, I get an error saying:<br>
- <i>
- Bad config file permissions: the file must be only writeable by the user
- </i><br>
- Why is that?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- pdnsd has an option (<code>uptest=exec</code>) that allows the execution of arbitrary
- shell code (for testing whether an interface is up). This must be
- of course secured against unauthorized use. One of these
- protection is the one that produces the error message: if you routinely run
- pdnsd, e.g. at system startup, and your config file is editable for others,
- someone could change it and insert shell code that is executed in the next
- pdnsd run -- with your user privileges! To prevent this, pdnsd will exit if the config file is writeable
- by others than the owner.
- To get rid of this message, just do <br>
- <code>
- chmod go-w <filename>
- </code><br>
- on your config
- file (for the default file: <code>chmod go-w /etc/pdnsd.conf</code>).
- You should also check that the ownership is set correct.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q010"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- <code>serve_aliases</code> does not seem to work.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- Some resolvers (e.g. of the glibc 2.1) seem sometimes not to look up unmodified names, but the names with
- an entry of the search path already appended. Since pdnsd will serve short names with this
- option anyway, you can delete the search an domain options from your /etc/resolv.conf. This is reported to
- work in some cases.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q011"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- Some queries for domains that have many records (e.g. www.gmx.de) fail mysteriously.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- pdnsd versions prior to 1.1.0 had the tcp server thread disabled by default. Most resolvers
- repeat their query using tcp when they receive a truncated answer (the answer is truncated
- when it exceeds a length of 512 bytes). You need to recompile pdnsd with the option
- <code>--enable-tcp-server</code> to fix this.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q012"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- I am behind some kind of firewall. In the configuration file
- I have only listed addresses of name servers on the local (ISP's) network,
- but pdnsd is slow and DNS queries frequently time out.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- In some cases pdnsd will not consider the answer of the local name server
- authoritative enough, and will try to get answers from the name servers listed in the
- authority section of the reply message. If pdnsd is behind a firewall that blocks the
- UDP reply packets from remote name servers, pdnsd will wait in vain for a reply.
- One solution is to set <a href="doc.html#proxyonly"><code>proxy_only=on</code></a>
- in the servers sections of the configuration file.
- This will prevent pdnsd from querying name servers that are not listed in the configuration
- file.
- Another solution that can be tried is specifying
- <a href="doc.html#querymethod"><code>query_method=tcp_only</code></a>
- in the global section of the configuration file, because a firewall that blocks
- UDP packets from outside might still allow outgoing TCP connections to port 53.
- </td>
- </tr>
- </table>
- <hr>
- <a name="q013"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- Is pdnsd vulnerable to DNS cache poisoning as described in
- <a href="http://www.kb.cert.org/vuls/id/800113">CERT vulnerability note VU#800113</a>?
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- Short answer: Yes.<br>
- Somewhat longer answer: The problem is not so much that pdnsd's implementation is flawed
- but rather that the DNS protocol currently being used is fundamentally flawed from
- a security viewpoint. As long as a more secure protocol is not in place,
- all that the developers of pdnsd can do is to try to tweak the current implementation
- to make it as difficult as possible for an attacker to succeed.<br>
- From version 1.2.7 onwards, the default for the <code>query_port_start</code> option
- is 1024, which means that the pdnsd resolver will randomly select source ports
- in the range 1024-65535. (In previous versions the default was to let the kernel select
- the source ports, which will often result in a more or less predictable sequence of ports.)
- It also helps to use a good quality source of random numbers. On platforms where this is
- supported, it is preferable to configure with <code>--with-random-device=/dev/urandom</code>.
- There is still more that can be done to make pdnsd less vulnerable, but this remains
- (as of this writing) a work in progress.
- <br>
- Please note that pdnsd was designed for small (private) networks, and that it is generally
- not recommended to let untrusted users access pdnsd.
- </td>
- </tr>
- </table>
-<!--<hr>
- <a name="q014"></a>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#FFCCFF"><b>Q:</b></td>
- <td bgcolor="#CCFFFF">
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF"><b>A:</b></td>
- <td bgcolor="#DDFFEE">
- </td>
- </tr>
- </table>-->
- <hr>
- <address><a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a>
- and <a href="mailto:p.a.rombouts@xxxxxxx">Paul Rombouts</a>
- </address>
- <br>
- <p>
- <i>Last revised: 18 August 2008 by Paul Rombouts</i>
- </p>
- </body>
-</html>
-
diff --git a/jni/pdnsd/doc/html/htmlsubst.pl b/jni/pdnsd/doc/html/htmlsubst.pl
deleted file mode 100644
index a9e3e9f..0000000
--- a/jni/pdnsd/doc/html/htmlsubst.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl -w
-
-# Primitive ad-hoc script for updating pdnsd html doc files.
-# Written by Paul Rombouts.
-
-use strict;
-use integer;
-use POSIX qw(strftime);
-
-my %paramvals=();
-
-while(@ARGV && $ARGV[0]=~/^([^=]*)=(.*)$/) {
- my $param=$1; my $val=$2;
- if($param =~ /^[[:alpha:]]\w*$/) {
- $paramvals{$param}=$val;
- }
- else {warn "Warning: invalid parameter '$param' ignored.\n"}
- shift @ARGV;
-}
-
-sub sizeof {
- my($arg)=@_;
- (my $str= $arg) =~ s/\$(?:([[:alpha:]]\w*)\b|\{([[:alpha:]]\w*)\})/
- defined($paramvals{$+})?$paramvals{$+}:defined($ENV{$+})?$ENV{$+}:''/eg;
- my $filename=eval($str);
- (-f $filename) or return '???';
- (((-s $filename)+1023)/1024).'kB';
-}
-
-while(<>) {
- s/\$(?:date\b|\{date\})/strftime("%d %b %Y",localtime)/eg;
- s/\$sizeof\(([^()]*)\)/sizeof($1)/eg;
- s/\$(?:([[:alpha:]]\w*)\b|\{([[:alpha:]]\w*)\})/
- defined($paramvals{$+})?$paramvals{$+}:defined($ENV{$+})?$ENV{$+}:''/eg;
- print;
-}
diff --git a/jni/pdnsd/doc/html/index.html b/jni/pdnsd/doc/html/index.html
deleted file mode 100644
index d2e426a..0000000
--- a/jni/pdnsd/doc/html/index.html
+++ /dev/null
@@ -1,686 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>pdnsd homepage</title>
- <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
- <style type="text/css">
- <!--
- .small { font-family:helvetica; font-size:small; text-align:center; }
- // -->
- </style>
- </head>
-
- <body bgcolor="#EEEEEE">
- <!-- This html code is used for the homepage and for the pdnsd documentation. Since there are some sections that
- are unwanted in the documentation (particularly the link section with non-local images), and some things that shall
- not appear in the textified version (some links etc), I introduce 4 tags: the homepage html code is translated to
- documentation html code by replacing the "nodoc(" comment with the html start comment tag, and the ")nodoc" comment
- with the html end comment tag.
- Likewise, before the doc html version is translated to text, the "notext(" and ")notext" comments are translated to
- html comment tags.
- -->
- <!--notext(-->
- <table width="100%">
- <tr>
- <td> <span class="small">
- <a href="index.html#aboutpdnsd">About pdnsd</a>
- </span></td>
- <td> <span class="small">
- <a href="faq.html">pdnsd FAQ</a>
- </span></td>
- <td> <span class="small">
- <a href="doc.html">Documentation</a>
- </span></td>
- <td> <span class="small">
- <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
- </span> </td>
- <td><span class="small">
- <a href="dl.html">Download Section</a>
- </span></td>
- </tr>
- </table>
- <center><h1>The pdnsd Homepage</h1></center>
- <center><h2>News</h2></center>
- <table width="100%" cellspacing=1 cellpadding=7>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2012-03-17</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.9a-par has been released.</b>
- Version 1.2.9a fixes a bug in the 1.2.9 release that causes a build failure when pdnsd is
- configured with <span style="white-space:nowrap;"><code>--enable-strict-rfc2181</code></span>.
- If you do not use this option to compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2012-02-27</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.9-par has been released.</b>
- Version 1.2.9 supports many more RR types (including those necessary for DNSSEC) and
- EDNS (Extension mechanisms for DNS) to enable UDP messages larger than 512 bytes.
- It also has support for defining local TXT records and has several new options and bugfixes
- (including file descriptor leaks that effect FreeBSD users).
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2011-05-03</b></td>
- <td bgcolor="#ccffff" width="80%"><b>The latest source code is available from a
- <a href="http://gitorious.org/pdnsd">git repository</a>.</b><br>
- In response to frequent requests I have uploaded a git tree including the latest code
- and a fairly extensive history of pdnsd development to
- <a href="http://gitorious.org/pdnsd/pdnsd">gitorious.org</a>.
- Anyone who wants to participate in pdnsd development is free to create a
- <a href="http://gitorious.org/pdnsd/pdnsd/clone">clone repo on gitorious.org</a>
- and push his modifications there.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2010-02-22</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.8-par has been released.</b>
- The main new feature of version 1.2.8 is automatic discovery of root servers.
- Furthermore, there are some additional improvements in the resolver.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2008-09-04</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.7-par has been released.</b>
- Foremost, this release fixes some security problems.
- It contains a fix for a "dangling pointer" bug that could cause pdnsd to
- crash when it received a long reply. It also addresses some of the issues
- raised in the <a href="http://www.kb.cert.org/vuls/id/800113">CERT
- vulnerability note VU#800113</a> by making the default of
- <code>query_port_start</code> equal to 1024, thereby ensuring that source
- ports are randomly selected by the pdnsd resolver in the range 1024-65535.
- This release also fixes problems with compiling pdnsd for the ARM architecture
- and for the Darwin platform (Max OS X).
- <br>
- There are a number of (minor) new features.
- pdnsd now supports "include" files, essentially configuration files that
- only contain definitions for local records.
- It is now possible to define interactively, using <code>pdnsd-ctl</code>,
- any local record that can be defined in a configuration file.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2007-09-04</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.6-par has been released.</b>
- pdnsd's license has been upgraded to GPL version 3.
- A bug has been fixed which which caused pdnsd to handle NXDOMAIN replies
- inefficiently when configured with <code>neg_domain_pol=on</code>. The
- code that implements the ping test has been fixed, which was broken for
- 64-bit systems. A new option <code>randomize_servers</code> can be used
- to give each server in a section of the configuration file an equal
- chance of being queried. The new options <code>reject</code>,
- <code>reject_policy</code> and <code>reject_recursively</code> make it
- possible to check for the presence of certain IP addresses in the
- replies of name servers and to avoid some types of unwanted replies.
- The pdnsd-ctl '<code>add a</code>' and '<code>add aaaa</code>' commands
- now allow multiple IP addresses to be specified for the same name.
- pdnsd's ability to resolve from root servers has been improved.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2006-09-02</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.5-par has been released.</b>
- This release introduces a new query method: <code>udp_tcp</code>.
- With this method a UDP query is tried first and, if the UDP answer is
- truncated, the query is repeated using TCP, which is the behaviour that
- seems to be recommended by the DNS standards. There is a new
- configuration option <code>use_nss</code>, which can be turned off to
- prevent lengthy timeouts and stalls in certain situations. A bug has
- been fixed which could cause pdnsd to crash if debug output was
- generated before the debug output stream was properly initialized.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2006-01-09</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.4-par has been released.</b>
- A memory leak and a minor buffer-overflow problem have been fixed.
- There is now a fix for some situations that would previously cause pdnsd to
- exit prematurely (such as ACPI S3 sleep or trying to attach strace to pdnsd).
- Time intervals specified in the configuration file can now be expressed in
- minutes, hours, days and weeks as well as seconds.
- Support for Apple Mac OS X v10.4 Tiger has been improved.
- The "<code>pdnsd-ctl status</code>" command now also provides some
- information about the status of the running threads.
- There are some further improvements in the debugging information provided by pdnsd.<br>
- TCP-query support is now compiled in by default (but can still be disabled using
- the configure option <code>--disable-tcp-queries</code>).
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2005-07-11</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.3-par has been released.</b>
- New feature in this release: the "<code>pdnsd-ctl empty-cache</code>" command can
- be provided with an include/exclude list, allowing the user to specify a
- selection of names to be removed, instead of emptying the cache completely.<br>
- Additional improvements: pdnsd should now remain responsive while executing the
- "<code>pdnsd-ctl empty-cache</code>" command.
- With the <code>query_method=tcp_udp</code> option pdnsd will now also
- try a UDP query after a TCP connection times out, which should allow
- pdnsd to resolve the same names with <code>query_method=tcp_udp</code>
- as with <code>query_method=udp_only</code>, although perhaps with an
- occasional delay.
- "<code>pdnsd-ctl config</code>" or "<code>pdnsd-ctl server</code>"
- commands should now run without delays, even if pdnsd is performing
- <code>ping</code> or <code>query</code> uptests at the time.
- Some problems with resolving certain names using root servers have been fixed.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2005-04-03</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.2-par has been released.</b>
- The main emphasis of this release is improved portability.
- A bug has been fixed that prevented pdnsd from compiling successfully on some
- 64 bit architectures.
- This release has (experimental) support for the Darwin (Apple Mac OS X) platform.
- On Linux systems, the configure script will now try to detect automatically whether
- the system implements the Native POSIX Thread Library, but the method used may not
- necessarily be foolproof.
- In addition, the debug features have been improved and should make it easier to find out
- why pdnsd considers some queries or replies malformed.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-11-07</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2.1-par has been released.</b>
- The main new feature of this release is improved support for non-Linux platforms.<br>
- This release has (experimental) support for the Cygwin platform, and should also fix
- some compilation glitches that have been reported by FreeBSD users.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-10-10</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.2-par has been released.</b>
- pdnsd is new and improved! Most of the changes effect the internal workings
- of pdnsd, but there also a number of interesting new features (well, I think they are interesting).<br>
- Among the bugs fixed are two rather nasty ones which involve the handling of NXT and NAPTR records
- and which can cause pdnsd to crash or abort.<br>
- The new features include a new server availability test which can be specified with <code>uptest=query</code>,
- support for reading the DNS configuration from resolv.conf files,
- a new option for optimizing the use of root servers,
- a new option that makes defining local records for reverse resolving easier,
- support for defining wildcard records,
- a new pdnsd-ctl command for reloading the config file without restarting pdnsd, and
- a new pdnsd-ctl command for dumping information about the names stored in the cache.
- The documentation has also been updated: there is now a <code>pdnsd.conf</code> man page.<br>
- For a more complete list of the changes I'll have to refer you to <a href="../../README.par"><code>README.par</code></a> and the <a
- href="../../ChangeLog"><code>ChangeLog</code></a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-05-22</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.11a-par has been released.</b>
- This release contains a fix for FreeBSD users that bypasses a problem
- with the macro <code>ENONET</code>, which can cause a compilation failure when it is undefined.
- Linux users will notice no difference between 1.1.11a-par and 1.1.11-par.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-05-10</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.11-par has been released.</b>
- This version has a rather large number of small changes, which are rather difficult to summarize.
- Among the bugs fixed are a race condition in the cache lookup code, a
- flaw in the code that caused a busy spin when a remote server answered
- with "Not Implemented", and problems with the -4 and -6 command-line
- options. Among the improvements are an alternative sorting algorithm
- which should allow pdnsd to start up faster when reading a large cache
- file from disk, automatic mapping of IPv4 to IPv6 addresses when running
- in IPv6 mode, somewhat more efficient memory use, better compression of
- the replies and changes in the parallel querying algorithm that should
- improve the chances of catching a reply from a remote server.<br>
-
- For a more complete list of the changes I'll have to refer you to <a href="../../README.par"><code>README.par</code></a> and the <a
- href="../../ChangeLog"><code>ChangeLog</code></a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-02-10</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.10-par has been released.</b>
-
- The main new feature of this release is a new parser for configuration
- files, completely rewritten from scratch in C. The main advantages are:
- (f)lex and yacc/bison are no longer needed to build pdnsd, more
- informative error messages instead of merely "<code>parse error</code>",
- and string literals no longer need to be enclosed in quotes in most
- cases.<br> Furthermore, a bug has been fixed that caused incorrect
- IPV6-type PTR records to be generated when sourcing
- <code>/etc/hosts</code> like files.<br>
-
- There have been other small changes, more details can be found in the <a
- href="../../ChangeLog"><code>ChangeLog</code></a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2004-01-08</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.9-par has been released.</b>
- "maintenance" release by Paul Rombouts.<br>
-
- The change of version number is not very significant; the
- difference between 1.1.9-par and the previous 1.1.8b1-par8 is marginal.
- However, I felt the need to simplify the numbering, because it was
- becoming rather baroque.<br>
-
- I've added some missing pieces to the documentation (the pdnsd <a
- href="doc.html">manual</a> and the man page for pdnsd-ctl). BTW, did you
- know that it's possible to define aliases for domain names with pdnsd? I
- had plans to implement such a feature when I discovered that pdnsd
- already supports it. It was just poorly documented. (If want to try this
- for your self, look for the new information about CNAME records under
- the rr Section in the <a href="doc.html#rrsection">manual</a>.)<br> The
- changes to the code consist mostly of optimizations, removal of some
- size limits due to fixed-size buffers, and some cleaning up. I've also
- tried to make the error responses of <a
- href="doc.html#pdnsdctl"><code>pdnsd-ctl</code></a> more helpful.<br>
-
- More details can be found in the <a href="../../ChangeLog"><code>ChangeLog</code></a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2003-10-10</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par8 has been released.</b>
- "maintenance" release by Paul Rombouts.<br>
- This version introduces a "delegation-only" feature that may be useful
- for blocking Verisign's Sitefinder.<br>
- The parser for the configuration file now tolerates domain names missing
- a dot at the end.<br>
- I have provided alternative implementations for some GNU extensions that I
- used in an effort to make the code more portable. In particular, the
- code should build on FreeBSD again.<br>
- More details can be found in the <a href="../../README.par"><code>README.par</code></a> file.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2003-09-19</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par7 has been released.</b>
- "maintenance" release by Paul Rombouts. Besides fixing a number of bugs I have
- reworked some of the code for adding and removing entries in the cache in an
- effort to improve efficiency and stability.<br>
- More details can be found in the <a href="../../ChangeLog"><code>ChangeLog</code></a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2003-07-28</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par6 has been released.</b>
- "maintenance" release by Paul Rombouts. In addition to some further code cleanup,
- the documentation has been revised.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2003-07-10</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par5 has been released.</b>
- A troublesome allocation size error has been discovered in Thomas Moestl's code.
- In practice this bug only wastes memory but it could
- also potentially lead to memory corruption. Upgrading is recommended.
- More details can be found in the <code>ChangeLog</code>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffccff" width="20%"><b>2003-06-30</b></td>
- <td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par4 has been released.</b>
- Due to incompatibilities between various implementations of
- the pthread library on Linux systems, problems can occur with signal handling in
- pdnsd. The usual symptom is failure by pdnsd to save the cache to disk, and
- <code>/var/cache/pdnsd/pdnsd.cache</code> remaining empty. If you experience
- this kind of trouble, try reconfiguring with different values for the new
- <code>--with-thread-lib</code> option. The allowable values are
- described in the <a href="doc.html#threadlib">documentation</a>.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%"><b>2003-04-07</b></td>
- <td bgcolor="#CCFFFF" width="80%"><b>pdnsd is no longer maintained by Thomas Moestl:</b>
- I have not had time to maintain pdnsd for quite a while now, and have been very slow to
- respond to issues, or did not respond at all. It is time that I officially announce that
- pdnsd is no longer actively maintained; I apologize to all those who reported bugs or
- asked questions without receiving any reply. However, <b>Paul A. Rombouts</b> has published
- a patch set against the last released version at
- <a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>,
- which cleans up a lot of code fixes many bugs.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%"><b>2002-07-19</b></td>
- <td bgcolor="#CCFFFF" width="80%"><b>Documentation update.</b>
- Please note that pdnsd should <b>never be installed with setuid or setgid attributes</b>,
- as it is not always possible to give up all privileges due to operating system restrictions.
- While this was never intended and I don't think that anybody would actually do this, the
- documentation was updated to explicitely mention this to avoid misunderstandings.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%"><b>2002-01-15</b></td>
- <td bgcolor="#CCFFFF" width="80%"><b>Version 1.1.7a has been released.</b>
- This fixes a reversed test in an assertion that would cause pdnsd to termintate when the ping uptest
- was used. No other changes were made.
- </td>
- </tr>
- <tr>
- <td bgcolor="#FFCCFF" width="20%"><b>2002-01-15</b></td>
- <td bgcolor="#CCFFFF" width="80%"><b>Version 1.1.7 has been released.</b>
- This fixes some problems that might be remotely exploitable to gain access as the user pdnsd runs as
- (an unprivileged user by default). To do this, an attacker needs to control a name server that is
- queried by pdnsd, and send a malicious reply to such a query.<br>
- Upgrading is strongly recommended!<br>
- There are also minor bug fixes and stability improvements.
- </td>
- </tr>
- </table>
- <!--)notext-->
- <hr>
- <h2><a name="aboutpdnsd">About pdnsd</a></h2>
- pdnsd is a proxy DNS server with permanent caching (the cache contents
- are written to hard disk on exit) that is designed to cope with unreachable
- or down DNS servers (for example in dial-in networking).<br>
- Since version 1.1.0, pdnsd supports negative caching.<br>
- <br>
- It is licensed under the <a HREF="http://www.gnu.org">GNU</a> General Public License (<a HREF="../../COPYING">GPL</A><!--notext(-->,
- <a HREF="http://www.gnu.org/copyleft/gpl.html">also available in html</A> and
- <a HREF="http://www.gnu.org/copyleft/copyleft.html#translations">translated into various languages</A>.<!--)notext-->).
- This, in short, means that the sources are distributed togehter with the program, and
- that you are free to modify the sources and redistribute them as long as you
- also license them under the GPL. You do not need to pay anything for pdnsd.
- It also means that there is <b>ABSOLUTELY NO WARRANTY</b> for pdnsd or any part
- of it. For details, please <a href="../../COPYING">read the GPL</a>.
- <p>
- pdnsd can be used with applications that do DNS lookups, e.g. on startup, and
- can't be configured to change that behaviour, to prevent the often minute-long
- hangs (or even crashes) that result from stalled DNS queries. Some Netscape Navigator
- versions for Unix, for example, expose this behaviour.
- </p>
- pdnsd is configurable via a file and supports run-time configuration using the program pdnsd-ctl that comes
- with pdnsd. This allows you to set the status flags of servers that pdnsd knows (to influence which servers
- pdnsd will query), and the addition, deletion and invalidation of DNS records in pdnsd's cache.
- <br>
- Parallel name server queries are supported. This is a technique that allows
- querying several servers at the same time so that very slow or unavailable
- servers will not block the answer for one timeout interval.
- <br>
- Since version 1.0.0, pdnsd has full IPv6 support.
- <p>
- There is also a limited support for local zone records, intended for defining
- 1.0.0.127.in-addr.arpa. and localhost. , since some clients request that
- information and it must be served even if the cached servers are not available
- or do not serve these records. pdnsd may also read your /etc/hosts file
- (this file is normally used by your local resolver and usually contains
- information for localhost as well as for your machines FQDN) and serve its
- contents.
- </p> <p>
- pdnsd was started on Linux, and has since been ported to FreeBSD (and Cygwin and Darwin).
- 90% of the source code should be easily portable to POSIX-
- and BSD-compatible systems, provided that those systems support the POSIX threads (pthreads).
- The rest might need OS-specific rewrites.
- </p><p>
- Currently, pdnsd is only compileable by gcc. This should be easy to fix, but I just
- do not have documentation for other compilers. If you are not able or do not want
- to use gcc, I would recommend you just try to do the minor changes.
- </p>
- <p>
- pdnsd must be started as root in some cases (raw sockets are needed for icmp
- echoes for the option <code>uptest=ping</code>, and the default port is 53, this must be
- >1024 to allow non-root execution). However, pdnsd can be configured to change it's user
- and group id to those of a non-privileged user after opening the sockets needed for this.
- </p> <p>
- The server should support the full standard DNS queries following the rfcs 1034
- and 1035. As of version 1.0.0, the rfc compliance has been improved again, and pdnsd is now
- believed (or hoped?) to be fully rfc-compatible. It completely follows rfc 2181 (except
- for one minor issue in the FreeBSD port, see the <a href="doc.html">documentation</a>).
- It does not support the
- following features, of which most are marked optional, experimental or obsolete
- in these rfcs:
- </p>
- <ul>
- <li> Inverse queries
- <li> Status queries
- <li> Completion queries
- <li> Namespaces other than IN (Internet)
- <li> AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain zones, that should not violate the standard
- </ul>
- The following record types, that are extensions to the original DNS standard, are supported for caching since version 1.2.9
- (if you do not need most of them, you can disable runtime support for the unneeded ones before compiling pdnsd and save a little cache and executable space, see the source file <code>src/rr_types.in</code>):
- <ul>
- <li> RP (<i>responsible person</i>, RFC 1183)
- <li> AFSDB (<i>AFS database location</i>, RFC 1183)
- <li> X25 (<i>X25 address</i>, RFC 1183)
- <li> ISDN (<i>ISDN number/address</i>, RFC 1183)
- <li> RT (<i>route through</i>, RFC 1183)
- <li> NSAP (<i>Network Service Access Protocol address </i>, RFC 1348)
- <li> PX (<i>X.400/RFC822 mapping information</i>, RFC 1995)
- <li> GPOS (<i>geographic position</i>, deprecated)
- <li> AAAA (<i>IPv6 address</i>, RFC 1886)
- <li> LOC (<i>location</i>, RFC 1876)
- <li> EID (<i>Nimrod EID</i>)
- <li> NIMLOC (<i>Nimrod locator</i>)
- <li> SRV (<i>service record</i>, RFC 2782)
- <li> ATMA (<i>ATM address</i>)
- <li> NAPTR (<i>URI mapping</i>, RFC 2168)
- <li> KX (<i>key exchange</i>, RFC 2230)
- <li> CERT (<i>Certificate record</i>, RFC 4398)
- <li> DS (<i>Delegation Signer</i>, RFC 4034)
- <li> RRSIG (<i>Resource Record Signature</i>, RFC 4034)
- <li> NSEC (<i>Next Secure</i>, RFC 4034)
- <li> DNSKEY (<i>record containing the public key for a zone</i>, RFC 4034)
- <li> NSEC3 (<i>Next Secure version 3</i>, RFC 5155)
- <li> NSEC3PARAM (<i>NSEC3 parameters</i>, RFC 5155)
- </ul>
- <p style="text-indent: 1em;">
- <i><b>Note</b>: This list is incomplete. For the complete list see the source file</i> <code>src/rr_types.in</code>.
- </p>
- There are FreeBSD and OpenBSD ports available for pdnsd (ports/net/pdnsd for both).
- Thanks go to Roman Shterenzon for the FreeBSD port Sebastian Stark for the OpenBSD one!
- Thanks to Kiyo Kelvin Lee now also runs on the Cygwin platform!
- Thanks goes to Rodney Brown for extending portability to the Darwin (Apple Mac OS X) platform!
- <p>
- If you have questions left, you should take a look into the <a HREF="faq.html">FAQ</a>.
- <br>
- Bugfixes, patches and compatability fixes for other OSs are very welcome!
- </p>
- <h2>Features in detail</h2>
- <p>
- This section describes some of pdnsds features in detail. Most of the options are set
- in the config file. For more information on the configuration file, see
- <a href="doc.html">the documenation page</a>.
- </p><br>
-
- <h3>Uptests</h3>
- pdnsd provides several methods to test whether a remote DNS server should be regarded as available
- (so that pdnsd can query it), in
- addition to the obvious "none" test (the server is always regarded as available,
- or availability is set on or off using the <a href="doc.html#pdnsdctl"><code>pdnsd-ctl</code></a> utility).
- These tests are:
- <ul>
- <li><b>ping:</b> a given adress is ping'ed in a given interval. If it there is no response
- or the host is unreachable, the server is seen to be not available (for those who don't know:
- pinging is sending a certain Internet packet type to a host to which any standard-conformant
- host is required to reply).
- <li><b>if:</b> a given network interface is tested whether it is existent, up and running. If
- it is not, the server is regarded to be not available. This is especially useful for ppp and
- similar interfaces. A special case test for Linux isdn (ippp*) interfaces is integrated, so that the uptests
- should also work for these.
- <li><b>dev:</b> this is a variant of the if uptest for use with Linux dial-on-demand ppp interfaces. In addition
- to performing an if-style interface uptest, it also tests whether a specified program (e.g. pppd) owns
- a lock to a given (modem-) device.
- <li><b>exec:</b> a given shell command line is executed and the exit status of the whole command line (which
- is normally the exit status of the last command) is evaluated. If it is not zero, the server is regarded
- to be not available. This is a very flexible testing method with which it should be able to perform
- virtually any needed test.
- <li><b>query:</b> <em>New in version 1.2:</em>
- This works like the ping test, except it sends an (empty) DNS query to the remote server.
- If the server sends a well-formed response back within the timeout period (except SERVFAIL),
- it will be regarded as available.
- This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
- which unfortunately is quite common these days.
- In many cases this test will be a more reliable indicator of availability
- than the ones mentioned above.
- </ul>
- <br>
- <h3>Local Records ("Zones")</h3>
- As mentioned above, there are only very basic local record types (ie the record types that you may use in record
- declarations in your local configuration for records that pdnsd shall serve in addion to the cached ones).
- They are organized roughly in zones but have not complete zone declarations, so I generally do not use the
- term "zone" for them, but rather "local records".
- These are the local record types pdnsd can understand:
- <ul>
- <li> <b>SOA</b> (information about the name server)
- <li> <b>A</b> (domain-name-to-address mapping)
- <li> <b>PTR</b> (pointer, used normally for address-to-domain-name mapping)
- <li> <b>NS</b> (name server, generated automatically by pdnsd for any local record set)
- <li> <b>CNAME</b> (canonical host name)
- <li> <b>MX</b> (mail exchange for the domain)
- <li> <b>TXT</b> (arbitrary text strings, often used for Sender Policy Framework)
- </ul>
- You can specify these records in the configuration file. <br>
- You may "source" a file in a format like that used in the <code>/etc/hosts</code> file, that means
- that pdnsd reads this file, extracts addresses and domain names from it and automatically generates
- A records for name to address mapping, PTR records for address to name mapping and NS records (name
- server specifiation) for each entry in the file.<br>
- Records can also be changed dynamically at run time.<br>
- A script contributed by Marko Stolle makes pdnsd usable in a DHCP setup using this feature.
- <br>
- <h1>System requirements</h1>
- As mentioned, pdnsd currently runs under Linux, FreeBSD and Cygwin.
- Other BSD flavours may or may not work (feedback is very welcome!).
- The system and software requirements under Linux are:
- <ul>
- <li> Kernel version >2.2.0
- <li> glibc version >2.0.1 (aka libc6) with LinuxThreads (normally included)
- or NPTL (Native Posix Thread Library, recommended).<br>
- Due to a bug, pdnsd 0.9.8 does not run with glibc2.1.1. This behaviour was
- fixed in pdnsd 0.9.9.
- <li> For IPv6: glibc>=2.1
- </ul>
- The system requirements under FreeBSD are:
- <ul>
- <li> FreeBSD versions >=2.6 (prior ones may or may not work)
- <li> For IPv6: FreeBSD >=4.0 is recommended (no idea if it runs on prior versions)
- </ul>
-
- The common software requirements for all supported systems are:
- <ul>
- <li> GCC, preferably egcs-2.* or 3.* (other compilers are currently not supported; the needed patch for another compiler
- should not be difficult, however)
- <li> GNU or BSD make
- <li> the standard commands install, grep, sed, awk, touch and which (along with the REALLY
- standard ones mv, cp, ln, rm, pwd, test, echo, cat, mkdir, chown, chmod, tar). In
- any standard Unix installation, this should be no problem.
- <li> for hacking and building own packages, you might also need gzip, bzip2, perl and rpmbuild
- </ul>
- <br>
- <h1>Download</h1>
- If you want to download pdnsd, please visit the <a href="dl.html">download page</a>.
- <br>
- <h1><a name="authors">Authors</a></h1>
- <p>
- pdnsd was originally written by <a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a>,
- but is no longer maintained by him. <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a>
- has revised large portions of the code and has added a number of new features.
- See <a href="../../README.par"><code>README.par</code></a> and the <a href="../../ChangeLog"><code>ChangeLog</code></a>
- in the source directory (or <code>/usr/share/doc/pdnsd-<version></code>
- if you have installed a binary package) for more details.
- If you have questions about the recent modifications, you can find
- <a name="currentmaintainer">the email address of the current maintainer</a>
- at the end of <a href="../../README.par"><code>README.par</code></a>.
- </p>
- <p>
- Daniel Smolik has contributed RedHat RPMs (the most recent RPMs are available <a href="dl.html">here</a>).<br>
- Torben Janssen contributed start scripts for Red Hat Linux. <br>
- Soenke J. Peters contributed patches and suggestions for Red Hat compatability.<br>
- Wolfgang Ocker has contributed the code and documentation for the <code>server_ip</code> option.<br>
- Markus Mohr contributed a Debian rc script.<br>
- Nikita V. Youschenko contributed extensions to the "<code>if</code>" uptest.<br>
- Lyonel Vincent extended the serve_aliases option to support an arbitrary number of aliases.<br>
- Sourav K. Mandal wrote the autoconf scripts and contributed many fixes and suggestions.<br>
- Stephan Boettcher contributed the SCHEME= option.<br>
- Ron Yorston contributed the uptest for Linux ppp dial-on-demand devices.<br>
- Alexandre Nunes fixed some bugs in the autoconf files.<br>
- Sverker Wiberg contributed fixes for IPv6.<br>
- Carsten Block contributed <code>configure</code>-able rc scripts.<br>
- Olaf Kirch contributed a security fix for the run_as code.<br>
- Paul Wagland contributed various patches for bind9-compatability and other issues.<br>
- Roman Shterenzon contributed patches and lots of helpful hints for FreeBSD compatability.<br>
- Bernd Leibing has contributed spec file fixes.<br>
- Michael Wiedmann has contributed the pdnsd-ctl.8 man page.<br>
- Marko Stolle has contributed the contrib/pdnsd_update.pl script that makes pdnsd usable in a DHCP setup.<br>
- P.J. Bostley has contributed patches to get pdnsd working on alpha properly.<br>
- Christian Engstler contributed patches for SuSE compatability.<br>
- Bjoern Fischer contributed code to make pdnsd leave the case of names in the cache unchanged.<br>
- Marko Stolle contributed the contrib/pdnsd_update.pl script that makes pdnsd usable in a DHCP setup.<br>
- Andrew M. Bishop contributed the support for the label server option and the pdnsd-ctl interface for using it.<br>
- Frank Elsner contributed rc script fixes. <br>
- Andreas Steinmetz contributed the code for <code>query_port_start</code> and <code>query_port_end</code> options.<br>
- Mahesh T. Pai contributed the pdnsd.8 man page.<br>
- Nikola Kotur contributed the Slackware start-up script.<br>
- Kiyo Kelvin Lee contributed a patch for Cygwin support.<br>
- Rodney Brown contributed a patch for Darwin (Apple Mac OS X) support.<br>
- Jan-Marek Glogowski contributed a patch implementing the <code>use_nss</code> option.
- </p>
- <p>
- Special thanks to Bert Frederiks for letting me do a late-night debugging run on his machine to
- spot obscure bugs!
- </p>
- <p>
- Thanks to the following persons for reporting bugs and being helpful:<br>
- David G. Andersen,<br>
- Dirk Armbrust,<br>
- Daniel Black,<br>
- Kevin A. Burton,<br>
- Juliusz Chroboczek,<br>
- Joachim Dorner,<br>
- Stefan Erhardt,<br>
- Stefan Förster,<br>
- Mike Hammer,<br>
- Jonathan Hudson,<br>
- Dan Jacobson,<br>
- Byrial Jensen,<br>
- Patrick Loschmidt,<br>
- James MacLean,<br>
- Fraser McCrossan,<br>
- Michael Müller,<br>
- Erich Reitz,<br>
- Brian Schroeder,<br>
- Milan P. Stanic,<br>
- Michael Steiner,<br>
- Norbert Steinl,<br>
- Markus Storm,<br>
- Michael Ströder,<br>
- Alan Swanson,<br>
- Eelco Vriezekolk.
- </p>
- <!--nodoc(-->
- <h1>Links</h1>
- Well, this is the obligatory link section.
- <br>
- <br>
- <table width="100%" cellpadding=7>
- <tr>
- <td><center>
- <a href="http://www.gnu.org">
- <img src="gnuhead.png" alt="http://www.gnu.org"><br>
- The GNU homepage
- </a>
- </center></td>
- <td><center>
- <a href="http://freecode.com">
- <img src="fm_logo.png" alt="http://freecode.com"><br>
- Freecode (formerly Freshmeat) - large free software index
- </a>
- </center></td>
- </tr>
- <tr>
- <td><center>
- <a href="http://www.freebsd.org">
- <img src="freebsd.png" alt="http://www.freebsd.org"><br>
- The FreeBSD project
- </a>
- </center></td>
- </tr>
- </table>
- <!--)nodoc-->
- <br>
- <hr>
- <address><a href="mailto:tmoestl@xxxxxxx">Thomas Moestl</a>
- and <a href="mailto:p.a.rombouts@xxxxxxx">Paul A. Rombouts</a>
- </address>
- <br>
- <p>
- <i>Last revised: 17 March 2012 by Paul A. Rombouts</i>
- </p>
- </body>
-</html>
diff --git a/jni/pdnsd/doc/html2confman.pl b/jni/pdnsd/doc/html2confman.pl
deleted file mode 100644
index abade11..0000000
--- a/jni/pdnsd/doc/html2confman.pl
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/perl -w
-#
-# A Perl script for converting pdnsd html documentation to a man page.
-#
-# Written by Paul A. Rombouts
-#
-# This file Copyright 2004 Paul A. Rombouts
-# It may be distributed under the GNU Public License, version 2, or
-# any higher version. See section COPYING of the GNU Public license
-# for conditions under which this file may be redistributed.
-#
-
-use strict;
-use POSIX qw(strftime);
-
-
-while(<>) {
- if(/<h[1-4]>[^<]*configuration file/i) {
- last;
- }
-}
-
-exit unless defined($_);
-
-while(<>) {
- if(/<h[1-4]>[^<]*layout/i) {
- last;
- }
-}
-
-exit unless defined($_);
-
-(my $myname=$0) =~ s{.*/}{};
-
-print <<ENDOFHEADER;
-.\\\" Generated automatically from the html documentation by $myname
-.\\\"
-.\\\" Manpage for pdnsd.conf (pdnsd configuration file)
-.\\\"
-.\\\" Copyright (C) 2000, 2001 Thomas Moestl
-.\\\" Copyright (C) 2003, 2004, 2005, 2006, 2007 Paul A. Rombouts
-.\\\"
-.\\\" This manual is a part of the pdnsd package, and may be distributed in
-.\\\" original or modified form under terms of the GNU General Public
-.\\\" License, as published by the Free Software Foundation; either version
-.\\\" 3, or (at your option) any later version.
-.\\\" You can find a copy of the GNU GPL in the file COPYING in the source
-.\\\" or documentation directory.
-.\\\"
-ENDOFHEADER
-
-
-print ".TH PDNSD.CONF 5 \"",strftime("%b %Y",localtime),"\" \"pdnsd \@fullversion\@\"\n";
-print <<ENDOFHEADER2;
-.SH NAME
-pdnsd.conf \\- The configuration file for pdnsd
-.hw config
-.SH DESCRIPTION
-.PP
-This manual page describes the layout of the
-.BR pdnsd (8)
-configuration file and the available configuration options.
-The default location of the file is \@sysconfdir\@/pdnsd.conf. This may be changed
-with the \\fB-c\\fP command line option.
-An example pdnsd.conf comes with the pdnsd distribution in the documentation directory
-or in \@sysconfdir\@/pdnsd.conf.sample.
-.SH \"FILE FORMAT\"
-.PP
-ENDOFHEADER2
-
-my $taggedparagraph=0;
-my $displayed=0;
-
-while(<>) {
- if(/<h[1-4]>.*\bpdnsd-ctl\b/) {
- last;
- }
- s{^\s*((?:<[^<>]+>)*?)<h[1-4]>[\d.]*\s*(.*)</h[1-4]>((?:<[^<>]+>)*?)(?:<br>)?\s*$}{.SS $1$2$3\n}i;
- if(s{^\s*<tr>\s*}{.TP\n}i) {$taggedparagraph=1}
- if(m{^\s*</tr>}i) {$taggedparagraph=0}
- s{^\s*((?:<[^<>]+>)*?)<b>(.*)</b>((?:<[^<>]+>)*?)(?:<br>)?\s*$}{.B $1$2$3\n}i if $taggedparagraph;
- s{^\s*((?:<[^<>]+>)*?or(?:<[^<>]+>)*?)(?:<br>)?\s*$}{$1\n.PD 0\n.TP\n.PD\n}i if $taggedparagraph;
- if(s{^\s*<pre>}{.DS L\n}i) {$displayed=1}
- s{^\t}{ } if $displayed;
- if(s{</pre>\s*$}{\n.DE\n\n}i) {$displayed=0}
- elsif(!$displayed) {s{^\s*}{}}
- s{^\s*<li>}{.IP\n\\(bu }i;
- s{<li>}{\n.IP\n\\(bu }i;
- s{<ul>}{\n}i;
- s{</ul>}{\n}i;
- s{<b>}{\\fB}ig;
- s{</b>}{\\fP}ig;
- s{<(i|em)>}{\\fI}ig;
- s{</(i|em)>}{\\fP}ig;
- unless(s{^\s*(<[^<>]+>)*(<br>|<p>)(<[^<>]+>)*\s*$}{\n}i) {
- s{<p\b[^<>]*>(.*)</p>}{\n$1\n}i;
- s{^\s*<br>}{.br\n}i;
- s{<br>\s*<br>\s*$}{\n\n}i;
- s{<br>\s*$}{\n.br\n}i;
- s{<br>}{\n.br\n}i;
- s{^\s*(<[^<>]+>)*\s*$}{};
- }
- s{<[^<>]+>}{}g;
- s{<}{<}ig;
- s{>}{>}ig;
- s{"}{"}ig;
- s{ }{\\ }ig;
- s{/var/cache/pdnsd\b}{\@cachedir\@}g;
- s{(?<![-\w\\])-[-\w]*}{(my $s=$&) =~ s{-}{\\-}g;$s}ge;
- s{\bpdnsd-ctl\b}{pdnsd\\-ctl}g;
- s{\blist-rrtypes\b}{list\\-rrtypes}g;
- print;
-}
-
-print <<ENDOFTRAILER;
-.SH \"VERSION\"
-.PP
-This man page is correct for version \@fullversion\@ of pdnsd.
-.SH \"SEE ALSO\"
-.PP
-.BR pdnsd (8),
-.BR pdnsd\\-ctl (8)
-.PP
-More documentation is available in the \\fBdoc/\\fP subdirectory of the source,
-or in \\fB/usr/share/doc/pdnsd/\\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\\fBpdnsd\\fP was originally written by Thomas Moestl
-.UR
-<tmoestl\@gmx.net>
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts\@home.nl>
-.UE
-(for versions 1.1.8b1\\-par and later).
-.PP
-Several others have contributed to \\fBpdnsd\\fP; see files in the source or
-\\fB/usr/share/doc/pdnsd/\\fP directory.
-.PP
-This man page was automatically generated from the html documentation for \\fBpdnsd\\fP,
-using a customized Perl script written by Paul A. Rombouts.
-ENDOFTRAILER
-
-if(defined($_)) {
- while(<>) {
- if(/last\s+revised/i) {
- s{^\s*}{};
- s{<[^<>]+>}{}g;
- s{<}{<}ig;
- s{>}{>}ig;
- s{"}{"}ig;
- s{ }{\\ }ig;
- print ".PP\n";
- print;
- last;
- }
- }
-}
-exit;
diff --git a/jni/pdnsd/doc/pdnsd-ctl.8 b/jni/pdnsd/doc/pdnsd-ctl.8
deleted file mode 100644
index 73459f3..0000000
--- a/jni/pdnsd/doc/pdnsd-ctl.8
+++ /dev/null
@@ -1,198 +0,0 @@
-.\" This manpage has been automatically generated by docbook2man-spec
-.\" from a DocBook document. docbook2man-spec can be found at:
-.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/>
-.\" Please send any bug reports, improvements, comments, patches,
-.\" etc. to Steve Cheng <steve@xxxxxxxxxxxxxxx>.
-.\" This manpage has been edited manually by Paul A. Rombouts.
-.TH "PDNSD\-CTL" "8" "Sep 2008" "pdnsd 1.2.9b-par" ""
-.SH NAME
-\fBpdnsd\-ctl\fP \- controls pdnsd
-.SH SYNOPSIS
-.sp
-\fBpdnsd\-ctl\fP [\fB\-c\fP \fIcachedir\fP] [\fB\-q\fP] \fIcommand\fP [\fIarguments\fP]
-.SH "DESCRIPTION"
-.PP
-\fBpdnsd\-ctl\fP controls \fBpdnsd\fP, a proxy dns server with permanent caching.
-Note that the status control socket must be enabled (by specifying an option on
-the pdnsd command line or in the configuration file) before you can use
-\fBpdnsd\-ctl\fP.
-.PP
-.TP
-\fB\-c\fP \fIcachedir\fP
-Set the cache directory to \fIcachedir\fP (must match pdnsd setting).
-This is only necessary if the directory differs from the default specified
-at compile time.
-.TP
-\fB\-q\fP
-Be quiet unless output is specified by the command or something goes wrong.
-.SH "COMMANDS"
-.TP
-\fBhelp\fP\ \ \ [no arguments]
-
-Print a command summary.
-.TP
-\fBversion\fP\ [no arguments]
-
-Print version and license info.
-.TP
-\fBstatus\fP\ [no arguments]
-
-Print a description of pdnsd's cache status, thread status and configuration.
-Also shows which remote name servers are assumed to be available.
-.TP
-\fBserver\fP\ (\fIindex\fP|\fIlabel\fP) (\fBup\fP|\fBdown\fP|\fBretest\fP) [\fIdns1\fP[,\fIdns2\fP[,...]]]
-
-Set the status of the servers with the given index or label to up or down, or
-force a retest. The index is assigned in the order of definition in pdnsd.conf
-starting with 0. Use the status command to view the indexes. You can specify all
-instead of an index to perform the action for all servers registered with pdnsd.
-.IP
-An optional third argument can be given consisting of a list of IP addresses
-separated by commas or white-space characters. This list will replace the
-addresses of name servers used by pdnsd for the given server section. This
-feature is useful for run-time configuration of pdnsd with dynamic DNS data in
-scripts called by ppp or DHCP clients. The last argument may also be an empty
-string, which causes existing IP addresses to be removed and the corresponding
-server section to become inactive.
-.TP
-\fBrecord\fP\ \fIname\fP (\fBdelete\fP|\fBinvalidate\fP)
-
-Delete or invalidate the records of the given domain name if it is in the cache.
-Invalidation means that the records are marked as timed out, and will be
-reloaded if possible. For local records (i.e., records that were given in the
-config file using a rr section, records read from a hosts-style file and records
-added using pdnsd-ctl), invalidation has no effect. Deletion will work, though.
-.TP
-\fBsource\fP\ \fIfn\fP \fIowner\fP [\fIttl\fP] [(\fBon\fP|\fBoff\fP)] [\fBnoauth\fP]
-
-Load a hosts-style file. Works like using the pdnsd source configuration section.
-Owner and ttl are used as in the source section. ttl has a default
-of 900 (it does not need to be specified). The next to last argument corresponds
-to the serve_aliases option, and is off by default.
-\fBnoauth\fP is used to make the domains non-authoritative
-(this is similar to setting authrec=off in the config file,
-please consult the
-.BR pdnsd.conf (5)
-man page for what that means).
-fn is the name of the file, which must be readable by pdnsd.
-.TP
-\fBadd\fP\ \ \ \ \fBa\fP \fIaddr\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBaaaa\fP \fIaddr\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBptr\fP \fIhost\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBcname\fP \fIhost\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBmx\fP \fIhost\fP \fIname\fP \fIpref\fP [\fIttl\fP] [\fBnoauth\fP]
-
-Add a record of the given type to the pdnsd cache, replacing existing
-records for the same name and type. The 2nd argument corresponds
-to the value of the option in the rr section that is named like
-the first argument. The addr argument may be a list of IP addresses,
-separated by commas or white space.
-The ttl is optional, the default is 900 seconds.
-\fBnoauth\fP is used to make the domains non-authoritative
-(this is similar to setting authrec=off in the config file,
-please consult the
-.BR pdnsd.conf (5)
-man page for what that means).
-If you want no other record than the newly added in the cache, do
-\fBpdnsd\-ctl\fP\ \fBrecord\fP\ \fIname\fP\ \fBdelete\fP
-before adding records.
-.TP
-\fBneg\fP\ \ \ \ \fIname\fP [\fItype\fP] [\fIttl\fP]
-
-Add a negatively cached record to pdnsd's cache, replacing existing
-records for the same name and type. If no type is given, the whole
-domain is cached negatively. For negatively cached records, errors are
-immediately returned on a query, without querying other servers first.
-The ttl is optional, the default is 900 seconds.
-.TP
-\fBconfig\fP\ \fIfilename\fP
-
-Reload pdnsd's configuration file.
-.br
-The config file must be owned by the uid that pdnsd had when it was started,
-and be readable by pdnsd's run_as uid.
-If no file name is specified, the config file used at start-up is reloaded.
-Note that some configuration changes, like the port or IP address pdnsd listens on,
-cannot be made this way and you will receive an error message.
-In these cases, you will have to restart pdnsd instead.
-.TP
-\fBinclude\fP\ \fIfilename\fP
-
-Parse an include file.
-.br
-The include file may contain the same
-type of sections as a config file, expect for global and server
-sections, which are not allowed. This command can be used to add data
-to the cache without reconfiguring pdnsd.
-.TP
-\fBeval\fP\ \ \ \fIstring\fP
-
-Parse a string as if part of an include file.
-.br
-The string should hold one or more complete configuration sections,
-but no global and server sections, which are not allowed.
-If multiple strings are given, they will be joined using newline chars
-and parsed together.
-.TP
-\fBempty\-cache\fP\ [[+|-]\fIname\fP ...]
-
-Delete all entries in the cache matching include/exclude rules.
-.br
-If no arguments are provided, the cache is completely emptied,
-freeing all existing entries.
-Note that this also removes local records, as defined by the config file.
-To restore local records, run "pdnsd-ctl\ config" immediately afterwards.
-.br
-If one or more arguments are provided, these are interpreted as
-include/exclude names. If an argument starts with a '+' the name is to
-be included. If an argument starts with a '-' it is to be excluded.
-If an argument does not begin with '+' or '-', a '+' is assumed.
-If the domain name of a cache entry ends in one of the names in the
-list, the first match will determine what happens. If the matching name
-is to be included, the cache entry is deleted, otherwise it remains.
-If there are no matches, the default action is not to delete.
-.TP
-\fBdump\fP\ \ \ [\fIname\fP]
-
-Print information stored in the cache about \fIname\fP.
-If \fIname\fP begins with a dot and is not the root domain, information
-about the names in the cache ending in \fIname\fP (including \fIname\fP without
-the leading dot) will be printed.
-If \fIname\fP is not specified, information about all the names in the cache
-will be printed.
-.TP
-\fBlist\-rrtypes\fP [no arguments]
-
-List available rr types for the neg command. Note that those are only
-used for the neg command, not for add!
-.SH "BUGS"
-.PP
-If you pipe the output of \fBdump\fP command through an application that
-reads only part of the output and then blocks (such as more or less),
-pdnsd threads trying to add new entries to the cache will be suspended
-until the pipe is closed.
-It is preferable to capture the output in a file in such a case.
-.br
-Report any remaining bugs to the authors.
-.SH "AUTHORS"
-.PP
-Thomas Moestl
-.UR
-<tmoestl@xxxxxxx>
-.UE
-.br
-Paul A. Rombouts
-.UR
-<p.a.rombouts@xxxxxxx>
-.UE
-(for versions 1.1.8b1\-par and later)
-.PP
-Last revised: 04 Sep 2008 by Paul A. Rombouts.
-.SH "SEE ALSO"
-.PP
-.BR pdnsd (8),
-.BR pdnsd.conf (5)
diff --git a/jni/pdnsd/doc/pdnsd.8.in b/jni/pdnsd/doc/pdnsd.8.in
deleted file mode 100644
index ba4330a..0000000
--- a/jni/pdnsd/doc/pdnsd.8.in
+++ /dev/null
@@ -1,326 +0,0 @@
-.TH PDNSD 8 "Jul 2007" "pdnsd @fullversion@" "System Administration Commands"
-
-.SH NAME
-\fBpdnsd\fP \- dns proxy daemon
-
-.SH SYNOPSIS
-
-\fBpdnsd\fP [\-h] [\-V] [\-s] [\-d] [\-g] [\-t] [\-p \fIfile\fR] [\-v\fIn\fR] [\-m\fIxx\fR] [\-c \fIfile\fR] [\-4] [\-6] [\-a]
-.PP
-This man page is an extract of the documentation of \fBpdnsd\fP.
-For complete, current documentation, refer to the HTML (or plain text)
-documentation (which you can find in the \fBdoc/\fP subdirectory of the
-source or in a standard documentation directory, typically
-\fB/usr/share/doc/pdnsd/\fP if you are using a binary package).
-
-.SH DESCRIPTION
-.PP
-\fBpdnsd\fP is a IPv6 capable proxy domain name server (DNS) which
-saves the contents of its DNS cache to the disk on exit.
-
-.SH OPTIONS
-
-.RS
-.TP
-.B \-4
-enables IPv4 support. IPv6 support is automatically
-disabled (should it be available). On by default.
-.TP
-.B \-6
-enables IPv6 support. IPv4 support is automatically
-disabled (should it be available). Off by default.
-.TP
-.B \-a
-With this option, pdnsd will try to detect automatically if
-the system supports IPv6, and fall back to IPv4 otherwise.
-.TP
-.BR \-V " or " \-\-version
-Print version information and exit.
-.TP
-\fB\-c\fP \fIFILE\fP or \fB\-\-config\-file=\fP\fIFILE\fP
-specifies that configuration is to be read from \fIFILE\fP.
-Default is \fB@sysconfdir@/pdnsd.conf\fP.
-.TP
-.BR \-d " or " \-\-daemon
-Start \fBpdnsd\fP in daemon mode (as a background process).
-.TP
-.BR \-g " or " \-\-debug
-Print some debug messages on the console or to the file
-\fBpdnsd.debug\fP in your cache directory (in daemon mode).
-.TP
-.BR \-h " or " \-\-help
-Print an option summary and exit.
-.TP
-\fB\-i\fP \fIPREFIX\fP or \fB\-\-ipv4_6_prefix=\fP\fIPREFIX\fP
-specifies the prefix pdnsd uses (when running in IPv6 mode) to map IPv4
-addresses in the configuration file to IPv6 addresses. Must be a valid IPv6
-address. Default is ::ffff:0.0.0.0
-.TP
-.B \-p \fIFILE\fP
-writes the pid the server runs as to the specified filename. Works
-only in daemon mode.
-.TP
-.B \-\-pdnsd\-user
-Print the user \fBpdnsd\fP will run as and exit.
-.TP
-.BR \-s " or " \-\-status
-enables the status control socket. Either this option should be passed
-to the command line or \fBstatus_ctl=on;\fP should be specified in the
-config file if you want to use
-.BR pdnsd\-ctl (8)
-to control \fBpdnsd\fP at runtime.
-.TP
-.BR \-t " or " \-\-tcp
-enables the TCP server thread. \fBpdnsd\fP will then serve TCP and UDP
-queries.
-.TP
-.BI \-v n
-sets the verbosity of \fBpdnsd\fP. \fIn\fP is a numeric argument
-between 0 (normal operation) to 3 (many messages for debugging).
-.TP
-.BI \-m xx
-sets the query method \fBpdnsd\fP
-uses. Possible values for \fIxx\fP are:
-.IP
-.B uo
-\- pdnsd will use UDP only. This is the fastest method, and should
-be supported by all name servers on the Internet.
-
-.IP
-.B to
-\- pdnsd will use TCP only. TCP queries usually take more time than
-UDP queries, but are more secure against certain attacks, where an
-attacker tries to guess your query id and to send forged answers. TCP
-queries are not supported by some name servers.
-
-.IP
-.B tu
-\- pdnsd will try to use TCP, and will fall back to UDP if its
-connection is refused or times out.
-
-.IP
-.B ut
-\- pdnsd will try to use UDP, and will repeat the query using TCP
-if the UDP reply was truncated (i.e. the tc bit is set).
-This is the behaviour recommended by the DNS standards.
-
-.PP
-Additionally, "no" can be prepended to the \-\-status, \-\-daemon, \-\-debug
-and \-\-tcp options (e.g. \-\-notcp) to reverse their effect.
-.RE
-
-.SH USAGE
-.PP
-\fBpdnsd\fP is usually run from a startup script. For \fBpdnsd\fP to
-work, You need to:-
-
-.IP
-1. Tell your system to use \fBpdnsd\fP as the primary DNS server by
-modifying \fB/etc/resolv.conf\fP.
-
-.IP
-2. Tell \fBpdnsd\fP to use an authentic source for DNS records, by
-including the IP addresses of one or more DNS servers, usually your
-ISP's DNS servers, in \fB@sysconfdir@/pdnsd.conf\fP.
-.PP
-For this, put the following line in your \fB/etc/resolv.conf\fP
-.PP
-.RS
-nameserver 127.0.0.X
-.RE
-.PP
-where X can be any number. (I use 3). Comment out all other
-entries. You should put the same value in the server_ip= line in
-\fBglobal\fP section of \fB@sysconfdir@/pdnsd.conf\fP.
-.br
-If you want to use \fBpdnsd\fP as the DNS server for a small local network,
-you should use the IP address or name of the interface connected to
-this network instead of 127.0.0.X.
-.RE
-
-.PP
-To tell \fBpdnsd\fP where to get DNS information from, add the
-following lines in \fB@sysconfdir@/pdnsd.conf\fP:-
-
-.PP
-.RS
-server {
-.br
- label= "myisp";
- ip=123.456.789.001,123.456.789.002;
- proxy_only=on;
- timeout=10;
-.br
-}
-.RE
-.PP
-Note the opening and closing braces. Add more such \fBserver\fP
-sections for each set of DNS servers you want \fBpdnsd\fP to query.
-Of course the configuration options shown here are just examples.
-More examples can be found in \fB@sysconfdir@/pdnsd.conf.sample\fP
-or the pdnsd.conf in the documentation directory.
-See the
-.BR pdnsd.conf (5)
-man page for all the possible options and their exact meaning.
-.PP
-If you use a dial up connection, remember that ppp scripts usually
-replace \fB/etc/resolv.conf\fP when connection with the ISP is
-established. You need to configure ppp (or whatever you use to
-establish a connection) so that \fB/etc/resolv.conf\fP is not replaced
-every time a connection is established. Read the documentation for the
-scripts run when your network comes up.
-.PP
-If you use pppconfig, specify `none' in the `nameservers' option in
-the `advanced' tab. If you use multiple ISPs, you should do this for
-each connection/account.
-.PP
-If you use multiple ISPs, you should tell \fBpdnsd\fP which DNS servers
-have become available by calling \fBpdnsd\-ctl\fP, the \fBpdnsd\fP
-control utility, in a script (e.g. \fB/etc/ppp/ip\-up\fP when you use pppd)
-that is run when the connection is established.
-If the addresses of the DNS servers are obtained through some type of
-dynamic configuration protocol (e.g. pppd with the usepeerdns
-option or a DHCP client), you can pass the DNS server addresses as an extra
-argument to \fBpdnsd\-ctl\fP to configure \fBpdnsd\fP at run time.
-See the
-.BR pdnsd\-ctl (8)
-man page for details.
-
-.SH FILES
-
-\fB@sysconfdir@/pdnsd.conf\fP is the pdnsd configuration file.
-The file format and configuration options are described in the
-.BR pdnsd.conf (5)
-man page. You can find examples of almost all options in
-\fB@sysconfdir@/pdnsd.conf.sample\fP.
-.PP
-\fB@cachedir@/pdnsd.cache\fP
-.PP
-\fB@cachedir@/pdnsd.status\fP is the status control socket, which must be
-enabled before you can use \fBpdnsd\-ctl\fP.
-.PP
-\fB/etc/init.d/pdnsd\fP (the name and location of the start-up script
-may be different depending on your distribution.)
-.PP
-\fB/etc/resolv.conf\fP
-.PP
-\fB/etc/defaults/pdnsd\fP contains additional parameters or options
-which may be passed to pdnsd at boot time. This saves the hassle of
-fiddling with initscripts (not available on all distributions).
-
-.SH BUGS
-.PP
-The verbosity option
-.BI -v n
-presently does not seem to have much effect on the amount of debug output.
-.br
-Report any remaining bugs to the authors.
-
-.SH CONFORMING TO
-.PP
-\fBpdnsd\fP should comply with RFCs 1034 and 1035. As of version
-1.0.0, RFC compliance has been improved and pdnsd is now believed (or
-hoped?) to be fully RFC compatible. It completely follows RFC 2181
-(except for one minor issue in the FreeBSD port, see the
-documentation).
-.PP
-It does \fINOT\fP support the following features, of which most are
-marked optional, experimental or obsolete in these RFCs:
-
-
-.IP
-\(bu Inverse queries
-.IP
-\(bu Status queries
-.IP
-\(bu Completion queries
-.IP
-\(bu Namespaces other than IN (Internet)
-.IP
-\(bu AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain zones, that should not violate the standard
-
-.PP
-The following record types, that are extensions to the original DNS
-standard, are supported if given as options at compile time. (if you
-do not need them, you do not need to compile support for them into
-pdnsd and save cache and executable space):
-
-.IP
-\(bu RP (responsible person, RFC 1183)
-.IP
-\(bu AFSDB (AFS database location, RFC 1183)
-.IP
-\(bu X25 (X25 address, RFC 1183)
-.IP
-\(bu ISDN (ISDN number/address, RFC 1183)
-.IP
-\(bu RT (route through, RFC 1183)
-.IP
-\(bu NSAP (Network Service Access Protocol address , RFC 1348)
-.IP
-\(bu PX (X.400/RFC822 mapping information, RFC 1995)
-.IP
-\(bu GPOS (geographic position, deprecated)
-.IP
-\(bu AAAA (IPv6 address, RFC 1886)
-.IP
-\(bu LOC (location, RFC 1876)
-.IP
-\(bu EID (Nimrod EID)
-.IP
-\(bu NIMLOC (Nimrod locator)
-.IP
-\(bu SRV (service record, RFC 2782)
-.IP
-\(bu ATMA (ATM address)
-.IP
-\(bu NAPTR (URI mapping, RFC 2168)
-.IP
-\(bu KX (key exchange, RFC 2230)
-
-.SH SEE ALSO
-.PP
-.BR pdnsd\-ctl (8),
-.BR pdnsd.conf (5),
-.BR pppconfig (8),
-.BR resolv.conf (5)
-.PP
-More documentation is available in the \fBdoc/\fP subdirectory of the source,
-or in \fB/usr/share/doc/pdnsd/\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\fBpdnsd\fP was originally written by Thomas Moestl,
-.UR
-<tmoestl@xxxxxxx>,
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts@xxxxxxx>
-.UE
-(for versions 1.1.8b1\-par and later).
-.PP
-Several others have contributed to \fBpdnsd\fP; see files in the
-source or \fB/usr/share/doc/pdnsd/\fP directory.
-.PP
-This man page was written by Mahesh T. Pai
-.UR
-<paivakil@xxxxxxxxxxx>
-.UE
-using the documents in \fB/usr/share/docs/pdnsd/\fP directory for Debian,
-but can be used on other distributions too.
-.PP
-Last revised: 22 Jul 2007 by Paul A. Rombouts.
-
-.SH COPYRIGHT
-
-.PP
-This man page is a part of the pdnsd package, and may be distributed
-in original or modified form under terms of the GNU General Public
-License, as published by the Free Software Foundation; either version
-3, or (at your option) any later version.
-
-.PP
-You can find a copy of the GNU GPL in the file \fBCOPYING\fP in the source
-or the \fB/usr/share/common\-licenses/\fP directory if you are using a
-Debian system.
diff --git a/jni/pdnsd/doc/pdnsd.conf.5.in b/jni/pdnsd/doc/pdnsd.conf.5.in
deleted file mode 100644
index 801b535..0000000
--- a/jni/pdnsd/doc/pdnsd.conf.5.in
+++ /dev/null
@@ -1,1328 +0,0 @@
-.\" Generated automatically from the html documentation by html2confman.pl
-.\"
-.\" Manpage for pdnsd.conf (pdnsd configuration file)
-.\"
-.\" Copyright (C) 2000, 2001 Thomas Moestl
-.\" Copyright (C) 2003, 2004, 2005, 2006, 2007 Paul A. Rombouts
-.\"
-.\" This manual is a part of the pdnsd package, and may be distributed in
-.\" original or modified form under terms of the GNU General Public
-.\" License, as published by the Free Software Foundation; either version
-.\" 3, or (at your option) any later version.
-.\" You can find a copy of the GNU GPL in the file COPYING in the source
-.\" or documentation directory.
-.\"
-.TH PDNSD.CONF 5 "Apr 2012" "pdnsd @fullversion@"
-.SH NAME
-pdnsd.conf \- The configuration file for pdnsd
-.hw config
-.SH DESCRIPTION
-.PP
-This manual page describes the layout of the
-.BR pdnsd (8)
-configuration file and the available configuration options.
-The default location of the file is @sysconfdir@/pdnsd.conf. This may be changed
-with the \fB-c\fP command line option.
-An example pdnsd.conf comes with the pdnsd distribution in the documentation directory
-or in @sysconfdir@/pdnsd.conf.sample.
-.SH "FILE FORMAT"
-.PP
-The configuration file is divided into sections. Each section is prefixed with
-the section name and opening curlies ({) and closed with closing curlies (}).
-In each section, configuration options can be given in the form
-
-\fIoption_name\fP=\fIoption_value\fP;
-
-Option value may be a string literal, a number, a time specification or a constant.
-In previous versions of pdnsd strings had to be enclosed
-in quotes ("), but since version 1.1.10 this is no longer necessary, unless
-a string contains a special character such as whitespace, a token that normally starts
-a comment, or one of ",;{}\".
-Since version 1.2.9 a backslash (\) inside a string is interpreted as an escape character,
-so it is possible to include special characters in strings (both quoted or unquoted)
-by preceding them with a backslash. Some escape sequences are in interpreted as in the C
-programming language, e.g. \t becomes a tab,
-\n becomes a new-line control char.
-.br
-A time specification consists a sequence of digits followed by a one-letter suffix.
-The following suffixes are recognized:
-s (seconds), m (minutes), h (hours),
-d (days) and w (weeks).
-If the suffix is missing, seconds are assumed.
-If several time specifications are concatenated, their values are added together;
-e.g. 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-.br
-Some options take more than one value; in this case, the values are separated with commas.
-.br
-If you may supply one of a set of possible values to an option, this is noted
-in the documentation as
-(option1|option2|option3|...)
-.br
-The constants true|false and yes|no
-are accepted as synonyms for the constants on|off.
-.br
-Comments may be enclosed in /* and */, nested comments are possible. If the
-# sign or two slashes (//) appear in the configuration file, everything from
-these signs to the end of the current line is regarded as a comment and ignored.
-.br
-There are examples for nearly all options in the sample config file.
-
-.SS global Section
-The global section specifies parameters that affect the overall behaviour of the
-server. If you specify multiple global sections, the settings of those later in
-the file will overwrite the earlier given values.
-.br
-These are the possible options:
-
-.TP
-.B perm_cache=(\fInumber\fP|off);
-Switch the disk cache off or supply a maximum cache size in kB. If the disk
-cache is switched off, 8 bytes will still be written to disk.
-The memory cache is always 10kB larger than the file cache.
-This value is 2048 (2 MB) by default.
-.TP
-.B cache_dir=\fIstring\fP;
-Set the directory you want to keep the cache in.
-The default is "@cachedir@"
-(unless pdnsd was compiled with a different default).
-.TP
-.B server_port=\fInumber\fP;
-Set the server port. This is especially useful when you want to start the
-server and are not root. Note that you may also not specify uptest=ping in
-the server section as non-root.
-.br
-The default port is 53, the RFC-standard one. Note that you should only use
-non-standard ports when you only need clients on your machine to communicate
-with the server; others will probably fail if the try to contact the server
-on the basis of an NS record, since the A record that supplies the address for
-(among others) name servers does not have a port number specification.
-.TP
-.B server_ip=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B interface=\fIstring\fP;
-Set the IP address pdnsd listens on for requests. This can be useful
-when the host has several interfaces and you want pdnsd not to listen on
-all interfaces. For example, it is possible to bind pdnsd to listen on
-127.0.0.2 to allow pdnsd to be a forwarder for BIND.
-The default setting for this option is server_ip=any, which means that
-pdnsd will listen on all of your local interfaces.
-Presently you can only specify one address here; if you want pdnsd to listen on multiple
-interfaces but not all you will have to specify server_ip=any
-and use firewall rules to restrict access.
-.br
-The IP address used to need quotation marks around it, but since version 1.1.10
-this is no longer necessary.
-.br
-If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
-specify an IPv6 address here, then unless pdnsd was compiled to start up in IPv6 mode
-by default, you will need to use the \-6 command-line option or
-set run_ipv4=off first (see below) in order to ensure that the
-IPv6 address is parsed correctly.
-.br
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-it will automatically be mapped to an IPv6 address.
-.br
-\fINew in version 1.2:\fP You may also give the name of an interface
-such as "lo" or "eth0" here, instead of an IP address
-(this has been tested on Linux, and may or may not work on other platforms).
-pdnsd will not bind to the interface name, but will look up the address of the
-interface at start-up and listen on that address. If the address of the interface
-changes while pdnsd is running, pdnsd will not notice that. You will need to
-restart pdnsd in that case.
-.TP
-.B outgoing_ip=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B outside_interface=\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Set the IP address of the interface used by pdnsd for outgoing queries.
-This can be useful when the host has several interfaces and you want pdnsd
-to send outgoing queries via only one of them.
-For example, if pdnsd is running on a host with one interface with IP address
-192.168.1.1 connected to the local network, and another with IP address 123.xxx.yyy.zzz
-connected to the internet, you may specify server_ip=192.168.1.1
-and outgoing_ip=123.xxx.yyy.zzz to enforce that pdnsd only responds
-to queries received from the local network, and only sends outgoing queries via
-the interface connected to the internet.
-.br
-The default setting for this option is any, which means that
-the kernel is free to decide which interface to use.
-Like with the server_ip option, you may also give the name of an
-interface here, instead of an IP address.
-.TP
-.B linkdown_kluge=(on|off);
-This option enables a kluge that some people might need: when all servers are
-marked down, with this option set the cache is not even used when a query is
-received, and a DNS error is returned in any case. The only exception from this
-is that local records (as specified in rr and source
-sections are still served normally.
-In general, you probably want to get cached entries even when the network is down,
-so this defaults to off.
-.TP
-.B max_ttl=\fItimespec\fP;
-This option sets the maximum time a record is held in cache. All dns
-resource records have a time to live field that says for what period of time the
-record may be cached before it needs to be requeried. If this is more than the
-value given with max_ttl, this time to live value is set to max_ttl.
-This is done to prevent records from being cached an inappropriate long period of time, because
-that is almost never a good thing to do. Default is 604800s (one week).
-.TP
-.B min_ttl=\fItimespec\fP;
-This option sets the minimum time a record is held in cache. All dns
-resource records have a time to live field that says for what period of time the
-record may be cached before it needs to be requeried. If this is less than the
-value given with min_ttl, this time to live value is set to min_ttl.
-Default is 120 seconds.
-.TP
-.B neg_ttl=\fItimespec\fP;
-This option sets the time that negatively cached records will remain valid in the
-cache if no time to live can be determined. This is always the case when whole
-domains are being cached negatively, and additionally when record types are cached
-negatively for a domain for which no SOA record is known to pdnsd. If a SOA is present,
-the ttl of the SOA is taken.
-.TP
-.B neg_rrs_pol=(on|off|auth|default);
-This sets the RR set policy for negative caching; this tells pdnsd under which circumstances
-it should cache a record type negatively for a certain domain. off will
-turn the negative caching of record types off, on will always add a negative
-cache entry when a name server did not return a record type we asked it for, and auth
-will only add such entries if the answer came from an authoritative name server for that
-domain.
-.br
-\fINew in version 1.2.8:\fP The default setting will add a negatively cached record
-if either the answer was authoritive or the answer indicated the name server had "recursion available"
-while the query explicitly requested such recursion.
-.br
-The preset is "default" (used to be auth).
-.TP
-.B neg_domain_pol=(on|off|auth);
-This is analogue to neg_rrs_pol for whole domain negative caching. It should be safe
-to set this on, because I have not seen a caching server that will falsely claim that a
-domain does not exist.
-.br
-The default is auth.
-.TP
-.B run_as=\fIstring\fP;
-This option allows you to let pdnsd change its user and group id after operations that needed
-privileges have been done. This helps minimize security risks and is therefore recommended. The
-supplied string gives a user name whose user id and primary group id are taken.
-.br
-A little more details: after reading the config file, becoming a daemon (if specified) and starting
-the server status thread, the main thread changes its gid and uid, as do all newly created threads
-thereafter. By taking another uid and gid, those threads run with the privileges of the
-specified user.
-Under Linux and FreeBSD, the server status thread runs with the original privileges only when the strict_setuid option
-is set to off (see below, on by default), because these may be needed
-for exec uptests. The manager thread also retains its original privileges in this case.
-You should take care that the user you specify has write permissions on your cache file and
-status pipe (if you need a status pipe). You should look out for error messages like "permission denied"
-and "operation not permitted" to discover permission problems.
-.br
-.TP
-.B strict_setuid=(on|off);
-When used together with the run_as option, this option lets you specify that all threads of the
-program will run with the privileges of the run_as user. This provides higher security than
-the normal run_as
-option, but is not always possible. See the run_as option for further discussion.
-.br
-This option is on by default.
-.br
-Note that this option has no effect on Non-Linux systems.
-.TP
-.B paranoid=(on|off);
-Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers to query other servers themselves
-if possible,
-and to give back answers for domains that may not be in its authority), and accepts additional records with information
-for servers that are not in the authority of the queried server. This opens the possibility of so-called cache poisoning:
-a malicious attacker might set up a dns server that, when queried, returns forged additional records. This way, he might
-replace trusted servers with his own ones by making your dns server return bad IP addresses. This option protects
-you from cache poisoning by rejecting additional records
-that do not describe domains in the queried servers authority space and not doing recursive queries any more.
-An exception
-to this rule are the servers you specify in your config file, which are trusted.
-.br
-The penalty is a possible performance decrease, in particular, more queries might be necessary for the same
-operation.
-.br
-You should also notice that there may be other similar security problems, which are essentially problems of
-the DNS, i.e.
-any "traditional" server has them (the DNS security extensions solve these problems, but are not widely
-supported).
-One of this vulnerabilities is that an attacker may bombard you with forged answers in hopes that one may match a
-query
-you have done. If you have done such a query, one in 65536 forged packets will be succesful (i.e. an average packet
-count of 32768 is needed for that attack). pdnsd can use TCP for queries,
-which has a slightly higher overhead, but is much less vulnerable to such attacks on sane operating systems. Also, pdnsd
-chooses random query ids, so that an attacker cannot take a shortcut. If the attacker is able to listen to your network
-traffic, this attack is relatively easy, though.
-.br
-This vulnerability is not pdnsd's fault, and is possible using any conventional
-name server (pdnsd is perhaps a little more secured against this type of attacks if you make it use TCP).
-.br
-The paranoid option is off by default.
-.br
-.TP
-.B ignore_cd=(on|off);
-\fINew in version 1.2.8:\fP This option lets you specify that the CD bit of a DNS query will be ignored.
-Otherwise pdnsd will reply FORMERR to clients that set this bit in a query.
-It is safe to enable this option, as the CD bit refers to 'Checking Disabled'
-which means that the client will accept non-authenticated data.
-.br
-This option is on by default. Turn it off if you want the old behaviour (before version 1.2.8).
-.TP
-.B scheme_file=\fIstring\fP;
-In addition to normal uptests, you may specify that some servers shall only be queried when a certain
-pcmcia-cs scheme is active (only under linux). For that, pdnsd needs to know where the file resides that
-holds the pcmcia scheme information. Normally, this is either /var/lib/pcmcia/scheme or
-/var/state/pcmcia/scheme.
-.TP
-.B status_ctl=(on|off);
-This has the same effect as the \-s command line option: the status control is enabled when
-on is specified.
-.br
-\fIAdded by Paul Rombouts\fP: Note that pdnsd\-ctl allows run-time configuration of pdnsd,
-even the IP addesses of the name servers can be changed. If you're not using pdnsd\-ctl and
-you want maximum security, you should not enable this option. It is disabled by default.
-.TP
-.B daemon=(on|off);
-This has the same effect as the \-d command line option: the daemon mode is enabled when
-on is specified.
-.br
-Default is off.
-.TP
-.B tcp_server=(on|off);
-tcp_server=on has the same effect as the \-t or \-\-tcp
-command-line option: it enables TCP serving.
-Similarly, tcp_server=off is like the \-\-notcp command-line option.
-.br
-Default is on.
-.TP
-.B pid_file=\fIstring\fP;
-This has the same effect as the \-p command line option: you can specify a file that pdnsd
-will write its pid into when it starts in daemon mode.
-.TP
-.B verbosity=\fInumber\fP;
-This has the same effect as the \-v command line option: you can set the verbosity of pdnsd's
-messages with it. The argument is a number between 0 (few messages) to 3 (most messages).
-.TP
-.B query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);
-This has the same effect as the \-m command line option.
-Read the documentation for the command line option on this.
-tcp_only corresponds to the to, udp_only to the uo,
-tcp_udp to the tu and udp_tcp to the ut
-argument of the command line option.
-.br
-If you use query_method=tcp_udp, it is recommended that you also set the global timeout option to at least twice the longest server timeout.
-.TP
-.B run_ipv4=(on|off);
-This has the same effect as the \-4 or \-6 command line option:
-if on is specified, IPv4 support is enabled, and IPv6 support is disabled (if available).
-If off is specified, IPv4 will be disabled and IPv6 will be enabled.
-For this option to be meaningful, pdnsd needs to be compiled with support for the protocol you choose.
-If pdnsd was compiled with both IPv4 and IPv6 support, and you want to include IPv6 addresses
-in the configuration file, you will probably need to specify run_ipv4=off first to
-ensure that the IPv6 addresses are parsed correctly.
-.TP
-.B debug=(on|off);
-This has the same effect as the \-g command line option: the debugging messages are enabled when
-on is specified.
-.TP
-.B ctl_perms=\fInumber\fP;
-This option allows you to set the file permissions that the pdnsd status control socket will have. These
-are the same as file permissions. The owner of the file will be the run_as user, or, if none is specified,
-the user who started pdnsd. If you want to specify the permissions in octal (as usual), don't forget
-the leading zero (0600 instead of 600!). To use the status control, write access is needed. The default
-is 0600 (only the owner may read or write).
-.br
-Please note that the socket is kept in the cache directory, and that the cache directory permissions
-might also need to be adjusted. Please ensure that the cache directory is not writeable for untrusted
-users.
-.TP
-.B proc_limit=\fInumber\fP;
-With this option, you can set a limit on the pdnsd threads that will be active simultaneously. If
-this number is exceeded, queries are queued and may be delayed some time.
-See also the procq_limit option.
-.br
-The default for this option is 40.
-.TP
-.B procq_limit=\fInumber\fP;
-When the query thread limit proc_limit is exceeded, connection attempts to pdnsd will be queued.
-With this option, you can set the maximum queue length.
-If this length is also exceeded, the incoming queries will be dropped.
-That means that tcp connections will be closed and udp queries will just be dropped, which
-will probably cause the querying resolver to wait for an answer until it times out.
-.br
-See also the proc_limit option. A maximum of proc_limit+procq_limit
-query threads will exist at any one time (plus 3 to 6 threads that will always
-be present depending on your configuration).
-.br
-The default for this option is 60.
-.TP
-.B tcp_qtimeout=\fItimespec\fP;
-This option sets a timeout for tcp queries. If no full query has been received on a tcp connection
-after that time has passed, the connection will be closed. The default is set using the
-\-\-with\-tcp\-qtimeout option to configure.
-.TP
-.B par_queries=\fInumber\fP;
-This option used to set the maximum number of remote servers that would be queried simultaneously,
-for every query that pdnsd receives.
-.br
-Since version 1.1.11, the meaning of this option has changed slightly.
-It is now the increment with which the number of parallel queries is
-increased when the previous set of servers has timed out.
-For example, if we have a list \fIserver1, server2, server3,\fP etc. of available servers
-and par_queries=2, then pdnsd will first send queries to \fIserver1\fP and \fIserver2\fP,
-and listen for responses from these servers.
-.br
-If these servers do not send a reply within their timeout period, pdnsd will send additional
-queries to \fIserver3\fP and \fIserver4\fP, and listen for responses from
-\fIserver1, server2, server3\fP and \fIserver4\fP, and so on until a useful reply is
-received or the list is exhausted.
-.br
-In the worst case there will be pending queries to all the servers in the list of available servers.
-We may be using more system resources this way (but only if the first servers in the list
-are slow or unresponsive), but the advantage is that we have a greater chance of catching a reply.
-After all, if we wait longer anyway, why not for more servers.
-.br
-See also the explanation of the global timeout option below.
-.br
-1 or 2 are good values for this option.
-The default is set at compile time using the \-\-with\-par\-queries option to configure.
-.TP
-.B timeout=\fItimespec\fP;
-This is the global timeout parameter for dns queries.
-This specifies the minimum period of time pdnsd will wait after sending the
-first query to a remote server before giving up without having
-received a reply. The timeout options in the configuration file are
-now only minimum timeout intervals. Setting the global timeout option
-makes it possible to specify quite short timeout intervals in the
-server sections (see below). This will have the effect that pdnsd will start
-querying additional servers fairly quickly if the first servers are
-slow to respond (but will still continue to listen for responses from
-the first ones). This may allow pdnsd to get an answer more quickly in
-certain situations.
-.br
-If you use query_method=tcp_udp it is recommended that
-you make the global timeout at least twice as large as the largest
-server timeout, otherwise pdnsd may not have time to try a UDP query
-if a TCP connection times out.
-.br
-Default value is 0.
-.TP
-.B randomize_recs=(on|off);
-If this option is turned on, pdnsd will randomly reorder the cached records of one type
-when creating an answer. This supports round-robin DNS schemes and increases fail
-safety for hosts with multiple IP addresses, so this is usually a good idea.
-.br
-On by default.
-.TP
-.B query_port_start=(\fInumber\fP|none);
-If a number is given, this defines the start of the port range used for queries of pdnsd. The
-value given must be >= 1024. The purpose of this option is to aid certain firewall
-configurations that are based on the source port. Please keep in mind that another application
-may bind a port in that range, so a stateful firewall using target port and/or process uid may
-be more effective. In case a query start port is given pdnsd uses this port as the first port of a
-specified port range (see query_port_end) used for queries.
-pdnsd will try to randomly select a free port from this range as local port for the query.
-.br
-To ensure that there are enough ports for pdnsd to use, the range between query_port_start and
-query_port_end should be adjusted to at least (par_queries * proc_limit).
-A larger range is highly recommended for security reasons, and also because other applications may
-allocate ports in that range. If possible, this range should be kept out of the space
-that other applications usually use.
-.br
-The default for this option is 1024. Together with the default value of query_port_end,
-this makes it the hardest for an attacker to guess the source port used by the pdnsd resolver.
-If you specify none here, pdnsd will let the kernel choose the source port, but
-this may leave pdnsd more vulnerable to an attack.
-.TP
-.B query_port_end=\fInumber\fP;
-Used if query_port_start is not none. Defines the last port of the range started by query_port_start
-used for querys by pdnsd. The default is 65535, which is also the maximum legal value for this option.
-For details see the description of query_port_start.
-.TP
-.B delegation_only=\fIstring\fP;
-\fIAdded by Paul Rombouts\fP: This option specifies a "delegation-only" zone.
-This means that if pdnsd receives a query for a name that is in a
-subdomain of a "delegation-only" zone but the remote name server
-returns an answer with an authority section lacking any NS RRs for
-subdomains of that zone, pdnsd will answer NXDOMAIN (unknown domain).
-This feature can be used for undoing the undesired effects of DNS
-"wildcards". Several "delegation-only" zones may be specified together.
-If you specify root servers in a server section it is
-important that you set root_server=on in such a section.
-.br
-Example:
-
-delegation_only="com","net";
-
-This feature is off by default. It is recommended that you only use
-this feature if you actually need it, because there is a risk that
-some legitimate names will be blocked, especially if the remote
-name servers queried by pdnsd return answers with empty authority
-sections.
-.TP
-.B ipv4_6_prefix=\fIstring\fP;
-This option has the same effect as the \-i command-line option.
-When pdnsd runs in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4 addresses in
-the configuration file (or addresses specified with pdnsd\-ctl)
-to IPv6-mapped addresses.
-The string must be a valid IPv6 address. Only the first 96 bits are used.
-Note that this only effects the parsing of IPv4 addresses listed after this option.
-.br
-The default is "::ffff.0.0.0.0".
-.TP
-.B use_nss=(on|off);
-If this option is turned on, pdnsd will call initgroups() to set up the group access list,
-whenever pdnsd changes its user and group id (see run_as option).
-There is a possible snag, though, if initgroups() uses NSS (Name Service Switch) and
-NSS in turn uses DNS. In such a case you may experience lengthy timeouts and stalls.
-By setting use_nss=off, you can disable the initgroups() call
-(only possible in versions 1.2.5 and later).
-.br
-This option was contributed by Jan-Marek Glogowski.
-.br
-On by default.
-.TP
-.B udpbufsize=\fInumber\fP;
-\fINew in version 1.2.9:\fP
-This option sets the upper limit on the size of UDP DNS messages. The default is 1024.
-.br
-See also the edns_query server option below.
-
-.SS server Section
-Each server section specifies a set of name servers that pdnsd should try to get
-resource records or authoritative name server information from. The servers are
-queried in the order of their appearance (or parallel to a limited extend).
-If one fails, the next one is taken and so on.
-.br
-You probably want to specify the dns server in your LAN, the caching dns servers
-of your internet provider or even a list of root servers in one or more server sections.
-.br
-The supported options in this section are:
-
-.TP
-.B label=\fIstring\fP;
-Specify a label for the server section. This can be used to refer to this section
-when using pdnsd\-ctl, the pdnsd control utility.
-.br
-You can give several server sections the same label, but if you want to change the addresses
-of a server section (see \fBip\fP option below) during run-time with
-"pdnsd\-ctl\ server\ \fIlabel\fP\ up\ \fIdns1\fP,\fIdns2\fP,...",
-the label must be unique.
-.TP
-.B ip=\fIstring\fP;
-Give the IP (the address, \fInot\fP the host name) of the server.
-.br
-Multiple IP addresses can be given per server section.
-This can be done by entering multiple lines of the form ip=\fIstring\fP;
-or a single line like this:
-
-ip=\fIstring\fP,\fIstring\fP,\fIstring\fP;
-
-IP addresses do not have to be specified in the configuration file.
-A server section without IP addresses will remain inactive until it is assigned
-one or more addresses with pdnsd\-ctl,
-the pdnsd control utility.
-.br
-If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses you specify
-here will be skipped with a warning message, unless pdnsd is running in IPv6 mode.
-Thus, unless pdnsd was compiled to startup in IPv6 mode by default, you need to use the
-command-line option \-6 or set run_ipv4=off
-first (see global section) in order to ensure
-that IPv6 addresses are parsed correctly.
-.br
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-it will automatically be mapped to an IPv6 address.
-.TP
-.B file=\fIstring\fP;
-\fINew in version 1.2:\fP This option allows you to give the name of a resolv.conf-style file.
-Of the lines beginning with the nameserver keyword, the second field will be parsed as an
-IP address, as if it were specified with the ip= option. The remaining lines will be ignored.
-If the contents of the file changes while pdnsd is running, you can make pdnsd aware of the changes through the
-use of pdnsd\-ctl, the pdnsd control utility.
-This is usually most conveniently done by placing the command "pdnsd\-ctl\ config" in a script
-that is automatically run whenever the DNS configuration changes.
-.br
-For example, suppose you have a ppp client that writes the DNS configuration for your ISP to the file
-/etc/ppp/resolv.conf and runs the script /etc/ppp/ip-up when a new
-connection is established. One way of ensuring that pdnsd is automatically reconfigured is to
-add a server section in the config file with file=/etc/ppp/resolv.conf and to
-add the command "pdnsd\-ctl\ config" to /etc/ppp/ip-up.
-.TP
-.B port=\fInumber\fP;
-Give the port the remote name server listens on. Default is 53 (the official
-dns port)
-.TP
-.B uptest=(ping|none|if|dev|diald|exec|query);
-Determine the method to check whether the server is available. Currently
-defined methods are:
-.IP
-\(bu \fBping\fP: Send an ICMP_ECHO request to the server. If it doesn't respond
-within the timeout, it is regarded to be unavailable until the next probe.
-.IP
-\(bu \fBnone\fP: The availability status is not changed, only the time stamp is updated.
-.IP
-\(bu \fBif\fP: Check whether the interface (specified in the interface= option) is
-existent, up and running. This currently works for all "ordinary"
-network interfaces, interfaces that disappear when down (e.g. ppp?),
-and additionally for Linux isdn interfaces (as of kernel 2.2). Note that
-you need a /dev/isdninfo device file (major#45, minor#255), or the
-isdn uptest will always fail.
-.IP
-\(bu \fBdev\fP and \fBdiald\fP: Perform an if uptest, and, if that
-was succesful, additionally check whether a program is running that
-has locked a given (modem-) device. The needed parameters are an interface (specified as for the if
-uptest, e.g. "ppp0") and a device relative to /dev (e.g.
-"modem" for /dev/modem specified using the device= option.
-pdnsd will then look for a pid file for the given interface in /var/lock (e.g.
-/var/run/ppp0.pid) and for a lockfile for the given device (e.g. /var/lock/LCK..modem),
-and then test whether the locking process is the process that created the pid file and this process is still
-alive. If this is the case, the normal if uptest is executed for the given interface.
-.br
-The dev option is for pppd dial-on-demand, diald is the same for diald users.
-.IP
-\(bu \fBexec\fP: Executes a given command in the /bin/sh shell
-(as /bin/sh \-c <command>)
-and evaluates the result (the return code of the last command) in the shell's way of handling return codes,
-i.e. 0 indicates success, all other indicate failure. The shell's process name will be
-uptest_sh. The command is given with the uptest_cmd option (see below).
-For secuity issues, also see that entry.
-.IP
-\(bu \fBquery\fP: \fINew in version 1.2:\fP
-This works like the ping test, except it sends an (empty) DNS query to the remote server.
-If the server sends a well-formed response back within the timeout period (except SERVFAIL),
-it will be regarded as available.
-This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
-which unfortunately is quite common these days.
-It can also happen that a remote server is online but ignores empty DNS queries.
-Then you will need the set the query_test_name option (see below).
-In many cases this test will be a more reliable indicator of availability
-than the ones mentioned before.
-
-The default value is \fBnone\fP.
-
-\fBNOTE\fP: If you use on-demand dialing, use none, if,
-dev, diald or exec,
-since ping or query will send packets
-in the specified interval and the interface will thus frequently dial!
-.TP
-.B ping_timeout=\fInumber\fP;
-Sets the timeout for the ping test in tenths of seconds
-(this unit is used for legacy reasons; actually the current implementation is
-only accurate to a second).
-.br
-The default is 600 (one minute).
-.TP
-.B ping_ip=\fIstring\fP;
-The IP address for the ping test. The default is the IP of the name server.
-.TP
-.B query_test_name=\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Sets the name to be queried when using uptest=query availability test.
-If the string is the unquoted constant none,
-an empty query is used (this the default), otherwise a query of type A will be
-sent for the domain name specified here. It is not necessary for the domain name
-to exist or have a record of type A in order for the uptest to succeed.
-.br
-If the the remote server ignores empty queries, you will probably want to set
-query_test_name="." (the root domain).
-.TP
-.B uptest_cmd=\fIstring\fP,\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B uptest_cmd=\fIstring\fP;
-Sets the command for the uptest=exec function to the first string.
-If the second string is given, it specifies a user with whose user
-id and primary group id the command is executed.
-.br
-This is especially useful if you are executing the server as root,
-but do not want the uptest to be performed with root privileges.
-In fact, you should never execute the uptest as root if you can help
-it.
-.br
-If the server is running setuid or setgid, the privileges thus gained
-are attempted to be dropped even before changing identity to the
-specified user to prevent setuid/gid security holes (otherwise, any
-user might execute commands as root if you setuid the executable).
-.br
-\fBNote that this is not always possible, and that pdnsd should never
-be installed as setuid or setgid.\fP
-The command is executed using /bin/sh, so you should be able to use
-shell builtin commands.
-.TP
-.B interval=(\fItimespec\fP|onquery|ontimeout);
-Sets the interval for the server up-test. The default is 900 seconds;
-however, a test is forced when a query times out and the timestamp is reset then.
-.br
-If you specify onquery instead of a timeout, the interface will be
-tested before every query. This is to prevent automatically dialing
-interfaces (diald/pppd or ippp) to dial on dns queries. It is intended to be
-used in connection with an interface-testing uptest ;\-)
-.br
-Note that using uptest=exec, you might run into performance problems
-on slow machines when you use that option.
-DON'T use onquery with uptest=ping or
-uptest=query, as it may cause delays if the server does not answer
-(btw, it doesn't make sense anyway).
-Note also that using onquery is no guarantee that the interface
-will not be used. When another (reachable) dns server tells pdnsd
-to query a third dns server for data, pdnsd will do that and has
-no means of checking whether this will dial up the interface or not.
-This however should be a rare situation.
-.br
-\fINew in version 1.2.3:\fP
-A third possibility is to specify interval=ontimeout.
-In this case the server is not tested at startup/reconfiguration, nor at regular intervals,
-but only after a DNS query to a server times out. Certain types of network problems
-such as a refused connection will also cause the server to be considered unavailable.
-However, once a server is declared dead it is never considered again unless it is revived using a
-pdnsd\-ctl config or server command.
-The idea behind this option is to minimize uptests by assuming all
-servers are available until there is reason to believe otherwise.
-.TP
-.B interface=\fIstring\fP;
-The network interface (or network device, e.g. "eth0") for the uptest=if option.
-Must be specified if uptest=if is given.
-.TP
-.B device=\fIstring\fP;
-The (modem-) device that is used for the dev uptest. If you use this for a dial-on-demand
-ppp uptest (together with uptest=dev), you need to enter the device you are using for your
-pppd here, e.g. modem for /dev/modem.
-.br
-Must be specified if uptest=dev is given.
-.TP
-.B timeout=\fItimespec\fP;
-Set the timeout for the dns query. The default is 120 seconds. You probably want to set this lower.
-.br
-Timeouts specified in the configuration file are only treated as the
-minimum period of time to wait for a reply. A queries to a remote
-server are not canceled until a useful reply has been received, or all
-the other queries have timed out or failed.
-.br
-If you have also set the global timeout option, you may consider setting a fairly small value here.
-See the explanation of the timeout option in the global
-section for what that means.
-.TP
-.B purge_cache=(on|off);
-In every fetched dns record, there is a cache timeout given, which
-specifies how long the fetched data may be cached until it needs to be
-reloaded. If purge_cache is set to off, the stale records are not purged
-(unless the cache size would be exceeded, in this case the oldest records are purged).
-Instead, they are still served if they cannot succesfully be
-updated (e.g. because all servers are down).
-.br
-Default is off.
-.TP
-.B caching=(on|off);
-Specifies if caching shall be performed for this server at all. Default is
-on.
-.TP
-.B lean_query=(on|off);
-Specifies whether to use the "lean" query mode. In this mode, only the
-information actually queried from pdnsd is resolved and cached. This has
-the advantage that usually less cache space is used and the query is
-usually faster. In 90% of the cases, only address (A) records are needed
-anyway. If switched off, pdnsd will always cache all data about a host
-it can find and will specifically ask for all available records
-(well, at least it is a good approximation for what it really does ;\-)
-This will of course increase the answer packet sizes.
-.br
-Some buggy name servers may not deliver CNAME records when not asked for
-all records. I do not know if such servers are around, but if you have
-trouble resolving certain host names, try turning this option off.
-.br
-A last note: If you use multiple pdnsd's that access each other, turning
-this option on is probably a big win.
-.br
-This on by default.
-.TP
-.B edns_query=(on|off);
-\fINew in version 1.2.9:\fP
-Specifies whether to use EDNS (Extension mechanisms for DNS) for outgoing queries.
-Currently this is only useful for allowing UDP message sizes larger than 512 bytes.
-Note that setting this option on can give problems in combination with some legacy
-systems or software, including, embarrassingly enough, previous versions of pdnsd.
-.br
-The default is off, but if your network can handle UDP payloads
-significantly larger than 512 bytes, the recommended value is on.
-.br
-Note that this option only effects outgoing queries. If pdnsd receives a query using
-EDNS, it will reply using EDNS regardless of the value of this option.
-
-See also the udpbufsize option above.
-.TP
-.B scheme=\fIstring\fP;
-You can specify a pcmcia-cs scheme that is used in addition to the uptests. If you specify
-a scheme here, the server this section is for will only be queries if the given scheme
-is active. Shell wildcards (* and ?) are allowed in the string under their special
-meanings. You need to use the scheme_file option on the global
-section to make this option work.
-.TP
-.B preset=(on|off);
-This allows you to specify the initial state of a server before any uptest is performed.
-on specifies that the server is regarded available. The default is on.
-This is especially useful when you set uptest=none; and want to change
-the status of a server only via pdnsd\-ctl.
-.TP
-.B proxy_only=(on|off);
-When this option is set to on, answers given by the servers are always accepted, and no
-other servers (as, for example, specified in the NS records of the query domain) are
-queried. If you do not turn this option on, pdnsd will do such queries in some cases
-(in particular when processing ANY queries).
-.br
-This option is useful when you do not want pdnsd to make connections to outside servers
-for some reasons (e.g. when a firewall is blocking such queries).
-.br
-I recommend that you turn on lean_query when using this option.
-.br
-Default is off.
-.TP
-.B root_server=(on|off|discover);
-Set this option to on if the servers specified in a section are root servers.
-A root server will typically only give the name servers for the top-level domain in its reply.
-Setting root_server=on will cause pdnsd to try to use cached information about
-top-level domains to reduce to number of queries to root servers, making the resolving of
-new names more efficient.
-You can get a list of available root servers by running the command
-"dig\ .\ ns".
-.br
-This option is also necessary if you use the delegation_only option.
-.br
-\fINew in version 1.2.8:\fP This option may also be set to "discover".
-This will cause pdnsd to query the servers provided with the ip= option
-to obtain the full list of root servers. The root-server addresses will replace the addresses
-specified with the ip= option.
-This will only be done once on startup, or after a "pdnsd\-ctl\ config" command.
-In this case the name servers specified with the ip= option don't have to be
-root servers, they just have to know the names and addresses of the root servers.
-After root-server discovery pdnsd will behave just as if root_server=on
-had been specified.
-.br
-Default is off.
-.TP
-.B randomize_servers=(on|off);
-\fINew in version 1.2.6:\fP Set this option to on to give each name server
-in this section an equal chance of being queried. If this option is off, the name servers
-are always queried starting with the first one specified. Even with this option on, the
-query order is not truly random. Only the first server is selected randomly; the following
-ones are queried in consecutive order, wrapping around to the beginning of the list when
-the end is reached. Note that this option only effects the order within a section. The
-servers in the first (active) section are always queried before those in the second one,
-etc.
-.br
- The default is off, but if you are resolving from root servers setting this
-option on is highly recommended. If root_server=on this option also effects
-the query order of the name servers for the top-level domains.
-.TP
-.B reject=\fIstring\fP;
-\fINew in version 1.2.6:\fP This option can be used to make pdnsd reject replies that
-contain certain IP addresses. You can specify a single IP address, which will be matched
-exactly, or a range of addresses using an address/mask pair.
-The mask can be specified as a simple integer, indicating the number of initial 1 bits in
-the mask, or in the usual IP address notation. IP addresses may be either IPv4 or IPv6
-(provided there is sufficient support in the C libraries and support for AAAA records was
-not disabled).
-When addresses in the reject list are compared with those in a reply, only the bits
-corresponding to those set in the netmask are significant, the rest are ignored.
-.br
-Multiple addresses or address/mask pairs may be specified; this can be done by entering
-multiple lines of the form reject=\fIstring\fP;
-or a single line like this:
-
-reject=\fIstring\fP,\fIstring\fP,\fIstring\fP;
-
-How pdnsd reacts when an address in the reply matches one in the reject list,
-depends on the reject_policy option, see below.
-.TP
-.B reject_policy=(fail|negate);
-\fINew in version 1.2.6:\fP
-This option determines what pdnsd does when an address in the reply from a name server
-matches the reject list (see above). If this option is set to
-fail, pdnsd will try another server, or, if there no more servers to try,
-return the answer SERVFAIL. If this option is set to negate, pdnsd will
-immediately return the answer NXDOMAIN (unknown domain) without querying additional
-servers. The fail setting is useful if you don't always trust the servers in
-this section, but do trust the servers in the following section. The negate
-setting can be used to completely censor certain IP addresses. In this case you should put
-the same reject list in every server section, and also set the
-reject_recursively option (see below) to true.
-.br
-The default is fail.
-.TP
-.B reject_recursively=(on|off);
-\fINew in version 1.2.6:\fP Normally pdnsd checks for addresses in the
-reject list (see above) only when the reply comes directly from a name server
-listed in the configuration file. With this option set to on, pdnsd will
-also do this check for name servers that where obtained from NS records in the authority
-section of a previous reply (which was incomplete and non-authoritative).
-.br
-Default is off.
-.TP
-.B policy=(included|excluded|simple_only|fqdn_only);
-pdnsd supports inclusion/exclusion lists for server sections: with include=
-and exclude= (see below) you can specify domain names for which this server
-will be used or will not be used. The first match counts (i.e., the first include or
-exclude rule in a server section that matches a domain name is applied, and the
-search for other rules is terminated). If no rule matched a given domain name,
-the policy= option determines whether this server is used for the
-lookup for that domain name; when included is given, the server will
-be asked, and when excluded is given, it will not.
-If simple_only is given the server will be used if the name to lookup
-is a simple (single-label) domain name, on the other hand if fqdn_only
-is given the server will be used only for names consisting of two or more labels
-(i.e. the name has at least one dot in-between).
-.br
-If no server is available for a queried domain, pdnsd will return an error message
-to the client that usually will stop the client's attempts to resolve a specific
-domain from this server (the libc resolver will e.g. return an error to the application that
-tried to resolve the domain if no other servers are available in the resolv.conf).
-This may be of use sometimes.
-.br
-\fINote\fP: the simple_only and fqdn_only constants
-were added by Paul Rombouts.
-They are useful for controlling which name servers (if any) will be used by
-pdnsd for resolving simple (single-label) host names.
-fqdn_only used to stand for "fully qualified domain name only", but this is
-actually a misnomer. The names in queries received by pdnsd are always considered to be
-fully qualified. If you do not exactly understand what the options simple_only and
-fqdn_only are good for, you are probably better off not using them.
-.br
-The default for this option is included.
-.TP
-.B include=\fIstring\fP;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is queried if this was the first matching rule
-(see also the entry for policy).
-.br
-If the given name starts with a dot, the whole subdomain
-of the given name including the one of that name is matched, e.g. ".foo.bar."
-will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-.br
-If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-will be matched (hint: if you want to include all subdomains, but not the domain of the given
-name itself, place an exact-match exclude rule before the include rule, e.g:
-exclude="foo.bar."; include=".foo.bar.";
-.br
-Previous versions of pdnsd
-required that names given with this and the next option ended in a dot, but since
-version 1.1.8b1-par8, pdnsd automatically adds a dot at the end if it
-is missing.
-.br
-pdnsd now also accepts a more compact notation for adding several "include" entries in
-one line, e.g.:
-
-include=".foo",".bar",".my.dom";
-
-.TP
-.B exclude=\fIstring\fP;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is not queried if this was the first matching rule
-(see also the entry for policy).
-.br
-If the given name starts with a dot, the whole subdomain
-of the given name including the one of that name is matched, e.g. ".foo.bar."
-will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-.br
-If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-will be matched (hint: if you want to exclude all subdomains, but not the domain of the given
-name itself, place an exact-match include rule before the exclude rule, e.g:
-include="foo.bar."; exclude=".foo.bar.";
-.br
-pdnsd now also accepts a more compact notation for adding several "exclude" entries in
-one line, e.g.:
-
-exclude=".foo",".bar",".my.dom";
-
-
-.SS rr Section
-Every rr section specifies a dns resource record that is stored locally. It
-allows you to specify own dns records that are served by pdnsd in a limited way.
-Only A, PTR, CNAME, MX, NS and SOA records are implemented.
-.br
-This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
-and localhost. (and perhaps even one or two hosts) without having to start an
-extra named if your cached name servers do not serve those records.
-It is \fBNOT\fP intended and not capable to work as a full-featured name server.
-
-.TP
-.B name=\fIstring\fP;
-Specifies the name of the resource records, i.e. the domain name of
-the resource the record describes. This option must be specified
-before any a, ptr, cname,
-mx, ns or soa records.
-Names are interpreted as absolute domain names
-(i.e. pdnsd assumes they end in the root domain).
-For this and all following arguments that take domain names, you need to
-specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.br
-\fINew in version 1.2:\fP It is also possible to specify a name starting
-with the label *. Such a name is called a wildcard. The * in a wildcard
-can match one or more labels in a queried name, but only whole labels.
-Any other * characters in a wildcard, apart from the leading one,
-will only match a literal *.
-.br
-For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
-mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
-*a.mydomain will only match itself.
-.br
-Before you can specify an rr section with name=*.mydomain
-you must define some records for mydomain, typically NS and/or SOA records.
-Example:
-.DS L
-
- rr {
- name = mydomain;
- ns = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = *.mydomain;
- a = 192.168.1.10;
- }
-.DE
-
-In this example, www.mydomain and ftp.mydomain will resolve to the numeric
-address 192.168.1.10 (unless you add rr sections explicitly
-specifying different addresses for www.mydomain or ftp.mydomain).
-If you want mydomain also to resolve to a numeric address,
-add an A record to the first rr section.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after this entry.
-This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records for this rr section.
-This means that pdnsd flags the domain record so that records of this domain that are not
-present in the cache are treated as non-existent, i.e. no other servers are queried for
-that record type, and an response containing none of those records is returned. This is
-most time what people want: if you add an A record for a host, and it has no AAAA record
-(thus no IPv6 address), you normally don't want other name servers to be queried for it.
-.br
-This is on by default.
-.br
-Please note that this only has an effect if it precedes the name option!
-.TP
-.B reverse=(on|off);
-\fINew in version 1.2:\fP If you want a locally defined name to resolve to a numeric address
-and vice versa, you can achieve this by setting reverse=on before defining the A record
-(see below). The alternative is to define a separate PTR record, but you will
-probably find this option much more convenient.
-.br
-The default is off.
-.TP
-.B a=\fIstring\fP;
-Defines an A (host address) record. The argument is an IPv4 address in dotted notation.
-pdnsd will serve this address for the host name given in the name option.
-.br
-Provided there is sufficient support in the C libraries and support for AAAA records was not
-disabled, the argument string may also be an IPv6 address, in which case an AAAA record
-will be defined.
-.br
-This option be may used multiple times within an rr section, causing
-multiple addresses to be defined for the name. However, if you put the different addresses
-in different rr sections for the same name, the definition in the last
-rr section will cancel the definitions in the previous ones.
-.TP
-.B ptr=\fIstring\fP;
-Defines a PTR (domain name pointer) record. The argument is a host name in
-dotted notation (see name). The ptr record is for resolving adresses into names. For example, if
-you want the adress 127.0.0.1 to resolve into localhost, and localhost into 127.0.0.1, you need something
-like the following sections:
-.br
-.DS L
-
- rr {
- name = localhost;
- a = 127.0.0.1;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = 1.0.0.127.in-addr.arpa;
- ptr = localhost;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
-.DE
-
-The second section is for reverse resolving and uses the ptr option.
-Note that you can get the same effect by specifying only the first rr section
-with reverse=on.
-.br
-There is something special about the name in the second section:
-when a resolver wants to get a host name from an internet address,
-it composes an address that is built of the IP address in reverse byte order
-(1.0.0.127 instead of 127.0.0.1) where each byte of the adress written
-as number constitutes a sub-domain under the domain in-addr.arpa.
-.br
-So, if you want to compose an adress for reverse resolving, take your ip in dotted notation (e.g. 1.2.3.4),
-reverse the byte order (4.3.2.1) and append in-addr.arpa. (4.3.2.1.in-addr.arpa.)
-Then, define an rr section giving this address as name and the domain name corresponding to
-that ip in the ptr option.
-.TP
-.B cname=\fIstring\fP;
-Defines a CNAME (canonical name) record.
-The argument should be a fully-qualified host name in dotted notation (see name).
-A CNAME is the DNS equivalent of an alias or symbolic link.
-.br
-A useful application for CNAMEs is giving short, easy to remember nicknames to hosts with complicated names.
-For example, you might want the name "news" to refer to your ISP's news server "nntp2.myisp.com".
-Instead of adding an A record for "news" with the same address as "nntp2.myisp.com", you could
-put in a CNAME pointing to "nntp2.myisp.com", so that if the IP address of the news server changes,
-there is no need to update the record for "news".
-.br
-To implement this with pdnsd, you could add the following section to your configuration file:
-.br
-.DS L
-
- rr {
- name = news;
- cname = nntp2.myisp.com;
- owner = localhost;
- }
-.DE
-
-.TP
-.B mx=\fIstring\fP,\fInumber\fP;
-Defines an MX (mail exchange) record. The string is the host name of the mail server in dotted notation (see name).
-The number specifies the preference level.
-.br
-When you send mail to someone, your mail typically goes from your E-mail client to an SMTP server.
-The SMTP server then checks for the MX record of the domain in the E-mail address.
-For example, with joe@xxxxxxxxxxx, it would look for the MX record for example.com and find
-that the name of mail server for that domain is, say, mail.example.com.
-The SMTP server then gets the A record for mail.example.com, and connects to the mail server.
-.br
-If there are multiple MX records, the SMTP server will pick one based on the preference level
-(starting with the lowest preference number, working its way up).
-.br
-Don't define MX records with pdnsd unless you know what you're doing.
-.TP
-.B owner=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B ns=\fIstring\fP;
-Defines an NS (name server) record. Specifies the name of the host which should be authoritative for the records
-you defined in the rr section. This is typically the host pdnsd runs on.
-.br
-\fINote:\fP In previous versions of pdnsd this option had to be specified before
-any a, ptr, cname, mx or soa entries.
-In version 1.2, the restrictions on this option are same as the options just mentioned,
-and it must listed after the name= option.
-This can be a pain if you want to use an old config file which specifies owner=
-before name= (sorry about that).
-Apart from greater consistency, the advantage is that you can now specify as many NS records as you like (including zero).
-.TP
-.B soa=\fIstring\fP,\fIstring\fP,\fInumber\fP,\fItimespec\fP,\fItimespec\fP,\fItimespec\fP,\fItimespec\fP;
-This defines a soa (start of authority) record. The first string is the
-domain name of the server and should be equal to the name you specified as
-owner.
-.br
-The second string specifies the email address of the maintainer of the name
-server. It is also specified as a domain name, so you will have to replace the
-@ sign in the name with a dot (.) to get the name you have to specify here.
-The next parameter (the first number) is the serial number of the record. You
-should increment this number if you change the record.
-.br
-The 4th parameter is the refresh timeout. It specifies after what amount
-of time a caching server should attempt to refresh the cached record.
-.br
-The 5th parameter specifies a time after which a caching server should attempt
-to refresh the record after a refresh failure.
-.br
-The 6th parameter defines the timeout after which a cached record expires if it
-has not been refreshed.
-.br
-The 7th parameter is the ttl that is specified in every rr and should be the
-same as given with the ttl option (if you do not specify a ttl, use the default 86400).
-.TP
-.B txt=\fIstring\fP,...,\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Defines an TXT record. You can specify one or more strings here.
-
-.SS neg Section
-Every neg section specifies a dns resource record or a dns domain that should be
-cached negatively locally. Queries for negatively cached records are always answered
-immediatley with an error or an empty answer without querying other hosts as long
-as the record is valid. The records defined with neg sections remain
-valid until they are explicitely invalidated or deleted by the user using
-pdnsd\-ctl.
-.br
-This is useful if a certain application asks periodically for nonexisting hosts or
-RR types and you do not want a query to go out every time the cached record has
-timed out. Example: Netscape Communicator will ask for the servers news and mail
-on startup if unconfigured. If you do not have a dns search list for your network,
-you can inhibit outgoing queries for these by specifying
-.br
-.DS L
-
- neg {
- name = news;
- types = domain;
- }
- neg {
- name = mail;
- types = domain;
- }
-.DE
-
-in your config file. If you have a search list, you have to repeat that for any
-entry in your search list in addition to the entries given above!
-.br
-In versions 1.1.11 and later, if you negate whole domains this way, all subdomains
-will be negated as well. Thus if you specify
-.br
-neg {name=example.com; types=domain;} in the
-config file, this will also negate www.example.com, xxx.adserver.example.com, etc.
-
-.TP
-.B name=\fIstring\fP;
-Specifies the name of the domain for which negative cache entries are created.
-This option must be specified before the types option.
-Names are interpreted as absolute domain names (i.e. pdnsd
-assumes they end in the root domain).
-You need to specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after this entry.
-This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B types=(domain|\fIrr_type\fP[,\fIrr_type\fP[,\fIrr_type\fP[,...]]]);
-Specifies what is to be cached negatively: domain will cache the whole
-domain negatively; alternatively, you can specify a comma-separated list of RR types
-which are to be cached negatively. You may specify multiple types options, but
-domain and the RR types are mutually exclusive.
-.br
-The RR types are specified using their official names from the RFC's in capitals,
-e.g. A, CNAME, NS, PTR, MX,
-AAAA, ...
-.br
-The command pdnsd\-ctl\ list\-rrtypes will give you a complete list
-of those types. pdnsd\-ctl is built along with pdnsd
-and will be installed in the same directory as the pdnsd binary during make install.
-
-.SS source Section
-Every source section allows you to let pdnsd read the records from a file in an
-/etc/hosts-like format. pdnsd will generate records to resolve the entries
-address from its host name and vice versa for every entry in the file. This is
-normally easier than defining an rr for every of your addresses, since localhost
-and your other FQDNs are normally given in /etc/hosts.
-.br
-The accepted format is as follows: The #\-sign initiates a comment, the rest of
-the line from the first occurence of this character on is ignored. Empty lines
-are tolerated.
-.br
-The first entry on a line (predeceded by an arbitrary number of tabs and spaces)
-is the IP in dotted notation, the second entry on one line (separated by the
-first by an arbitrary number of tabs and spaces) is the FQDN (fully qualified
-domain name) for that ip. The rest of the line is ignored by default (in the original
-/etc/hosts, it may contain information not needed by pdnsd).
-
-.TP
-.B owner=\fIstring\fP;
-Specifies the name of the host pdnsd runs on and that are specified in dns
-answers (specifically, nameserver records).
-Must be specified before any file entries.
-.br
-Names are interpreted as absolute domain names (i.e. pdnsd
-assumes they end in the root domain).
-You need to specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B file=\fIstring\fP;
-The string specifies a file name. For every file entry in a source section,
-pdnsd will try to load the given file as described above. Failure is indicated
-only when the file cannot be opened, malformed entries will be ignored.
-.TP
-.B serve_aliases=(on|off);
-If this is turned on pdnsd will serve the aliases given in a hosts-style file.
-These are the third entry in a line of a hosts-style file, which usually give a "short name" for the host.
-This may be used to support broken clients without a proper domain-search option.
-If no aliases are given in a line of the file, pdnsd behaves as without this option for this line.
-.br
-This feature was suggested by Bert Frederiks.
-.br
-It is off by default.
-.TP
-.B authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records with the data from the hosts file.
-Please see the description of the option of the same name in the rr section for a closer description of
-what this means. Please note that this only has an effect for files sourced with file options
-subsequent to this option.
-.br
-This is on by default.
-
-.SS include Section
-A configuration file may include other configuration files.
-However, only the top-level configuration file may contain global
-and server sections,
-thus include files are effectively limited to sections that add local definitions to the cache.
-.br
-Include sections currently only have one type of option, which may be given multiple times within a single section.
-
-.TP
-.B file=\fIstring\fP;
-The string specifies a file name. For every file option in an include section,
-pdnsd will parse the given file as described above. The file may contain include sections itself,
-but as a precaution pdnsd checks that a certain maximum depth is not exceeded to guard against
-the possibility of infinite recursion.
-
-.SH "VERSION"
-.PP
-This man page is correct for version @fullversion@ of pdnsd.
-.SH "SEE ALSO"
-.PP
-.BR pdnsd (8),
-.BR pdnsd\-ctl (8)
-.PP
-More documentation is available in the \fBdoc/\fP subdirectory of the source,
-or in \fB/usr/share/doc/pdnsd/\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\fBpdnsd\fP was originally written by Thomas Moestl
-.UR
-<tmoestl@xxxxxxx>
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts@xxxxxxx>
-.UE
-(for versions 1.1.8b1\-par and later).
-.PP
-Several others have contributed to \fBpdnsd\fP; see files in the source or
-\fB/usr/share/doc/pdnsd/\fP directory.
-.PP
-This man page was automatically generated from the html documentation for \fBpdnsd\fP,
-using a customized Perl script written by Paul A. Rombouts.
-.PP
-Last revised: 19 April 2012 by Paul A. Rombouts
diff --git a/jni/pdnsd/doc/pdnsd.conf.in b/jni/pdnsd/doc/pdnsd.conf.in
deleted file mode 100644
index e348eb0..0000000
--- a/jni/pdnsd/doc/pdnsd.conf.in
+++ /dev/null
@@ -1,143 +0,0 @@
-// Sample pdnsd configuration file. Must be customized to obtain a working pdnsd setup!
-// Read the pdnsd.conf(5) manpage for an explanation of the options.
-// Add or remove '#' in front of options you want to disable or enable, respectively.
-// Remove '/*' and '*/' to enable complete sections.
-
-global {
- perm_cache=1024;
- cache_dir="@cachedir@";
-# pid_file = /var/run/pdnsd.pid;
- run_as="@def_id@";
- server_ip = 127.0.0.1; # Use eth0 here if you want to allow other
- # machines on your network to query pdnsd.
- status_ctl = on;
-# paranoid=on; # This option reduces the chance of cache poisoning
- # but may make pdnsd less efficient, unfortunately.
- query_method=udp_tcp;
- min_ttl=15m; # Retain cached entries at least 15 minutes.
- max_ttl=1w; # One week.
- timeout=10; # Global timeout option (10 seconds).
- neg_domain_pol=on;
- udpbufsize=1024; # Upper limit on the size of UDP messages.
-}
-
-# The following section is most appropriate if you have a fixed connection to
-# the Internet and an ISP which provides good DNS servers.
-server {
- label= "myisp";
- ip = 192.168.0.1; # Put your ISP's DNS-server address(es) here.
-# proxy_only=on; # Do not query any name servers beside your ISP's.
- # This may be necessary if you are behind some
- # kind of firewall and cannot receive replies
- # from outside name servers.
- timeout=4; # Server timeout; this may be much shorter
- # that the global timeout option.
- uptest=if; # Test if the network interface is active.
- interface=eth0; # The name of the interface to check.
- interval=10m; # Check every 10 minutes.
- purge_cache=off; # Keep stale cache entries in case the ISP's
- # DNS servers go offline.
- edns_query=yes; # Use EDNS for outgoing queries to allow UDP messages
- # larger than 512 bytes. May cause trouble with some
- # legacy systems.
-# exclude=.thepiratebay.org, # If your ISP censors certain names, you may
-# .thepiratebay.se, # want to exclude them here, and provide an
-# .piratebay.org, # alternative server section below that will
-# .piratebay.se; # successfully resolve the names.
-}
-
-/*
-# The following section is more appropriate for dial-up connections.
-# Read about how to use pdnsd-ctl for dynamic configuration in the documentation.
-server {
- label= "dialup";
- file = "/etc/ppp/resolv.conf"; # Preferably do not use /etc/resolv.conf
- proxy_only=on;
- timeout=4;
- uptest=if;
- interface = ppp0;
- interval=10; # Check the interface every 10 seconds.
- purge_cache=off;
- preset=off;
-}
-*/
-
-/*
-# The servers provided by OpenDNS are fast, but they do not reply with
-# NXDOMAIN for non-existant domains, instead they supply you with an
-# address of one of their search engines. They also lie about the addresses of
-# of the search engines of google, microsoft and yahoo.
-# If you do not like this behaviour the "reject" option may be useful.
-server {
- label = "opendns";
- ip = 208.67.222.222, 208.67.220.220;
- reject = 208.69.32.0/24, # You may need to add additional address ranges
- 208.69.34.0/24, # here if the addresses of their search engines
- 208.67.219.0/24; # change.
- reject_policy = fail; # If you do not provide any alternative server
- # sections, like the following root-server
- # example, "negate" may be more appropriate here.
- timeout = 4;
- uptest = ping; # Test availability using ICMP echo requests.
- ping_timeout = 100; # ping test will time out after 10 seconds.
- interval = 15m; # Test every 15 minutes.
- preset = off;
-}
-*/
-
-/*
-# This section is meant for resolving from root servers.
-server {
- label = "root-servers";
- root_server = discover; # Query the name servers listed below
- # to obtain a full list of root servers.
- randomize_servers = on; # Give every root server an equal chance
- # of being queried.
- ip = 198.41.0.4, # This list will be expanded to the full
- 192.228.79.201; # list on start up.
- timeout = 5;
- uptest = query; # Test availability using empty DNS queries.
-# query_test_name = .; # To be used if remote servers ignore empty queries.
- interval = 30m; # Test every half hour.
- ping_timeout = 300; # Test should time out after 30 seconds.
- purge_cache = off;
-# edns_query = yes; # Use EDNS for outgoing queries to allow UDP messages
- # larger than 512 bytes. May cause trouble with some
- # legacy systems.
- exclude = .localdomain;
- policy = included;
- preset = off;
-}
-*/
-
-source {
- owner=localhost;
-# serve_aliases=on;
- file="/etc/hosts";
-}
-
-/*
-include {file="/etc/pdnsd.include";} # Read additional definitions from /etc/pdnsd.include.
-*/
-
-rr {
- name=localhost;
- reverse=on;
- a=127.0.0.1;
- owner=localhost;
- soa=localhost,root.localhost,42,86400,900,86400,86400;
-}
-
-/*
-neg {
- name=doubleclick.net;
- types=domain; # This will also block xxx.doubleclick.net, etc.
-}
-*/
-
-/*
-neg {
- name=bad.server.com; # Badly behaved server you don't want to connect to.
- types=A,AAAA;
-}
-*/
diff --git a/jni/pdnsd/doc/txt/doc_makefile b/jni/pdnsd/doc/txt/doc_makefile
deleted file mode 100644
index 57aa7c1..0000000
--- a/jni/pdnsd/doc/txt/doc_makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Makefile for converting pdnsd html documentation to text files.
-# This file was based on a Makefile originally written by Thomas Moestl
-# and adapted by Paul Rombouts.
-
-
-HTML2TXT=w3m -dump -cols 80 -T text/html
-
-doc: intro.txt manual.txt faq.txt
-.PHONY: doc clean
-
-intro.txt: ../html/index.html
- sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/index.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > intro.txt
-
-manual.txt: ../html/doc.html
- sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/doc.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > manual.txt
-
-faq.txt: ../html/faq.html
- sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/faq.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > faq.txt
-
-clean:
- @rm -fv intro.txt manual.txt faq.txt
diff --git a/jni/pdnsd/doc/txt/faq.txt b/jni/pdnsd/doc/txt/faq.txt
deleted file mode 100644
index 0263161..0000000
--- a/jni/pdnsd/doc/txt/faq.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-The pdnsd FAQ
-
-Q: There are complete and well-tested name servers around, such as the BIND.
- These do also perform caching. Why should I use pdnsd?
-
- pdnsd does not aim to be a complete name server implementation, such as the
- BIND. It is optimized for caching, and you can only specify a small subset
- of all dns record types pdnsd knows in your local "zone" definitions. This
- of course reduces the code size drastically, and such the memory footprint.
- There are some features especially interesting for dialin networks,
- ordinary (non-server) internet hosts and computers that are often not
- connected to to their network, e.g. notebooks (I originally wrote this
- program for use with my notebook). These features are:
-A:
- * permanent disk cache (useful for frequent power-offs/reboots)
- * usually smaller memory footprint (depends on cache size) (see next
- question)
- * offline-detection prevents hangs (e.g. the typical hang on startup of
- some Netscape Navigator versions if not dialled in)
- * better control about timeouts (also to prevent hangs)
- * better control over the cache
- * better run-time control
-
--------------------------------------------------------------------------------
-
- When I look at the process size with ps, top, gtop, or a similar tool, I
-Q: see some processes with a total size well above 3.5 MB. This is much more
- than e.g. BIND named (about 1.4 MB). Why?
-
- Really, it is not. pdnsd uses multithreading, not multiprocessing. That
- means that the processes share most of their process space. In the
- LinuxThreads library or NPTL (Native Posix Thread Libary), which are used
- by pdnsd on Linux, in fact the total process address space is shared
-A: (although the processes have different stacks, these are in one process
- address space). You may check this by looking at the at the process sizes
- of the pdnsd threads: all should be the same. The effective size that pdnsd
- occupies is thus the size of any of the processes, not the sum of those.
- So, pdnsd with empty cache occupies about 800 kB, and the maximum size
- should be about the cache size plus this size (in fact, ca 5-10% more).
-
--------------------------------------------------------------------------------
-
-Q: What do I need the status control (option -s) for?
-
- It enables you to do some things you might or might not need. With it, you
- can:
-
- * query pdnsd's settings at runtime to debug configuration files and see
- which servers are regarded to be available
-A: * mark servers as available or unavailable, or force a status retest -
- very handy if you want to control which servers pdnsd queries, e.g for
- muliple dial-up accounts
- * delete, invalidate or add DNS records - useful e.g. when you want to
- build records for dynamically assigned IP addresses or domain names
- * reload pdnsd's configuration file without restarting pdnsd
- * print information about the contents of pdnsd's cache.
-
--------------------------------------------------------------------------------
-
-Q: What do I need local records (rr- and source-sections in the config file)
- for?
-
- Some resolver programs, e.g. nslookup, want to look up the name of the
- server they are using before doing anything else. This option is for
- defining a PTR record for your IP such that those programs get an answer
- even if the name server you are caching is not available or does not offer
- these records. By extension, you may also define A and SOA records. This
- allows you to build very small zones without having to use a "big" name
- server. It is NOT intended to replace such a complete server in anything
- but VERY small networks. Alternatively, you may start a named on another
- host or on the same host on another port and cache it with pdnsd in
- addition to other (more distant) name servers.
-A: The source section allows you to let pdnsd read in your /etc/hosts file on
- startup and serve its contents. This file is used by your local resolver
- before it even tries the name servers and usually contains fully-qualified
- domain names (FQDNs) for all of the internet addresses your host has. If
- you source this file, you usually won't need any additional rr sections.
- Sourcing it also allows other hosts (eg. in your local network) to access
- the names defined in your hosts file. You can of course just add other
- hosts in your local network to the servers hosts file, thus making them
- known to your server's resolver and pdnsd (if you sourced that file).
- If you don't know what this answer was all about, you should just take the
- source section in the sample config file that comes with pdnsd, copy it
- into your config file and forget about it.
-
--------------------------------------------------------------------------------
-
- When compiling, I get an error message like
-Q: Please define __BYTE_ORDER to be __LITTLE_ENDIAN or __BIG_ENDIAN
- What's up?
-
- Normally, this macros should be defined in your C library's header files.
- There are two different methods, most C libraries support both (and pdnsd
- honors both): either __BYTE_ORDER is set to __LITTLE_ENDIAN or
- __BIG_ENDIAN, or __LITTLE_ENDIAN or __BIG_ENDIAN are directly defined as
- macros.
- Linux glibc, for example, does set those macros correctly. Never mind. You
- just have to know whether your machine is little-endian or big-endian, this
- means wheter your machine saves the least significant byte of a word or
- double-word first in memory (little-endian) or the most significant first
-A: (big-endian). All intel x86 and Alpha machines are little-endian, for
- example, while SPARC and PowerPC architectures are big-endian. If your
- machine is little-endian, add the following line to your config.h:
- #define __BYTE_ORDER __LITTLE_ENDIAN
- Likewise, if your machines byte order is big-endian:
- #define __BYTE_ORDER __BIG_ENDIAN
- Pathological byte orders like pdp-endian are not yet supported really;
- However, for the place the endianess is needed, __LITTLE_ENDIAN should do
- (it deals only with 16 bits; for all other occurances, ntoh[sl]/hton[sl] is
- used).
-
--------------------------------------------------------------------------------
-
- At startup, I get a warning saying:
-Q: Uptest command [...] will implicitly be executed as root
- What does that mean?
-
- This warning only occurs if you use the uptest=exec option in your
- configuration. It means that the uptest command is run as root because
- pdnsd is running as root, and this was not explicitely specified. The idea
- is that it may introduce security holes (in the programs being run) when
-A: they run as root, and so they shouldn't do that if possible. You can
- specify the user that shall run the command by appending its name
- comma-separated as string to the uptest_cmd line:
- uptest_cmd="<your command>","<user>";
- If it is correctly running as root, just append the user string "root" to
- the command and the warning will not occur again.
-
--------------------------------------------------------------------------------
-
-Q: I cannot run my uptest_cmd command as root (it says permission denied),
- although the pdnsd executable is setuid root. Why?
-
- pdnsd will drop privileges gained through setuid/setgid before executing
- the uptest commands (you shouldn't set the pdnsd executable setuid/setgid
-A: anyway). The reason is clear: if you install the pdnsd executable as setuid
- root and this wouln't be done, any user could execute shellcode with root
- privileges using that option!
-
--------------------------------------------------------------------------------
-
- At startup, I get an error saying:
-Q: Bad config file permissions: the file must be only writeable by the user
- Why is that?
-
- pdnsd has an option (uptest=exec) that allows the execution of arbitrary
- shell code (for testing whether an interface is up). This must be of course
- secured against unauthorized use. One of these protection is the one that
- produces the error message: if you routinely run pdnsd, e.g. at system
- startup, and your config file is editable for others, someone could change
-A: it and insert shell code that is executed in the next pdnsd run -- with
- your user privileges! To prevent this, pdnsd will exit if the config file
- is writeable by others than the owner. To get rid of this message, just do
- chmod go-w <filename>
- on your config file (for the default file: chmod go-w /etc/pdnsd.conf). You
- should also check that the ownership is set correct.
-
--------------------------------------------------------------------------------
-
-Q: serve_aliases does not seem to work.
-
- Some resolvers (e.g. of the glibc 2.1) seem sometimes not to look up
- unmodified names, but the names with an entry of the search path already
-A: appended. Since pdnsd will serve short names with this option anyway, you
- can delete the search an domain options from your /etc/resolv.conf. This is
- reported to work in some cases.
-
--------------------------------------------------------------------------------
-
-Q: Some queries for domains that have many records (e.g. www.gmx.de) fail
- mysteriously.
-
- pdnsd versions prior to 1.1.0 had the tcp server thread disabled by
- default. Most resolvers repeat their query using tcp when they receive a
-A: truncated answer (the answer is truncated when it exceeds a length of 512
- bytes). You need to recompile pdnsd with the option --enable-tcp-server to
- fix this.
-
--------------------------------------------------------------------------------
-
- I am behind some kind of firewall. In the configuration file I have only
-Q: listed addresses of name servers on the local (ISP's) network, but pdnsd is
- slow and DNS queries frequently time out.
-
- In some cases pdnsd will not consider the answer of the local name server
- authoritative enough, and will try to get answers from the name servers
- listed in the authority section of the reply message. If pdnsd is behind a
- firewall that blocks the UDP reply packets from remote name servers, pdnsd
- will wait in vain for a reply. One solution is to set proxy_only=on in the
-A: servers sections of the configuration file. This will prevent pdnsd from
- querying name servers that are not listed in the configuration file.
- Another solution that can be tried is specifying query_method=tcp_only in
- the global section of the configuration file, because a firewall that
- blocks UDP packets from outside might still allow outgoing TCP connections
- to port 53.
-
--------------------------------------------------------------------------------
-
-Q: Is pdnsd vulnerable to DNS cache poisoning as described in CERT
- vulnerability note VU#800113?
-
- Short answer: Yes.
- Somewhat longer answer: The problem is not so much that pdnsd's
- implementation is flawed but rather that the DNS protocol currently being
- used is fundamentally flawed from a security viewpoint. As long as a more
- secure protocol is not in place, all that the developers of pdnsd can do is
- to try to tweak the current implementation to make it as difficult as
- possible for an attacker to succeed.
- From version 1.2.7 onwards, the default for the query_port_start option is
-A: 1024, which means that the pdnsd resolver will randomly select source ports
- in the range 1024-65535. (In previous versions the default was to let the
- kernel select the source ports, which will often result in a more or less
- predictable sequence of ports.) It also helps to use a good quality source
- of random numbers. On platforms where this is supported, it is preferable
- to configure with --with-random-device=/dev/urandom. There is still more
- that can be done to make pdnsd less vulnerable, but this remains (as of
- this writing) a work in progress.
- Please note that pdnsd was designed for small (private) networks, and that
- it is generally not recommended to let untrusted users access pdnsd.
-
--------------------------------------------------------------------------------
-
-Thomas Moestl and Paul Rombouts
-
-
-Last revised: 18 August 2008 by Paul Rombouts
-
diff --git a/jni/pdnsd/doc/txt/intro.txt b/jni/pdnsd/doc/txt/intro.txt
deleted file mode 100644
index db1c89e..0000000
--- a/jni/pdnsd/doc/txt/intro.txt
+++ /dev/null
@@ -1,305 +0,0 @@
--------------------------------------------------------------------------------
-
-About pdnsd
-
-pdnsd is a proxy DNS server with permanent caching (the cache contents are
-written to hard disk on exit) that is designed to cope with unreachable or down
-DNS servers (for example in dial-in networking).
-Since version 1.1.0, pdnsd supports negative caching.
-
-It is licensed under the GNU General Public License (GPL). This, in short,
-means that the sources are distributed togehter with the program, and that you
-are free to modify the sources and redistribute them as long as you also
-license them under the GPL. You do not need to pay anything for pdnsd. It also
-means that there is ABSOLUTELY NO WARRANTY for pdnsd or any part of it. For
-details, please read the GPL.
-
-pdnsd can be used with applications that do DNS lookups, e.g. on startup, and
-can't be configured to change that behaviour, to prevent the often minute-long
-hangs (or even crashes) that result from stalled DNS queries. Some Netscape
-Navigator versions for Unix, for example, expose this behaviour.
-
-pdnsd is configurable via a file and supports run-time configuration using the
-program pdnsd-ctl that comes with pdnsd. This allows you to set the status
-flags of servers that pdnsd knows (to influence which servers pdnsd will
-query), and the addition, deletion and invalidation of DNS records in pdnsd's
-cache.
-Parallel name server queries are supported. This is a technique that allows
-querying several servers at the same time so that very slow or unavailable
-servers will not block the answer for one timeout interval.
-Since version 1.0.0, pdnsd has full IPv6 support.
-
-There is also a limited support for local zone records, intended for defining
-1.0.0.127.in-addr.arpa. and localhost. , since some clients request that
-information and it must be served even if the cached servers are not available
-or do not serve these records. pdnsd may also read your /etc/hosts file (this
-file is normally used by your local resolver and usually contains information
-for localhost as well as for your machines FQDN) and serve its contents.
-
-pdnsd was started on Linux, and has since been ported to FreeBSD (and Cygwin
-and Darwin). 90% of the source code should be easily portable to POSIX- and
-BSD-compatible systems, provided that those systems support the POSIX threads
-(pthreads). The rest might need OS-specific rewrites.
-
-Currently, pdnsd is only compileable by gcc. This should be easy to fix, but I
-just do not have documentation for other compilers. If you are not able or do
-not want to use gcc, I would recommend you just try to do the minor changes.
-
-pdnsd must be started as root in some cases (raw sockets are needed for icmp
-echoes for the option uptest=ping, and the default port is 53, this must be >
-1024 to allow non-root execution). However, pdnsd can be configured to change
-it's user and group id to those of a non-privileged user after opening the
-sockets needed for this.
-
-The server should support the full standard DNS queries following the rfcs 1034
-and 1035. As of version 1.0.0, the rfc compliance has been improved again, and
-pdnsd is now believed (or hoped?) to be fully rfc-compatible. It completely
-follows rfc 2181 (except for one minor issue in the FreeBSD port, see the
-documentation). It does not support the following features, of which most are
-marked optional, experimental or obsolete in these rfcs:
-
- * Inverse queries
- * Status queries
- * Completion queries
- * Namespaces other than IN (Internet)
- * AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain
- zones, that should not violate the standard
-
-The following record types, that are extensions to the original DNS standard,
-are supported for caching since version 1.2.9 (if you do not need most of them,
-you can disable runtime support for the unneeded ones before compiling pdnsd
-and save a little cache and executable space, see the source file src/
-rr_types.in):
-
- * RP (responsible person, RFC 1183)
- * AFSDB (AFS database location, RFC 1183)
- * X25 (X25 address, RFC 1183)
- * ISDN (ISDN number/address, RFC 1183)
- * RT (route through, RFC 1183)
- * NSAP (Network Service Access Protocol address , RFC 1348)
- * PX (X.400/RFC822 mapping information, RFC 1995)
- * GPOS (geographic position, deprecated)
- * AAAA (IPv6 address, RFC 1886)
- * LOC (location, RFC 1876)
- * EID (Nimrod EID)
- * NIMLOC (Nimrod locator)
- * SRV (service record, RFC 2782)
- * ATMA (ATM address)
- * NAPTR (URI mapping, RFC 2168)
- * KX (key exchange, RFC 2230)
- * CERT (Certificate record, RFC 4398)
- * DS (Delegation Signer, RFC 4034)
- * RRSIG (Resource Record Signature, RFC 4034)
- * NSEC (Next Secure, RFC 4034)
- * DNSKEY (record containing the public key for a zone, RFC 4034)
- * NSEC3 (Next Secure version 3, RFC 5155)
- * NSEC3PARAM (NSEC3 parameters, RFC 5155)
-
-Note: This list is incomplete. For the complete list see the source file src/
-rr_types.in.
-
-There are FreeBSD and OpenBSD ports available for pdnsd (ports/net/pdnsd for
-both). Thanks go to Roman Shterenzon for the FreeBSD port Sebastian Stark for
-the OpenBSD one! Thanks to Kiyo Kelvin Lee now also runs on the Cygwin
-platform! Thanks goes to Rodney Brown for extending portability to the Darwin
-(Apple Mac OS X) platform!
-
-If you have questions left, you should take a look into the FAQ.
-Bugfixes, patches and compatability fixes for other OSs are very welcome!
-
-Features in detail
-
-This section describes some of pdnsds features in detail. Most of the options
-are set in the config file. For more information on the configuration file, see
-the documenation page.
-
-
-Uptests
-
-pdnsd provides several methods to test whether a remote DNS server should be
-regarded as available (so that pdnsd can query it), in addition to the obvious
-"none" test (the server is always regarded as available, or availability is set
-on or off using the pdnsd-ctl utility). These tests are:
-
- * ping: a given adress is ping'ed in a given interval. If it there is no
- response or the host is unreachable, the server is seen to be not available
- (for those who don't know: pinging is sending a certain Internet packet
- type to a host to which any standard-conformant host is required to reply).
- * if: a given network interface is tested whether it is existent, up and
- running. If it is not, the server is regarded to be not available. This is
- especially useful for ppp and similar interfaces. A special case test for
- Linux isdn (ippp*) interfaces is integrated, so that the uptests should
- also work for these.
- * dev: this is a variant of the if uptest for use with Linux dial-on-demand
- ppp interfaces. In addition to performing an if-style interface uptest, it
- also tests whether a specified program (e.g. pppd) owns a lock to a given
- (modem-) device.
- * exec: a given shell command line is executed and the exit status of the
- whole command line (which is normally the exit status of the last command)
- is evaluated. If it is not zero, the server is regarded to be not
- available. This is a very flexible testing method with which it should be
- able to perform virtually any needed test.
- * query: New in version 1.2: This works like the ping test, except it sends
- an (empty) DNS query to the remote server. If the server sends a
- well-formed response back within the timeout period (except SERVFAIL), it
- will be regarded as available. This test is useful if a remote server does
- not respond to ICMP_ECHO requests at all, which unfortunately is quite
- common these days. In many cases this test will be a more reliable
- indicator of availability than the ones mentioned above.
-
-
-Local Records ("Zones")
-
-As mentioned above, there are only very basic local record types (ie the record
-types that you may use in record declarations in your local configuration for
-records that pdnsd shall serve in addion to the cached ones). They are
-organized roughly in zones but have not complete zone declarations, so I
-generally do not use the term "zone" for them, but rather "local records".
-These are the local record types pdnsd can understand:
-
- * SOA (information about the name server)
- * A (domain-name-to-address mapping)
- * PTR (pointer, used normally for address-to-domain-name mapping)
- * NS (name server, generated automatically by pdnsd for any local record set)
- * CNAME (canonical host name)
- * MX (mail exchange for the domain)
- * TXT (arbitrary text strings, often used for Sender Policy Framework)
-
-You can specify these records in the configuration file.
-You may "source" a file in a format like that used in the /etc/hosts file, that
-means that pdnsd reads this file, extracts addresses and domain names from it
-and automatically generates A records for name to address mapping, PTR records
-for address to name mapping and NS records (name server specifiation) for each
-entry in the file.
-Records can also be changed dynamically at run time.
-A script contributed by Marko Stolle makes pdnsd usable in a DHCP setup using
-this feature.
-
-System requirements
-
-As mentioned, pdnsd currently runs under Linux, FreeBSD and Cygwin. Other BSD
-flavours may or may not work (feedback is very welcome!). The system and
-software requirements under Linux are:
-
- * Kernel version >2.2.0
- * glibc version >2.0.1 (aka libc6) with LinuxThreads (normally included) or
- NPTL (Native Posix Thread Library, recommended).
- Due to a bug, pdnsd 0.9.8 does not run with glibc2.1.1. This behaviour was
- fixed in pdnsd 0.9.9.
- * For IPv6: glibc>=2.1
-
-The system requirements under FreeBSD are:
-
- * FreeBSD versions >=2.6 (prior ones may or may not work)
- * For IPv6: FreeBSD >=4.0 is recommended (no idea if it runs on prior
- versions)
-
-The common software requirements for all supported systems are:
-
- * GCC, preferably egcs-2.* or 3.* (other compilers are currently not
- supported; the needed patch for another compiler should not be difficult,
- however)
- * GNU or BSD make
- * the standard commands install, grep, sed, awk, touch and which (along with
- the REALLY standard ones mv, cp, ln, rm, pwd, test, echo, cat, mkdir,
- chown, chmod, tar). In any standard Unix installation, this should be no
- problem.
- * for hacking and building own packages, you might also need gzip, bzip2,
- perl and rpmbuild
-
-
-Download
-
-If you want to download pdnsd, please visit the download page.
-
-Authors
-
-pdnsd was originally written by Thomas Moestl, but is no longer maintained by
-him. Paul A. Rombouts has revised large portions of the code and has added a
-number of new features. See README.par and the ChangeLog in the source
-directory (or /usr/share/doc/pdnsd-<version> if you have installed a binary
-package) for more details. If you have questions about the recent
-modifications, you can find the email address of the current maintainer at the
-end of README.par.
-
-Daniel Smolik has contributed RedHat RPMs (the most recent RPMs are available
-here).
-Torben Janssen contributed start scripts for Red Hat Linux.
-Soenke J. Peters contributed patches and suggestions for Red Hat compatability.
-Wolfgang Ocker has contributed the code and documentation for the server_ip
-option.
-Markus Mohr contributed a Debian rc script.
-Nikita V. Youschenko contributed extensions to the "if" uptest.
-Lyonel Vincent extended the serve_aliases option to support an arbitrary number
-of aliases.
-Sourav K. Mandal wrote the autoconf scripts and contributed many fixes and
-suggestions.
-Stephan Boettcher contributed the SCHEME= option.
-Ron Yorston contributed the uptest for Linux ppp dial-on-demand devices.
-Alexandre Nunes fixed some bugs in the autoconf files.
-Sverker Wiberg contributed fixes for IPv6.
-Carsten Block contributed configure-able rc scripts.
-Olaf Kirch contributed a security fix for the run_as code.
-Paul Wagland contributed various patches for bind9-compatability and other
-issues.
-Roman Shterenzon contributed patches and lots of helpful hints for FreeBSD
-compatability.
-Bernd Leibing has contributed spec file fixes.
-Michael Wiedmann has contributed the pdnsd-ctl.8 man page.
-Marko Stolle has contributed the contrib/pdnsd_update.pl script that makes
-pdnsd usable in a DHCP setup.
-P.J. Bostley has contributed patches to get pdnsd working on alpha properly.
-Christian Engstler contributed patches for SuSE compatability.
-Bjoern Fischer contributed code to make pdnsd leave the case of names in the
-cache unchanged.
-Marko Stolle contributed the contrib/pdnsd_update.pl script that makes pdnsd
-usable in a DHCP setup.
-Andrew M. Bishop contributed the support for the label server option and the
-pdnsd-ctl interface for using it.
-Frank Elsner contributed rc script fixes.
-Andreas Steinmetz contributed the code for query_port_start and query_port_end
-options.
-Mahesh T. Pai contributed the pdnsd.8 man page.
-Nikola Kotur contributed the Slackware start-up script.
-Kiyo Kelvin Lee contributed a patch for Cygwin support.
-Rodney Brown contributed a patch for Darwin (Apple Mac OS X) support.
-Jan-Marek Glogowski contributed a patch implementing the use_nss option.
-
-Special thanks to Bert Frederiks for letting me do a late-night debugging run
-on his machine to spot obscure bugs!
-
-Thanks to the following persons for reporting bugs and being helpful:
-David G. Andersen,
-Dirk Armbrust,
-Daniel Black,
-Kevin A. Burton,
-Juliusz Chroboczek,
-Joachim Dorner,
-Stefan Erhardt,
-Stefan F?rster,
-Mike Hammer,
-Jonathan Hudson,
-Dan Jacobson,
-Byrial Jensen,
-Patrick Loschmidt,
-James MacLean,
-Fraser McCrossan,
-Michael M?ller,
-Erich Reitz,
-Brian Schroeder,
-Milan P. Stanic,
-Michael Steiner,
-Norbert Steinl,
-Markus Storm,
-Michael Str?der,
-Alan Swanson,
-Eelco Vriezekolk.
-
-
--------------------------------------------------------------------------------
-
-Thomas Moestl and Paul A. Rombouts
-
-
-Last revised: 17 March 2012 by Paul A. Rombouts
-
diff --git a/jni/pdnsd/doc/txt/manual.txt b/jni/pdnsd/doc/txt/manual.txt
deleted file mode 100644
index c7e3e9d..0000000
--- a/jni/pdnsd/doc/txt/manual.txt
+++ /dev/null
@@ -1,2017 +0,0 @@
- pdnsd Documentation
-
-This is the "official" pdnsd documentation and reference written by Thomas
-Moestl with revisions by Paul A. Rombouts.
-This manual is a part of the pdnsd package, and may be distributed in original
-or modified form under terms of the GNU General Public License, as published by
-the Free Software Foundation; either version 3, or (at your option) any later
-version.
-You can find a copy of the GNU GPL in the file COPYING in the source or
-documentation directory.
-This manual is up-to-date for version 1.2.9b. For older documentation, please
-refer to the doc directory of the respective pdnsd package.
-If you want a quicker introduction to pdnsd, you can try some of the HOWTOs
-available on the web. For Apple Mac users, Brian Wells has published a good
-HOWTO at http://web.mac.com/brianwells/main/pdnsd.html.
-
-0. Installation
-
-0.1 Installing binary RPM's
-
-To install a binary RPM, just do
-
-rpm -i pdnsd-<version>.rpm
-
-This should install pretty much everything automatically. The only thing left
-for you to do is adapt your configuration file (stored in /etc/pdnsd.conf)
-according to your needs (see below). In the Red Hat and SuSE RPMs, a start
-script is also installed; read the section 0.4, Start at Boot Time about that.
-
-0.2 Building RPM's
-
-It is possible to build a binary RPM from a source package using the command
-
-rpmbuild --rebuild pdnsd-<version>.src.rpm
-
-or alternatively from a tarball using the command
-
-rpmbuild -tb pdnsd-<version>.tar.gz
-
-You can do this as root, but it is safer to build a binary package first as a
-normal user, and then, when all has gone well, install the resulting binary
-package as root as in the previous section. How to build an RPM package without
-being root is described at http://www.ibm.com/developerworks/linux/library/
-l-rpm1/.
-
-Several pdnsd-specific options are available when building RPM packages:
-
---with isdn Has the same effect as --enable-isdn (see below).
-
---without poll Has the same effect as --disable-poll (see below).
-
---without nptl Has the same effect as --with-thread-lib=linuxthreads (
- see below).
-
---with ipv6 Has the same effect as --enable-ipv6 (see below).
-
---without tcpqueries Has the same effect as --disable-tcp-queries (see below
- ).
-
---without debug Has the same effect as --with-debug=0 (see below).
-
---define "distro < Has the same effect as --with-distribution=<distro> (
-distro>" see below).
-
---define "run_as_user Has the same effect as --with-default-id=<user> (see
-<user>" below).
- For RPMs the default <user> is "pdnsd".
-
- If the user defined by the previous option does not
---define "run_as_uid < exist when the RPM is installed, the pre-install script
-uid>" will try to create a new user with numerical id <uid>.
- The default is to let the system choose the numerical
- id at install time.
-
---define "cachedir < Has the same effect as --with-cachedir=<dir> (see below
-dir>" ).
-
-You can also configure which compiler flags will be used by setting the
-environment variable CFLAGS. Using a bash shell, you can do that on the command
-line like this: CFLAGS="-O1 -Wall" rpmbuild ...
-This is useful if you prefer a different level of optimization, for instance.
-
-0.3 Installing from pure sources (tar archives or git repositories)
-
-0.3.1 Setting up the source code tree
-
-Source code is available in the form of snapshots (tarballs) or a git
-repository with the very latest development code and a (nearly) complete
-history of all the revisions. Cloning a git repository is useful if you need a
-recent fix or feature that is not yet contained in a main release or you want
-to participate in pdnsd development. Otherwise you will probably find the
-tarballs more convenient because they are much more compact.
-
-0.3.1.1 Unpacking a tar archive
-
-The pdsnsd snapshot releases come in the form of a gzip'ed tar archive. To
-decompress it (using a modern tar) do
-
-tar -xzf pdnsd-<version>.tar.gz
-
-If your tar doesn't do this, use:
-
-gzip -dc pdnsd-<version>.tar.gz | tar -xf -
-
-0.3.1.2 Cloning a git repository
-
-To clone a git repository you need to install, if not already installed, the
-git version control system, which is available as a package in most modern
-Linux distributions. Then run the command:
-
-git clone git://gitorious.org/pdnsd/pdnsd.git pdnsd
-
-In rare cases, if you are behind some kind of firewall, the special git
-protocol can't be used and you will need to fall back to the http protocol. See
-the gitorious.org website or git documentation for more information.
-
-0.3.2 Configuring the source
-
-Change into the pdnsd source directory and run configure. It takes the
-following command line options (if you do not specify an option, defaults will
-be used):
-
- Specify the prefix directory. The pdnsd files are
- installed in subdirectories of the prefix, the
---prefix=dir pdnsd and pdnsd-ctl executables are for example
- installed in the sbin subdirectory of the prefix.
- The default for this is /usr/local; you might want
- to set this to /usr (using --prefix=/usr).
-
- Specify the config directory. pdnsd expects its
- pdnsd.conf file to reside there if the -c option is
---sysconfdir=dir not given at startup. The default for this is the
- etc subdirectory of your prefix, e.g. /usr/local/
- etc if you did not specify a prefix. To set this
- e.g. to /etc, use --sysconfdir=/etc.
-
---with-distribution= Specify target distribution (default=Generic;
-distro others: RedHat, SuSE, Debian)
- See below for the effect of these settings.
-
- Change compilation target platform (default:
- autodetect; others: Linux, BSD, Cygwin).
- autodetect will attempt to detect whether you are
---with-target=platform using Linux, *BSD or Cygwin and should normally be
- sufficient. If this does not work, try specifying
- your system manually (for the Darwin platform
- (Apple Mac OS X) specify BSD here).
-
- Default directory for pdnsd cache (default=/var/
---with-cachedir=dir cache/pdnsd)
- This setting can be changed via config file
- settings when pdnsd has been built.
-
- Number of hash buckets to use (default=1024). The
- default should be sufficient for most purposes, but
- if you want to store a large number of names in the
---with-hash-buckets=num cache, cache lookups may be faster if the number of
- hash buckets is comparable to the number of names
- stored in the cache. The number actually used is
- the smallest power of two greater or equal to the
- number specified here.
-
- Enable ISDN support
- This option will work only on Linux and may cause
---enable-isdn problems with 2.0.x or old 2.2.x kernels. You will
- need it for a proper if uptest under Linux for ISDN
- ppp devices.
-
---disable-ipv4 Disable IPv4 networking support (default=enabled)
-
- Enable IPv6 networking support.
---enable-ipv6 If your OS does support IPv6 properly, you should
- be able to serve also IPv4 queries using this.
- Normally, this is disabled and you won't need it.
-
---disable-ipv4-startup Disable IPv4 on pdnsd startup by default (default=
- enabled)
-
- Enable IPV6 on pdnsd startup by default (default=
- IPv4). These options are only defaults, you can
---enable-ipv6-startup specify on the command line or in the config files
- which IP version will really be used. Normally, you
- won't need to change these.
-
---disable-udp-queries Disable UDP as query method. You shouldn't need to
- change this.
-
- Disable TCP as query method. This only effects the
- querying of name servers by pdnsd, not the ability
- of pdnsd to answer TCP queries from clients. TCP
- queries are slower than UDP queries, but can be
---disable-tcp-queries more secure against certain types of attacks and
- are able to handle large answers. For normal use
- this can be disabled. (Note that the default has
- changed: TCP-query support is now compiled in by
- default, but it still depends on the run-time
- options whether it is actually used.)
-
- Specify the query method (default=udponly, others:
- tcponly, tcpudp, udptcp). If you have enabled both
- UDP and TCP queries, this lets you control which
- query method pdnsd will use by default. tcpudp will
- try TCP first and fall back to UDP if TCP is not
---with-query-method=qm supported by the server; udptcp will try UDP first
- and, if the answer was truncated, will repeat the
- query using TCP. udponly and tcponly should be
- clear. Note that this only effects the compiled-in
- default; the query method can still be changed
- using command-line options or options in the
- configuration file.
-
- Disable the TCP server. In this case pdnsd will not
---disable-tcp-server be able to respond to TCP queries from clients.
- This may cause problems with very large answers.
-
- Disable the UDP source address discovery.
- You need this only if you have trouble with
---disable-src-addr-disc messages saying "could not discover udp source
- address".
- For the Cygwin target, this option is disabled by
- default.
-
---disable-poll Disable poll(2) and use select(2) (default=enabled)
- You will normally not need this.
-
- Since version 1.2.9 this option is obsolete and
- ignored. It is now possible to configure for each
---disable-new-rrs RR type separately whether it is cacheable by pdnsd
- by editing the file src/rr_types.in. The comments
- in this file explain how to do this.
-
- Enforce strict RFC 2181 compliance.
- This will cause pdnsd to reject DNS answers with
---enable-strict-rfc2181 incorrect timestamp settings (multiple RRs of the
- same type and for the same domain with different
- TTLs). Normally not needed.
-
- This option is obsolete. Since version 1.2, pdnsd
---enable-underscores places no restrictions on the types of characters
- in domain names (there are still a few restrictions
- for locally defined names, though).
-
- Specify random device; default: C Library random()
- PRNG
- pdnsd uses (pseudo-) random numbers as query IDs
- for security reasons (this makes forging DNS
- answers more difficult). This option controls where
- pdnsd gets these from. The default is the C library
- random() function, which is relatively weak. You
- can specify a device like /dev/urandom here if you
---with-random-device= like; pdnsd will read random numbers from it
-device 16-bit-wise. /dev/urandom is present under Linux
- and most BSD derivates. You should not use /dev/
- random - it is more secure, but may block and delay
- pdnsd's answers for a long time.
- You can specify arc4random to use the BSD
- arc4random() library function (default for FreeBSD
- target), which is considered safe.
- You can also specify random as device to use the C
- Library random() function (described above).
-
- Specify default user for pdnsd (default=nobody).
- This is the user that will be entered for the
---with-default-id=user run_as option in the config file (see below) that
- will be installed during make install. You can
- change this any time in your config file.
-
- Specify debugging level. Normally you can safely
- switch debugging off by setting the level to 0.
- This will increase speed (although only marginally)
- and save space in the executable (only about 12kB).
- However, more significant may be the savings in
- stack space, especially if pdnsd is put under heavy
- load and there are many simultaneous running
- threads.
- Presently the only defined debug levels are in the
- range 0 - 9. Setting the level to 9 enables hex
---with-debug=level dumps of the queries and replies pdnsd receives and
- should normally not be needed. Debug output will
- only be generated if you turn on special switches;
- it might be useful for debugging your config files,
- so I recommend using the default (1). However, if
- you use pdnsd under heavy load, a better strategy
- may be to compile one version of pdnsd without
- debug support (configured with --with-debug=0) for
- production use, and one version with with debug
- support (e.g. --with-debug=9) for diagnostic
- purposes.
-
---with-verbosity=level Specify default message verbosity. The default
- should be ok.
-
- Enable RCS IDs in executables (default=disabled).
---enable-rcsids For personal use, there is no need to do this. If
- you build rpm's, it might have advantages.
-
- Enable subsequent tcp queries. The DNS protocol
- standard requires that servers must be capable of
- answering multiple subsequent queries that are sent
- over the same tcp connection, and that the server
- may only close the connection by himself after a
- certain timeout. This feature is rarely used, but
---enable-tcp-subseq may make denial-of-service attacks easier, as it
- allows for an attacker to hold a connection open a
- long time (although the attacker's IP is most
- likely revealed then). For full standard
- compliance, you should use this option. If you do
- not use --enable-tcp-server, is option is not
- honored.
-
- Specify default tcp query timeout after which the
- connection is closed if no full query has been
---with-tcp-qtimeout=secs received. The default is 30s. You can also change
- this option at run time using the tcp_qtimeout
- config file option. If you do not use
- --enable-tcp-server, is option is not honored.
-
- Specify the default number of queries that can be
- executed in parallel. You can also change this
---with-par-queries=num option at run time using the par_queries config
- file option. See the description of that option for
- an explanation of what it really does.
- The default for this option is 2.
-
- New in version 1.2.9b: Specify the maximum number
- of IP addresses that can be used per nameserver
- obtained from NS records (when resolving names
- recursively). Just one IP address per nameserver is
- sufficient in the vast majority of cases (and this
---with-max-nameserver-ips was the strategy used by pdnsd in previous
-=num versions), but in rare cases this will cause
- unnecessary resolve failures if the address chosen
- for each nameserver happens to be unreachable while
- the other addresses would lead to successful
- resolution.
- The default for this option is 3.
-
- Added by Paul Rombouts: Use this option if you
- experience problems with signal handling under
- Linux. The usual symptom is that pdnsd fails to
- save the cache to disk, and /var/cache/pdnsd/
- pdnsd.cache remains empty. If you experience this
- kind of trouble, try reconfiguring with different
- values for the --with-thread-lib option. The
- allowable values are linuxthreads (or lt for
- short), linuxthreads2 (or lt2 for short), and nptl.
- By default the configure script tries to detect
---with-thread-lib=lib automatically whether linuxthreads or nptl is more
- appropriate for your system, but the method used is
- not foolproof. Look for the line: checking if this
- is an NPTL-based system...
- If the automatic test mistakenly indentifies the
- thread library on your system as NPTL based, you
- should reconfigure with --with-thread-lib=lt and
- recompile. If the result of the automatic test is
- "no" or if --with-thread-lib=lt does not have the
- desired effect, try again using --with-thread-lib=
- lt2 .
-
-Normally, you will need only --prefix, --sysconfdir and --with-distribution. If
-you specify your distribution using --with-distribution, this has the following
-effects:
-
- * An rc script is copied in the appropriate localtion, which enables pdnsd to
- start at machine boot time (see 0.4)
- * Distribution-specific portions might be included in the generated
- pdnsd.spec file (only important if you want to build rpm archives
- yourself).
-
-If you choose Generic, no rc script is installed, and a generic spec file is
-generated.
-Further instructions are in the INSTALL document in the pdnsd source directory.
-./configure --help will give you a list of all supported command line options.
-
-Note added by Paul Rombouts: Some people may want change the compiler
-optimization flag. I use the -O2 flag, but it might be safer to use a lower
-level of optimization or no optimization at all. In that case prefix the
-configure command with the desired compiler flags like this (assuming you're
-using a bash shell):
-
-CFLAGS="-O1 -Wall" ./configure ...
-
-
-0.3.3 Building & installing
-
-Type make in the source directory. Should work by now.
-To install, type make install or do the installation by hand (see 0.3.4).
-make install will do the following ($prefix is the prefix directory; see
-above):
-
- 1. copies pdnsd to $(prefix)/sbin/
- 2. copies pdnsd-ctl to $(prefix)/sbin/
- 3. copies docs/pdnsd.conf.sample (a sample configuration) to the pdnsd config
- directory.
- 4. creates your cache directory if it is not there. After installation, you
- should check the file permissions and create or edit /etc/pdnsd.conf to fit
- your needs (see below). If you use the run_as option, please make sure that
- your cache directory is owned by the user you specified with this option!
-
-You must be root for this installation!
-Security notes: never make the pdnsd cache directory writeable for untrusted
-users, or you will get several security holes: the users might modify the cache
-contents, or plant dangerous links.
-If you use a pidfile, you should be aware that you introduce security problems
-if you place the pidfile in a directory in a NFS filesystem that is writeable
-for untrusted users. Generally, the pidfile directory (typically /var/run)
-should not be writeable for untrusted users.
-
-0.3.4 Manual installation
-
-For a manual installation, you need to do the following steps:
-
- 1. Copy pdnsd and pdnsd-ctl from your build directory to an appropriate
- location (e.g. /usr/sbin).
- 2. Copy docs/pdnsd.conf into the directory you want it to reside (/etc by
- default, and change it according to your needs (see below).
- 3. Create your caching directory; default is /var/cache/pdnsd (you may change
- this in your pdnsd.conf); Permissions should be at max rwxr-xr-x (if you
- want to protect your cache and status socket, make it rwx------).
-
-Thats it!
-
-0.4 Start at boot time
-
-In the src/rc folder of the pdnsd distribution are start scripts for pdnsd
-designed for different Linux distros. There are scripts for SuSE, Redhat,
-Debian, Arch Linux and Slackware now.
-The start scripts are automatically installed during RPM install, and also
-during make install if you specified your distro.
-For Slackware Linux there is a start-up script contributed by Nikola Kotur, but
-presently it must be installed manually. See src/rc/README and src/rc/Slackware
-/rc.pdnsd for details.
-
-0.4.1 SuSE Linux startup
-
-rc/SuSE/pdnsd is a start script for SuSE Linux. It was tested for 6.? but
-should run on some versions below. You can do make install as root in the rc/
-SuSE directory to install it, or you can install manually:
-
-manual installation
-
-For manual installation, copy rc/SuSE/pdnsd into /sbin/init.d/, go to /sbin/
-init.d/rc2.d/ and create there the following two symlinks:
-S11pdnsd to ../pdnsd (do ln -s ../pdnsd S11pdnsd in that dir)
-K34pdnsd to ../pdnsd (do ln -s ../pdnsd K34pdnsd in that dir)
-The numbers dictate the order different services are started and might need to
-be modified. Then edit your /etc/rc.config file and add the line START_PDNSD=
-yes to start pdnsd at boot time.
-
-If you used the make install command, START_PDNSD=yes has been appended to your
-/etc/rc.config file, causing pdnsd to be started at boot time. If you don't
-want that, change the yes into no.
-
-This start script was created from /sbin/init.d/skeleton by me, so the most is
-copyrighted by SuSE. They put it under the GPL, however, so the license stated
-in COPYING also applies to this script. There is NO WARRANTY OF ANY KIND on
-these scripts. This is no official SuSE script, and SuSE naturally does NO
-support for it.
-
-0.4.2 Red Hat Linux startup
-
-rc/Redhat/pdnsd is a start script for Red Hat Linux. It was contibuted by
-Torben Janssen.
-This was tested for 6.1 but should run on 5.0+. You can do make install as root
-in the rc/Redhat directory to install it, or you can install manually:
-
-manual installation
-
-For manual installation, copy rc/Redhat/pdnsd into /etc/rc.d/init.d/
-Then go to /etc/rc.d/rc3.d and create there the following symlink:
-S78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd S78pdnsd in that dir)
-Then go to /etc/rc.d/rc0.d and create there the following symlink:
-K78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd K78pdnsd in that dir)
-Then go to /etc/rc.d/rc6.d and create there the following symlink:
-K78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd K78pdnsd in that dir)
-
-This script is also covered by license stated in COPYING. Again, there is NO
-WARRANTY OF ANY KIND on these scripts. This is no offical Redhat script, and
-Redhat naturally does NO support for it
-
-0.5 Notes for FreeBSD users
-
-The special handling of ISDN ppp devices is only supported on Linux. It is not
-needed in FreeBSD, the normal device handling also works fine with isdn4bsd
-devices.
-When compiled for FreeBSD, pdnsd as a small RFC compatability issue: RFC2181
-demands answers on dns querys to be sent with the same source address the query
-packet went to. In seldom cases, this will not be the case, because the kernel
-selects the source address depending on the interface that was used for sending
-the answer.
-Setting the source address currently does not work for IPv4. I have written a
-kernel patch that will provide an easy way to program this. We'll see if or
-when it gets commited.
-
-
-
-1 Invocation
-
-When invoking pdnsd, you can specify various options at the command line.
-Command line options always override config file options. The various --noX
-options are present to override config file options.
-
-pdnsd --help (or -h) gives you an overview of the pdnsd command line options.
-
-pdnsd --version (or -V for short) prints licence and version information.
-
-To start pdnsd as background daemon, specifiy --daemon (or -d for short) on the
-command line. Diagnostic and error messages after the actual daemon start will
-be printed to the syslog instead of the console. --nodaemon will disable this.
-
-When starting pdnsd as a daemon, the -p option may be helpful: It writes the
-pid of the server process to the file of the name given as argument to this
-option.
-Example: pdnsd -d -p /var/run/pdnsd.pid
-
-If you want to specify a configuration file other than /etc/pdnsd.conf, specify
--c or --config-file on the command line, followed by a filename.
-
-If pdnsd was compiled with debugging support, you may specify -g or --debug on
-the command line. This will cause extra diagnostic messages to be printed. When
-pdnsd runs in daemon mode, the messages will be written to the pdnsd.debug file
-in your cache directory. --nodebug disables debugging.
-
-pdnsd -vn sets the verbosity level of pdnsd. n is normally a digit from 0 to 3,
-where 0 means normal operation, while 3 will most verbose. Level 9 can be used
-in combination with the --debug option for very extensive debug information.
-Note: The current implementation mostly ignores the verbosity level, so you may
-not notice much difference between the various levels.
-
-The option -s or --status enables the status control socket. This is a named
-socket in the cache directory called pdnsd.status. This socket allows run-time
-configuration of pdnsd using the utility pdnsd-ctl. See below for more details
-about pdnsd-ctl. --nostatus disables status control. See also the configuration
-option status_ctl in the global section.
-
-The option --notcp disables the seldom needed TCP server thread, which may save
-you some resources. -t or --tcp will enable it. See also the tcp_server
-configuration option.
-
-Using the -m option, you can select the method pdnsd uses to query other name
-servers. Following methods are supported (see also the query_method
-configuration option):
--muo: pdnsd will use UDP only. This is the fastest method, and should be
-supported by all name servers on the Internet.
--mto: pdnsd will use TCP only. TCP queries usually take longer time than UDP
-queries, but are more secure against certain attacks, where an attacker tries
-to guess your query id and to send forged answers. TCP queries are not
-supported by some name servers.
--mtu: pdnsd will try to use TCP, and will fall back to UDP if its connection is
-refused or times out.
--mut: New in version 1.2.5: pdnsd will try to use UDP, and will repeat the
-query using TCP if the UDP reply was truncated (i.e. the tc bit is set). This
-is the behaviour recommended by the DNS standards.
-
-The -4 option switches to IPv4 mode, providing pdnsd was compiled with IPv4
-support.
-The -6 option switches to IPv6 mode, providing pdnsd was compiled with IPv6
-support.
-The -a option is only available when pdnsd was compiled with both IPv4 and IPv6
-support. With this option, pdnsd will try to detect automatically if a system
-supports IPv6, and fall back to IPv4 otherwise.
-
-With -i prefix or --ipv4_6_prefix=prefix you can set the prefix pdnsd uses
-(when running in IPv6 mode) to map IPv4 addresses in the configuration file to
-IPv6 addresses. There is also a corresponding option for the config file, see
-below. Must be a valid IPv6 address. The default is ::ffff:0.0.0.0
-
-2 The configuration file
-
-This section describes the layout of the configuration file and the available
-configuration options. The default location of the file is /etc/pdnsd.conf.
-This may be changed with the -c command line option. An example pdnsd.conf
-comes with the pdnsd distribution in the docs directory and will be installed
-to /etc/ by make install.
-
-2.1 Layout
-
-The configuration file is divided into sections. Each section is prefixed with
-the section name and opening curlies ({) and closed with closing curlies (}).
-In each section, configuration options can be given in the form
-option_name=option_value;
-Option value may be a string literal, a number, a time specification or a
-constant. In previous versions of pdnsd strings had to be enclosed in quotes
-("), but since version 1.1.10 this is no longer necessary, unless a string
-contains a special character such as whitespace, a token that normally starts a
-comment, or one of ",;{}\". Since version 1.2.9 a backslash (\) inside a string
-is interpreted as an escape character, so it is possible to include special
-characters in strings (both quoted or unquoted) by preceding them with a
-backslash. Some escape sequences are in interpreted as in the C programming
-language, e.g. \t becomes a tab, \n becomes a new-line control char.
-A time specification consists a sequence of digits followed by a one-letter
-suffix. The following suffixes are recognized: s (seconds), m (minutes), h
-(hours), d (days) and w (weeks). If the suffix is missing, seconds are assumed.
-If several time specifications are concatenated, their values are added
-together; e.g. 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-Some options take more than one value; in this case, the values are separated
-with commas.
-If you may supply one of a set of possible values to an option, this is noted
-in the documentation as (option1|option2|option3|...)
-The constants true|false and yes|no are accepted as synonyms for the constants
-on|off.
-Comments may be enclosed in /* and */, nested comments are possible. If the #
-sign or two slashes (//) appear in the configuration file, everything from
-these signs to the end of the current line is regarded as a comment and
-ignored.
-There are examples for nearly all options in the sample config file.
-
-2.1.1 global Section
-
-The global section specifies parameters that affect the overall behaviour of
-the server. If you specify multiple global sections, the settings of those
-later in the file will overwrite the earlier given values.
-These are the possible options:
-
-
-perm_cache=(number|off);
-Switch the disk cache off or supply a maximum cache size in kB. If the disk
-cache is switched off, 8 bytes will still be written to disk. The memory cache
-is always 10kB larger than the file cache. This value is 2048 (2 MB) by
-default.
-
-cache_dir=string;
-Set the directory you want to keep the cache in. The default is "/var/cache/
-pdnsd" (unless pdnsd was compiled with a different default).
-
-server_port=number;
-Set the server port. This is especially useful when you want to start the
-server and are not root. Note that you may also not specify uptest=ping in the
-server section as non-root.
-The default port is 53, the RFC-standard one. Note that you should only use
-non-standard ports when you only need clients on your machine to communicate
-with the server; others will probably fail if the try to contact the server on
-the basis of an NS record, since the A record that supplies the address for
-(among others) name servers does not have a port number specification.
-
-server_ip=string;
-or
-interface=string;
-Set the IP address pdnsd listens on for requests. This can be useful when the
-host has several interfaces and you want pdnsd not to listen on all interfaces.
-For example, it is possible to bind pdnsd to listen on 127.0.0.2 to allow pdnsd
-to be a forwarder for BIND. The default setting for this option is server_ip=
-any, which means that pdnsd will listen on all of your local interfaces.
-Presently you can only specify one address here; if you want pdnsd to listen on
-multiple interfaces but not all you will have to specify server_ip=any and use
-firewall rules to restrict access.
-The IP address used to need quotation marks around it, but since version 1.1.10
-this is no longer necessary.
-If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
-specify an IPv6 address here, then unless pdnsd was compiled to start up in
-IPv6 mode by default, you will need to use the -6 command-line option or set
-run_ipv4=off first (see below) in order to ensure that the IPv6 address is
-parsed correctly.
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here, it will
-automatically be mapped to an IPv6 address.
-New in version 1.2: You may also give the name of an interface such as "lo" or
-"eth0" here, instead of an IP address (this has been tested on Linux, and may
-or may not work on other platforms). pdnsd will not bind to the interface name,
-but will look up the address of the interface at start-up and listen on that
-address. If the address of the interface changes while pdnsd is running, pdnsd
-will not notice that. You will need to restart pdnsd in that case.
-
-outgoing_ip=string;
-or
-outside_interface=string;
-New in version 1.2.9: Set the IP address of the interface used by pdnsd for
-outgoing queries. This can be useful when the host has several interfaces and
-you want pdnsd to send outgoing queries via only one of them. For example, if
-pdnsd is running on a host with one interface with IP address 192.168.1.1
-connected to the local network, and another with IP address 123.xxx.yyy.zzz
-connected to the internet, you may specify server_ip=192.168.1.1 and
-outgoing_ip=123.xxx.yyy.zzz to enforce that pdnsd only responds to queries
-received from the local network, and only sends outgoing queries via the
-interface connected to the internet.
-The default setting for this option is any, which means that the kernel is free
-to decide which interface to use. Like with the server_ip option, you may also
-give the name of an interface here, instead of an IP address.
-
-linkdown_kluge=(on|off);
-This option enables a kluge that some people might need: when all servers are
-marked down, with this option set the cache is not even used when a query is
-received, and a DNS error is returned in any case. The only exception from this
-is that local records (as specified in rr and source sections are still served
-normally. In general, you probably want to get cached entries even when the
-network is down, so this defaults to off.
-
-max_ttl=timespec;
-This option sets the maximum time a record is held in cache. All dns resource
-records have a time to live field that says for what period of time the record
-may be cached before it needs to be requeried. If this is more than the value
-given with max_ttl, this time to live value is set to max_ttl. This is done to
-prevent records from being cached an inappropriate long period of time, because
-that is almost never a good thing to do. Default is 604800s (one week).
-
-min_ttl=timespec;
-This option sets the minimum time a record is held in cache. All dns resource
-records have a time to live field that says for what period of time the record
-may be cached before it needs to be requeried. If this is less than the value
-given with min_ttl, this time to live value is set to min_ttl. Default is 120
-seconds.
-
-neg_ttl=timespec;
-This option sets the time that negatively cached records will remain valid in
-the cache if no time to live can be determined. This is always the case when
-whole domains are being cached negatively, and additionally when record types
-are cached negatively for a domain for which no SOA record is known to pdnsd.
-If a SOA is present, the ttl of the SOA is taken.
-
-neg_rrs_pol=(on|off|auth|default);
-This sets the RR set policy for negative caching; this tells pdnsd under which
-circumstances it should cache a record type negatively for a certain domain.
-off will turn the negative caching of record types off, on will always add a
-negative cache entry when a name server did not return a record type we asked
-it for, and auth will only add such entries if the answer came from an
-authoritative name server for that domain.
-New in version 1.2.8: The default setting will add a negatively cached record
-if either the answer was authoritive or the answer indicated the name server
-had "recursion available" while the query explicitly requested such recursion.
-The preset is "default" (used to be auth).
-
-neg_domain_pol=(on|off|auth);
-This is analogue to neg_rrs_pol for whole domain negative caching. It should be
-safe to set this on, because I have not seen a caching server that will falsely
-claim that a domain does not exist.
-The default is auth.
-
-run_as=string;
-This option allows you to let pdnsd change its user and group id after
-operations that needed privileges have been done. This helps minimize security
-risks and is therefore recommended. The supplied string gives a user name whose
-user id and primary group id are taken.
-A little more details: after reading the config file, becoming a daemon (if
-specified) and starting the server status thread, the main thread changes its
-gid and uid, as do all newly created threads thereafter. By taking another uid
-and gid, those threads run with the privileges of the specified user. Under
-Linux and FreeBSD, the server status thread runs with the original privileges
-only when the strict_setuid option is set to off (see below, on by default),
-because these may be needed for exec uptests. The manager thread also retains
-its original privileges in this case. You should take care that the user you
-specify has write permissions on your cache file and status pipe (if you need a
-status pipe). You should look out for error messages like "permission denied"
-and "operation not permitted" to discover permission problems.
-
-strict_setuid=(on|off);
-When used together with the run_as option, this option lets you specify that
-all threads of the program will run with the privileges of the run_as user.
-This provides higher security than the normal run_as option, but is not always
-possible. See the run_as option for further discussion.
-This option is on by default.
-Note that this option has no effect on Non-Linux systems.
-
-paranoid=(on|off);
-Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers
-to query other servers themselves if possible, and to give back answers for
-domains that may not be in its authority), and accepts additional records with
-information for servers that are not in the authority of the queried server.
-This opens the possibility of so-called cache poisoning: a malicious attacker
-might set up a dns server that, when queried, returns forged additional
-records. This way, he might replace trusted servers with his own ones by making
-your dns server return bad IP addresses. This option protects you from cache
-poisoning by rejecting additional records that do not describe domains in the
-queried servers authority space and not doing recursive queries any more. An
-exception to this rule are the servers you specify in your config file, which
-are trusted.
-The penalty is a possible performance decrease, in particular, more queries
-might be necessary for the same operation.
-You should also notice that there may be other similar security problems, which
-are essentially problems of the DNS, i.e. any "traditional" server has them
-(the DNS security extensions solve these problems, but are not widely
-supported). One of this vulnerabilities is that an attacker may bombard you
-with forged answers in hopes that one may match a query you have done. If you
-have done such a query, one in 65536 forged packets will be succesful (i.e. an
-average packet count of 32768 is needed for that attack). pdnsd can use TCP for
-queries, which has a slightly higher overhead, but is much less vulnerable to
-such attacks on sane operating systems. Also, pdnsd chooses random query ids,
-so that an attacker cannot take a shortcut. If the attacker is able to listen
-to your network traffic, this attack is relatively easy, though.
-This vulnerability is not pdnsd's fault, and is possible using any conventional
-name server (pdnsd is perhaps a little more secured against this type of
-attacks if you make it use TCP).
-The paranoid option is off by default.
-
-ignore_cd=(on|off);
-New in version 1.2.8: This option lets you specify that the CD bit of a DNS
-query will be ignored. Otherwise pdnsd will reply FORMERR to clients that set
-this bit in a query. It is safe to enable this option, as the CD bit refers to
-'Checking Disabled' which means that the client will accept non-authenticated
-data.
-This option is on by default. Turn it off if you want the old behaviour (before
-version 1.2.8).
-
-scheme_file=string;
-In addition to normal uptests, you may specify that some servers shall only be
-queried when a certain pcmcia-cs scheme is active (only under linux). For that,
-pdnsd needs to know where the file resides that holds the pcmcia scheme
-information. Normally, this is either /var/lib/pcmcia/scheme or /var/state/
-pcmcia/scheme.
-
-status_ctl=(on|off);
-This has the same effect as the -s command line option: the status control is
-enabled when on is specified.
-Added by Paul Rombouts: Note that pdnsd-ctl allows run-time configuration of
-pdnsd, even the IP addesses of the name servers can be changed. If you're not
-using pdnsd-ctl and you want maximum security, you should not enable this
-option. It is disabled by default.
-
-daemon=(on|off);
-This has the same effect as the -d command line option: the daemon mode is
-enabled when on is specified.
-Default is off.
-
-tcp_server=(on|off);
-tcp_server=on has the same effect as the -t or --tcp command-line option: it
-enables TCP serving. Similarly, tcp_server=off is like the --notcp command-line
-option.
-Default is on.
-
-pid_file=string;
-This has the same effect as the -p command line option: you can specify a file
-that pdnsd will write its pid into when it starts in daemon mode.
-
-verbosity=number;
-This has the same effect as the -v command line option: you can set the
-verbosity of pdnsd's messages with it. The argument is a number between 0 (few
-messages) to 3 (most messages).
-
-query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);
-This has the same effect as the -m command line option. Read the documentation
-for the command line option on this. tcp_only corresponds to the to, udp_only
-to the uo, tcp_udp to the tu and udp_tcp to the ut argument of the command line
-option.
-If you use query_method=tcp_udp, it is recommended that you also set the global
-timeout option to at least twice the longest server timeout.
-
-run_ipv4=(on|off);
-This has the same effect as the -4 or -6 command line option: if on is
-specified, IPv4 support is enabled, and IPv6 support is disabled (if
-available). If off is specified, IPv4 will be disabled and IPv6 will be
-enabled. For this option to be meaningful, pdnsd needs to be compiled with
-support for the protocol you choose. If pdnsd was compiled with both IPv4 and
-IPv6 support, and you want to include IPv6 addresses in the configuration file,
-you will probably need to specify run_ipv4=off first to ensure that the IPv6
-addresses are parsed correctly.
-
-debug=(on|off);
-This has the same effect as the -g command line option: the debugging messages
-are enabled when on is specified.
-
-ctl_perms=number;
-This option allows you to set the file permissions that the pdnsd status
-control socket will have. These are the same as file permissions. The owner of
-the file will be the run_as user, or, if none is specified, the user who
-started pdnsd. If you want to specify the permissions in octal (as usual),
-don't forget the leading zero (0600 instead of 600!). To use the status
-control, write access is needed. The default is 0600 (only the owner may read
-or write).
-Please note that the socket is kept in the cache directory, and that the cache
-directory permissions might also need to be adjusted. Please ensure that the
-cache directory is not writeable for untrusted users.
-
-proc_limit=number;
-With this option, you can set a limit on the pdnsd threads that will be active
-simultaneously. If this number is exceeded, queries are queued and may be
-delayed some time. See also the procq_limit option.
-The default for this option is 40.
-
-procq_limit=number;
-When the query thread limit proc_limit is exceeded, connection attempts to
-pdnsd will be queued. With this option, you can set the maximum queue length.
-If this length is also exceeded, the incoming queries will be dropped. That
-means that tcp connections will be closed and udp queries will just be dropped,
-which will probably cause the querying resolver to wait for an answer until it
-times out.
-See also the proc_limit option. A maximum of proc_limit+procq_limit query
-threads will exist at any one time (plus 3 to 6 threads that will always be
-present depending on your configuration).
-The default for this option is 60.
-
-tcp_qtimeout=timespec;
-This option sets a timeout for tcp queries. If no full query has been received
-on a tcp connection after that time has passed, the connection will be closed.
-The default is set using the --with-tcp-qtimeout option to configure.
-
-par_queries=number;
-This option used to set the maximum number of remote servers that would be
-queried simultaneously, for every query that pdnsd receives.
-Since version 1.1.11, the meaning of this option has changed slightly. It is
-now the increment with which the number of parallel queries is increased when
-the previous set of servers has timed out. For example, if we have a list
-server1, server2, server3, etc. of available servers and par_queries=2, then
-pdnsd will first send queries to server1 and server2, and listen for responses
-from these servers.
-If these servers do not send a reply within their timeout period, pdnsd will
-send additional queries to server3 and server4, and listen for responses from
-server1, server2, server3 and server4, and so on until a useful reply is
-received or the list is exhausted.
-In the worst case there will be pending queries to all the servers in the list
-of available servers. We may be using more system resources this way (but only
-if the first servers in the list are slow or unresponsive), but the advantage
-is that we have a greater chance of catching a reply. After all, if we wait
-longer anyway, why not for more servers.
-See also the explanation of the global timeout option below.
-1 or 2 are good values for this option. The default is set at compile time
-using the --with-par-queries option to configure.
-
-timeout=timespec;
-This is the global timeout parameter for dns queries. This specifies the
-minimum period of time pdnsd will wait after sending the first query to a
-remote server before giving up without having received a reply. The timeout
-options in the configuration file are now only minimum timeout intervals.
-Setting the global timeout option makes it possible to specify quite short
-timeout intervals in the server sections (see below). This will have the effect
-that pdnsd will start querying additional servers fairly quickly if the first
-servers are slow to respond (but will still continue to listen for responses
-from the first ones). This may allow pdnsd to get an answer more quickly in
-certain situations.
-If you use query_method=tcp_udp it is recommended that you make the global
-timeout at least twice as large as the largest server timeout, otherwise pdnsd
-may not have time to try a UDP query if a TCP connection times out.
-Default value is 0.
-
-randomize_recs=(on|off);
-If this option is turned on, pdnsd will randomly reorder the cached records of
-one type when creating an answer. This supports round-robin DNS schemes and
-increases fail safety for hosts with multiple IP addresses, so this is usually
-a good idea.
-On by default.
-
-query_port_start=(number|none);
-If a number is given, this defines the start of the port range used for queries
-of pdnsd. The value given must be >= 1024. The purpose of this option is to aid
-certain firewall configurations that are based on the source port. Please keep
-in mind that another application may bind a port in that range, so a stateful
-firewall using target port and/or process uid may be more effective. In case a
-query start port is given pdnsd uses this port as the first port of a specified
-port range (see query_port_end) used for queries. pdnsd will try to randomly
-select a free port from this range as local port for the query.
-To ensure that there are enough ports for pdnsd to use, the range between
-query_port_start and query_port_end should be adjusted to at least (par_queries
-* proc_limit). A larger range is highly recommended for security reasons, and
-also because other applications may allocate ports in that range. If possible,
-this range should be kept out of the space that other applications usually use.
-The default for this option is 1024. Together with the default value of
-query_port_end, this makes it the hardest for an attacker to guess the source
-port used by the pdnsd resolver. If you specify none here, pdnsd will let the
-kernel choose the source port, but this may leave pdnsd more vulnerable to an
-attack.
-
-query_port_end=number;
-Used if query_port_start is not none. Defines the last port of the range
-started by query_port_start used for querys by pdnsd. The default is 65535,
-which is also the maximum legal value for this option. For details see the
-description of query_port_start.
-
-delegation_only=string;
-Added by Paul Rombouts: This option specifies a "delegation-only" zone. This
-means that if pdnsd receives a query for a name that is in a subdomain of a
-"delegation-only" zone but the remote name server returns an answer with an
-authority section lacking any NS RRs for subdomains of that zone, pdnsd will
-answer NXDOMAIN (unknown domain). This feature can be used for undoing the
-undesired effects of DNS "wildcards". Several "delegation-only" zones may be
-specified together. If you specify root servers in a server section it is
-important that you set root_server=on in such a section.
-Example:
-
-delegation_only="com","net";
-
-This feature is off by default. It is recommended that you only use this
-feature if you actually need it, because there is a risk that some legitimate
-names will be blocked, especially if the remote name servers queried by pdnsd
-return answers with empty authority sections.
-
-ipv4_6_prefix=string;
-This option has the same effect as the -i command-line option. When pdnsd runs
-in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4
-addresses in the configuration file (or addresses specified with pdnsd-ctl) to
-IPv6-mapped addresses. The string must be a valid IPv6 address. Only the first
-96 bits are used. Note that this only effects the parsing of IPv4 addresses
-listed after this option.
-The default is "::ffff.0.0.0.0".
-
-use_nss=(on|off);
-If this option is turned on, pdnsd will call initgroups() to set up the group
-access list, whenever pdnsd changes its user and group id (see run_as option).
-There is a possible snag, though, if initgroups() uses NSS (Name Service
-Switch) and NSS in turn uses DNS. In such a case you may experience lengthy
-timeouts and stalls. By setting use_nss=off, you can disable the initgroups()
-call (only possible in versions 1.2.5 and later).
-This option was contributed by Jan-Marek Glogowski.
-On by default.
-
-udpbufsize=number;
-New in version 1.2.9: This option sets the upper limit on the size of UDP DNS
-messages. The default is 1024.
-See also the edns_query server option below.
-
-
-2.1.2 server Section
-
-Each server section specifies a set of name servers that pdnsd should try to
-get resource records or authoritative name server information from. The servers
-are queried in the order of their appearance (or parallel to a limited extend).
-If one fails, the next one is taken and so on.
-You probably want to specify the dns server in your LAN, the caching dns
-servers of your internet provider or even a list of root servers in one or more
-server sections.
-The supported options in this section are:
-
-
-label=string;
-Specify a label for the server section. This can be used to refer to this
-section when using pdnsd-ctl, the pdnsd control utility.
-You can give several server sections the same label, but if you want to change
-the addresses of a server section (see ip option below) during run-time with
-"pdnsd-ctl server label up dns1,dns2,...", the label must be unique.
-
-ip=string;
-Give the IP (the address, not the host name) of the server.
-Multiple IP addresses can be given per server section. This can be done by
-entering multiple lines of the form ip=string; or a single line like this:
-
-ip=string,string,string;
-
-IP addresses do not have to be specified in the configuration file. A server
-section without IP addresses will remain inactive until it is assigned one or
-more addresses with pdnsd-ctl, the pdnsd control utility.
-If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses
-you specify here will be skipped with a warning message, unless pdnsd is
-running in IPv6 mode. Thus, unless pdnsd was compiled to startup in IPv6 mode
-by default, you need to use the command-line option -6 or set run_ipv4=off
-first (see global section) in order to ensure that IPv6 addresses are parsed
-correctly.
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here, it will
-automatically be mapped to an IPv6 address.
-
-file=string;
-New in version 1.2: This option allows you to give the name of a
-resolv.conf-style file. Of the lines beginning with the nameserver keyword, the
-second field will be parsed as an IP address, as if it were specified with the
-ip= option. The remaining lines will be ignored. If the contents of the file
-changes while pdnsd is running, you can make pdnsd aware of the changes through
-the use of pdnsd-ctl, the pdnsd control utility. This is usually most
-conveniently done by placing the command "pdnsd-ctl config" in a script that is
-automatically run whenever the DNS configuration changes.
-For example, suppose you have a ppp client that writes the DNS configuration
-for your ISP to the file /etc/ppp/resolv.conf and runs the script /etc/ppp/
-ip-up when a new connection is established. One way of ensuring that pdnsd is
-automatically reconfigured is to add a server section in the config file with
-file=/etc/ppp/resolv.conf and to add the command "pdnsd-ctl config" to /etc/ppp
-/ip-up.
-
-port=number;
-Give the port the remote name server listens on. Default is 53 (the official
-dns port)
-
-uptest=(ping|none|if|dev|diald|exec|query);
-Determine the method to check whether the server is available. Currently
-defined methods are:
-
- * ping: Send an ICMP_ECHO request to the server. If it doesn't respond within
- the timeout, it is regarded to be unavailable until the next probe.
- * none: The availability status is not changed, only the time stamp is
- updated.
- * if: Check whether the interface (specified in the interface= option) is
- existent, up and running. This currently works for all "ordinary" network
- interfaces, interfaces that disappear when down (e.g. ppp?), and
- additionally for Linux isdn interfaces (as of kernel 2.2). Note that you
- need a /dev/isdninfo device file (major#45, minor#255), or the isdn uptest
- will always fail.
- * dev and diald: Perform an if uptest, and, if that was succesful,
- additionally check whether a program is running that has locked a given
- (modem-) device. The needed parameters are an interface (specified as for
- the if uptest, e.g. "ppp0") and a device relative to /dev (e.g. "modem" for
- /dev/modem specified using the device= option. pdnsd will then look for a
- pid file for the given interface in /var/lock (e.g. /var/run/ppp0.pid) and
- for a lockfile for the given device (e.g. /var/lock/LCK..modem), and then
- test whether the locking process is the process that created the pid file
- and this process is still alive. If this is the case, the normal if uptest
- is executed for the given interface.
- The dev option is for pppd dial-on-demand, diald is the same for diald
- users.
- * exec: Executes a given command in the /bin/sh shell (as /bin/sh -c
- <command>) and evaluates the result (the return code of the last command)
- in the shell's way of handling return codes, i.e. 0 indicates success, all
- other indicate failure. The shell's process name will be uptest_sh. The
- command is given with the uptest_cmd option (see below). For secuity
- issues, also see that entry.
- * query: New in version 1.2: This works like the ping test, except it sends
- an (empty) DNS query to the remote server. If the server sends a
- well-formed response back within the timeout period (except SERVFAIL), it
- will be regarded as available. This test is useful if a remote server does
- not respond to ICMP_ECHO requests at all, which unfortunately is quite
- common these days. It can also happen that a remote server is online but
- ignores empty DNS queries. Then you will need the set the query_test_name
- option (see below). In many cases this test will be a more reliable
- indicator of availability than the ones mentioned before.
-
-The default value is none.
-
-NOTE: If you use on-demand dialing, use none, if, dev, diald or exec, since
-ping or query will send packets in the specified interval and the interface
-will thus frequently dial!
-
-ping_timeout=number;
-Sets the timeout for the ping test in tenths of seconds (this unit is used for
-legacy reasons; actually the current implementation is only accurate to a
-second).
-The default is 600 (one minute).
-
-ping_ip=string;
-The IP address for the ping test. The default is the IP of the name server.
-
-query_test_name=string;
-New in version 1.2.9: Sets the name to be queried when using uptest=query
-availability test. If the string is the unquoted constant none, an empty query
-is used (this the default), otherwise a query of type A will be sent for the
-domain name specified here. It is not necessary for the domain name to exist or
-have a record of type A in order for the uptest to succeed.
-If the the remote server ignores empty queries, you will probably want to set
-query_test_name="." (the root domain).
-
-uptest_cmd=string,string;
-or
-uptest_cmd=string;
-Sets the command for the uptest=exec function to the first string. If the
-second string is given, it specifies a user with whose user id and primary
-group id the command is executed.
-This is especially useful if you are executing the server as root, but do not
-want the uptest to be performed with root privileges. In fact, you should never
-execute the uptest as root if you can help it.
-If the server is running setuid or setgid, the privileges thus gained are
-attempted to be dropped even before changing identity to the specified user to
-prevent setuid/gid security holes (otherwise, any user might execute commands
-as root if you setuid the executable).
-Note that this is not always possible, and that pdnsd should never be installed
-as setuid or setgid. The command is executed using /bin/sh, so you should be
-able to use shell builtin commands.
-
-interval=(timespec|onquery|ontimeout);
-Sets the interval for the server up-test. The default is 900 seconds; however,
-a test is forced when a query times out and the timestamp is reset then.
-If you specify onquery instead of a timeout, the interface will be tested
-before every query. This is to prevent automatically dialing interfaces (diald/
-pppd or ippp) to dial on dns queries. It is intended to be used in connection
-with an interface-testing uptest ;-)
-Note that using uptest=exec, you might run into performance problems on slow
-machines when you use that option. DON'T use onquery with uptest=ping or uptest
-=query, as it may cause delays if the server does not answer (btw, it doesn't
-make sense anyway). Note also that using onquery is no guarantee that the
-interface will not be used. When another (reachable) dns server tells pdnsd to
-query a third dns server for data, pdnsd will do that and has no means of
-checking whether this will dial up the interface or not. This however should be
-a rare situation.
-New in version 1.2.3: A third possibility is to specify interval=ontimeout. In
-this case the server is not tested at startup/reconfiguration, nor at regular
-intervals, but only after a DNS query to a server times out. Certain types of
-network problems such as a refused connection will also cause the server to be
-considered unavailable. However, once a server is declared dead it is never
-considered again unless it is revived using a pdnsd-ctl config or server
-command. The idea behind this option is to minimize uptests by assuming all
-servers are available until there is reason to believe otherwise.
-
-interface=string;
-The network interface (or network device, e.g. "eth0") for the uptest=if
-option. Must be specified if uptest=if is given.
-
-device=string;
-The (modem-) device that is used for the dev uptest. If you use this for a
-dial-on-demand ppp uptest (together with uptest=dev), you need to enter the
-device you are using for your pppd here, e.g. modem for /dev/modem.
-Must be specified if uptest=dev is given.
-
-timeout=timespec;
-Set the timeout for the dns query. The default is 120 seconds. You probably
-want to set this lower.
-Timeouts specified in the configuration file are only treated as the minimum
-period of time to wait for a reply. A queries to a remote server are not
-canceled until a useful reply has been received, or all the other queries have
-timed out or failed.
-If you have also set the global timeout option, you may consider setting a
-fairly small value here. See the explanation of the timeout option in the
-global section for what that means.
-
-purge_cache=(on|off);
-In every fetched dns record, there is a cache timeout given, which specifies
-how long the fetched data may be cached until it needs to be reloaded. If
-purge_cache is set to off, the stale records are not purged (unless the cache
-size would be exceeded, in this case the oldest records are purged). Instead,
-they are still served if they cannot succesfully be updated (e.g. because all
-servers are down).
-Default is off.
-
-caching=(on|off);
-Specifies if caching shall be performed for this server at all. Default is on.
-
-lean_query=(on|off);
-Specifies whether to use the "lean" query mode. In this mode, only the
-information actually queried from pdnsd is resolved and cached. This has the
-advantage that usually less cache space is used and the query is usually
-faster. In 90% of the cases, only address (A) records are needed anyway. If
-switched off, pdnsd will always cache all data about a host it can find and
-will specifically ask for all available records (well, at least it is a good
-approximation for what it really does ;-) This will of course increase the
-answer packet sizes.
-Some buggy name servers may not deliver CNAME records when not asked for all
-records. I do not know if such servers are around, but if you have trouble
-resolving certain host names, try turning this option off.
-A last note: If you use multiple pdnsd's that access each other, turning this
-option on is probably a big win.
-This on by default.
-
-edns_query=(on|off);
-New in version 1.2.9: Specifies whether to use EDNS (Extension mechanisms for
-DNS) for outgoing queries. Currently this is only useful for allowing UDP
-message sizes larger than 512 bytes. Note that setting this option on can give
-problems in combination with some legacy systems or software, including,
-embarrassingly enough, previous versions of pdnsd.
-The default is off, but if your network can handle UDP payloads significantly
-larger than 512 bytes, the recommended value is on.
-Note that this option only effects outgoing queries. If pdnsd receives a query
-using EDNS, it will reply using EDNS regardless of the value of this option.
-See also the udpbufsize option above.
-
-scheme=string;
-You can specify a pcmcia-cs scheme that is used in addition to the uptests. If
-you specify a scheme here, the server this section is for will only be queries
-if the given scheme is active. Shell wildcards (* and ?) are allowed in the
-string under their special meanings. You need to use the scheme_file option on
-the global section to make this option work.
-
-preset=(on|off);
-This allows you to specify the initial state of a server before any uptest is
-performed. on specifies that the server is regarded available. The default is
-on. This is especially useful when you set uptest=none; and want to change the
-status of a server only via pdnsd-ctl.
-
-proxy_only=(on|off);
-When this option is set to on, answers given by the servers are always
-accepted, and no other servers (as, for example, specified in the NS records of
-the query domain) are queried. If you do not turn this option on, pdnsd will do
-such queries in some cases (in particular when processing ANY queries).
-This option is useful when you do not want pdnsd to make connections to outside
-servers for some reasons (e.g. when a firewall is blocking such queries).
-I recommend that you turn on lean_query when using this option.
-Default is off.
-
-root_server=(on|off|discover);
-Set this option to on if the servers specified in a section are root servers. A
-root server will typically only give the name servers for the top-level domain
-in its reply. Setting root_server=on will cause pdnsd to try to use cached
-information about top-level domains to reduce to number of queries to root
-servers, making the resolving of new names more efficient. You can get a list
-of available root servers by running the command "dig . ns".
-This option is also necessary if you use the delegation_only option.
-New in version 1.2.8: This option may also be set to "discover". This will
-cause pdnsd to query the servers provided with the ip= option to obtain the
-full list of root servers. The root-server addresses will replace the addresses
-specified with the ip= option. This will only be done once on startup, or after
-a "pdnsd-ctl config" command. In this case the name servers specified with the
-ip= option don't have to be root servers, they just have to know the names and
-addresses of the root servers. After root-server discovery pdnsd will behave
-just as if root_server=on had been specified.
-Default is off.
-
-randomize_servers=(on|off);
-New in version 1.2.6: Set this option to on to give each name server in this
-section an equal chance of being queried. If this option is off, the name
-servers are always queried starting with the first one specified. Even with
-this option on, the query order is not truly random. Only the first server is
-selected randomly; the following ones are queried in consecutive order,
-wrapping around to the beginning of the list when the end is reached. Note that
-this option only effects the order within a section. The servers in the first
-(active) section are always queried before those in the second one, etc.
-The default is off, but if you are resolving from root servers setting this
-option on is highly recommended. If root_server=on this option also effects the
-query order of the name servers for the top-level domains.
-
-reject=string;
-New in version 1.2.6: This option can be used to make pdnsd reject replies that
-contain certain IP addresses. You can specify a single IP address, which will
-be matched exactly, or a range of addresses using an address/mask pair. The
-mask can be specified as a simple integer, indicating the number of initial 1
-bits in the mask, or in the usual IP address notation. IP addresses may be
-either IPv4 or IPv6 (provided there is sufficient support in the C libraries
-and support for AAAA records was not disabled). When addresses in the reject
-list are compared with those in a reply, only the bits corresponding to those
-set in the netmask are significant, the rest are ignored.
-Multiple addresses or address/mask pairs may be specified; this can be done by
-entering multiple lines of the form reject=string; or a single line like this:
-
-reject=string,string,string;
-
-How pdnsd reacts when an address in the reply matches one in the reject list,
-depends on the reject_policy option, see below.
-
-reject_policy=(fail|negate);
-New in version 1.2.6: This option determines what pdnsd does when an address in
-the reply from a name server matches the reject list (see above). If this
-option is set to fail, pdnsd will try another server, or, if there no more
-servers to try, return the answer SERVFAIL. If this option is set to negate,
-pdnsd will immediately return the answer NXDOMAIN (unknown domain) without
-querying additional servers. The fail setting is useful if you don't always
-trust the servers in this section, but do trust the servers in the following
-section. The negate setting can be used to completely censor certain IP
-addresses. In this case you should put the same reject list in every server
-section, and also set the reject_recursively option (see below) to true.
-The default is fail.
-
-reject_recursively=(on|off);
-New in version 1.2.6: Normally pdnsd checks for addresses in the reject list
-(see above) only when the reply comes directly from a name server listed in the
-configuration file. With this option set to on, pdnsd will also do this check
-for name servers that where obtained from NS records in the authority section
-of a previous reply (which was incomplete and non-authoritative).
-Default is off.
-
-policy=(included|excluded|simple_only|fqdn_only);
-pdnsd supports inclusion/exclusion lists for server sections: with include= and
-exclude= (see below) you can specify domain names for which this server will be
-used or will not be used. The first match counts (i.e., the first include or
-exclude rule in a server section that matches a domain name is applied, and the
-search for other rules is terminated). If no rule matched a given domain name,
-the policy= option determines whether this server is used for the lookup for
-that domain name; when included is given, the server will be asked, and when
-excluded is given, it will not. If simple_only is given the server will be used
-if the name to lookup is a simple (single-label) domain name, on the other hand
-if fqdn_only is given the server will be used only for names consisting of two
-or more labels (i.e. the name has at least one dot in-between).
-If no server is available for a queried domain, pdnsd will return an error
-message to the client that usually will stop the client's attempts to resolve a
-specific domain from this server (the libc resolver will e.g. return an error
-to the application that tried to resolve the domain if no other servers are
-available in the resolv.conf). This may be of use sometimes.
-Note: the simple_only and fqdn_only constants were added by Paul Rombouts. They
-are useful for controlling which name servers (if any) will be used by pdnsd
-for resolving simple (single-label) host names. fqdn_only used to stand for
-"fully qualified domain name only", but this is actually a misnomer. The names
-in queries received by pdnsd are always considered to be fully qualified. If
-you do not exactly understand what the options simple_only and fqdn_only are
-good for, you are probably better off not using them.
-The default for this option is included.
-
-include=string;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is queried if this was the first matching
-rule (see also the entry for policy).
-If the given name starts with a dot, the whole subdomain of the given name
-including the one of that name is matched, e.g. ".foo.bar." will match the
-domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-If it does not start in a dot, only exactly the given name (ignoring the case,
-of course) will be matched (hint: if you want to include all subdomains, but
-not the domain of the given name itself, place an exact-match exclude rule
-before the include rule, e.g: exclude="foo.bar."; include=".foo.bar.";
-Previous versions of pdnsd required that names given with this and the next
-option ended in a dot, but since version 1.1.8b1-par8, pdnsd automatically adds
-a dot at the end if it is missing.
-pdnsd now also accepts a more compact notation for adding several "include"
-entries in one line, e.g.:
-
-include=".foo",".bar",".my.dom";
-
-exclude=string;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is not queried if this was the first
-matching rule (see also the entry for policy).
-If the given name starts with a dot, the whole subdomain of the given name
-including the one of that name is matched, e.g. ".foo.bar." will match the
-domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-If it does not start in a dot, only exactly the given name (ignoring the case,
-of course) will be matched (hint: if you want to exclude all subdomains, but
-not the domain of the given name itself, place an exact-match include rule
-before the exclude rule, e.g: include="foo.bar."; exclude=".foo.bar.";
-pdnsd now also accepts a more compact notation for adding several "exclude"
-entries in one line, e.g.:
-
-exclude=".foo",".bar",".my.dom";
-
-
-2.1.3 rr Section
-
-Every rr section specifies a dns resource record that is stored locally. It
-allows you to specify own dns records that are served by pdnsd in a limited
-way. Only A, PTR, CNAME, MX, NS and SOA records are implemented.
-This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
-and localhost. (and perhaps even one or two hosts) without having to start an
-extra named if your cached name servers do not serve those records. It is NOT
-intended and not capable to work as a full-featured name server.
-
-
-name=string;
-Specifies the name of the resource records, i.e. the domain name of the
-resource the record describes. This option must be specified before any a, ptr,
-cname, mx, ns or soa records. Names are interpreted as absolute domain names
-(i.e. pdnsd assumes they end in the root domain). For this and all following
-arguments that take domain names, you need to specify domain names in dotted
-notation (example venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-New in version 1.2: It is also possible to specify a name starting with the
-label *. Such a name is called a wildcard. The * in a wildcard can match one or
-more labels in a queried name, but only whole labels. Any other * characters in
-a wildcard, apart from the leading one, will only match a literal *.
-For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
-mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
-*a.mydomain will only match itself.
-Before you can specify an rr section with name=*.mydomain you must define some
-records for mydomain, typically NS and/or SOA records. Example:
-
- rr {
- name = mydomain;
- ns = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = *.mydomain;
- a = 192.168.1.10;
- }
-
-In this example, www.mydomain and ftp.mydomain will resolve to the numeric
-address 192.168.1.10 (unless you add rr sections explicitly specifying
-different addresses for www.mydomain or ftp.mydomain). If you want mydomain
-also to resolve to a numeric address, add an A record to the first rr section.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records for this rr
-section. This means that pdnsd flags the domain record so that records of this
-domain that are not present in the cache are treated as non-existent, i.e. no
-other servers are queried for that record type, and an response containing none
-of those records is returned. This is most time what people want: if you add an
-A record for a host, and it has no AAAA record (thus no IPv6 address), you
-normally don't want other name servers to be queried for it.
-This is on by default.
-Please note that this only has an effect if it precedes the name option!
-
-reverse=(on|off);
-New in version 1.2: If you want a locally defined name to resolve to a numeric
-address and vice versa, you can achieve this by setting reverse=on before
-defining the A record (see below). The alternative is to define a separate PTR
-record, but you will probably find this option much more convenient.
-The default is off.
-
-a=string;
-Defines an A (host address) record. The argument is an IPv4 address in dotted
-notation. pdnsd will serve this address for the host name given in the name
-option.
-Provided there is sufficient support in the C libraries and support for AAAA
-records was not disabled, the argument string may also be an IPv6 address, in
-which case an AAAA record will be defined.
-This option be may used multiple times within an rr section, causing multiple
-addresses to be defined for the name. However, if you put the different
-addresses in different rr sections for the same name, the definition in the
-last rr section will cancel the definitions in the previous ones.
-
-ptr=string;
-Defines a PTR (domain name pointer) record. The argument is a host name in
-dotted notation (see name). The ptr record is for resolving adresses into
-names. For example, if you want the adress 127.0.0.1 to resolve into localhost,
-and localhost into 127.0.0.1, you need something like the following sections:
-
- rr {
- name = localhost;
- a = 127.0.0.1;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
- rr {
- name = 1.0.0.127.in-addr.arpa;
- ptr = localhost;
- owner = localhost;
- soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
- }
-
-The second section is for reverse resolving and uses the ptr option. Note that
-you can get the same effect by specifying only the first rr section with
-reverse=on.
-There is something special about the name in the second section: when a
-resolver wants to get a host name from an internet address, it composes an
-address that is built of the IP address in reverse byte order (1.0.0.127
-instead of 127.0.0.1) where each byte of the adress written as number
-constitutes a sub-domain under the domain in-addr.arpa.
-So, if you want to compose an adress for reverse resolving, take your ip in
-dotted notation (e.g. 1.2.3.4), reverse the byte order (4.3.2.1) and append
-in-addr.arpa. (4.3.2.1.in-addr.arpa.) Then, define an rr section giving this
-address as name and the domain name corresponding to that ip in the ptr option.
-
-cname=string;
-Defines a CNAME (canonical name) record. The argument should be a
-fully-qualified host name in dotted notation (see name). A CNAME is the DNS
-equivalent of an alias or symbolic link.
-A useful application for CNAMEs is giving short, easy to remember nicknames to
-hosts with complicated names. For example, you might want the name "news" to
-refer to your ISP's news server "nntp2.myisp.com". Instead of adding an A
-record for "news" with the same address as "nntp2.myisp.com", you could put in
-a CNAME pointing to "nntp2.myisp.com", so that if the IP address of the news
-server changes, there is no need to update the record for "news".
-To implement this with pdnsd, you could add the following section to your
-configuration file:
-
- rr {
- name = news;
- cname = nntp2.myisp.com;
- owner = localhost;
- }
-
-mx=string,number;
-Defines an MX (mail exchange) record. The string is the host name of the mail
-server in dotted notation (see name). The number specifies the preference
-level.
-When you send mail to someone, your mail typically goes from your E-mail client
-to an SMTP server. The SMTP server then checks for the MX record of the domain
-in the E-mail address. For example, with joe@xxxxxxxxxxx, it would look for the
-MX record for example.com and find that the name of mail server for that domain
-is, say, mail.example.com. The SMTP server then gets the A record for
-mail.example.com, and connects to the mail server.
-If there are multiple MX records, the SMTP server will pick one based on the
-preference level (starting with the lowest preference number, working its way
-up).
-Don't define MX records with pdnsd unless you know what you're doing.
-
-owner=string;
-or
-ns=string;
-Defines an NS (name server) record. Specifies the name of the host which should
-be authoritative for the records you defined in the rr section. This is
-typically the host pdnsd runs on.
-Note: In previous versions of pdnsd this option had to be specified before any
-a, ptr, cname, mx or soa entries. In version 1.2, the restrictions on this
-option are same as the options just mentioned, and it must listed after the
-name= option. This can be a pain if you want to use an old config file which
-specifies owner= before name= (sorry about that). Apart from greater
-consistency, the advantage is that you can now specify as many NS records as
-you like (including zero).
-
-soa=string,string,number,timespec,timespec,timespec,timespec;
-This defines a soa (start of authority) record. The first string is the domain
-name of the server and should be equal to the name you specified as owner.
-The second string specifies the email address of the maintainer of the name
-server. It is also specified as a domain name, so you will have to replace the
-@ sign in the name with a dot (.) to get the name you have to specify here. The
-next parameter (the first number) is the serial number of the record. You
-should increment this number if you change the record.
-The 4th parameter is the refresh timeout. It specifies after what amount of
-time a caching server should attempt to refresh the cached record.
-The 5th parameter specifies a time after which a caching server should attempt
-to refresh the record after a refresh failure.
-The 6th parameter defines the timeout after which a cached record expires if it
-has not been refreshed.
-The 7th parameter is the ttl that is specified in every rr and should be the
-same as given with the ttl option (if you do not specify a ttl, use the default
-86400).
-
-txt=string,...,string;
-New in version 1.2.9: Defines an TXT record. You can specify one or more
-strings here.
-
-
-2.1.4 neg Section
-
-Every neg section specifies a dns resource record or a dns domain that should
-be cached negatively locally. Queries for negatively cached records are always
-answered immediatley with an error or an empty answer without querying other
-hosts as long as the record is valid. The records defined with neg sections
-remain valid until they are explicitely invalidated or deleted by the user
-using pdnsd-ctl.
-This is useful if a certain application asks periodically for nonexisting hosts
-or RR types and you do not want a query to go out every time the cached record
-has timed out. Example: Netscape Communicator will ask for the servers news and
-mail on startup if unconfigured. If you do not have a dns search list for your
-network, you can inhibit outgoing queries for these by specifying
-
- neg {
- name = news;
- types = domain;
- }
- neg {
- name = mail;
- types = domain;
- }
-
-in your config file. If you have a search list, you have to repeat that for any
-entry in your search list in addition to the entries given above!
-In versions 1.1.11 and later, if you negate whole domains this way, all
-subdomains will be negated as well. Thus if you specify
-neg {name=example.com; types=domain;} in the config file, this will also negate
-www.example.com, xxx.adserver.example.com, etc.
-
-
-name=string;
-Specifies the name of the domain for which negative cache entries are created.
-This option must be specified before the types option. Names are interpreted as
-absolute domain names (i.e. pdnsd assumes they end in the root domain). You
-need to specify domain names in dotted notation (example venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-types=(domain|rr_type[,rr_type[,rr_type[,...]]]);
-Specifies what is to be cached negatively: domain will cache the whole domain
-negatively; alternatively, you can specify a comma-separated list of RR types
-which are to be cached negatively. You may specify multiple types options, but
-domain and the RR types are mutually exclusive.
-The RR types are specified using their official names from the RFC's in
-capitals, e.g. A, CNAME, NS, PTR, MX, AAAA, ...
-The command pdnsd-ctl list-rrtypes will give you a complete list of those
-types. pdnsd-ctl is built along with pdnsd and will be installed in the same
-directory as the pdnsd binary during make install.
-
-
-2.1.5 source Section
-
-Every source section allows you to let pdnsd read the records from a file in an
-/etc/hosts-like format. pdnsd will generate records to resolve the entries
-address from its host name and vice versa for every entry in the file. This is
-normally easier than defining an rr for every of your addresses, since
-localhost and your other FQDNs are normally given in /etc/hosts.
-The accepted format is as follows: The #-sign initiates a comment, the rest of
-the line from the first occurence of this character on is ignored. Empty lines
-are tolerated.
-The first entry on a line (predeceded by an arbitrary number of tabs and
-spaces) is the IP in dotted notation, the second entry on one line (separated
-by the first by an arbitrary number of tabs and spaces) is the FQDN (fully
-qualified domain name) for that ip. The rest of the line is ignored by default
-(in the original /etc/hosts, it may contain information not needed by pdnsd).
-
-
-owner=string;
-Specifies the name of the host pdnsd runs on and that are specified in dns
-answers (specifically, nameserver records). Must be specified before any file
-entries.
-Names are interpreted as absolute domain names (i.e. pdnsd assumes they end in
-the root domain). You need to specify domain names in dotted notation (example
-venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-file=string;
-The string specifies a file name. For every file entry in a source section,
-pdnsd will try to load the given file as described above. Failure is indicated
-only when the file cannot be opened, malformed entries will be ignored.
-
-serve_aliases=(on|off);
-If this is turned on pdnsd will serve the aliases given in a hosts-style file.
-These are the third entry in a line of a hosts-style file, which usually give a
-"short name" for the host. This may be used to support broken clients without a
-proper domain-search option. If no aliases are given in a line of the file,
-pdnsd behaves as without this option for this line.
-This feature was suggested by Bert Frederiks.
-It is off by default.
-
-authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records with the
-data from the hosts file. Please see the description of the option of the same
-name in the rr section for a closer description of what this means. Please note
-that this only has an effect for files sourced with file options subsequent to
-this option.
-This is on by default.
-
-
-2.1.6 include Section
-
-A configuration file may include other configuration files. However, only the
-top-level configuration file may contain global and server sections, thus
-include files are effectively limited to sections that add local definitions to
-the cache.
-Include sections currently only have one type of option, which may be given
-multiple times within a single section.
-
-
-file=string;
-The string specifies a file name. For every file option in an include section,
-pdnsd will parse the given file as described above. The file may contain
-include sections itself, but as a precaution pdnsd checks that a certain
-maximum depth is not exceeded to guard against the possibility of infinite
-recursion.
-
-
-3 pdnsd-ctl
-
-pdnsd-ctl allows you to configure pdnsd at run time. To make this work, you
-have to start pdnsd with the -s option (or use the status_ctl option in the
-config file). You also should make sure that you have appropriate permissions
-on the control socket (use the ctl_perms option to make this sure) and of your
-pdnsd cache directory (pdnsd keeps its socket there). Please make sure the
-pdnsd cache directory is not writeable for untrusted users!
-
-pdnsd-ctl accepts two command-line options starting with a dash.
--c may be used to specify the cache directory (and takes this as argument). The
-default for this setting is the pdnsd default cache directory (specified at
-compile time). The cache directory for pdnsd-ctl must be the same pdnsd uses!
--q can be used to make the output of pdnsd-ctl less verbose.
-
-The following table lists the commands that pdnsd-ctl supports. The command
-must always be the first command-line option (not starting with a dash), the
-arguments to the command must follow in the given order.
-In the following table, keywords are in a normal font, while placeholders are
-in italics.
-Alternatives are specified like (alt1|alt2|alt3). Optional arguments are placed
-between square brackets [].
-
-Command Arguments Description
-
-help Print a command summary.
-
-version Print version and license info.
-
-status Print a description of pdnsd's cache status, thread status
- and configuration. Also shows which remote name servers
- are assumed to be available.
-
-server (index|label) (up| Set the status of the server with the given index or label
- down|retest) [dns1[, (where the given label matches the one given with the
- dns2[,...]]] label option in the respective server section in the
- config file) to up or down, or force a retest. The index
- is assigned in the order of definition in pdnsd.conf
- starting with 0. Use the status command to view the
- indices and labels. You can specify all instead of an
- index or label to perform the action for all servers
- registered with pdnsd. Example:
- pdnsd-ctl server 0 retest
- An optional third argument consisting of a list of IP
- addresses (separated by commas or white-space characters)
- can be given. This list will replace the previous list of
- addresses of name servers used by pdnsd in the specified
- section of the config file. For example in the /etc/ppp/
- ip-up script called by pppd you could place the following
- line:
- pdnsd-ctl server isplabel up $DNS1,$DNS2
- If white space is used to separate addresses the list will
- have to be quoted. Spurious commas and white-space
- characters are ignored. The last argument may also be an
- empty string, in which case the existing IP addresses are
- removed and the corresponding server section becomes
- inactive.
-
-record name (delete| Delete or invalidate the records of the given domain name
- invalidate) if it is in the cache. Invalidation means that the records
- are marked as timed out, and will be reloaded if possible
- (if purge_cache is set to on, they will be deleted in any
- case).
- For local records (i.e., records that were given in the
- config file using a rr section, records read from a
- hosts-style file and records added using pdnsd-ctl),
- invalidation has no effect. Deletion will work, though.
- Example:
- pdnsd-ctl record localhost. delete
-
-source fn owner [ttl] [(on Load a hosts-style file. Works like using the pdnsd source
- |off)] [noauth] configuration section. owner and ttl are used as in the
- source section. ttl has a default of 900 (it does not need
- to be specified). The next to last argument corresponds to
- the serve_aliases option, and is off by default (i.e. if
- it is not specified). noauth is used to make the domains
- non-authoritative - please see the description of the
- authrec config file options for a description of what that
- means. fn is the filename. The file must be readable by
- pdnsd! Example:
- pdnsd-ctl source /etc/hosts localhost. 900 off
-
-add a addr name [ttl]
- [noauth]
- Add a record of the given type to the pdnsd cache,
- replacing existing records for the same name and type. The
-add aaaa addr name [ttl 2nd argument corresponds to the value of the option in the
- ] [noauth] rr section that is named like the first argument: a is a
- record for hostname-to-address mapping, aaaa is the same
- thing for IPv6 addresses, and ptr is for
-add ptr host name [ttl] address-to-hostname mapping. See the documentation for the
- [noauth] rr section for more details. In case of A and AAAA
- records, the addr argument may be a list of IP addresses,
- separated by commas or white space, causing multiple
-add cname host name [ addresses to be defined for the same name. The ttl is
- ttl] [noauth] optional, the default is 900 seconds. noauth is used to
- make the domains non-authoritative - please see the
- description of the authrec config file options for a
-add mx host name pref description of what that means. If you want no other
- [ttl] [noauth] record than the newly added in the cache, do
- pdnsd-ctl record name delete before adding records. This
- is also better when overwriting local records. Example:
-add ns host name [ttl] pdnsd-ctl add a 127.0.0.1 localhost. 900
- [noauth]
-
-
-neg name [type] [ttl] Add a negatively cached record to pdnsd's cache, replacing
- existing records for the same name and type. If no type is
- given, the whole domain is cached negatively. For
- negatively cached records, errors are immediately returned
- on a query, without querying other servers first. The ttl
- is optional, the default is 900 seconds.
- You can get a list of all types you can pass to this
- command using pdnsd-ctl list-rrtypes. The type is treated
- case-sensitive! Example:
- pdnsd-ctl neg foo.bar A 900
- pdnsd-ctl neg foo.baz 900
-
-config [filename] Reload pdnsd's configuration file.
- The config file must be owned by the uid that pdnsd had
- when it was started, and be readable by pdnsd's run_as
- uid. If no file name is specified, the config file used at
- start-up is reloaded.
- Note that some configuration changes, like the port or IP
- address pdnsd listens on, cannot be made this way and you
- will receive an error message. In these cases, you will
- have to restart pdnsd instead.
-
-include filename Parse the given file as an include file, see the
- documentation on include sections for a description what
- this file may contain.
- This command is useful for adding definitions to the cache
- without reconfiguring pdnsd.
-
-eval string Parse the given string as if it were part of pdnsd's
- configuration file. The string should hold one or more
- complete configuration sections. However, global and
- server sections are not allowed, just as in include files.
- If multiple strings are given, they will be joined using
- newline chars and parsed together.
- This command is useful for adding records interactively to
- the cache that cannot be defined using the "pdnsd-ctl add"
- command, (e.g. soa records).
-
-empty-cache [[+|-]name ...] If no arguments are provided, the cache will be completely
- emptied, freeing all existing entries. Note that this also
- removes local records, as defined by the config file. To
- restore local records, run "pdnsd-ctl config" or
- "pdnsd-ctl include filename" immediately afterwards.
- The "pdnsd-ctl empty-cache" command now accepts additional
- arguments; these are interpreted as include/exclude names.
- If an argument starts with a '+' the name will be
- included. If an argument starts with a '-' it will be
- excluded. If an argument does not begin with '+' or '-', a
- '+' is assumed. If the domain name of a cache entry ends
- in one of the names in the list, the first match will
- determine what happens. If the matching name is to be
- included, the cache entry is deleted, otherwise not. If
- there are no matches, the default action is not to delete.
- Note that if you want to delete exactly one name and no
- others, you should use "pdnsd-ctl record name delete",
- this is also much more efficient.
- Examples:
- pdnsd-ctl empty-cache
- This command will remove all cache entries.
-
- pdnsd-ctl empty-cache microsoft.com msft.net
- This will remove all entries ending in microsoft.com or
- msft.net.
-
- pdnsd-ctl empty-cache -localdomain -168.192.in-addr.arpa .
- This will remove all entries except those ending in
- localdomain or 168.192.in-addr.arpa. Note that '.' is the
- root domain which matches any domain name.
-
-dump [name] Print information stored in the cache about name. If name
- begins with a dot and is not the root domain, information
- about the names in the cache ending in name (including
- name without the leading dot) will be printed. If name is
- not specified, information about all the names in the
- cache will be printed.
- For each RR record the time and date that this record has
- been added to the cache will be printed in the form mm/dd
- HH:MM:SS (locally defined records are printed without a
- time stamp). After that the type of record is printed with
- the data. For the more common types of RR records the data
- will be printed in human readable form, the remaining ones
- in a hexadecimal representation.
- This command is mainly useful for diagnostic purposes.
- Note that if you pipe the output of this command through
- an application that reads only part of the output and then
- blocks (such as more or less), pdnsd will not be able to
- add new entries to the cache until the pipe is closed. It
- is preferable to capture the output in a file in such a
- case.
-
-list-rrtypes List available rr types for the neg command. Note that
- those are only used for the neg command, not for add!
-
-
-
-4 contrib/
-
-The contrib directory in the pdnsd distribution contains useful
-user-contributed scripts.
-So far, there are scripts contributed by Marko Stolle and Paul Rombouts that
-make pdnsd usable in a DHCP setup. Please take a look into the README file in
-the contrib directory for further information.
-
-
-5 Problems...
-
-If you have problems with configuring or running pdnsd, be sure to read the FAQ
-. If this does not help you, pdnsd crashes or you find bugs, please mail one of
-the authors.
-Note added by Paul A. Rombouts: Thomas Moestl no longer maintains the code. I
-have revised the code and added new features. See README.par and the ChangeLog
-in the source directory (or /usr/share/doc/pdnsd-<version> if you have
-installed a binary package) for more details. If you have questions about my
-modifications, you can find my email address at the end of README.par.
-
-
-6 Hacking
-
-Here comes some information you might find useful for hacking pdnsd.
-
-6.1 Source files
-
-Makefile.am, autoconf/automake/autoheader scripts. Makefile.am's are in
-configure.in, most subdirectories.
-acconfig.h
-
-pdnsd.spec.in A template from which configure generates a spec file for
- building rpm's for various distributions.
-
-version Contains only the program version string. Needed for
- several templates.
-
-src/rc/* rc (start-up) scripts for various linux distributions.
-
- The pdnsd cache subsystem(s) as defined in src/cache.h.
-src/cache.c This is the "traditional" pdnsd system which keeps the
- cache in memory and uses hash tables for accesses. Sourav
- K. Mandal is working on a system using gdbm.
-
-src/pdnsd-ctl/* Contains the code for pdnsd-ctl, a program that allows you
- to control pdnsd at run time.
-
- The lex/flex source file for the config file lexer. This is
-src/conf-lex.l.in a template because there might be inserted "%option
- yylineno" for proper flex support. (obsolete, superseded by
- src/conf-parser.c)
-
- This is automatically generated by configure from
-src/conf-lex.l conf-lex.l.in. It may be overwritten in any make, so never
- modify this, but conf-lex.l.in instead! (obsolete,
- superseded by src/conf-parser.c)
-
-src/conf-parse.y The yacc/bison source of the config file parser. (obsolete,
- superseded by src/conf-parser.c)
-
-src/conf-parser.c, The config file parser written purely in C (versions
-src/conf-parser.h, 1.1.10-par and later).
-src/conf-keywords.h
-
-src/conff.c, src/ The configuration handler functions and their prototypes.
-conff.h The parser is called from here.
-
-src/consts.h Some constants used by the parser, config file handler
- functions and in the server status thread, among others.
-
- Define dns message structures, constants, and some common
-src/dns.c, src/dns.h dns data handlers. dns.h contains gcc-specific code (in
- praticular, "__attribute__((packed))").
-
-src/dns_answer.c, Define functions that answer incoming dns queries.
-src/dns_answer.h
-
-src/dns_query.c, src Define functions to manage outgoing dns queries.
-/dns_query.h
-
-src/error.c, src/ Functions for error output to stderr or the syslog, and
-error.h debug output to stderr or pdnsd.debug.
-
-src/hash.c, src/ Contains the code for storing and looking up cache entries
-hash.h in the hash table.
-
-src/helpers.c, src/ Define miscellaneous helper functions.
-helpers.h
-
-src/icmp.c, src/ Define a function for performing a ping test. This contains
-icmp.h OS-specific code.
-
-src/main.c Contains main(), which holds the command line parser,
- performs initialisations and signal handling.
-
- Contains the code for the executable make_hashconvtable,
-src/ which is only run once, during build time, to generate the
-make_hashconvtable.c file hashconvtable.h, used by src/hash.c (versions
- 1.1.10-par and later). (obsolete since version 1.2)
-
- A perl script for generating src/rr_types.h, a C header
-src/ file containing macro definitions and tables needed for
-make_rr_types_h.pl handling the RR types known to pdnsd, from the text file
- src/rr_types.in.
-
-src/rr_types.c, src/ These define tables and macros needed for handling the RR
-rr_types.h, src/ types known to pdnsd. Since version 1.2.9, rr_types.h is an
-rr_types.in automatically generated file, see make_rr_types_h.pl.
-
-src/netdev.c, src/ Define functions for network device handling. OS-specific.
-netdev.h
-
-src/servers.c, src/ Define functions for the server status thread that performs
-servers.h the periodical uptests.
-
-src/status.c, src/ Define functions for the status control thread. This is
-status.h pdnsd's interface to pdnsd-ctl.
-
-
--------------------------------------------------------------------------------
-
-Copyright (C) 2000, 2001 Thomas Moestl
-Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2012 Paul A. Rombouts
-
-Last revised: 19 April 2012 by Paul A. Rombouts
-
diff --git a/jni/pdnsd/file-list.base.in b/jni/pdnsd/file-list.base.in
deleted file mode 100644
index 409ba33..0000000
--- a/jni/pdnsd/file-list.base.in
+++ /dev/null
@@ -1,5 +0,0 @@
-%defattr(-,root,root)
-%doc AUTHORS THANKS COPYING COPYING.BSD ChangeLog ChangeLog.old INSTALL NEWS README README.par README.par.old TODO
-%config /etc/pdnsd.conf.sample
-%attr(750, @def_id@, @def_id@) %dir @cachedir@
-%attr(640, @def_id@, @def_id@) %config @cachedir@/pdnsd.cache
diff --git a/jni/pdnsd/install-sh b/jni/pdnsd/install-sh
deleted file mode 100644
index 4d4a951..0000000
--- a/jni/pdnsd/install-sh
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2005-05-14.22
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-dstarg=
-no_target_directory=
-
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
--c (ignored)
--d create directories instead of installing files.
--g GROUP $chgrpprog installed files to GROUP.
--m MODE $chmodprog installed files to MODE.
--o USER $chownprog installed files to USER.
--s $stripprog installed files.
--t DIRECTORY install into DIRECTORY.
--T report an error if DSTFILE is a directory.
---help display this help and exit.
---version display version info and exit.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
-
-while test -n "$1"; do
- case $1 in
- -c) shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t) dstarg=$2
- shift
- shift
- continue;;
-
- -T) no_target_directory=true
- shift
- continue;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- *) # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- test -n "$dir_arg$dstarg" && break
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
- break;;
- esac
-done
-
-if test -z "$1"; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call `install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-for src
-do
- # Protect names starting with `-'.
- case $src in
- -*) src=./$src ;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- src=
-
- if test -d "$dst"; then
- mkdircmd=:
- chmodcmd=
- else
- mkdircmd=$mkdirprog
- fi
- else
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dstarg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
-
- dst=$dstarg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst ;;
- esac
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dstarg: Is a directory" >&2
- exit 1
- fi
- dst=$dst/`basename "$src"`
- fi
- fi
-
- # This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-
- # Make sure that the destination directory exists.
-
- # Skip lots of stat calls in the usual case.
- if test ! -d "$dstdir"; then
- defaultIFS='
- '
- IFS="${IFS-$defaultIFS}"
-
- oIFS=$IFS
- # Some sh's can't handle IFS=/ for some reason.
- IFS='%'
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
- shift
- IFS=$oIFS
-
- pathcomp=
-
- while test $# -ne 0 ; do
- pathcomp=$pathcomp$1
- shift
- if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp"
- # mkdir can fail with a `File exist' error in case several
- # install-sh are creating the directory concurrently. This
- # is OK.
- test -d "$pathcomp" || exit
- fi
- pathcomp=$pathcomp/
- done
- fi
-
- if test -n "$dir_arg"; then
- $doit $mkdircmd "$dst" \
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
- else
- dstfile=`basename "$dst"`
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
- trap '(exit $?); exit' 1 2 13 15
-
- # Copy the file name to the temp name.
- $doit $cpprog "$src" "$dsttmp" &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
- # Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
- || {
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
-
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- if test -f "$dstdir/$dstfile"; then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
- || {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit 1
- }
- else
- :
- fi
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
- }
- }
- fi || { (exit 1); exit 1; }
-done
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
- (exit 0); exit 0
-}
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/missing b/jni/pdnsd/missing
deleted file mode 100644
index 894e786..0000000
--- a/jni/pdnsd/missing
+++ /dev/null
@@ -1,360 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2005-06-08.21
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@xxxxxxxxxxxxxxxx>, 1996.
-
-# 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 2, 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case "$1" in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-automake@xxxxxxx>."
- exit $?
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing $scriptversion (GNU Automake)"
- exit $?
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
-esac
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case "$1" in
- lex|yacc)
- # Not GNU programs, they don't have --version.
- ;;
-
- tar)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case "$f" in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison|yacc)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if [ ! -f y.tab.h ]; then
- echo >y.tab.h
- fi
- if [ ! -f y.tab.c ]; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex|flex)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if [ ! -f lex.yy.c ]; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit 1
- fi
- ;;
-
- makeinfo)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
-
- tar)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case "$firstarg" in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case "$firstarg" in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/pdnsd.spec.in b/jni/pdnsd/pdnsd.spec.in
deleted file mode 100644
index 6af6cde..0000000
--- a/jni/pdnsd/pdnsd.spec.in
+++ /dev/null
@@ -1,244 +0,0 @@
-# rpmbuild spec file for pdnsd.
-# with modifications by Paul Rombouts.
-
-# Supported rpmbuild --define and --with options include:
-#
-# --with isdn Configure with --enable-isdn.
-#
-# --without poll Configure with --disable-poll
-#
-# --without nptl Configure with --with-thread-lib=linuxthreads.
-#
-# --with ipv6 Configure with --enable-ipv6.
-#
-# --without tcpqueries Configure with --disable-tcp-queries.
-#
-# --without debug Configure with --with-debug=0.
-#
-# --define "distro <distro>" Configure with --with-distribution=<distro>.
-#
-# --define "run_as_user <user>" Configure with --with-default-id=<user>.
-# For RPMs the default <user> is "@def_id@".
-#
-# --define "run_as_uid <uid>" If the user defined by the previous option does not exist
-# when the RPM is installed, the pre-install script will try
-# to create a new user with numerical id <uid>.
-#
-# --define "cachedir <dir>" Configure with --with-cachedir=<dir>.
-#
-
-%{!?distro: %define distro @distribution@}
-
-# The default run_as ID to use
-%{!?run_as_user: %define run_as_user @def_id@}
-# By default, if a new run_as_user is to be created, we let
-# useradd choose the numerical uid, unless run_as_uid is defined.
-#define run_as_uid 96
-%{!?cachedir: %define cachedir @cachedir@}
-%define conffile %{_sysconfdir}/pdnsd.conf
-
-Summary: A caching dns proxy for small networks or dialin accounts
-Name: @PACKAGE@
-Version: @VERSION@
-Release: @packagerelease@
-License: GPLv3
-Group: Daemons
-Source: http://members.home.nl/p.a.rombouts/pdnsd/releases/%{name}-%{version}-%{release}.tar.gz
-URL: http://members.home.nl/p.a.rombouts/pdnsd.html
-Vendor: Paul A. Rombouts
-Packager: Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-Prefix: %{_prefix}
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-%description
-pdnsd is a proxy DNS daemon with permanent (disk-)cache and the ability
-to serve local records. It is designed to detect network outages or hangups
-and to prevent DNS-dependent applications like Netscape Navigator from hanging.
-
-The original author of pdnsd is Thomas Moestl, but pdnsd is no longer maintained
-by him. This is an extensively revised version by Paul A. Rombouts.
-For a description of the changes see http://members.home.nl/p.a.rombouts/pdnsd.html
-and the file README.par in %{_docdir}/%{name}-%{version}
-
-%{!?distro:You can specify the target distribution when you build the source RPM. For instance, if you're building for a Red Hat system call rpmbuild with:}
-%{!?distro: --define "distro RedHat"}
-%{?distro:This package was built for a %{distro} distribution.}
-%{!?_with_isdn:It's possible to rebuild the source RPM with isdn support using the rpmbuild option:}
-%{!?_with_isdn: --with isdn}
-%{?_with_isdn:This package was built with isdn support enabled.}
-%{!?_with_ipv6:It's possible to rebuild the source RPM with ipv6 support using the rpmbuild option:}
-%{!?_with_ipv6: --with ipv6}
-%{?_with_ipv6:This package was built with ipv6 support.}
-%{?_without_poll:This package was built with the select(2) function instead of poll(2).}
-
-%prep
-%setup
-
-%build
-CFLAGS="${CFLAGS:-$RPM_OPT_FLAGS -Wall}" ./configure \
- --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --mandir=%{_mandir} \
- --with-cachedir="%{cachedir}" \
- %{?distro:--with-distribution=%{distro}} --enable-specbuild \
- --with-default-id=%{run_as_user} \
- %{?_with_isdn:--enable-isdn} \
- %{?_without_poll:--disable-poll} \
- %{?_without_nptl:--with-thread-lib=linuxthreads} \
- %{?_with_ipv6:--enable-ipv6} \
- %{?_without_tcpqueries:--disable-tcp-queries} \
- %{?_without_debug:--with-debug=0}
-
-make
-
-%install
-%if "%{run_as_user}" != "nobody"
-[ "$(id -un)" != root ] ||
-id -u %{run_as_user} > /dev/null 2>&1 ||
-/usr/sbin/useradd -c "Proxy DNS daemon" %{?run_as_uid:-u %{run_as_uid}} \
- -s /sbin/nologin -r -d "%{cachedir}" %{run_as_user} || {
- set +x
- echo "Cannot create user \"%{run_as_user}\"%{?run_as_uid: with uid=%{run_as_uid}}"
- echo "Please select another numerical uid and rebuild with --define \"run_as_uid uid\""
- echo "or create a user named \"%{run_as_user}\" by hand and try again."
- exit 1
-}
-%endif
-
-rm -rf "$RPM_BUILD_ROOT"
-make DESTDIR="$RPM_BUILD_ROOT" install
-cp -f file-list.base file-list
-find doc contrib -not -type d -not -iname '*makefile' -not -name '*.am' \
- -not -name '*.in' -not -path 'doc/*.pl' |
-sed -e 's/^/%doc --parents /' >> file-list
-CURDIR=$PWD; cd "$RPM_BUILD_ROOT"
-find . -not -type d '(' -not -name 'pdnsd.conf*' -or -name 'pdnsd.conf.[1-9]*' ')' \
- -not -path '.%{_docdir}/*' -not -path './var/*' |
-sed -e 's/^\.//
- \:/man:{
- /\.gz$/!s/$/.gz/
- }' >> "$CURDIR/file-list"
-
-%clean
-rm -rf "$RPM_BUILD_ROOT"
-#rm -rf %{_builddir}/%{name}-%{srcver}
-
-%files -f file-list
-
-%pre
-# First stop any running pdnsd daemons
-%if "%{distro}" == "SuSE"
-/sbin/init.d/pdnsd stop >/dev/null 2>&1
-%endif
-%if "%{distro}" == "RedHat"
-if [ -f /var/lock/subsys/pdnsd ]; then
- if /sbin/pidof pdnsd > /dev/null; then
- /sbin/service pdnsd stop >/dev/null 2>&1
- if [ "$1" -ge 2 ]; then touch /var/lock/subsys/pdnsd; fi
- else
- rm -f /var/lock/subsys/pdnsd
- fi
-fi
-%endif
-
-%if "%{run_as_user}" != "nobody"
-# Add the "pdnsd" user
-id -u %{run_as_user} > /dev/null 2>&1 ||
-/usr/sbin/useradd -c "Proxy DNS daemon" %{?run_as_uid:-u %{run_as_uid}} \
- -s /sbin/nologin -r -d "%{cachedir}" %{run_as_user} || {
- echo "Cannot create user \"%{run_as_user}\"%{?run_as_uid: with uid=%{run_as_uid}}"
- echo "Please create a user named \"%{run_as_user}\" by hand and try again."
- exit 1
-}
-[ "$(id -gn %{run_as_user})" = %{run_as_user} ] || {
- echo "user \"%{run_as_user}\" does not have an corresponding group called \"%{run_as_user}\""
- echo "Please change the initial group of user \"%{run_as_user}\" to \"%{run_as_user}\" and try again."
- exit 1
-}
-
-if [ -f "%{conffile}" ] &&
- grep -v -e '^[[:blank:]]*\(#\|\/\/\)' "%{conffile}" |
- grep -q -e '\<run_as[[:blank:]]*=[[:blank:]]*"\?nobody"\?[[:blank:]]*;'
-then
- echo "An existing pdnsd configuration file %{conffile} has been detected, containing the run_as user ID \"nobody\""
- echo "For security reasons it is recommended that pdnsd run as a seperate user \"%{run_as_user}\""
- mv -f "%{conffile}" "%{conffile}.rpmsave" &&
- echo "Your original %{conffile} has been saved as %{conffile}.rpmsave" &&
- sed -e '/^[[:blank:]]*\(#\|\/\/\)/!s/\(\<run_as[[:blank:]]*=[[:blank:]]*\)"\?nobody"\?[[:blank:]]*;/\1"%{run_as_user}";/g' \
- "%{conffile}.rpmsave" > "%{conffile}" &&
- echo "In %{conffile} runs_as=\"nobody\" has been replaced by run_as=\"%{run_as_user}\""
-fi
-%endif
-
-if [ -f "%{cachedir}/pdnsd.cache" ]; then
- chown -c %{run_as_user}:%{run_as_user} "%{cachedir}/pdnsd.cache"
-fi
-
-%post
-%if "%{distro}" == "SuSE"
-if [ -w /etc/rc.config ]; then
- grep "START_PDNSD" /etc/rc.config > /dev/null
- if [ $? -ne 0 ] ; then
- echo -e \
-"\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" \
->> /etc/rc.config
- fi
-fi
-%endif
-%if "%{distro}" == "RedHat"
-if [ "$1" = 1 ]; then
- /sbin/chkconfig --add pdnsd
-fi
-%endif
-
-%preun
-%if "%{distro}" == "RedHat"
-if [ "$1" = 0 ]; then
- /sbin/service pdnsd stop >/dev/null 2>&1
- /sbin/chkconfig --del pdnsd
-fi
-%endif
-
-%postun
-%if "%{distro}" == "RedHat"
-if [ "$1" -ge 1 ]; then
- /sbin/service pdnsd condrestart >/dev/null 2>&1
-fi
-%endif
-
-%changelog
-* Tue Jan 31 2012 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-- Prevent makefiles and perl scripts from being installed
- in the documentation directory.
-* Sat Jan 28 2012 Paul A. Rombouts <p.a.rombouts@xxxxxxx>
-- Update the (Source) URLs.
-* Sat Aug 4 2007 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- License is now GPL version 3
-* Fri Mar 24 2006 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Instead of using a fixed default value for run_as_uid,
- I let useradd choose the uid if run_as_uid is undefined.
-* Thu Dec 29 2005 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- TCP-query support is now compiled in by default,
- but can be disabled using "--without tcpqueries".
-* Sun Jul 20 2003 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Changed default run_as ID from "nobody" to "pdnsd"
-* Fri Jun 20 2003 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Added configuration option for NPTL.
-* Sat Jun 07 2003 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Added automatic definition of distro using _vendor macro.
-* Thu May 22 2003 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Ensured that modification times of acconfig.h and configure.in
- are not changed by patching to avoid unwanted reconfigure during make phase.
-* Tue May 20 2003 Paul Rombouts <p.a.rombouts@xxxxxxx>
-- Applied my customized patch file. See READ.par for details.
-* Sun May 16 2001 Thomas Moestl <tmoestl@xxxxxxx>
-- Make use of chkconfig for Red Hat (patch by Christian Engstler)
-* Sun Mar 25 2001 Thomas Moestl <tmoestl@xxxxxxx>
-- Merged SuSE fixes by Christian Engstler
-* Fri Feb 09 2001 Thomas Moestl <tmoestl@xxxxxxx>
-- Merged in a spec fix for mapage inclusion contributed by Sourav K.
- Mandal
-* Sun Nov 26 2000 Thomas Moestl <tmoestl@xxxxxxx>
-- Added some patches contributed by Bernd Leibing
-* Tue Aug 15 2000 Thomas Moestl <tmoestl@xxxxxxx>
-- Added the distro for configure
-* Tue Jul 11 2000 Sourav K. Mandal <smandal@xxxxxxx>
-- autoconf/automake modifications
diff --git a/jni/pdnsd/src/Makefile.am b/jni/pdnsd/src/Makefile.am
deleted file mode 100644
index 959e669..0000000
--- a/jni/pdnsd/src/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-
-sbin_PROGRAMS = pdnsd
-
-pdnsd_CFLAGS = -DCONFDIR='"$(sysconfdir)"' $(thread_CFLAGS)
-
-pdnsd_SOURCES = conf-parser.c conff.c consts.c debug.c dns.c dns_answer.c \
- dns_query.c error.c helpers.c icmp.c list.c main.c netdev.c rr_types.c \
- status.c servers.c thread.c cache.c hash.c conf-parser.h \
- conf-keywords.h conff.h consts.h debug.h dns.h dns_answer.h \
- dns_query.h error.h helpers.h icmp.h ipvers.h list.h netdev.h \
- rr_types.h servers.h status.h thread.h cache.h hash.h pdnsd_assert.h \
- freebsd_netinet_ip_icmp.h
-
-EXTRA_DIST = make_rr_types_h.pl rr_types.in
-
-## Try to do this last
-
-SUBDIRS = . pdnsd-ctl rc test
-
-$(pdnsd_OBJECTS): rr_types.h
-
-rr_types.h: make_rr_types_h.pl rr_types.in
- perl make_rr_types_h.pl rr_types.in > rr_types.h
-
diff --git a/jni/pdnsd/src/Makefile.in b/jni/pdnsd/src/Makefile.in
deleted file mode 100644
index 75569a4..0000000
--- a/jni/pdnsd/src/Makefile.in
+++ /dev/null
@@ -1,921 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-sbin_PROGRAMS = pdnsd$(EXEEXT)
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am_pdnsd_OBJECTS = pdnsd-conf-parser.$(OBJEXT) pdnsd-conff.$(OBJEXT) \
- pdnsd-consts.$(OBJEXT) pdnsd-debug.$(OBJEXT) \
- pdnsd-dns.$(OBJEXT) pdnsd-dns_answer.$(OBJEXT) \
- pdnsd-dns_query.$(OBJEXT) pdnsd-error.$(OBJEXT) \
- pdnsd-helpers.$(OBJEXT) pdnsd-icmp.$(OBJEXT) \
- pdnsd-list.$(OBJEXT) pdnsd-main.$(OBJEXT) \
- pdnsd-netdev.$(OBJEXT) pdnsd-rr_types.$(OBJEXT) \
- pdnsd-status.$(OBJEXT) pdnsd-servers.$(OBJEXT) \
- pdnsd-thread.$(OBJEXT) pdnsd-cache.$(OBJEXT) \
- pdnsd-hash.$(OBJEXT)
-pdnsd_OBJECTS = $(am_pdnsd_OBJECTS)
-pdnsd_LDADD = $(LDADD)
-pdnsd_LINK = $(CCLD) $(pdnsd_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(pdnsd_SOURCES)
-DIST_SOURCES = $(pdnsd_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pdnsd_CFLAGS = -DCONFDIR='"$(sysconfdir)"' $(thread_CFLAGS)
-pdnsd_SOURCES = conf-parser.c conff.c consts.c debug.c dns.c dns_answer.c \
- dns_query.c error.c helpers.c icmp.c list.c main.c netdev.c rr_types.c \
- status.c servers.c thread.c cache.c hash.c conf-parser.h \
- conf-keywords.h conff.h consts.h debug.h dns.h dns_answer.h \
- dns_query.h error.h helpers.h icmp.h ipvers.h list.h netdev.h \
- rr_types.h servers.h status.h thread.h cache.h hash.h pdnsd_assert.h \
- freebsd_netinet_ip_icmp.h
-
-EXTRA_DIST = make_rr_types_h.pl rr_types.in
-SUBDIRS = . pdnsd-ctl rc test
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p; \
- then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-pdnsd$(EXEEXT): $(pdnsd_OBJECTS) $(pdnsd_DEPENDENCIES)
- @rm -f pdnsd$(EXEEXT)
- $(pdnsd_LINK) $(pdnsd_OBJECTS) $(pdnsd_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-cache.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-conf-parser.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-conff.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-consts.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-dns.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-dns_answer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-dns_query.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-error.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-hash.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-helpers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-icmp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-list.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-netdev.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-rr_types.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-servers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-status.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-thread.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-pdnsd-conf-parser.o: conf-parser.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conf-parser.o -MD -MP -MF $(DEPDIR)/pdnsd-conf-parser.Tpo -c -o pdnsd-conf-parser.o `test -f 'conf-parser.c' || echo '$(srcdir)/'`conf-parser.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-conf-parser.Tpo $(DEPDIR)/pdnsd-conf-parser.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='conf-parser.c' object='pdnsd-conf-parser.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conf-parser.o `test -f 'conf-parser.c' || echo '$(srcdir)/'`conf-parser.c
-
-pdnsd-conf-parser.obj: conf-parser.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conf-parser.obj -MD -MP -MF $(DEPDIR)/pdnsd-conf-parser.Tpo -c -o pdnsd-conf-parser.obj `if test -f 'conf-parser.c'; then $(CYGPATH_W) 'conf-parser.c'; else $(CYGPATH_W) '$(srcdir)/conf-parser.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-conf-parser.Tpo $(DEPDIR)/pdnsd-conf-parser.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='conf-parser.c' object='pdnsd-conf-parser.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conf-parser.obj `if test -f 'conf-parser.c'; then $(CYGPATH_W) 'conf-parser.c'; else $(CYGPATH_W) '$(srcdir)/conf-parser.c'; fi`
-
-pdnsd-conff.o: conff.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conff.o -MD -MP -MF $(DEPDIR)/pdnsd-conff.Tpo -c -o pdnsd-conff.o `test -f 'conff.c' || echo '$(srcdir)/'`conff.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-conff.Tpo $(DEPDIR)/pdnsd-conff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='conff.c' object='pdnsd-conff.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conff.o `test -f 'conff.c' || echo '$(srcdir)/'`conff.c
-
-pdnsd-conff.obj: conff.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conff.obj -MD -MP -MF $(DEPDIR)/pdnsd-conff.Tpo -c -o pdnsd-conff.obj `if test -f 'conff.c'; then $(CYGPATH_W) 'conff.c'; else $(CYGPATH_W) '$(srcdir)/conff.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-conff.Tpo $(DEPDIR)/pdnsd-conff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='conff.c' object='pdnsd-conff.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conff.obj `if test -f 'conff.c'; then $(CYGPATH_W) 'conff.c'; else $(CYGPATH_W) '$(srcdir)/conff.c'; fi`
-
-pdnsd-consts.o: consts.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-consts.o -MD -MP -MF $(DEPDIR)/pdnsd-consts.Tpo -c -o pdnsd-consts.o `test -f 'consts.c' || echo '$(srcdir)/'`consts.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-consts.Tpo $(DEPDIR)/pdnsd-consts.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='consts.c' object='pdnsd-consts.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-consts.o `test -f 'consts.c' || echo '$(srcdir)/'`consts.c
-
-pdnsd-consts.obj: consts.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-consts.obj -MD -MP -MF $(DEPDIR)/pdnsd-consts.Tpo -c -o pdnsd-consts.obj `if test -f 'consts.c'; then $(CYGPATH_W) 'consts.c'; else $(CYGPATH_W) '$(srcdir)/consts.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-consts.Tpo $(DEPDIR)/pdnsd-consts.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='consts.c' object='pdnsd-consts.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-consts.obj `if test -f 'consts.c'; then $(CYGPATH_W) 'consts.c'; else $(CYGPATH_W) '$(srcdir)/consts.c'; fi`
-
-pdnsd-debug.o: debug.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-debug.o -MD -MP -MF $(DEPDIR)/pdnsd-debug.Tpo -c -o pdnsd-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-debug.Tpo $(DEPDIR)/pdnsd-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='debug.c' object='pdnsd-debug.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
-
-pdnsd-debug.obj: debug.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-debug.obj -MD -MP -MF $(DEPDIR)/pdnsd-debug.Tpo -c -o pdnsd-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-debug.Tpo $(DEPDIR)/pdnsd-debug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='debug.c' object='pdnsd-debug.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
-
-pdnsd-dns.o: dns.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns.o -MD -MP -MF $(DEPDIR)/pdnsd-dns.Tpo -c -o pdnsd-dns.o `test -f 'dns.c' || echo '$(srcdir)/'`dns.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns.Tpo $(DEPDIR)/pdnsd-dns.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns.c' object='pdnsd-dns.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns.o `test -f 'dns.c' || echo '$(srcdir)/'`dns.c
-
-pdnsd-dns.obj: dns.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns.Tpo -c -o pdnsd-dns.obj `if test -f 'dns.c'; then $(CYGPATH_W) 'dns.c'; else $(CYGPATH_W) '$(srcdir)/dns.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns.Tpo $(DEPDIR)/pdnsd-dns.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns.c' object='pdnsd-dns.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns.obj `if test -f 'dns.c'; then $(CYGPATH_W) 'dns.c'; else $(CYGPATH_W) '$(srcdir)/dns.c'; fi`
-
-pdnsd-dns_answer.o: dns_answer.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_answer.o -MD -MP -MF $(DEPDIR)/pdnsd-dns_answer.Tpo -c -o pdnsd-dns_answer.o `test -f 'dns_answer.c' || echo '$(srcdir)/'`dns_answer.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns_answer.Tpo $(DEPDIR)/pdnsd-dns_answer.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns_answer.c' object='pdnsd-dns_answer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_answer.o `test -f 'dns_answer.c' || echo '$(srcdir)/'`dns_answer.c
-
-pdnsd-dns_answer.obj: dns_answer.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_answer.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns_answer.Tpo -c -o pdnsd-dns_answer.obj `if test -f 'dns_answer.c'; then $(CYGPATH_W) 'dns_answer.c'; else $(CYGPATH_W) '$(srcdir)/dns_answer.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns_answer.Tpo $(DEPDIR)/pdnsd-dns_answer.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns_answer.c' object='pdnsd-dns_answer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_answer.obj `if test -f 'dns_answer.c'; then $(CYGPATH_W) 'dns_answer.c'; else $(CYGPATH_W) '$(srcdir)/dns_answer.c'; fi`
-
-pdnsd-dns_query.o: dns_query.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_query.o -MD -MP -MF $(DEPDIR)/pdnsd-dns_query.Tpo -c -o pdnsd-dns_query.o `test -f 'dns_query.c' || echo '$(srcdir)/'`dns_query.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns_query.Tpo $(DEPDIR)/pdnsd-dns_query.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns_query.c' object='pdnsd-dns_query.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_query.o `test -f 'dns_query.c' || echo '$(srcdir)/'`dns_query.c
-
-pdnsd-dns_query.obj: dns_query.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_query.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns_query.Tpo -c -o pdnsd-dns_query.obj `if test -f 'dns_query.c'; then $(CYGPATH_W) 'dns_query.c'; else $(CYGPATH_W) '$(srcdir)/dns_query.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-dns_query.Tpo $(DEPDIR)/pdnsd-dns_query.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dns_query.c' object='pdnsd-dns_query.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_query.obj `if test -f 'dns_query.c'; then $(CYGPATH_W) 'dns_query.c'; else $(CYGPATH_W) '$(srcdir)/dns_query.c'; fi`
-
-pdnsd-error.o: error.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-error.o -MD -MP -MF $(DEPDIR)/pdnsd-error.Tpo -c -o pdnsd-error.o `test -f 'error.c' || echo '$(srcdir)/'`error.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-error.Tpo $(DEPDIR)/pdnsd-error.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='error.c' object='pdnsd-error.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-error.o `test -f 'error.c' || echo '$(srcdir)/'`error.c
-
-pdnsd-error.obj: error.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-error.obj -MD -MP -MF $(DEPDIR)/pdnsd-error.Tpo -c -o pdnsd-error.obj `if test -f 'error.c'; then $(CYGPATH_W) 'error.c'; else $(CYGPATH_W) '$(srcdir)/error.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-error.Tpo $(DEPDIR)/pdnsd-error.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='error.c' object='pdnsd-error.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-error.obj `if test -f 'error.c'; then $(CYGPATH_W) 'error.c'; else $(CYGPATH_W) '$(srcdir)/error.c'; fi`
-
-pdnsd-helpers.o: helpers.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-helpers.o -MD -MP -MF $(DEPDIR)/pdnsd-helpers.Tpo -c -o pdnsd-helpers.o `test -f 'helpers.c' || echo '$(srcdir)/'`helpers.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-helpers.Tpo $(DEPDIR)/pdnsd-helpers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='helpers.c' object='pdnsd-helpers.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-helpers.o `test -f 'helpers.c' || echo '$(srcdir)/'`helpers.c
-
-pdnsd-helpers.obj: helpers.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-helpers.obj -MD -MP -MF $(DEPDIR)/pdnsd-helpers.Tpo -c -o pdnsd-helpers.obj `if test -f 'helpers.c'; then $(CYGPATH_W) 'helpers.c'; else $(CYGPATH_W) '$(srcdir)/helpers.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-helpers.Tpo $(DEPDIR)/pdnsd-helpers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='helpers.c' object='pdnsd-helpers.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-helpers.obj `if test -f 'helpers.c'; then $(CYGPATH_W) 'helpers.c'; else $(CYGPATH_W) '$(srcdir)/helpers.c'; fi`
-
-pdnsd-icmp.o: icmp.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-icmp.o -MD -MP -MF $(DEPDIR)/pdnsd-icmp.Tpo -c -o pdnsd-icmp.o `test -f 'icmp.c' || echo '$(srcdir)/'`icmp.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-icmp.Tpo $(DEPDIR)/pdnsd-icmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='icmp.c' object='pdnsd-icmp.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-icmp.o `test -f 'icmp.c' || echo '$(srcdir)/'`icmp.c
-
-pdnsd-icmp.obj: icmp.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-icmp.obj -MD -MP -MF $(DEPDIR)/pdnsd-icmp.Tpo -c -o pdnsd-icmp.obj `if test -f 'icmp.c'; then $(CYGPATH_W) 'icmp.c'; else $(CYGPATH_W) '$(srcdir)/icmp.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-icmp.Tpo $(DEPDIR)/pdnsd-icmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='icmp.c' object='pdnsd-icmp.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-icmp.obj `if test -f 'icmp.c'; then $(CYGPATH_W) 'icmp.c'; else $(CYGPATH_W) '$(srcdir)/icmp.c'; fi`
-
-pdnsd-list.o: list.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-list.o -MD -MP -MF $(DEPDIR)/pdnsd-list.Tpo -c -o pdnsd-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-list.Tpo $(DEPDIR)/pdnsd-list.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='list.c' object='pdnsd-list.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
-
-pdnsd-list.obj: list.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-list.obj -MD -MP -MF $(DEPDIR)/pdnsd-list.Tpo -c -o pdnsd-list.obj `if test -f 'list.c'; then $(CYGPATH_W) 'list.c'; else $(CYGPATH_W) '$(srcdir)/list.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-list.Tpo $(DEPDIR)/pdnsd-list.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='list.c' object='pdnsd-list.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-list.obj `if test -f 'list.c'; then $(CYGPATH_W) 'list.c'; else $(CYGPATH_W) '$(srcdir)/list.c'; fi`
-
-pdnsd-main.o: main.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-main.o -MD -MP -MF $(DEPDIR)/pdnsd-main.Tpo -c -o pdnsd-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-main.Tpo $(DEPDIR)/pdnsd-main.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='pdnsd-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
-
-pdnsd-main.obj: main.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-main.obj -MD -MP -MF $(DEPDIR)/pdnsd-main.Tpo -c -o pdnsd-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-main.Tpo $(DEPDIR)/pdnsd-main.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='pdnsd-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-
-pdnsd-netdev.o: netdev.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-netdev.o -MD -MP -MF $(DEPDIR)/pdnsd-netdev.Tpo -c -o pdnsd-netdev.o `test -f 'netdev.c' || echo '$(srcdir)/'`netdev.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-netdev.Tpo $(DEPDIR)/pdnsd-netdev.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netdev.c' object='pdnsd-netdev.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-netdev.o `test -f 'netdev.c' || echo '$(srcdir)/'`netdev.c
-
-pdnsd-netdev.obj: netdev.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-netdev.obj -MD -MP -MF $(DEPDIR)/pdnsd-netdev.Tpo -c -o pdnsd-netdev.obj `if test -f 'netdev.c'; then $(CYGPATH_W) 'netdev.c'; else $(CYGPATH_W) '$(srcdir)/netdev.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-netdev.Tpo $(DEPDIR)/pdnsd-netdev.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netdev.c' object='pdnsd-netdev.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-netdev.obj `if test -f 'netdev.c'; then $(CYGPATH_W) 'netdev.c'; else $(CYGPATH_W) '$(srcdir)/netdev.c'; fi`
-
-pdnsd-rr_types.o: rr_types.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-rr_types.o -MD -MP -MF $(DEPDIR)/pdnsd-rr_types.Tpo -c -o pdnsd-rr_types.o `test -f 'rr_types.c' || echo '$(srcdir)/'`rr_types.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-rr_types.Tpo $(DEPDIR)/pdnsd-rr_types.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rr_types.c' object='pdnsd-rr_types.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-rr_types.o `test -f 'rr_types.c' || echo '$(srcdir)/'`rr_types.c
-
-pdnsd-rr_types.obj: rr_types.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-rr_types.obj -MD -MP -MF $(DEPDIR)/pdnsd-rr_types.Tpo -c -o pdnsd-rr_types.obj `if test -f 'rr_types.c'; then $(CYGPATH_W) 'rr_types.c'; else $(CYGPATH_W) '$(srcdir)/rr_types.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-rr_types.Tpo $(DEPDIR)/pdnsd-rr_types.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rr_types.c' object='pdnsd-rr_types.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-rr_types.obj `if test -f 'rr_types.c'; then $(CYGPATH_W) 'rr_types.c'; else $(CYGPATH_W) '$(srcdir)/rr_types.c'; fi`
-
-pdnsd-status.o: status.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-status.o -MD -MP -MF $(DEPDIR)/pdnsd-status.Tpo -c -o pdnsd-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-status.Tpo $(DEPDIR)/pdnsd-status.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='status.c' object='pdnsd-status.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
-
-pdnsd-status.obj: status.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-status.obj -MD -MP -MF $(DEPDIR)/pdnsd-status.Tpo -c -o pdnsd-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-status.Tpo $(DEPDIR)/pdnsd-status.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='status.c' object='pdnsd-status.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
-
-pdnsd-servers.o: servers.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-servers.o -MD -MP -MF $(DEPDIR)/pdnsd-servers.Tpo -c -o pdnsd-servers.o `test -f 'servers.c' || echo '$(srcdir)/'`servers.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-servers.Tpo $(DEPDIR)/pdnsd-servers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='servers.c' object='pdnsd-servers.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-servers.o `test -f 'servers.c' || echo '$(srcdir)/'`servers.c
-
-pdnsd-servers.obj: servers.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-servers.obj -MD -MP -MF $(DEPDIR)/pdnsd-servers.Tpo -c -o pdnsd-servers.obj `if test -f 'servers.c'; then $(CYGPATH_W) 'servers.c'; else $(CYGPATH_W) '$(srcdir)/servers.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-servers.Tpo $(DEPDIR)/pdnsd-servers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='servers.c' object='pdnsd-servers.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-servers.obj `if test -f 'servers.c'; then $(CYGPATH_W) 'servers.c'; else $(CYGPATH_W) '$(srcdir)/servers.c'; fi`
-
-pdnsd-thread.o: thread.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-thread.o -MD -MP -MF $(DEPDIR)/pdnsd-thread.Tpo -c -o pdnsd-thread.o `test -f 'thread.c' || echo '$(srcdir)/'`thread.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-thread.Tpo $(DEPDIR)/pdnsd-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thread.c' object='pdnsd-thread.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-thread.o `test -f 'thread.c' || echo '$(srcdir)/'`thread.c
-
-pdnsd-thread.obj: thread.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-thread.obj -MD -MP -MF $(DEPDIR)/pdnsd-thread.Tpo -c -o pdnsd-thread.obj `if test -f 'thread.c'; then $(CYGPATH_W) 'thread.c'; else $(CYGPATH_W) '$(srcdir)/thread.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-thread.Tpo $(DEPDIR)/pdnsd-thread.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thread.c' object='pdnsd-thread.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-thread.obj `if test -f 'thread.c'; then $(CYGPATH_W) 'thread.c'; else $(CYGPATH_W) '$(srcdir)/thread.c'; fi`
-
-pdnsd-cache.o: cache.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-cache.o -MD -MP -MF $(DEPDIR)/pdnsd-cache.Tpo -c -o pdnsd-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-cache.Tpo $(DEPDIR)/pdnsd-cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cache.c' object='pdnsd-cache.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
-
-pdnsd-cache.obj: cache.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-cache.obj -MD -MP -MF $(DEPDIR)/pdnsd-cache.Tpo -c -o pdnsd-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-cache.Tpo $(DEPDIR)/pdnsd-cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cache.c' object='pdnsd-cache.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi`
-
-pdnsd-hash.o: hash.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-hash.o -MD -MP -MF $(DEPDIR)/pdnsd-hash.Tpo -c -o pdnsd-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-hash.Tpo $(DEPDIR)/pdnsd-hash.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hash.c' object='pdnsd-hash.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
-
-pdnsd-hash.obj: hash.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-hash.obj -MD -MP -MF $(DEPDIR)/pdnsd-hash.Tpo -c -o pdnsd-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/pdnsd-hash.Tpo $(DEPDIR)/pdnsd-hash.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hash.c' object='pdnsd-hash.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(sbindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
-
-distclean: distclean-recursive
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-sbinPROGRAMS
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic \
- clean-sbinPROGRAMS ctags ctags-recursive distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-sbinPROGRAMS
-
-
-$(pdnsd_OBJECTS): rr_types.h
-
-rr_types.h: make_rr_types_h.pl rr_types.in
- perl make_rr_types_h.pl rr_types.in > rr_types.h
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/cache.c b/jni/pdnsd/src/cache.c
deleted file mode 100644
index 32d28cc..0000000
--- a/jni/pdnsd/src/cache.c
+++ /dev/null
@@ -1,2731 +0,0 @@
-/* cache.c - Keep the dns caches.
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2004, 2005, 2007, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <errno.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/time.h>
-#include "cache.h"
-#include "hash.h"
-#include "conff.h"
-#include "helpers.h"
-#include "dns.h"
-#include "error.h"
-#include "debug.h"
-#include "thread.h"
-#include "ipvers.h"
-
-
-/* A version identifier to prevent reading incompatible cache files */
-static const char cachverid[] = {'p','d','1','3'};
-
-/* CACHE STRUCTURE CHANGES IN PDNSD 1.0.0
- * Prior to version 1.0.0, the cache was managed at domain granularity (all records of a domain were handled as a unit),
- * which was suboptimal after the lean query feature and the additional record management were included.
- * From 1.0.0 on, the cache management was switched to act with RR set granularity. The API of the cache handlers was
- * slightly modified, in particular the rr_bucket_t was modified and some parameter list were changed. The cache
- * file format had to be changed and is incompatible now. This means that post-1.0.0p1 versions will not read the cache
- * files of older versions and vice versa. In addition, cache files from 1.0.0p5 on are incompatible to those of 1.0.0p1
- * to 1.0.0p4. Better delete them before upgrading.
- * The "cent" lists common to old versions have vanished; the only access point to the cent's is the hash.
- * However, there are now double linked rrset lists. Thus, rrs can be acces through the hash or through the rrset lists.
- * The rrset list entries need some additional entries to manage the deletion from rrs lists as well as from the cents.
- *
- * Nearly all cache functions had to be changed significantly or even to be rewritten for that. Expect some beta time
- * because of that.
- * There are bonuses visible to the users resulting from this changes however: more consistent cache handling (under
- * some circumstances, rrs could be in the cache more than once) and reduced memory requirements, as no rr needs
- * to have stored its oname any more. There are more pointers however, and in some cases (CNAMES) the memory require-
- * ments for some records may increase. The total should be lower, however.
- *
- * RRSET_L LIST STRUCTURE:
- * The rrset_l rrset list is a simple double-linked list. The oldest entries are at the first positions, the list is sorted
- * by age in descending order. Search is done only on insert.
- * The rationale for this form is:
- * - the purging operation needs to be fast (this way, the first records are the oldest and can easily be purged)
- * - the append operation is common and needs to be fast (in normal operation, an appended record was just retrieved
- * and therefore is the newest, so it can be appended at the end of the list without search. Only in the case of
- * reading a disk cache file, searches are necessary)
- * The rrset list is excusively used for purging purposes.
- *
- * THE DISK CACHE FILES:
- * The disk cache file consists of cent's, i.e. structures for every known hostnames with a header and rrs attached to it.
- * Therefore, the rr's are not ordered by their age and a search must be performed to insert the into the rr_l in the
- * right positions. This operations has some costs (although not all too much), but the other way (rrs stored in order
- * of their age and the cent headers separated from them), the rrs would need to be attached to the cent headers, which
- * would be even more costly, also in means of disk space.
- *
- * CHANGES AFTER 1.0.0p1
- * In 1.0.0p5, the cache granularity was changed from rr level to rr set level. This was done because rfc2181 demands
- * rr set consistency constraints on rr set level and if we are doing so we can as well save space (and eliminate some
- * error-prone algorithms).
- *
- * CHANGES FOR 1.1.0p1
- * In this version, negative caching support was introduced. Following things were changed for that:
- * - new members ts, ttl and flags in dns_cent_t and dns_file_t
- * - new caching flag CF_NEGATIVE
- * - all functions must accept and deal correctly with empty cents with DF_NEGATIVE set.
- * - all functions must accept and deal correctly with empty rrsets with CF_NEGATIVE set.
- */
-
-
-/*
- * This is the size the memory cache may exceed the size of the permanent cache.
- */
-#define MCSZ 10240
-
-/* Some structs used for storing cache entries in a file. */
-typedef struct {
- unsigned short rdlen;
-/* data (with length rdlen) follows here;*/
-} rr_fbucket_t;
-
-typedef struct {
- unsigned char tp; /* RR type */
- unsigned char num_rr; /* Number of records in RR set. */
- unsigned short flags; /* Flags for RR set. */
- time_t ttl;
- time_t ts;
-} __attribute__((packed))
-rr_fset_t;
-
-#if NRRTOT>255
-#warning "Number of cache-able RR types is greater than 255. This can give problems when saving the cache to file."
-#endif
-
-typedef struct {
- unsigned char qlen; /* Length of the domain name which follows after the struct. */
- unsigned char num_rrs; /* Number of RR-sets. */
- unsigned short flags; /* Flags for the whole cent. */
- unsigned char c_ns,c_soa; /* Number of trailing name elements in qname to use to find NS or SOA
- records to add to the authority section of a response. */
- /* ttl and ts follow but only for negatively cached domains. */
- /* qname (with length qlen) follows here. */
-} __attribute__((packed))
-dns_file_t;
-
-
-/* TTL and timestamp for negatively cached domains. */
-typedef struct {
- time_t ttl;
- time_t ts;
-} __attribute__((packed))
-dom_fttlts_t;
-
-/*
- * This has two modes: Normally, we have rrset, cent and idx filled in;
- * for negatively cached cents, we have rrset set to NULL and idx set to -1.
- */
-typedef struct rr_lent_s {
- struct rr_lent_s *next;
- struct rr_lent_s *prev;
- rr_set_t *rrset;
- dns_cent_t *cent;
- int idx; /* This is the array index, not the type of the RR-set. */
-} rr_lent_t;
-
-
-static rr_lent_t *rrset_l=NULL;
-static rr_lent_t *rrset_l_tail=NULL;
-
-/*
- * We do not count the hash table sizes here. Those are very small compared
- * to the cache entries.
- */
-static volatile long cache_size=0;
-static volatile long ent_num=0;
-
-static volatile int cache_w_lock=0;
-static volatile int cache_r_lock=0;
-
-pthread_mutex_t lock_mutex = PTHREAD_MUTEX_INITIALIZER;
-/*
- * These are condition variables for lock coordination, so that normal lock
- * routines do not need to loop. Basically, a process wanting to acquire a lock
- * tries first to lock, and if the lock is busy, sleeps on one of the conds.
- * If the r lock count has gone to zero one process sleeping on the rw cond
- * will be awankened.
- * If the rw lock is lifted, either all threads waiting on the r lock or one
- * thread waiting on the rw lock is/are awakened. This is determined by policy.
- */
-pthread_cond_t rw_cond = PTHREAD_COND_INITIALIZER;
-pthread_cond_t r_cond = PTHREAD_COND_INITIALIZER;
-
-/* This is to suspend the r lock to avoid lock contention by reading threads */
-static volatile int r_pend=0;
-static volatile int rw_pend=0;
-static volatile int r_susp=0;
-
-/* This threshold is used to temporarily suspend r locking to give rw locking
- * a chance. */
-#define SUSP_THRESH(r_pend) (r_pend/2+2)
-
-/*
- * This is set to 1 once the lock is intialized. This must happen before we get
- * multiple threads.
- */
-volatile short int use_cache_lock=0;
-
-/*
- This is set to 0 while cache is read from disk.
- This must be set to 1 before we start adding new entries.
-*/
-static short int insert_sort=1;
-
-
-#ifdef ALLOC_DEBUG
-#define cache_free(ptr) { if (dbg) pdnsd_free(ptr); else free(ptr); }
-#define cache_malloc(sz) ((dbg)?(pdnsd_malloc(sz)):(malloc(sz)))
-#define cache_calloc(n,sz) ((dbg)?(pdnsd_calloc(n,sz)):(calloc(n,sz)))
-#define cache_realloc(ptr,sz) ((dbg)?(pdnsd_realloc(ptr,sz)):(realloc(ptr,sz)))
-#else
-#define cache_free(ptr) {free(ptr);}
-#define cache_malloc(sz) (malloc(sz))
-#define cache_calloc(n,sz) (calloc(n,sz))
-#define cache_realloc(ptr,sz) (realloc(ptr,sz))
-#endif
-
-
-/*
- * Prototypes for internal use
- */
-static void purge_cache(long sz, int lazy);
-static void del_cache_ent(dns_cent_t *cent,dns_hash_loc_t *loc);
-static void remove_rrl(rr_lent_t *le DBGPARAM);
-
-/*
- * Locking functions.
- */
-
-/*
- * Lock/unlock cache for reading. Concurrent reads are allowed, while writes are forbidden.
- * DO NOT MIX THE LOCK TYPES UP WHEN LOCKING/UNLOCKING!
- *
- * We use a mutex to lock the access to the locks ;-).
- * This is because we do not allow read and write to interfere (for which a normal mutex would be
- * fine), but we also want to allow concurrent reads.
- * We use condition variables, and readlock contention protection.
- */
-static void lock_cache_r(void)
-{
- if (!use_cache_lock)
- return;
- pthread_mutex_lock(&lock_mutex);
- r_pend++;
- while(((rw_pend>SUSP_THRESH(r_pend))?(r_susp=1):r_susp) || cache_w_lock) {
- /* This will unlock the mutex while sleeping and relock it before exit */
- pthread_cond_wait(&r_cond, &lock_mutex);
- }
- cache_r_lock++;
- r_pend--;
- pthread_mutex_unlock(&lock_mutex);
-}
-
-static void unlock_cache_r(void)
-{
- if (!use_cache_lock)
- return;
- pthread_mutex_lock(&lock_mutex);
- if (cache_r_lock>0)
- cache_r_lock--;
- /* wakeup threads waiting to write */
- if (!cache_r_lock)
- pthread_cond_signal(&rw_cond);
- pthread_mutex_unlock(&lock_mutex);
-}
-
-/*
- * Lock/unlock cache for reading and writing. Concurrent reads and writes are forbidden.
- * Do this only if you actually modify the cache.
- * DO NOT MIX THE LOCK TYPES UP WHEN LOCKING/UNLOCKING!
- * (cant say it often enough)
- */
-static void lock_cache_rw(void)
-{
- if (!use_cache_lock)
- return;
- pthread_mutex_lock(&lock_mutex);
- rw_pend++;
- while(cache_w_lock || cache_r_lock) {
- /* This will unlock the mutex while sleeping and relock it before exit */
- pthread_cond_wait(&rw_cond, &lock_mutex);
- }
- cache_w_lock=1;
- rw_pend--;
- pthread_mutex_unlock(&lock_mutex);
-}
-
-/* Lock cache for reading and writing, or time out after tm seconds. */
-static int timedlock_cache_rw(int tm)
-{
- int retval=0;
- struct timeval now;
- struct timespec timeout;
-
- if (!use_cache_lock)
- return 0;
- pthread_mutex_lock(&lock_mutex);
- gettimeofday(&now,NULL);
- timeout.tv_sec = now.tv_sec + tm;
- timeout.tv_nsec = now.tv_usec * 1000;
- rw_pend++;
- while(cache_w_lock || cache_r_lock) {
- /* This will unlock the mutex while sleeping and relock it before exit */
- if(pthread_cond_timedwait(&rw_cond, &lock_mutex, &timeout) == ETIMEDOUT)
- goto cleanup_return;
- }
- cache_w_lock=1;
- retval=1;
- cleanup_return:
- rw_pend--;
- pthread_mutex_unlock(&lock_mutex);
- return retval;
-}
-
-static void unlock_cache_rw(void)
-{
- if (!use_cache_lock)
- return;
- pthread_mutex_lock(&lock_mutex);
- cache_w_lock=0;
- /* always reset r suspension (r locking code will set it again) */
- r_susp=0;
- /* wakeup threads waiting to read or write */
- if (r_pend==0 || rw_pend>SUSP_THRESH(r_pend))
- pthread_cond_signal(&rw_cond); /* schedule another rw proc */
- else
- pthread_cond_broadcast(&r_cond); /* let 'em all read */
- pthread_mutex_unlock(&lock_mutex);
-}
-
-
-/*
- If there are other threads waiting to read from or write to
- the cache, give up the read/write lock on the cache to give another
- thread a chance; then try to get the lock back again.
- This can be called regularly during a process that takes
- a lot of processor time but has low priority, in order to improve
- overall responsiveness.
-*/
-static void yield_lock_cache_rw()
-{
- if (!use_cache_lock || (!r_pend && !rw_pend))
- return;
-
- /* Give up the lock */
- pthread_mutex_lock(&lock_mutex);
- cache_w_lock=0;
- /* always reset r suspension (r locking code will set it again) */
- r_susp=0;
- /* wakeup threads waiting to read or write */
- if (r_pend==0 || rw_pend>SUSP_THRESH(r_pend))
- pthread_cond_signal(&rw_cond); /* schedule another rw proc */
- else
- pthread_cond_broadcast(&r_cond); /* let 'em all read */
- pthread_mutex_unlock(&lock_mutex);
-
- usleep_r(1000);
-
- /* Now try to get the lock back again */
- pthread_mutex_lock(&lock_mutex);
- rw_pend++;
- while(cache_w_lock || cache_r_lock) {
- /* This will unlock the mutex while sleeping and relock it before exit */
- pthread_cond_wait(&rw_cond, &lock_mutex);
- }
- cache_w_lock=1;
- rw_pend--;
- pthread_mutex_unlock(&lock_mutex);
-}
-
-/* These are a special version of the ordinary read lock functions. The lock "soft" to avoid deadlocks: they will give up
- * after a certain number of bad trials. You have to check the exit status though.
- * To avoid blocking mutexes, we cannot use condition variables here. Never mind, these are only used on
- * exit. */
-static int softlock_cache_r(void)
-{
- if (!use_cache_lock)
- return 0;
- {
- int lk=0,tr=0;
-
- for(;;) {
- if (!softlock_mutex(&lock_mutex))
- return 0;
- if(!cache_w_lock) {
- lk=1;
- cache_r_lock++;
- }
- pthread_mutex_unlock(&lock_mutex);
- if (lk) break;
- if (++tr>=SOFTLOCK_MAXTRIES)
- return 0;
- usleep_r(1000); /*give contol back to the scheduler instead of hammering the lock close*/
- }
- }
- return 1;
-}
-
-/* On unlocking, we do not wake others. We are about to exit! */
-static int softunlock_cache_r(void)
-{
- if (!use_cache_lock)
- return 0;
- if (!softlock_mutex(&lock_mutex))
- return 0;
- if (cache_r_lock>0)
- cache_r_lock--;
- pthread_mutex_unlock(&lock_mutex);
- return 1;
-}
-
-static int softlock_cache_rw(void)
-{
- if (!use_cache_lock)
- return 0;
- {
- int lk=0,tr=0;
-
- for(;;) {
- if (!softlock_mutex(&lock_mutex))
- return 0;
- if (!(cache_w_lock || cache_r_lock)) {
- lk=1;
- cache_w_lock=1;
- }
- pthread_mutex_unlock(&lock_mutex);
- if(lk) break;
- if (++tr>=SOFTLOCK_MAXTRIES)
- return 0;
- usleep_r(1000); /*give contol back to the scheduler instead of hammering the lock close*/
- }
- }
- return 1;
-}
-
-static int softunlock_cache_rw(void)
-{
- if (!use_cache_lock)
- return 0;
- if (!softlock_mutex(&lock_mutex))
- return 0;
- cache_w_lock=0;
- pthread_mutex_unlock(&lock_mutex);
- return 1;
-}
-
-/*
- * Serial numbers: Serial numbers are used when additional records are added to the cache: serial numbers are unique to each
- * query, so we can determine whether data was added by the query just executed (records can coexist) or not (records must
- * be replaced). A serial of 0 is special and will not be used by any query. All records added added authoritatively (as
- * chunk) or read from a file can have no query in process and therefore have serial 0, which is != any other serial.
- */
-#if 0
-unsigned long l_serial=1;
-
-unsigned long get_serial()
-{
- unsigned long rv;
- lock_cache_rw();
- rv=l_serial++;
- unlock_cache_rw();
- return rv;
-}
-#endif
-
-/*
- * Cache/cent handlers
- */
-
-/* Initialize the cache. Call only once. */
-#if 0
-void init_cache()
-{
- mk_hash_ctable();
- mk_dns_hash();
-}
-#endif
-
-/* Initialize the cache lock. Call only once. */
-/* This is now defined as an inline function in cache.h */
-#if 0
-void init_cache_lock()
-{
-
- use_cache_lock=1;
-}
-#endif
-
-/* Empty the cache, freeing all entries that match the include/exclude list. */
-int empty_cache(slist_array sla)
-{
- int i;
-
- /* Wait at most 60 seconds to obtain a lock. */
- if(!timedlock_cache_rw(60))
- return 0;
-
- for(i=0; ; ) {
- if(sla)
- free_dns_hash_selected(i,sla);
- else
- free_dns_hash_bucket(i);
- if(++i>=HASH_NUM_BUCKETS)
- break;
- /* Give another thread a chance */
- yield_lock_cache_rw();
- }
-
- unlock_cache_rw();
- return 1;
-}
-
-/* Delete the cache. Call only once */
-void destroy_cache()
-{
- /* lock the cache, in case that any thread is still accessing. */
- if(!softlock_cache_rw()) {
- log_error("Lock failed; could not destroy cache on exit.");
- return;
- }
- free_dns_hash();
-#if DEBUG>0
- if(ent_num || cache_size) {
- DEBUG_MSG("After destroying cache, %ld entries (%ld bytes) remaining.\n",ent_num,cache_size);
- }
-#endif
-
-#if 0
-#if (TARGET!=TARGET_LINUX)
- /* under Linux, this frees no resources but may hang on a crash */
- pthread_mutex_destroy(&lock_mutex);
- pthread_cond_destroy(&rw_cond);
- pthread_cond_destroy(&r_cond);
-#endif
-#endif
-}
-
-/* Make a flag value for a dns_cent_t (dns cache entry) from a server record */
-/* Now defined as inline function in cache.h */
-#if 0
-unsigned int mk_flag_val(servparm_t *server)
-{
- unsigned int fl=0;
- if (!server->purge_cache)
- fl|=CF_NOPURGE;
- if (server->nocache)
- fl|=CF_NOCACHE;
- if (server->rootserver)
- fl|=CF_ROOTSERV;
- return fl;
-}
-#endif
-
-/* Initialize a dns cache record (dns_cent_t) with the query name (in
- * transport format), a flag value, a timestamp indicating
- * the time the query was done, and a TTL. The timestamp and TTL
- * are only used if DF_NEGATIVE is set in the flags. Otherwise,
- * the timestamps of the individual records are used. DF_NEGATIVE
- * is used for whole-domain negative caching.
- * By convention, ttl and ts should be set to 0, unless the
- * DF_NEGATIVE bit is set. */
-int init_cent(dns_cent_t *cent, const unsigned char *qname, time_t ttl, time_t ts, unsigned flags DBGPARAM)
-{
- int i;
- size_t namesz=rhnlen(qname);
-
- cent->qname=cache_malloc(namesz);
- if (cent->qname == NULL)
- return 0;
- memcpy(cent->qname,qname,namesz);
- cent->cs=sizeof(dns_cent_t)+namesz;
- cent->num_rrs=0;
- cent->flags=flags;
- if(flags&DF_NEGATIVE) {
- cent->neg.lent=NULL;
- cent->neg.ttl=ttl;
- cent->neg.ts=ts;
- }
- else {
- for(i=0; i<NRRMU; ++i)
- cent->rr.rrmu[i]=NULL;
- cent->rr.rrext=NULL;
- }
- cent->c_ns=cundef;
- cent->c_soa=cundef;
- return 1;
-}
-
-/*
- * Create a rr record holder using the given values.
- */
-static rr_bucket_t *create_rr(unsigned dlen, void *data DBGPARAM)
-{
- rr_bucket_t *rrb;
- rrb=(rr_bucket_t *)cache_malloc(sizeof(rr_bucket_t)+dlen);
- if (rrb == NULL)
- return NULL;
- rrb->next=NULL;
-
- rrb->rdlen=dlen;
- memcpy(rrb->data,data,dlen);
- return rrb;
-}
-
-/*
- * Adds an empty rrset_t with the requested data to a cent. This is exactly what you need to
- * do to create a negatively cached cent.
- */
-static int add_cent_rrset_by_index(dns_cent_t *cent, unsigned int idx, time_t ttl, time_t ts, unsigned flags DBGPARAM)
-{
- rr_set_t **rrext, **rrsetpa, *rrset;
-
- /* If we add a rrset, even a negative one, the domain is not negative any more. */
- if (cent->flags&DF_NEGATIVE) {
- int i;
- /* need to remove the cent from the lent list. */
- if (cent->neg.lent)
- remove_rrl(cent->neg.lent DBGARG);
- cent->flags &= ~DF_NEGATIVE;
- for(i=0; i<NRRMU; ++i)
- cent->rr.rrmu[i]=NULL;
- cent->rr.rrext=NULL;
- }
-
- if(idx < NRRMU)
- rrsetpa = ¢->rr.rrmu[idx];
- else {
- idx -= NRRMU;
- PDNSD_ASSERT(idx < NRREXT, "add_cent_rrset_by_index: rr-set index out of range");
- rrext = cent->rr.rrext;
- if(!rrext) {
- int i;
- cent->rr.rrext = rrext = cache_malloc(sizeof(rr_set_t*)*NRREXT);
- if(!rrext)
- return 0;
- for(i=0; i<NRREXT; ++i)
- rrext[i]=NULL;
- cent->cs += sizeof(rr_set_t*)*NRREXT;
- }
- rrsetpa = &rrext[idx];
- }
-
-#if 0
- if(*rrsetpa) del_rrset(*rrsetpa);
-#endif
- *rrsetpa = rrset = cache_malloc(sizeof(rr_set_t));
- if (!rrset)
- return 0;
- rrset->lent=NULL;
- rrset->ttl=ttl;
- rrset->ts=ts;
- rrset->flags=flags;
- rrset->rrs=NULL;
- cent->cs += sizeof(rr_set_t);
- ++cent->num_rrs;
- return 1;
-}
-
-int add_cent_rrset_by_type(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags DBGPARAM)
-{
- int tpi = type - T_MIN;
-
- PDNSD_ASSERT(tpi>=0 && tpi<T_NUM, "add_cent_rrset_by_type: rr type value out of range");
- return add_cent_rrset_by_index(cent, rrlkuptab[tpi], ttl, ts, flags DBGARG);
-}
-
-
-/*
- * Adds a rr record to a cent. For cache.c internal use.
- * idx is the internally used RR-set index, not the RR type!
- */
-static int add_cent_rr_int(dns_cent_t *cent, unsigned int idx, time_t ttl, time_t ts, unsigned flags,
- unsigned dlen, void *data, rr_bucket_t **rtail DBGPARAM)
-{
- rr_bucket_t *rr;
- rr_set_t *rrset;
-
- if (!(rr=create_rr(dlen,data DBGARG)))
- return 0;
- if(!(rtail && *rtail)) {
- rrset = RRARR_INDEX_TESTEXT(cent,idx);
- if (!rrset) {
- if (!add_cent_rrset_by_index(cent, idx, ttl, ts, flags DBGARG))
- goto cleanup_return;
- rrset = RRARR_INDEX(cent,idx);
- }
- /* do the linking work */
- rr->next=rrset->rrs;
- rrset->rrs=rr;
- }
- else {
- /* append at the end */
- rr->next=(*rtail)->next;
- (*rtail)->next=rr;
- }
- if(rtail) *rtail=rr;
- cent->cs += sizeof(rr_bucket_t)+rr->rdlen;
-#if DEBUG>0
- if(debug_p) {
- rrset = RRARR_INDEX(cent,idx);
- if (rrset->flags&CF_NEGATIVE) {
- char cflagstr[CFLAGSTRLEN];
- DEBUG_MSG("Tried to add rr to a rrset with CF_NEGATIVE set! flags=%s\n",cflags2str(rrset->flags,cflagstr));
- }
- }
-#endif
- return 1;
-
- cleanup_return:
- free_rr(*rr);
- free(rr);
- return 0;
-}
-
-
-/* Add an rr to a cache entry, giving the ttl, the data length, the rr type
- * and a pointer to the data. A record is allocated, and the data is copied into
- * it. Do this for all rrs in a cache entry.
- * The return value will be 1 in case of success, or 0 in case of a memory allocation
- * problem.
- */
-int add_cent_rr(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags,
- unsigned dlen, void *data DBGPARAM)
-{
- int tpi;
- unsigned int idx;
- rr_set_t *rrset;
- rr_bucket_t *rtail, *rrb;
-
- if ((cent->flags&DF_LOCAL) && !(flags&CF_LOCAL))
- return 1; /* ignore. Local has precedence. */
-
- tpi = type - T_MIN;
- PDNSD_ASSERT(tpi>=0 && tpi<T_NUM, "add_cent_rr: rr type value out of range");
- idx= rrlkuptab[tpi];
- PDNSD_ASSERT(idx < NRRTOT, "add_cent_rr: illegal rr type value for caching");
- rrset= RRARR_INDEX_TESTEXT(cent,idx);
- rtail=NULL;
-
- if (rrset) {
- if(ttl<rrset->ttl)
- /* The ttl timestamps should be identical.
- In case they are not, we will use the smallest one. */
- rrset->ttl= ttl;
-
- /* OK, some stupid nameservers feel inclined to return the same address twice. Grmbl... */
- rrb=rrset->rrs;
- while (rrb) {
- if (rrb->rdlen==dlen && memcmp(rrb->data,data,dlen)==0)
- return 1;
- rtail=rrb;
- rrb=rrb->next;
- }
- }
- return add_cent_rr_int(cent,idx,ttl,ts,flags,dlen,data,&rtail DBGARG);
-}
-
-/* Free a complete rrset including all memory. Returns the size of the memory freed */
-int del_rrset(rr_set_t *rrs DBGPARAM)
-{
- int rv=sizeof(rr_set_t);
- rr_bucket_t *rrb,*rrn;
-
- if(rrs->lent) remove_rrl(rrs->lent DBGARG);
- rrb=rrs->rrs;
- while (rrb) {
- rv+=sizeof(rr_bucket_t)+rrb->rdlen;
- rrn=rrb->next;
- free_rr(*rrb);
- cache_free(rrb);
- rrb=rrn;
- }
- cache_free(rrs);
- return rv;
-}
-
-/* Remove a complete rrset from a cent, freeing the memory.
- The second argument should be an RR-set array index, not an RR type!
- Returns the size of the memory freed */
-static int del_cent_rrset_by_index(dns_cent_t *cent, int i DBGPARAM)
-{
- int rv=0;
- rr_set_t **rrspa = RRARR_INDEX_PA_TESTEXT(cent,i);
-
- if(rrspa) {
- rr_set_t *rrs = *rrspa;
- if(rrs) {
- rv= del_rrset(rrs DBGARG);
- *rrspa=NULL;
- --cent->num_rrs;
- cent->cs -= rv;
- cent->flags &= ~DF_AUTH;
- }
- }
- return rv;
-}
-
-#if 0
-static int del_cent_rrset_by_type(dns_cent_t *cent, int type DBGPARAM)
-{
- return del_cent_rrset_by_index(cent, rrlkuptab[type-T_MIN] DBGARG);
-}
-#endif
-
-#if 0
-/* Free the pointers contained in an rr record. If the rr record is on the heap,
- * don't forget to delete itself. This is done extra mainly for extensibility
- * -- This is not here any more. The definition is actually an empty macro in
- * cache.h.
- */
-void free_rr(rr_bucket_t rr)
-{
-}
-#endif
-
-/* Free all data referred by a cache entry. */
-void free_cent(dns_cent_t *cent DBGPARAM)
-{
- cache_free(cent->qname);
- if(cent->flags&DF_NEGATIVE) {
- if(cent->neg.lent)
- remove_rrl(cent->neg.lent DBGARG);
- }
- else {
- int i;
- for (i=0; i<NRRMU; ++i) {
- rr_set_t *rrs=cent->rr.rrmu[i];
- if (rrs) del_rrset(rrs DBG0);
- }
- {
- rr_set_t **rrext = cent->rr.rrext;
- if(rrext) {
- for(i=0; i<NRREXT; ++i) {
- rr_set_t *rrs=rrext[i];
- if (rrs) del_rrset(rrs DBG0);
- }
- cache_free(rrext);
- }
- }
- }
-}
-
-/* Same as free_cent, but is suitable as cleanup handler */
-void free_cent0(void *ptr)
-{
- free_cent(ptr DBG0);
-}
-
-/* Negate an existing cache entry and free any existing rr sets. */
-void negate_cent(dns_cent_t *cent, time_t ttl, time_t ts)
-{
- int i;
-
- if(!(cent->flags&DF_NEGATIVE)) {
- for (i=0; i<NRRMU; ++i) {
- rr_set_t *rrs=cent->rr.rrmu[i];
- if (rrs) {
- cent->cs -= del_rrset(rrs DBG0);
- /* cent->rr.rrmu[i]=NULL; */
- }
- }
- {
- rr_set_t **rrext = cent->rr.rrext;
- if(rrext) {
- for(i=0; i<NRREXT; ++i) {
- rr_set_t *rrs=rrext[i];
- if (rrs)
- cent->cs -= del_rrset(rrs DBG0);
- }
- cache_free(rrext);
- /* cent->rr.rrext=NULL; */
- cent->cs -= sizeof(rr_set_t*)*NRREXT;
- }
- }
- cent->num_rrs=0;
- cent->flags |= DF_NEGATIVE;
- cent->neg.lent=NULL;
- }
-
- cent->neg.ttl=ttl;
- cent->neg.ts=ts;
-}
-
-inline static time_t get_rrlent_ts(rr_lent_t *le)
-{
- return (le->rrset)?(le->rrset->ts):(le->cent->neg.ts);
-}
-
-/* insert a rrset into the rr_l list. This modifies the rr_set_t if rrs is not NULL!
- * The rrset address needs to be constant afterwards.
- * idx is the internally used RR-set index, not the RR type!
- * Call with locks applied. */
-static int insert_rrl(rr_set_t *rrs, dns_cent_t *cent, int idx)
-{
- time_t ts;
- rr_lent_t *le,*ne;
-
- /* No need to add local records to the rr_l list, because purge_cache() ignores them anyway. */
- if((rrs && (rrs->flags&CF_LOCAL)) || (cent->flags&DF_LOCAL))
- return 1;
-
- if (!(ne=malloc(sizeof(rr_lent_t))))
- return 0;
- ne->rrset=rrs;
- ne->cent=cent;
- ne->idx=idx;
- ne->next=NULL;
- ne->prev=NULL;
-
- if(insert_sort) {
- /* Since the append at the and is a very common case (and we want this case to be fast), we search back-to-forth.
- * Since rr_l is a list and we don't really have fast access to all elements, we do not perform an advanced algorithm
- * like binary search.*/
- ts=get_rrlent_ts(ne);
- le=rrset_l_tail;
- while (le) {
- if (ts>=get_rrlent_ts(le)) goto found;
- le=le->prev;
- }
- /* not found, so it needs to be inserted at the start of the list. */
- ne->next=rrset_l;
- if (rrset_l)
- rrset_l->prev=ne;
- else
- rrset_l_tail=ne;
- rrset_l=ne;
- goto finish;
- found:
- ne->next=le->next;
- ne->prev=le;
- if (le->next)
- le->next->prev=ne;
- else
- rrset_l_tail=ne;
- le->next=ne;
- finish:;
- }
- else {
- /* simply append at the end, sorting will be done later with a more efficient algorithm. */
- ne->prev=rrset_l_tail;
- if(rrset_l_tail)
- rrset_l_tail->next=ne;
- else
- rrset_l=ne;
- rrset_l_tail=ne;
- }
-
- if (rrs)
- rrs->lent=ne;
- else
- cent->neg.lent=ne;
-
- return 1;
-}
-
-/* Remove a rr from the rr_l list. Call with locks applied. */
-static void remove_rrl(rr_lent_t *le DBGPARAM)
-{
- rr_lent_t *next=le->next,*prev=le->prev;
- if (next)
- next->prev=prev;
- else
- rrset_l_tail=prev;
- if (prev)
- prev->next=next;
- else
- rrset_l=next;
- cache_free(le);
-}
-
-
-/* Merge two sorted rr_l lists to make a larger sorted list.
- The lists are sorted according to increasing time-stamp.
- The back links are ignored, these must be fixed using a separate pass.
-*/
-static rr_lent_t *listmerge(rr_lent_t *p, rr_lent_t *q)
-{
-
- if(!p)
- return q;
- else if(!q)
- return p;
- else {
- rr_lent_t *l=NULL, **s= &l;
-
- for(;;) {
- if(get_rrlent_ts(p) <= get_rrlent_ts(q)) {
- *s= p;
- s= &p->next;
- p= *s;
- if(!p) {
- *s= q;
- break;
- }
- }
- else { /* get_rrlent_ts(p) > get_rrlent_ts(q) */
- *s= q;
- s= &q->next;
- q= *s;
- if(!q) {
- *s= p;
- break;
- }
- }
- }
-
- return l;
- }
-}
-
-/* Sort the rr_l list using merge sort, which can be more efficient than insertion sort used by rr_insert().
- This algorithm is adapted from the GNU C++ STL implementation for list containers.
- Call with locks applied.
- Written by Paul Rombouts.
-*/
-static void sort_rrl()
-{
- /* Do nothing unless the list has length >= 2. */
- if(rrset_l && rrset_l->next) {
- /* First sort the list ignoring the back links, these will be fixed later. */
-# define NTMPSORT 32
- /* Because we use an array of fixed length, the length of the list we can sort
- is bounded by pow(2,NTMPSORT)-1. */
- rr_lent_t *tmp[NTMPSORT]; /* tmp[i] will either be NULL or point to a sorted list of length pow(2,i). */
- rr_lent_t **fill= tmp, **end=tmp+NTMPSORT, **counter;
- rr_lent_t *rem= rrset_l, *carry;
-
- do {
- carry=rem; rem=rem->next;
- carry->next=NULL;
- for(counter = tmp; counter!=fill && *counter!=NULL; ++counter) {
- carry=listmerge(*counter,carry);
- *counter=NULL;
- }
-
- PDNSD_ASSERT(counter!=end, "sort_rrl: tmp array overflowed");
-
- *counter=carry;
-
- if(counter==fill) ++fill;
- }
- while(rem);
-
- /* Merge together all the remaining list fragments contained in array tmp. */
- carry= tmp[0];
- counter= tmp;
- while(++counter!=fill)
- carry=listmerge(*counter,carry);
-
- rrset_l= carry;
-
- {
- /* Restore the backward links. */
- rr_lent_t *p,*q=NULL;
- for(p=rrset_l; p; p=p->next) {p->prev=q; q=p;}
- rrset_l_tail=q;
- }
- }
-}
-
-
-/* Copy a rr_bucket_t into newly allocated memory */
-inline static rr_bucket_t *copy_rr(rr_bucket_t *rr DBGPARAM)
-{
- rr_bucket_t *rrn;
- rrn=cache_malloc(sizeof(rr_bucket_t)+rr->rdlen);
- if (rrn == NULL)
- return NULL;
- memcpy(rrn,rr,sizeof(rr_bucket_t)+rr->rdlen);
- rrn->next=NULL;
- return rrn;
-}
-
-
-/* Copy an RR set into newly allocated memory */
-static rr_set_t *copy_rrset(rr_set_t *rrset DBGPARAM)
-{
- rr_set_t *rrsc=cache_malloc(sizeof(rr_set_t));
- rr_bucket_t *rr,**rrp;
- if (rrsc) {
- *rrsc=*rrset;
- rrsc->lent=NULL;
- rrp=&rrsc->rrs;
- rr=rrset->rrs;
- while(rr) {
- rr_bucket_t *rrc=copy_rr(rr DBGARG);
- *rrp=rrc;
- if (!rrc) goto cleanup_return;
- rrp=&rrc->next;
- rr=rr->next;
- }
- }
- return rrsc;
-
-cleanup_return:
- del_rrset(rrsc DBG0);
- return NULL;
-}
-
-
-/* Copy a cache entry into newly allocated memory */
-dns_cent_t *copy_cent(dns_cent_t *cent DBGPARAM)
-{
- dns_cent_t *copy;
-
- /*
- * We do not debug cache internals with it, as mallocs seem to be
- * "lost" when they enter the cache for a longer time.
- */
- if (!(copy=cache_malloc(sizeof(dns_cent_t))))
- return NULL;
-
- {
- /* copy the name */
- size_t namesz=rhnlen(cent->qname);
- if (!(copy->qname=cache_malloc(namesz)))
- goto free_return_null;
-
- memcpy(copy->qname,cent->qname,namesz);
- }
- copy->cs= cent->cs;
- copy->num_rrs= cent->num_rrs;
- copy->flags= cent->flags;
- copy->c_ns = cent->c_ns;
- copy->c_soa= cent->c_soa;
- if(cent->flags&DF_NEGATIVE) {
- copy->neg.lent=NULL;
- copy->neg.ttl= cent->neg.ttl;
- copy->neg.ts = cent->neg.ts;
- }
- else {
- int i, ilim;
- for (i=0; i<NRRMU; ++i)
- copy->rr.rrmu[i]=NULL;
- copy->rr.rrext=NULL;
-
- ilim = NRRMU;
- if(cent->rr.rrext) {
- rr_set_t **rrextc;
- ilim = NRRTOT;
- copy->rr.rrext = rrextc = cache_malloc(sizeof(rr_set_t*)*NRREXT);
- if(!rrextc) goto free_cent_return_null;
-
- for (i=0; i<NRREXT; ++i)
- rrextc[i]=NULL;
- }
-
- for (i=0; i<ilim; ++i) {
- rr_set_t *rrset= RRARR_INDEX(cent,i);
- if (rrset) {
- rr_set_t *rrsc=cache_malloc(sizeof(rr_set_t));
- rr_bucket_t *rr,**rrp;
- *RRARR_INDEX_PA(copy,i)=rrsc;
- if (!rrsc)
- goto free_cent_return_null;
- *rrsc=*rrset;
- rrsc->lent=NULL;
- rrp=&rrsc->rrs;
- rr=rrset->rrs;
- while(rr) {
- rr_bucket_t *rrc=copy_rr(rr DBGARG);
- *rrp=rrc;
- if (!rrc) goto free_cent_return_null;
- rrp=&rrc->next;
- rr=rr->next;
- }
- }
- }
- }
- return copy;
-
- free_cent_return_null:
- free_cent(copy DBGARG);
- free_return_null:
- cache_free(copy);
- return NULL;
-}
-
-/*
- * Remove all timed out entries of the RR set with the given index.
- * idx is the internally used RR-set index, not the RR type!
- * Follow some rules based on flags etc.
- * This will either delete the whole rrset, or will leave it as a whole (RFC2181 seems to
- * go in that direction)
- * This was pretty large once upon a time ;-), but now, since we operate in rrsets, was
- * shrunk drastically.
- * If test is zero and the record is in the cache, we need rw-locks applied.
- * If test is nonzero, nothing will actually be deleted.
- * Substracts the size of the freed memory from cache_size (if test is zero).
- * Returns 1 if the rrset has been (or would have been) deleted.
- */
-static int purge_rrset(dns_cent_t *cent, int idx, int test)
-{
- rr_set_t *rrs= RRARR_INDEX_TESTEXT(cent,idx);
- if (rrs && !(rrs->flags&CF_NOPURGE || rrs->flags&CF_LOCAL) && timedout(rrs)) {
- /* well, it must go. */
- if(!test)
- cache_size -= del_cent_rrset_by_index(cent,idx DBG0);
- return 1;
- }
- return 0;
-}
-
-/*
- Remove all timed out entries of alls RR sets of a cache entry.
- The test flag works the same as in purge_rrset().
- Substracts the size of the freed memory from cache_size, just as purge_rrset().
- *numrrsrem is set to the number of remaining RR sets (or the number that would have remained).
- Returns the number of items (RR sets or RR set arrays) that have been (or would have been) deleted.
-*/
-static int purge_all_rrsets(dns_cent_t *cent, int test, int *numrrsrem)
-{
- int rv=0, numrrs=0, numrrext=0;
-
- if(!(cent->flags&DF_NEGATIVE)) {
- int i, ilim= RRARR_LEN(cent);
- for(i=0; i<ilim; ++i) {
- rr_set_t *rrs= RRARR_INDEX(cent,i);
- if (rrs) {
- if(!(rrs->flags&CF_NOPURGE || rrs->flags&CF_LOCAL) && timedout(rrs)) {
- /* well, it must go. */
- if(!test)
- cache_size -= del_cent_rrset_by_index(cent, i DBG0);
- ++rv;
- }
- else {
- ++numrrs;
- if(i>=NRRMU) ++numrrext;
- }
- }
- }
-
- /* If the array of less frequently used RRs has become empty, free it. */
- if(cent->rr.rrext && numrrext==0) {
- if(!test) {
- cache_free(cent->rr.rrext);
- cent->rr.rrext=NULL;
- cent->cs -= sizeof(rr_set_t*)*NRREXT;
- cache_size -= sizeof(rr_set_t*)*NRREXT;
- }
- ++rv;
- }
- }
-
- if(numrrsrem) *numrrsrem=numrrs;
- return rv;
-}
-
-
-/*
- * Purge a cent, deleting timed-out rrs (following the constraints noted in "purge_rrset").
- * Since the cent may actually become empty and be deleted, you may not use it after this call until
- * you refetch its address from the hash (if it is still there).
- * If test is zero and the record is in the cache, we need rw-locks applied.
- * If test is nonzero, nothing will actually be deleted.
- * Substracts the size of the freed memory from cache_size (if test is zero).
- * If delete is nonzero and the cent was purged empty and no longer needed, it is removed from the cache.
- * Returns -1 if the cent was (or would have been) completely removed,
- * otherwise returns the number of items that were (or would have been) deleted.
- */
-static int purge_cent(dns_cent_t *cent, int delete, int test)
-{
- int npurge, numrrs;
-
- npurge = purge_all_rrsets(cent,test, &numrrs);
-
- /* If the cache entry was purged empty, delete it from the cache. */
- if (delete && numrrs==0
- && (!(cent->flags&DF_NEGATIVE) ||
- (!(cent->flags&DF_LOCAL) && timedout_nxdom(cent))))
- {
- if(!test)
- del_cache_ent(cent,NULL); /* this will subtract the cent's left size from cache_size */
- return -1;
- }
-
- if(!(cent->flags&DF_LOCAL)) {
- /* Set stale references to NS or SOA records back to undefined. */
- unsigned scnt=rhnsegcnt(cent->qname);
- if(cent->c_ns!=cundef) {
- rr_set_t *rrset=NULL;
- if(cent->c_ns==scnt)
- rrset=getrrset_NS(cent);
- else if(cent->c_ns<scnt) {
- dns_cent_t *ce=dns_lookup(skipsegs(cent->qname,scnt-cent->c_ns),NULL);
- if(ce) rrset=getrrset_NS(ce);
- }
- if(!rrset || !rrset->rrs || (!(rrset->flags&CF_LOCAL) && timedout(rrset))) {
- if(!test)
- cent->c_ns=cundef;
- ++npurge;
- }
- }
- if(cent->c_soa!=cundef) {
- rr_set_t *rrset=NULL;
- if(cent->c_soa==scnt)
- rrset=getrrset_SOA(cent);
- else if(cent->c_soa<scnt) {
- dns_cent_t *ce=dns_lookup(skipsegs(cent->qname,scnt-cent->c_soa),NULL);
- if(ce) rrset=getrrset_SOA(ce);
- }
- if(!rrset || !rrset->rrs || (!(rrset->flags&CF_LOCAL) && timedout(rrset))) {
- if(!test)
- cent->c_soa=cundef;
- ++npurge;
- }
- }
- }
-
- return npurge;
-}
-
-/*
- * Bring cache to a size below or equal the cache size limit (sz). There are two strategies:
- * - for cached sets with CF_NOPURGE not set: delete if timed out
- * - additional: delete oldest sets.
- */
-static void purge_cache(long sz, int lazy)
-{
- rr_lent_t *le;
-
- /* Walk the cache list from the oldest entries to the newest, deleting timed-out
- * records.
- * XXX: We walk the list a second time if this did not free up enough space - this
- * should be done better. */
- le=rrset_l;
- while (le && (!lazy || cache_size>sz)) {
- /* Note by Paul Rombouts:
- * If data integrity is ensured, at most one node is removed from the rrset_l
- * per iteration, and this node is the one referenced by le. */
- rr_lent_t *next=le->next;
- if (!((le->rrset && (le->rrset->flags&CF_LOCAL)) ||
- (le->cent->flags&DF_LOCAL))) {
- dns_cent_t *ce = le->cent;
- if (le->rrset)
- purge_rrset(ce, le->idx,0);
- /* Side effect: if purge_rrset called del_cent_rrset then le has been freed.
- * ce, however, is still guaranteed to be valid. */
- if (ce->num_rrs==0 && (!(ce->flags&DF_NEGATIVE) ||
- (!(ce->flags&DF_LOCAL) && timedout_nxdom(ce))))
- del_cache_ent(ce,NULL);
- }
- le=next;
- }
- if (cache_size<=sz)
- return;
-
- /* we are still above the desired cache size. Well, delete records from the oldest to
- * the newest. This is the case where nopurge records are deleted anyway. Only local
- * records are kept in any case.*/
- if(!insert_sort) {
- sort_rrl();
- insert_sort=1; /* use insertion sort from now on */
- }
-
- le=rrset_l;
- while (le && cache_size>sz) {
- rr_lent_t *next=le->next;
- if (!((le->rrset && (le->rrset->flags&CF_LOCAL)) ||
- (le->cent->flags&DF_LOCAL))) {
- dns_cent_t *ce = le->cent;
- if (le->rrset)
- cache_size -= del_cent_rrset_by_index(ce, le->idx DBG0);
- /* this will also delete negative cache entries */
- if (ce->num_rrs==0)
- del_cache_ent(ce,NULL);
- }
- le=next;
- }
-}
-
-#define log_warn_read_error(f,item) \
- log_warn("%s encountered while reading %s from disk cache file.", \
- ferror(f)?"Error":feof(f)?"EOF":"Incomplete item",item)
-
-/*
- * Load cache from disk and rebuild the hash tables.
- */
-void read_disk_cache()
-{
- /* The locks are done when we add items. */
- dns_cent_t ce;
- int dtsz=512;
- unsigned char *data;
- unsigned long cnt;
- FILE *f;
-
- char path[strlen(global.cache_dir)+sizeof("/pdnsd.cache")];
-
- stpcpy(stpcpy(path,global.cache_dir),"/pdnsd.cache");
-
- if (!(f=fopen(path,"r"))) {
- log_warn("Could not open disk cache file %s: %s",path,strerror(errno));
- return;
- }
-
- if (!(data = malloc(dtsz))) {
- goto fclose_exit;
- }
-
- /* Don't use insertion sort while reading caches entries from disk, because this can be
- noticeably inefficient with large cache files.
- Entries are simply appended at the end of the rr_l list.
- The rr_l list is sorted using a more efficient merge sort after we are done reading.
- */
- insert_sort=0;
-
- {
- unsigned nb;
- char buf[sizeof(cachverid)];
-
- /* check cache version identifier */
- nb=fread(buf,1,sizeof(cachverid),f);
- if (nb!=sizeof(cachverid)) {
- /* Don't complain about empty files */
- if(nb!=0 || !feof(f)) {
- log_warn_read_error(f,"cache version identifier");
- }
- goto free_data_fclose;
- }
- if(memcmp(buf,cachverid,sizeof(cachverid))) {
- log_warn("Cache file %s ignored because of incompatible version identifier",path);
- goto free_data_fclose;
- }
- }
-
- if (fread(&cnt,sizeof(cnt),1,f)!=1) {
- log_warn_read_error(f,"entry count");
- goto free_data_fclose;
- }
-
- for(;cnt>0;--cnt) {
- dns_file_t fe;
- dom_fttlts_t fttlts = {0,0};
- unsigned char nb[256];
- unsigned num_rrs;
- unsigned char prevtp;
- if (fread(&fe,sizeof(fe),1,f)!=1) {
- log_warn_read_error(f,"cache entry header");
- goto free_data_fclose;
- }
- if(fe.flags&DF_NEGATIVE) {
- if (fread(&fttlts,sizeof(fttlts),1,f)!=1) {
- log_warn_read_error(f,"cache TTL and timestamp");
- goto free_data_fclose;
- }
- }
- if (fe.qlen) {
- int i;
- /* Because of its type qlen should be <=255. */
- if (fread(nb,fe.qlen,1,f)!=1) {
- log_warn_read_error(f,"domain name");
- goto free_data_fclose;
- }
- for(i=0;i<fe.qlen;) {
- unsigned lb=nb[i];
- if(!lb || lb>63 || (i += lb+1)>fe.qlen) {
- log_warn("Invalid domain name encountered while reading disk cache file.");
- goto free_data_fclose;
- }
- }
- }
- nb[fe.qlen]='\0';
- if (!init_cent(&ce, nb, fttlts.ttl, fttlts.ts, fe.flags DBG0)) {
- goto free_data_fclose_exit;
- }
- ce.c_ns=fe.c_ns; ce.c_soa=fe.c_soa;
-
- /* now, read the rr's */
- prevtp=0;
- for (num_rrs=fe.num_rrs;num_rrs;--num_rrs) {
- rr_fset_t sh;
- unsigned num_rr;
- if (fread(&sh,sizeof(sh),1,f)!=1) {
- log_warn_read_error(f,"rr header");
- goto free_cent_data_fclose;
- }
- if(PDNSD_NOT_CACHED_TYPE(sh.tp)) {
- log_warn("Invalid rr type encountered while reading disk cache file.");
- goto free_data_fclose;
- }
- if(sh.tp<=prevtp) {
- log_warn("Unexpected rr type encountered (not in strict ascending order) while reading disk cache file.");
- goto free_data_fclose;
- }
- prevtp=sh.tp;
- /* Add the rrset header in any case (needed for negative caching) */
- if(!add_cent_rrset_by_type(&ce, sh.tp, sh.ttl, sh.ts, sh.flags DBG0)) {
- goto free_cent_data_fclose_exit;
- }
- for (num_rr=sh.num_rr;num_rr;--num_rr) {
- rr_fbucket_t rr;
- if (fread(&rr,sizeof(rr),1,f)!=1) {
- log_warn_read_error(f,"rr data length");
- goto free_cent_data_fclose;
- }
- if (rr.rdlen>dtsz) {
- unsigned char *tmp;
- dtsz=rr.rdlen;
- tmp=realloc(data,dtsz);
- if (!tmp) {
- goto free_cent_data_fclose_exit;
- }
- data=tmp;
- }
- if (rr.rdlen && fread(data,rr.rdlen,1,f)!=1) {
- log_warn_read_error(f,"rr data");
- goto free_cent_data_fclose;
- }
- if (!add_cent_rr(&ce,sh.tp,sh.ttl,sh.ts,sh.flags,rr.rdlen,data DBG0)) {
- goto free_cent_data_fclose_exit;
- }
- }
- }
- add_cache(&ce);
- free_cent(&ce DBG0);
- }
-#ifdef DEBUG_HASH
- free(data);
- fclose(f);
- dumphash();
- goto sort_return;
-#else
- goto free_data_fclose;
-#endif
-
- free_cent_data_fclose:
- free_cent(&ce DBG0);
- free_data_fclose:
- free(data);
- fclose(f);
-#ifdef DEBUG_HASH
- sort_return:
-#endif
- /* Do we need read/write locks to sort the rr_l list?
- As long as at most one thread is sorting, it is OK for the other threads
- to read the cache, providing they do not add or delete anything.
- */
- lock_cache_r();
- if(!insert_sort) {
- sort_rrl();
- insert_sort=1;
- }
- unlock_cache_r();
- return;
-
- free_cent_data_fclose_exit:
- free_cent(&ce DBG0);
- free_data_fclose_exit:
- free(data);
- fclose_exit:
- fclose(f);
- log_error("Out of memory in reading cache file. Exiting.");
- pdnsd_exit();
-}
-
-/* write an rr to the file f */
-static int write_rrset(int tp, rr_set_t *rrs, FILE *f)
-{
- rr_bucket_t *rr;
- rr_fset_t sh;
- rr_fbucket_t rf;
- unsigned num_rr;
-
- sh.tp=tp;
-
- num_rr=0;
- for(rr=rrs->rrs; rr && num_rr<255; rr=rr->next) ++num_rr;
- sh.num_rr=num_rr;
- sh.flags=rrs->flags;
- sh.ttl=rrs->ttl;
- sh.ts=rrs->ts;
-
- if (fwrite(&sh,sizeof(sh),1,f)!=1) {
- log_error("Error while writing rr header to disk cache: %s", strerror(errno));
- return 0;
- }
-
- rr=rrs->rrs;
- for(; num_rr; --num_rr) {
- rf.rdlen=rr->rdlen;
- if (fwrite(&rf,sizeof(rf),1,f)!=1 || (rf.rdlen && fwrite((rr->data),rf.rdlen,1,f)!=1)) {
- log_error("Error while writing rr data to disk cache: %s", strerror(errno));
- return 0;
- }
- rr=rr->next;
- }
-
- return 1;
-}
-
-
-/*
- * Write cache to disk on termination. The hash table is lost and needs to be regenerated
- * on reload.
- *
- * The locks are not very fine grained here, but I don't think this needs fixing as this routine
- * is only called on exit.
- *
- */
-void write_disk_cache()
-{
- int j, jlim;
- dns_cent_t *le;
- unsigned long en=0;
- dns_hash_pos_t pos;
- FILE *f;
- unsigned long num_rrs_errs=0;
-# define MAX_NUM_RRS_ERRS 10
-
- char path[strlen(global.cache_dir)+sizeof("/pdnsd.cache")];
-
- stpcpy(stpcpy(path,global.cache_dir),"/pdnsd.cache");
-
- DEBUG_MSG("Writing cache to %s\n",path);
-
- if (!softlock_cache_rw()) {
- goto lock_failed;
- }
- /* purge cache down to allowed size*/
- purge_cache((long)global.perm_cache*1024, 0);
- if (!softunlock_cache_rw()) {
- goto lock_failed;
- }
-
- if (!softlock_cache_r()) {
- goto lock_failed;
- }
-
- if (!(f=fopen(path,"w"))) {
- log_warn("Could not open disk cache file %s: %s",path,strerror(errno));
- goto softunlock_return;
- }
-
- /* Write the cache version identifier */
- if (fwrite(cachverid,sizeof(cachverid),1,f)!=1) {
- log_error("Error while writing cache version identifier to disk cache: %s", strerror(errno));
- goto fclose_unlock;
- }
-
- for (le=fetch_first(&pos); le; le=fetch_next(&pos)) {
- /* count the rr's */
- if(le->flags&DF_NEGATIVE) {
- if(!(le->flags&DF_LOCAL))
- ++en;
- }
- else {
- jlim= RRARR_LEN(le);
- for (j=0; j<jlim; ++j) {
- rr_set_t *rrset= RRARR_INDEX(le,j);
- if (rrset && !(rrset->flags&CF_LOCAL)) {
- ++en;
- break;
- }
- }
- }
- }
- if (fwrite(&en,sizeof(en),1,f)!=1) {
- log_error("Error while writing entry count to disk cache: %s", strerror(errno));
- goto fclose_unlock;
- }
-
- for (le=fetch_first(&pos); le; le=fetch_next(&pos)) {
- /* now, write the rr's */
- if(le->flags&DF_NEGATIVE) {
- if(!(le->flags&DF_LOCAL))
- goto write_rrs;
- }
- else {
- jlim= RRARR_LEN(le);
- for (j=0; j<jlim; ++j) {
- rr_set_t *rrset= RRARR_INDEX(le,j);
- if (rrset && !(rrset->flags&CF_LOCAL)) {
- goto write_rrs;
- }
- }
- }
- continue;
- write_rrs:
- {
- dns_file_t df;
- int num_rrs;
- const unsigned short *iterlist;
- df.qlen=rhnlen(le->qname)-1; /* Don't include the null byte at the end */
- df.num_rrs=0;
- df.flags=le->flags;
- df.c_ns=le->c_ns; df.c_soa=le->c_soa;
- num_rrs=0;
- jlim=RRARR_LEN(le);
- for (j=0; j<jlim; ++j) {
- rr_set_t *rrset= RRARR_INDEX(le,j);
- if(rrset) {
- ++num_rrs;
- if(!(rrset->flags&CF_LOCAL))
- ++df.num_rrs;
- }
- }
- if(num_rrs!=le->num_rrs && ++num_rrs_errs<=MAX_NUM_RRS_ERRS) {
- unsigned char buf[DNSNAMEBUFSIZE];
- log_warn("Counted %d rr record types for %s but cached counter=%d",
- num_rrs,rhn2str(le->qname,buf,sizeof(buf)),le->num_rrs);
- }
- if (fwrite(&df,sizeof(df),1,f)!=1) {
- log_error("Error while writing cache entry header to disk cache: %s", strerror(errno));
- goto fclose_unlock;
- }
- if(le->flags&DF_NEGATIVE) {
- dom_fttlts_t fttlts= {le->neg.ttl,le->neg.ts};
- if (fwrite(&fttlts,sizeof(fttlts),1,f)!=1) {
- log_error("Error while writing cache TTL and timestamp to disk cache: %s", strerror(errno));
- goto fclose_unlock;
- }
- }
- if (df.qlen && fwrite(le->qname,df.qlen,1,f)!=1) {
- log_error("Error while writing domain name to disk cache: %s", strerror(errno));
- goto fclose_unlock;
- }
-
- jlim= NRRITERLIST(le);
- iterlist= RRITERLIST(le);
- for (j=0; j<jlim; ++j) {
- int tp= iterlist[j];
- rr_set_t *rrset= getrrset_eff(le,tp);
- if(rrset && !(rrset->flags&CF_LOCAL)) {
- if(!write_rrset(tp,rrset,f))
- goto fclose_unlock;
- }
- }
- }
- }
- if(fclose(f)) {
- log_error("Could not close cache file %s after writing cache: %s", path,strerror(errno));
- }
- softunlock_cache_r();
- DEBUG_MSG("Finished writing cache to disk.\n");
- return;
-
- fclose_unlock:
- fclose(f);
- softunlock_return:
- softunlock_cache_r();
- return;
-
- lock_failed:
- crash_msg("Lock failed; could not write disk cache.");
-}
-
-/*
- * Conflict Resolution.
- * The first function is the actual checker; the latter two are wrappers for the respective
- * function for convenience only.
- *
- * We check for conflicts by checking the new data rrset by rrset against the cent.
- * This is not bad when considering that new records are hopefully consistent; if they are not,
- * we might end up deleteing too much of the old data, which is probably added back through the
- * new query, though.
- * Having checked additions rrset by rrset, we are at least sure that the resulting record is OK.
- * cr_check_add returns 1 if the addition is OK, 0 otherwise.
- * This is for records that are already in the cache!
- *
- * idx is the internally used RR-set index, not the RR type!
- */
-static int cr_check_add(dns_cent_t *cent, int idx, time_t ttl, time_t ts, unsigned flags)
-{
- time_t nttl;
- const struct rr_infos *rri;
-
- if (flags & CF_NEGATIVE)
- return 1; /* no constraints here. */
-
- nttl = 0;
- rri = &rr_info[idx];
-
- if (!(flags & CF_LOCAL)) {
- int i, ilim, ncf;
-
- if(cent->flags & DF_LOCAL)
- return 0; /* Local has precedence. */
-
- ncf = 0; ilim = RRARR_LEN(cent);
- for (i = 0; i < ilim; ++i) {
- rr_set_t *rrs= RRARR_INDEX(cent,i);
- /* Should be symmetric; check both ways anyway. */
- if (rrs && !(rrs->flags & CF_NEGATIVE) &&
- ((rri->class & rr_info[i].excludes) ||
- (rri->excludes & rr_info[i].class)))
- {
- time_t rttl;
- if (rrs->flags & CF_LOCAL)
- return 0; /* old was authoritative. */
- ++ncf;
- rttl = rrs->ttl + rrs->ts - time(NULL);
- if(rttl > 0) nttl += rttl;
- }
- }
- if (ncf == 0) /* no conflicts */
- return 1;
- /* Medium ttl of conflicting records */
- nttl /= ncf;
- }
- if ((flags & CF_LOCAL) || ttl > nttl) {
- int i, ilim= RRARR_LEN(cent);
-
- /* Remove the old records, so that the new one can be added. */
- for (i = 0; i < ilim; ++i) {
- rr_set_t *rrs= RRARR_INDEX(cent,i);
- /* Should be symmetric; check both ways anyway. */
- if (rrs && !(rrs->flags & CF_NEGATIVE) &&
- ((rri->class & rr_info[i].excludes) ||
- (rri->excludes & rr_info[i].class))) {
- del_cent_rrset_by_index(cent, i DBG0);
- }
- }
- return 1;
- }
- /* old records precede */
- return 0;
-}
-
-
-inline static void adjust_ttl(rr_set_t *rrset)
-{
- if (rrset->flags&CF_NOCACHE) {
- rrset->flags &= ~CF_NOCACHE;
- rrset->ttl=0;
- }
- else {
- time_t min_ttl= global.min_ttl, neg_ttl=global.neg_ttl;
- if((rrset->flags&CF_NEGATIVE) && neg_ttl<min_ttl)
- min_ttl=neg_ttl;
- if(rrset->ttl<min_ttl)
- rrset->ttl=min_ttl;
- else {
- time_t max_ttl= global.max_ttl;
- if(rrset->ttl>max_ttl)
- rrset->ttl=max_ttl;
- }
- }
-}
-
-
-/* Only use for negatively cached domains, thus only
- if the DF_NEGATIVE bit is set! */
-inline static void adjust_dom_ttl(dns_cent_t *cent)
-{
- if (cent->flags&DF_NOCACHE) {
- cent->flags &= ~DF_NOCACHE;
- cent->neg.ttl=0;
- }
- else {
- time_t min_ttl= global.min_ttl, neg_ttl=global.neg_ttl;
- if(/* (cent->flags&DF_NEGATIVE) && */ neg_ttl<min_ttl)
- min_ttl=neg_ttl;
- if(cent->neg.ttl<min_ttl)
- cent->neg.ttl=min_ttl;
- else {
- time_t max_ttl= global.max_ttl;
- if(cent->neg.ttl>max_ttl)
- cent->neg.ttl=max_ttl;
- }
- }
-}
-
-/*
- * Add a ready built dns_cent_t to the hashes, purge if necessary to not exceed cache size
- * limits, and add the entries to the hashes.
- * As memory is already reserved for the rrs, we only need to wrap up the dns_cent_t and
- * alloc memory for it.
- * New entries are appended, so we easiliy know the oldest for purging. For fast acces,
- * we use hashes instead of ordered storage.
- *
- * This does not free the argument, and it uses a copy of it, so the caller must do free_cent()
- * on it.
- *
- * The new entries rr sets replace the old ones, i.e. old rr sets with the same key are deleted
- * before the new ones are added.
- */
-void add_cache(dns_cent_t *cent)
-{
- dns_cent_t *ce;
- dns_hash_loc_t loc;
- int i,ilim;
-
- lock_cache_rw();
- retry:
- if (!(ce=dns_lookup(cent->qname,&loc))) {
- /* if the new entry doesn't contain any information,
- don't try to add it to the cache because purge_cache() will not
- be able to get rid of it.
- */
- if(cent->num_rrs==0 && !(cent->flags&DF_NEGATIVE))
- goto purge_cache_return;
-
- if(!(ce=copy_cent(cent DBG0)))
- goto warn_unlock_cache_return;
-
- if(!(ce->flags&DF_NEGATIVE)) {
- ilim= RRARR_LEN(ce);
- /* Add the rrs to the rr list */
- for (i=0; i<ilim; ++i) {
- rr_set_t *rrset= RRARR_INDEX(ce,i);
- if (rrset) {
- adjust_ttl(rrset);
- if (!insert_rrl(rrset,ce,i))
- goto free_cent_unlock_cache_return;
- }
- }
- }
- else {
- /* If this domain is negatively cached, add the cent to the rr_l list. */
- adjust_dom_ttl(ce);
- if (!insert_rrl(NULL,ce,-1))
- goto free_cent_unlock_cache_return;
- }
- if (!add_dns_hash(ce,&loc))
- goto free_cent_unlock_cache_return;
- ++ent_num;
- } else {
- if (cent->flags&DF_NEGATIVE) {
- /* the new entry is negative. So, we need to delete the whole cent,
- * and then generate a new one. */
- ilim= RRARR_LEN(ce);
- for (i=0; i<ilim; ++i) {
- rr_set_t *cerrs= RRARR_INDEX(ce,i);
- if (cerrs && cerrs->flags&CF_LOCAL) {
- goto unlock_cache_return; /* Do not clobber local records */
- }
- }
- del_cache_ent(ce,&loc);
- goto retry;
- }
- purge_cent(ce, 0,0);
- /* We have a record; add the rrsets replacing old ones */
- cache_size-=ce->cs;
-
- ilim= RRARR_LEN(cent);
- for (i=0; i<ilim; ++i) {
- rr_set_t *centrrs= RRARR_INDEX(cent,i);
- if(centrrs) {
- rr_set_t *cerrs= RRARR_INDEX_TESTEXT(ce,i);
- /* Local records have precedence.
- Records from answer sections have precedence over additional (off-topic) records.
- Answers obtained from root servers have precedence over additional records
- from other servers. */
- if (!(cerrs &&
- ((!(centrrs->flags&CF_LOCAL) && (cerrs->flags&CF_LOCAL)) ||
- ((centrrs->flags&CF_ADDITIONAL) && (!(cerrs->flags&CF_ADDITIONAL) ||
- (!(centrrs->flags&CF_ROOTSERV) &&
- (cerrs->flags&CF_ROOTSERV))) &&
- !timedout(cerrs)))))
- {
- rr_bucket_t *rr,*rtail;
-
- del_cent_rrset_by_index(ce,i DBG0);
-
- if (!cr_check_add(ce, i, centrrs->ttl, centrrs->ts, centrrs->flags))
- continue; /* the new record has been deleted as a conflict resolution measure. */
-
- /* pre-initialize a rrset_t for the case we have a negative cached
- * rrset, in which case no further rrs will be added. */
- if (!add_cent_rrset_by_index(ce, i, centrrs->ttl, centrrs->ts, centrrs->flags DBG0)) {
- goto addsize_unlock_cache_return;
- }
- rtail=NULL;
- for (rr=centrrs->rrs; rr; rr=rr->next) {
- if (!add_cent_rr_int(ce,i,centrrs->ttl, centrrs->ts, centrrs->flags,
- rr->rdlen, rr->data, &rtail DBG0))
- {
- /* cleanup this entry */
- goto cleanup_cent_unlock_cache_return;
- }
- }
- cerrs= RRARR_INDEX(ce,i);
- adjust_ttl(cerrs);
- if (!insert_rrl(cerrs,ce,i)) {
- goto cleanup_cent_unlock_cache_return;
- }
- }
- }
- }
- ce->flags |= (cent->flags&(DF_AUTH|DF_WILD));
- if(cent->c_ns!=cundef && (ce->c_ns==cundef || ce->c_ns<cent->c_ns))
- ce->c_ns=cent->c_ns;
- if(cent->c_soa!=cundef && (ce->c_soa==cundef || ce->c_soa<cent->c_soa))
- ce->c_soa=cent->c_soa;
- }
-
- cache_size += ce->cs;
- purge_cache_return:
- purge_cache((long)global.perm_cache*1024+MCSZ, 1);
- goto unlock_cache_return;
-
- cleanup_cent_unlock_cache_return:
- del_cent_rrset_by_index(ce, i DBG0);
- addsize_unlock_cache_return:
- cache_size += ce->cs;
- goto warn_unlock_cache_return;
-
- free_cent_unlock_cache_return:
- free_cent(ce DBG0);
- pdnsd_free(ce);
- warn_unlock_cache_return:
- log_warn("Out of cache memory.");
- unlock_cache_return:
- unlock_cache_rw();
-}
-
-/*
- Convert A (and AAAA) records in a ready built cache entry to PTR records suitable for reverse resolving
- of numeric addresses and add them to the cache.
-*/
-int add_reverse_cache(dns_cent_t * cent)
-{
- int tp=T_A;
- rr_set_t *rrset= getrrset_A(cent);
-
- for(;;) {
- if(rrset) {
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- dns_cent_t ce;
- unsigned char buf[DNSNAMEBUFSIZE],rhn[DNSNAMEBUFSIZE];
- if(!a2ptrstr((pdnsd_ca *)(rr->data),tp,buf) || !str2rhn(buf,rhn))
- return 0;
- if(!init_cent(&ce, rhn, 0, 0, cent->flags DBG0))
- return 0;
- if(!add_cent_rr(&ce,T_PTR,rrset->ttl,rrset->ts,rrset->flags,rhnlen(cent->qname),cent->qname DBG0)) {
- free_cent(&ce DBG0);
- return 0;
- }
-#ifdef RRMUINDEX_NS
- ce.rr.rrmu[RRMUINDEX_NS]=cent->rr.rrmu[RRMUINDEX_NS];
-#endif
-#ifdef RRMUINDEX_SOA
- ce.rr.rrmu[RRMUINDEX_SOA]=cent->rr.rrmu[RRMUINDEX_SOA];
-#endif
- add_cache(&ce);
-#ifdef RRMUINDEX_NS
- ce.rr.rrmu[RRMUINDEX_NS]=NULL;
-#endif
-#ifdef RRMUINDEX_SOA
- ce.rr.rrmu[RRMUINDEX_SOA]=NULL;
-#endif
- free_cent(&ce DBG0);
- }
- }
-#if ALLOW_LOCAL_AAAA
- if(tp==T_AAAA)
- break;
- tp=T_AAAA;
- rrset= getrrset_AAAA(cent);
-#else
- break;
-#endif
- }
- return 1;
-}
-
-
-/*
- Delete a cent from the cache. Call with write locks applied.
- Does not delete corresponding entry in hash table, call del_cache_ent()
- or del_cache() for that.
-*/
-void del_cent(dns_cent_t *cent)
-{
- cache_size -= cent->cs;
-
- /* free the data referred by the cent and the cent itself */
- free_cent(cent DBG0);
- free(cent);
-
- --ent_num;
-}
-
-/*
- * Delete a cent from the cache. Call with write locks applied.
- */
-static void del_cache_ent(dns_cent_t *cent,dns_hash_loc_t *loc)
-{
- dns_cent_t *data;
-
- /* Delete from the hash */
- if(loc)
- data=del_dns_hash_ent(loc);
- else
- data=del_dns_hash(cent->qname);
- if(!data) {
- log_warn("Cache entry not found by del_dns_hash() in %s, line %d",__FILE__,__LINE__);
- }
- else if(data!=cent) {
- log_warn("pointer returned by del_dns_hash() does not match cache entry in %s, line %d",__FILE__,__LINE__);
- }
- del_cent(cent);
-}
-
-/* Delete a cached record. Performs locking. Call this from the outside, NOT del_cache_ent */
-void del_cache(const unsigned char *name)
-{
- dns_cent_t *cent;
-
- lock_cache_rw();
- if ((cent=del_dns_hash(name))) {
- del_cent(cent);
- }
- unlock_cache_rw();
-}
-
-
-/* Invalidate a record by resetting the fetch time to 0. This means that it will be refreshed
- * if possible (and will only be served when purge_cache=off;) */
-void invalidate_record(const unsigned char *name)
-{
- dns_cent_t *ce;
- int i, ilim;
-
- lock_cache_rw();
- if ((ce=dns_lookup(name,NULL))) {
- if(!(ce->flags&DF_NEGATIVE)) {
- ilim= RRARR_LEN(ce);
- for (i=0; i<ilim; ++i) {
- rr_set_t *rrs= RRARR_INDEX(ce,i);
- if (rrs) {
- rrs->ts=0;
- rrs->flags &= ~CF_AUTH;
- }
- }
- }
- else {
- /* set the cent time to 0 (for the case that this was negative) */
- ce->neg.ts=0;
- }
- ce->flags &= ~DF_AUTH;
- }
- unlock_cache_rw();
-}
-
-
-/*
- Set flags of the cache entry with the specified name.
- Don't use this to set the DF_NEGATIVE flag, or you will
- risk leaving the cache in an inconsistent state.
- Returns 0 if the cache entry cannot be found, otherwise 1.
- */
-int set_cent_flags(const unsigned char *name, unsigned flags)
-{
- dns_cent_t *ret;
- lock_cache_rw();
- ret=dns_lookup(name,NULL);
- if (ret) {
- ret->flags |= flags;
- }
- unlock_cache_rw();
- return ret!=NULL;
-}
-
-unsigned char *getlocalowner(unsigned char *name,int tp)
-{
- unsigned char *ret=NULL;
- dns_cent_t *ce;
- unsigned lb;
-
- lock_cache_r();
- if((lb = *name)) {
- while(name += lb+1, lb = *name) {
- if((ce=dns_lookup(name,NULL))) {
- if(!(ce->flags&DF_LOCAL))
- break;
- if(have_rr(ce,tp)) {
- ret=name;
- break;
- }
- }
- }
- }
- unlock_cache_r();
-
- return ret;
-}
-
-
-/* Lookup an entry in the cache using name (in length byte - string notation).
- * For thread safety, a copy must be returned, so delete it after use, by first doing
- * free_cent to remove the rrs and then by freeing the returned pointer.
- * If wild is nonzero, and name can't be found in the cache, lookup_cache()
- * will search up the name hierarchy for a record with the DF_NEGATIVE or DF_WILD flag set.
- */
-dns_cent_t *lookup_cache(const unsigned char *name, int *wild)
-{
- int purge=0;
- dns_cent_t *ret;
-
- /* First try with only read access to the cache. */
- lock_cache_r();
- ret=dns_lookup(name,NULL);
- if(wild) {
- *wild=0;
- if(!ret) {
- const unsigned char *nm=name;
- unsigned lb=*nm;
- if(lb) {
- while(nm += lb+1, lb = *nm) {
- if ((ret=dns_lookup(nm,NULL))) {
- if(ret->flags&DF_NEGATIVE)
- /* use this entry */
- *wild=w_neg;
- else if(ret->flags&DF_WILD) {
- unsigned char buf[DNSNAMEBUFSIZE];
- buf[0]=1; buf[1]='*';
- /* When we get here, at least one element of name
- has been removed, so assuming name is not longer
- than DNSNAMEBUFSIZE bytes, the remainder is guaranteed to
- fit into DNSNAMEBUFSIZE-2 bytes */
- rhncpy(&buf[2],nm);
- ret=dns_lookup(buf,NULL);
- if(ret)
- *wild=w_wild;
- }
- else if(ret->flags&DF_LOCAL)
- *wild=w_locnerr;
- else
- ret=NULL;
- break;
- }
- }
- }
- }
- }
- if (ret) {
- if(!(purge=purge_cent(ret, 1,1))) /* test only, don't remove anything yet! */
- ret=copy_cent(ret DBG1);
- }
- unlock_cache_r();
-
- if(purge) {
- /* we need exclusive read and write access before we delete anything. */
- lock_cache_rw();
- ret=dns_lookup(name,NULL);
- if(wild) {
- *wild=0;
- if(!ret) {
- const unsigned char *nm=name;
- unsigned lb=*nm;
- if(lb) {
- while(nm += lb+1, lb = *nm) {
- if ((ret=dns_lookup(nm,NULL))) {
- if(ret->flags&DF_NEGATIVE)
- /* use this entry */
- *wild=w_neg;
- else if(ret->flags&DF_WILD) {
- unsigned char buf[DNSNAMEBUFSIZE];
- buf[0]=1; buf[1]='*';
- rhncpy(&buf[2],nm);
- ret=dns_lookup(buf,NULL);
- if(ret)
- *wild=w_wild;
- }
- else if(ret->flags&DF_LOCAL)
- *wild=w_locnerr;
- else
- ret=NULL;
- break;
- }
- }
- }
- }
- }
- if (ret) {
- if(purge_cent(ret, 1,0)<0)
- ret=NULL;
- else
- ret=copy_cent(ret DBG1);
- }
- unlock_cache_rw();
- }
-
- return ret;
-}
-
-/* lookup_cache_local_rrset() check if there is locally defined RR set of a specific RR type
- for name, and if so, returns a copy of the RR set. After use, the copy should be cleaned
- up using del_rrset().
- This is potentially much more efficient than using lookup_cache(), if the name is likely
- to have a cache entry, but unlikely to have locally defined RR sets.
-*/
-rr_set_t *lookup_cache_local_rrset(const unsigned char *name, int type)
-{
- rr_set_t *ret=NULL;
- dns_cent_t *cent;
-
- lock_cache_r();
- cent= dns_lookup(name,NULL);
- if(cent) {
- rr_set_t *rrset=getrrset(cent,type);
- if(rrset && (rrset->flags&CF_LOCAL)) {
- ret= copy_rrset(rrset);
- }
- }
- unlock_cache_r();
-
- return ret;
-}
-
-
-#if 0
-/* Add an rr to an existing cache entry or create a new entry if necessary.
- * The rr is treated with the precedence of an additional or off-topic record, ie. regularly retrieved
- * have precedence.
- * You cannot add a negative additional record. Makes no sense anyway. */
-int add_cache_rr_add(const unsigned char *name, int tp, time_t ttl, time_t ts, unsigned flags, unsigned dlen, void *data, unsigned long serial)
-{
- dns_hash_loc_t loc;
- dns_cent_t *ret;
- rr_set_t *rrs;
- int rv=0;
-
- lock_cache_rw();
- if (!(ret=dns_lookup(name,&loc))) {
- if (!(ret=cache_malloc(sizeof(dns_cent_t))))
- goto unlock_return;
- if(!init_cent(ret, name, 0, 0, 0 DBG0)) {
- pdnsd_free(ret);
- goto unlock_return;
- }
- if(!add_dns_hash(ret,&loc)) {
- free_cent(ret DBG0);
- pdnsd_free(ret);
- goto unlock_return;
- }
- ++ent_num;
- }
- else {
- /* purge the record. */
- purge_cent(ret,0,0);
- cache_size-=ret->cs;
- }
- rrs=getrrset(ret,tp);
- if (rrs &&
- ((rrs->flags&CF_NEGATIVE && !(rrs->flags&CF_LOCAL)) ||
- (rrs->flags&CF_NOPURGE && timedout(rrs)) ||
- (rrs->flags&CF_ADDITIONAL && rrs->serial!=serial) ||
- (rrs->serial==serial && rrs->ttl!=(ttl<global.min_ttl?global.min_ttl:(ttl>global.max_ttl?global.max_ttl:ttl))))) {
- del_cent_rrset_by_type(ret,tp DBG0);
- rrs=NULL;
- }
- if (rrs==NULL || rrs->serial==serial) {
- if (cr_check_add(ret,rrlkuptab[tp-T_MIN],ttl,ts,flags)) {
- if (add_cent_rr(ret,tp,ttl,ts,flags,dlen,data,serial DBG0)) {
- rr_set_t *rrsnew;
- if (!rrs && (rrsnew=getrrset(ret,tp)) && !insert_rrl(rrsnew,ret,rrlkuptab[tp-T_MIN])) {
- del_cent_rrset_by_type(ret,tp DBG0);
- }
- else {
- cache_size+=ret->cs;
- purge_cent(ret,1,0);
- rv=1;
- goto unlock_return;
- }
- }
- }
- } else {
- rv=1;
- }
- cache_size+=ret->cs;
-
- unlock_return:
- unlock_cache_rw();
- return rv;
-}
-#endif
-
-/* Report the cache status to the file descriptor f, for the status fifo (see status.c) */
-int report_cache_stat(int f)
-{
- /* Cache size and entry counters are volatile (and even the entries
- in the global struct can change), so make copies to get consistent data.
- Even better would be to use locks, but that could be rather costly. */
- long csz= cache_size, en= ent_num;
- long pc= global.perm_cache;
- long mc= pc*1024+MCSZ;
-
- fsprintf_or_return(f,"\nCache status:\n=============\n");
- fsprintf_or_return(f,"%ld kB maximum disk cache size.\n",pc);
- fsprintf_or_return(f,"%ld of %ld bytes (%.3g%%) memory cache used in %ld entries"
- " (avg %.5g bytes/entry).\n",
- csz, mc, (((double)csz)/mc)*100, en,
- ((double)csz)/en);
- return 0;
-}
-
-
-#define timestamp2str(ts,now,buf) \
-{ \
- struct tm tstm; \
- if(!((ts) && localtime_r(&(ts), &tstm) && \
- strftime(buf, sizeof(buf), \
- ((ts)<=(now) && (now)-(ts)<365*24*60*60/2)?" %m/%d %T":"%Y/%m/%d %T", \
- &tstm)>0)) \
- strcpy(buf," "); \
-}
-
-/* Dump contents of a cache entry to file descriptor fd.
- Returns 1 on success, -1 if there is an IO error.
-*/
-static int dump_cent(int fd, dns_cent_t *cent)
-{
- time_t now;
- char tstr[sizeof "2000/12/31 23:59:59"],dbuf[1024];
-
- fsprintf_or_return(fd,"%s\n",rhn2str(cent->qname,ucharp dbuf,sizeof(dbuf)));
- now=time(NULL);
-
- if(cent->flags&DF_NEGATIVE) {
- timestamp2str(cent->neg.ts,now,tstr);
- fsprintf_or_return(fd,"%s (domain negated)\n",tstr);
- }
- else {
- int i, n= NRRITERLIST(cent);
- const unsigned short *iterlist= RRITERLIST(cent);
- for(i=0; i<n; ++i) {
- int tp= iterlist[i];
- rr_set_t *rrset=getrrset_eff(cent,tp);
- if (rrset) {
- timestamp2str(rrset->ts,now,tstr);
- if(rrset->flags&CF_NEGATIVE) {
- fsprintf_or_return(fd,"%s %-7s (negated)\n",tstr,rrnames[tp-T_MIN]);
- }
- else {
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- switch (tp) {
- case T_CNAME:
- case T_MB:
- case T_MD:
- case T_MF:
- case T_MG:
- case T_MR:
- case T_NS:
- case T_PTR:
- rhn2str((unsigned char *)(rr->data),ucharp dbuf,sizeof(dbuf));
- break;
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
- case T_MINFO:
-#endif
-#if IS_CACHED_RP
- case T_RP:
-#endif
- {
- unsigned char *p=(unsigned char *)(rr->data);
- int n;
- rhn2str(p,ucharp dbuf,sizeof(dbuf));
- n=strlen(dbuf);
- dbuf[n++] = ' ';
- if(n>=sizeof(dbuf))
- goto hex_dump;
- rhn2str(skiprhn(p),ucharp dbuf+n,sizeof(dbuf)-n);
- }
- break;
-#endif
- case T_MX:
-#if IS_CACHED_AFSDB
- case T_AFSDB:
-#endif
-#if IS_CACHED_RT
- case T_RT:
-#endif
-#if IS_CACHED_KX
- case T_KX:
-#endif
- {
- unsigned char *p=(unsigned char *)(rr->data);
- unsigned pref;
- int n;
- GETINT16(pref,p);
- n=sprintf(dbuf,"%u ",pref);
- if(n<0) goto hex_dump;
- rhn2str(p,ucharp dbuf+n,sizeof(dbuf)-n);
- }
- break;
- case T_SOA:
- {
- unsigned char *p=(unsigned char *)(rr->data);
- char *q;
- int n,rem;
- uint32_t serial,refresh,retry,expire,minimum;
- rhn2str(p,ucharp dbuf,sizeof(dbuf));
- n=strlen(dbuf);
- dbuf[n++] = ' ';
- if(n>=sizeof(dbuf))
- goto hex_dump;
- q=dbuf+n;
- rem=sizeof(dbuf)-n;
- p=skiprhn(p);
- rhn2str(p,ucharp q,rem);
- n=strlen(q);
- q[n++] = ' ';
- if(n>=rem)
- goto hex_dump;
- q += n;
- rem -= n;
- p=skiprhn(p);
- GETINT32(serial,p);
- GETINT32(refresh,p);
- GETINT32(retry,p);
- GETINT32(expire,p);
- GETINT32(minimum,p);
- n=snprintf(q,rem,"%lu %lu %lu %lu %lu",
- (unsigned long)serial,(unsigned long)refresh,
- (unsigned long)retry,(unsigned long)expire,
- (unsigned long)minimum);
- if(n<0 || n>=rem)
- goto hex_dump;
- }
- break;
-#if IS_CACHED_HINFO || IS_CACHED_TXT || IS_CACHED_SPF
-#if IS_CACHED_HINFO
- case T_HINFO:
-#endif
-#if IS_CACHED_TXT
- case T_TXT:
-#endif
-#if IS_CACHED_SPF
- case T_SPF:
-#endif
- {
- /* TXT records are not necessarily validated
- before they are stored in the cache, so
- we need to be careful. */
- unsigned char *p=(unsigned char *)(rr->data);
- char *q=dbuf;
- int j=0,n,rem=sizeof(dbuf);
- while(j<rr->rdlen) {
- unsigned lb;
- if(rem<3)
- goto hex_dump;
- if(j) {
- *q++ = ' ';
- --rem;
- }
- *q++ = '"';
- --rem;
- lb=*p++;
- if((j += lb+1)>rr->rdlen)
- goto hex_dump;
- n=escapestr(charp p,lb,q,rem);
- if(n<0 || n+1>=rem)
- goto hex_dump;
- q += n;
- *q++ = '"';
- rem -= n+1;
- p += lb;
- }
- *q=0;
- }
- break;
-#endif
-#if IS_CACHED_PX
- case T_PX:
- {
- unsigned char *p=(unsigned char *)(rr->data);
- char *q;
- unsigned pref;
- int n,rem;
- GETINT16(pref,p);
- n=sprintf(dbuf,"%u ",pref);
- if(n<0) goto hex_dump;
- q=dbuf+n;
- rem=sizeof(dbuf)-n;
- rhn2str(p,ucharp q,rem);
- n=strlen(q);
- q[n++] = ' ';
- if(n>=rem)
- goto hex_dump;
- rhn2str(skiprhn(p),ucharp q+n,rem-n);
- }
- break;
-#endif
-#if IS_CACHED_SRV
- case T_SRV:
- {
- unsigned char *p=(unsigned char *)(rr->data);
- unsigned priority,weight,port;
- int n;
- GETINT16(priority,p);
- GETINT16(weight,p);
- GETINT16(port,p);
- n=sprintf(dbuf,"%u %u %u ",priority,weight,port);
- if(n<0) goto hex_dump;
- rhn2str(p,ucharp dbuf+n,sizeof(dbuf)-n);
- }
- break;
-#endif
-#if IS_CACHED_NXT
- case T_NXT:
- {
- unsigned char *p=(unsigned char *)(rr->data);
- int n,rlen;
- rhn2str(p,ucharp dbuf,sizeof(dbuf));
- n=strlen(dbuf);
- dbuf[n++] = ' ';
- if(n>=sizeof(dbuf))
- goto hex_dump;
- rlen=rhnlen(p);
- hexdump(p+rlen,rr->rdlen-rlen,dbuf+n,sizeof(dbuf)-n);
- }
- break;
-#endif
-#if IS_CACHED_NAPTR
- case T_NAPTR:
- {
- unsigned char *p=(unsigned char *)(rr->data);
- char *q;
- unsigned order,pref;
- int n,rem,j;
- GETINT16(order,p);
- GETINT16(pref,p);
- n=sprintf(dbuf,"%u %u ",order,pref);
- if(n<0) goto hex_dump;
- q=dbuf+n;
- rem=sizeof(dbuf)-n;
- for (j=0;j<3;++j) {
- unsigned lb;
- if(rem<2)
- goto hex_dump;
- *q++ = '"';
- --rem;
- lb=*p++;
- n=escapestr(charp p,lb,q,rem);
- if(n<0 || n+2>=rem)
- goto hex_dump;
- q += n;
- *q++ = '"';
- *q++ = ' ';
- rem -= n+2;
- p += lb;
- }
- rhn2str(p,ucharp q,rem);
- }
- break;
-#endif
-#if IS_CACHED_LOC
- case T_LOC:
- /* Binary data length has not necessarily been validated */
- if(rr->rdlen!=16)
- goto hex_dump;
- if(!loc2str(rr->data,dbuf,sizeof(dbuf)))
- goto hex_dump;
- break;
-#endif
- case T_A:
- if (!inet_ntop(AF_INET,rr->data,dbuf,sizeof(dbuf)))
- goto hex_dump;
- break;
-#if IS_CACHED_AAAA && defined(AF_INET6)
- case T_AAAA:
- if (!inet_ntop(AF_INET6,rr->data,dbuf,sizeof(dbuf)))
- goto hex_dump;
- break;
-#endif
- default:
- hex_dump:
- hexdump(rr->data,rr->rdlen,dbuf,sizeof(dbuf));
- }
- fsprintf_or_return(fd,"%s %-7s %s\n",tstr,rrnames[tp-T_MIN],dbuf);
- }
- }
- }
- }
- }
- fsprintf_or_return(fd,"\n");
- return 1;
-}
-
-/* Dump cache contents to file descriptor fd.
- If name is not null, restricts information to that name,
- otherwise dumps information about all names found in the cache.
- Returns 1 on success, 0 if the name is not found, -1 is there is an IO error.
- Mainly for debugging purposes.
-*/
-int dump_cache(int fd, const unsigned char *name, int exact)
-{
- int rv=0;
- lock_cache_r();
- if(name && exact) {
- dns_cent_t *cent=dns_lookup(name,NULL);
- if(cent)
- rv=dump_cent(fd,cent);
- }
- else {
- dns_cent_t *cent;
- dns_hash_pos_t pos;
- for (cent=fetch_first(&pos); cent; cent=fetch_next(&pos)) {
- unsigned int nrem;
- if(!name || (domain_match(name,cent->qname,&nrem,NULL),nrem==0))
- if((rv=dump_cent(fd,cent))<0)
- break;
- }
- }
- unlock_cache_r();
- return rv;
-}
-
-char *stpcpy(char *dest, char const *src)
-{
- size_t src_len = strlen(src);
- return memcpy(dest, src, src_len) + src_len;
- // strcpy(dest, src);
- // return dest + strlen(dest);
-}
-
-
-#if DEBUG>0
-
-/* Added by Paul Rombouts: This is only used in debug messages. */
-const char cflgnames[NCFLAGS*3]={'N','E','G','L','O','C','A','U','T','N','O','C','A','D','D','N','O','P','R','T','S'};
-const char dflgnames[NDFLAGS*3]={'N','E','G','L','O','C','A','U','T','N','O','C','W','L','D'};
-
-char *flags2str(unsigned flags,char *buf,int nflags,const char *flgnames)
-{
- char *p=buf;
- int i,nflgchars=3*nflags;
- for(i=0;i<nflgchars;i+=3) {
- if(flags&1) {
- if(p>buf) *p++='|';
- p=mempcpy(p,&flgnames[i],3);
- }
- flags >>= 1;
- }
- if(p==buf)
- *p++='0';
- *p=0;
- return buf;
-}
-#endif
diff --git a/jni/pdnsd/src/cache.h b/jni/pdnsd/src/cache.h
deleted file mode 100644
index 5056dec..0000000
--- a/jni/pdnsd/src/cache.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/* cache.h - Definitions for the dns cache
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2003, 2004, 2005, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _CACHE_H_
-#define _CACHE_H_
-
-#include <config.h>
-#include "ipvers.h"
-#include <stdio.h>
-#include "list.h"
-#include "dns.h"
-#include "conff.h"
-
-struct rr_lent_s;
-
-/*
- * These values are converted to host byte order. the data is _not_.
- */
-typedef struct rr_b_s {
- struct rr_b_s *next; /* this is the next pointer in the dns_cent_t list. */
- unsigned rdlen;
-#if ALLOW_LOCAL_AAAA || defined(ENABLE_IPV6)
- struct in6_addr data[0]; /* dummy for alignment */
-#else
- struct in_addr data[0];
-#endif
-} rr_bucket_t;
-
-typedef struct {
- struct rr_lent_s *lent; /* this points to the list entry */
- time_t ttl;
- time_t ts;
- unsigned short flags;
- rr_bucket_t *rrs;
-} rr_set_t;
-
-
-typedef struct {
- unsigned char *qname; /* Name of the domain in length byte - string notation. */
- size_t cs; /* Size of the cache entry, including RR sets. */
- unsigned short num_rrs; /* The number of RR sets. When this decreases to 0, the cent is deleted. */
- unsigned short flags; /* Flags for the whole domain. */
- union {
- struct { /* Fields used only for negatively cached domains. */
- struct rr_lent_s *lent; /* list entry for the whole cent. */
- time_t ttl; /* TTL for negative caching. */
- time_t ts; /* Timestamp. */
- } neg;
- struct { /* Fields used only for domains that actually exist. */
- rr_set_t *(rrmu[NRRMU]); /* The most used records.
- Use the the value obtained from rrlkuptab[] as index. */
- rr_set_t **rrext; /* Pointer (may be NULL) to an array of size NNRREXT storing the
- less frequently used records. */
- } rr;
- };
- unsigned char c_ns,c_soa; /* Number of trailing name elements in qname to use to find NS or SOA
- records to add to the authority section of a response. */
-} dns_cent_t;
-
-/* This value is used to represent an undefined c_ns or c_soa field. */
-#define cundef 0xff
-
-/*
- * the flag values for RR sets in the cache
- */
-#define CF_NEGATIVE 1 /* this one is for per-RRset negative caching*/
-#define CF_LOCAL 2 /* Local zone entry */
-#define CF_AUTH 4 /* authoritative record */
-#define CF_NOCACHE 8 /* Only hold for the cache latency time period, then purge.
- * Not really written to cache, but used by add_cache. */
-#define CF_ADDITIONAL 16 /* This was fetched as an additional or "off-topic" record. */
-#define CF_NOPURGE 32 /* Do not purge this record */
-#define CF_ROOTSERV 64 /* This record was directly obtained from a root server */
-
-#define CFF_NOINHERIT (CF_LOCAL|CF_AUTH|CF_ADDITIONAL|CF_ROOTSERV) /* not to be inherited on requery */
-
-/*
- * the flag values for whole domains in the cache
- */
-#define DF_NEGATIVE 1 /* this one is for whole-domain negative caching (created on NXDOMAIN)*/
-#define DF_LOCAL 2 /* local record (in conj. with DF_NEGATIVE) */
-#define DF_AUTH 4 /* authoritative record */
-#define DF_NOCACHE 8 /* Only hold for the cache latency time period, then purge.
- * Only used for negatively cached domains.
- * Not really written to cache, but used by add_cache. */
-#define DF_WILD 16 /* subdomains of this domain have wildcard records */
-
-/* #define DFF_NOINHERIT (DF_NEGATIVE) */ /* not to be inherited on requery */
-
-enum {w_wild=1, w_neg, w_locnerr}; /* Used to distinguish different types of wildcard records. */
-
-#if DEBUG>0
-#define NCFLAGS 7
-#define NDFLAGS 5
-#define CFLAGSTRLEN (NCFLAGS*4)
-#define DFLAGSTRLEN (NDFLAGS*4)
-extern const char cflgnames[];
-extern const char dflgnames[];
-char *flags2str(unsigned flags,char *buf,int nflags,const char *flgnames);
-#define cflags2str(flags,buf) flags2str(flags,buf,NCFLAGS,cflgnames)
-#define dflags2str(flags,buf) flags2str(flags,buf,NDFLAGS,dflgnames)
-#endif
-
-/*
- * This is the time in secs any record remains at least in the cache before it is purged.
- * (exception is that the cache is full)
- */
-#define CACHE_LAT 120
-#define CLAT_ADJ(ttl) ((ttl)<CACHE_LAT?CACHE_LAT:(ttl))
-/* This is used internally to check if a rrset has timed out. */
-#define timedout(rrset) ((rrset)->ts+CLAT_ADJ((rrset)->ttl)<time(NULL))
-/* This is used internally to check if a negatively cached domain has timed out.
- Only use if the DF_NEGATIVE bit is set! */
-#define timedout_nxdom(cent) ((cent)->neg.ts+CLAT_ADJ((cent)->neg.ttl)<time(NULL))
-
-extern volatile short int use_cache_lock;
-
-
-#ifdef ALLOC_DEBUG
-#define DBGPARAM ,int dbg
-#define DBGARG ,dbg
-#define DBG0 ,0
-#define DBG1 ,1
-#else
-#define DBGPARAM
-#define DBGARG
-#define DBG0
-#define DBG1
-#endif
-
-
-/* Initialize the cache. Call only once. */
-#define init_cache mk_dns_hash
-
-/* Initialize the cache lock. Call only once. */
-inline static void init_cache_lock() __attribute__((always_inline));
-inline static void init_cache_lock()
-{
- use_cache_lock=1;
-}
-
-int empty_cache(slist_array sla);
-void destroy_cache(void);
-void read_disk_cache(void);
-void write_disk_cache(void);
-
-int report_cache_stat(int f);
-int dump_cache(int fd, const unsigned char *name, int exact);
-
-/*
- * add_cache expects the dns_cent_t to be filled.
- */
-void add_cache(dns_cent_t *cent);
-int add_reverse_cache(dns_cent_t * cent);
-void del_cache(const unsigned char *name);
-void invalidate_record(const unsigned char *name);
-int set_cent_flags(const unsigned char *name, unsigned flags);
-unsigned char *getlocalowner(unsigned char *name,int tp);
-dns_cent_t *lookup_cache(const unsigned char *name, int *wild);
-rr_set_t *lookup_cache_local_rrset(const unsigned char *name, int type);
-#if 0
-int add_cache_rr_add(const unsigned char *name, int tp, time_t ttl, time_t ts, unsigned flags, unsigned dlen, void *data, unsigned long serial);
-#endif
-
-inline static unsigned int mk_flag_val(servparm_t *server)
- __attribute__((always_inline));
-inline static unsigned int mk_flag_val(servparm_t *server)
-{
- unsigned int fl=0;
- if (!server->purge_cache)
- fl|=CF_NOPURGE;
- if (server->nocache)
- fl|=CF_NOCACHE;
- if (server->rootserver)
- fl|=CF_ROOTSERV;
- return fl;
-}
-
-int init_cent(dns_cent_t *cent, const unsigned char *qname, time_t ttl, time_t ts, unsigned flags DBGPARAM);
-int add_cent_rrset_by_type(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags DBGPARAM);
-int add_cent_rr(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags,unsigned dlen, void *data DBGPARAM);
-int del_rrset(rr_set_t *rrs DBGPARAM);
-void free_cent(dns_cent_t *cent DBGPARAM);
-void free_cent0(void *ptr);
-void negate_cent(dns_cent_t *cent, time_t ttl, time_t ts);
-void del_cent(dns_cent_t *cent);
-
-/* Because this is empty by now, it is defined as an empty macro to save overhead.*/
-/*void free_rr(rr_bucket_t cent);*/
-#define free_rr(x)
-
-dns_cent_t *copy_cent(dns_cent_t *cent DBGPARAM);
-
-#if 0
-unsigned long get_serial(void);
-#endif
-
-/* Get pointer to rrset given cache entry and rr type value. */
-inline static rr_set_t *getrrset(dns_cent_t *cent, int type)
- __attribute__((always_inline));
-inline static rr_set_t *getrrset(dns_cent_t *cent, int type)
-{
- if(!(cent->flags&DF_NEGATIVE)) {
- int tpi= type - T_MIN;
-
- if(tpi>=0 && tpi<T_NUM) {
- unsigned int idx = rrlkuptab[tpi];
- if(idx < NRRMU)
- return cent->rr.rrmu[idx];
- else {
- idx -= NRRMU;
- if(idx < NRREXT) {
- rr_set_t **rrext= cent->rr.rrext;
- if(rrext)
- return rrext[idx];
- }
- }
- }
- }
-
- return NULL;
-}
-
-/* This version of getrrset is slightly more efficient,
- but also more dangerous, because it performs less checks.
- It is safe to use if T_MIN <= type <= T_MAX and cent
- is not negative.
-*/
-inline static rr_set_t *getrrset_eff(dns_cent_t *cent, int type)
- __attribute__((always_inline));
-inline static rr_set_t *getrrset_eff(dns_cent_t *cent, int type)
-{
- unsigned int idx = rrlkuptab[type-T_MIN];
- if(idx < NRRMU)
- return cent->rr.rrmu[idx];
- else {
- idx -= NRRMU;
- if(idx < NRREXT) {
- rr_set_t **rrext= cent->rr.rrext;
- if(rrext)
- return rrext[idx];
- }
- }
-
- return NULL;
-}
-
-
-/* have_rr() tests whether a cache entry has at least one record of a given type.
- Only use if T_MIN <= type <=T_MAX
-*/
-inline static int have_rr(dns_cent_t *cent, int type)
- __attribute__((always_inline));
-inline static int have_rr(dns_cent_t *cent, int type)
-{
- rr_set_t *rrset;
- return !(cent->flags&DF_NEGATIVE) && (rrset=getrrset_eff(cent, type)) && rrset->rrs;
-}
-
-/* Some quick and dirty and hopefully fast macros. */
-#define PDNSD_NOT_CACHED_TYPE(type) ((type)<T_MIN || (type)>T_MAX || rrlkuptab[(type)-T_MIN]>=NRRTOT)
-
-/* This is useful for iterating over all the RR types in a cache entry in strict ascending order. */
-#define NRRITERLIST(cent) ((cent)->flags&DF_NEGATIVE?0:(cent)->rr.rrext?NRRTOT:NRRMU)
-#define RRITERLIST(cent) ((cent)->flags&DF_NEGATIVE?NULL:(cent)->rr.rrext?rrcachiterlist:rrmuiterlist)
-
-/* The following macros use array indices as arguments, not RR type values! */
-#define GET_RRSMU(cent,i) (!((cent)->flags&DF_NEGATIVE)?(cent)->rr.rrmu[i]:NULL)
-#define GET_RRSEXT(cent,i) (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrext?(cent)->rr.rrext[i]:NULL)
-#define HAVE_RRMU(cent,i) (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrmu[i] && (cent)->rr.rrmu[i]->rrs)
-#define HAVE_RREXT(cent,i) (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrext && (cent)->rr.rrext[i] && (cent)->rr.rrext[i]->rrs)
-
-#define RRARR_LEN(cent) ((cent)->flags&DF_NEGATIVE?0:(cent)->rr.rrext?NRRTOT:NRRMU)
-
-/* This allows us to index the RR-set arrays in a cache entry as if they formed one contiguous array. */
-#define RRARR_INDEX_TESTEXT(cent,i) ((cent)->flags&DF_NEGATIVE?NULL:(i)<NRRMU?(cent)->rr.rrmu[i]:(cent)->rr.rrext?(cent)->rr.rrext[(i)-NRRMU]:NULL)
-/* This gets the address where the pointer to an RR-set is stored in a cache entry,
- given the cache entry and an RR-set index.
- Address may be NULL if no storage space for the type has been allocated. */
-#define RRARR_INDEX_PA_TESTEXT(cent,i) ((cent)->flags&DF_NEGATIVE?NULL:(i)<NRRMU?&(cent)->rr.rrmu[i]:(cent)->rr.rrext?&(cent)->rr.rrext[(i)-NRRMU]:NULL)
-
-/* The following macros should only be used if 0 <= i < RRARR_LEN(cent) ! */
-#define RRARR_INDEX(cent,i) ((i)<NRRMU?(cent)->rr.rrmu[i]:(cent)->rr.rrext[(i)-NRRMU])
-#define RRARR_INDEX_PA(cent,i) ((i)<NRRMU?&(cent)->rr.rrmu[i]:&(cent)->rr.rrext[(i)-NRRMU])
-
-#endif
diff --git a/jni/pdnsd/src/conf-keywords.h b/jni/pdnsd/src/conf-keywords.h
deleted file mode 100644
index 2bcdacf..0000000
--- a/jni/pdnsd/src/conf-keywords.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/* conf-keywords.h - Tables used by parser of configuration file.
- Based on information previously contained in conf-lex.y and conf-parse.y
-
- Copyright (C) 2004,2005,2006,2007,2008,2009,2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-enum {
- ERROR,
-
- GLOBAL,
- SERVER,
- RR,
- NEG,
- SOURCE,
- INCLUDE_F,
-
- PERM_CACHE,
- CACHE_DIR,
- SERVER_PORT,
- SERVER_IP,
- OUTGOING_IP,
- SCHEME_FILE,
- LINKDOWN_KLUGE,
- MAX_TTL,
- MIN_TTL,
- RUN_AS,
- STRICT_SETUID,
- USE_NSS,
- PARANOID,
- IGNORE_CD,
- STATUS_CTL,
- DAEMON,
- C_TCP_SERVER,
- PID_FILE,
- C_VERBOSITY,
- C_QUERY_METHOD,
- RUN_IPV4,
- IPV4_6_PREFIX,
- C_DEBUG,
- C_CTL_PERMS,
- C_PROC_LIMIT,
- C_PROCQ_LIMIT,
- TCP_QTIMEOUT,
- C_PAR_QUERIES,
- C_RAND_RECS,
- NEG_TTL,
- NEG_RRS_POL,
- NEG_DOMAIN_POL,
- QUERY_PORT_START,
- QUERY_PORT_END,
- UDP_BUFSIZE,
- DELEGATION_ONLY,
-
- IP,
- PORT,
- SCHEME,
- UPTEST,
- TIMEOUT,
- PING_TIMEOUT,
- PING_IP,
- UPTEST_CMD,
- QUERY_TEST_NAME,
- INTERVAL,
- INTERFACE,
- DEVICE,
- PURGE_CACHE,
- CACHING,
- LEAN_QUERY,
- EDNS_QUERY,
- PRESET,
- PROXY_ONLY,
- ROOT_SERVER,
- RANDOMIZE_SERVERS,
- INCLUDE,
- EXCLUDE,
- POLICY,
- REJECTLIST,
- REJECTPOLICY,
- REJECTRECURSIVELY,
- LABEL,
-
- A,
- PTR,
- MX,
- SOA,
- CNAME,
- TXT,
- SPF,
- NAME,
- OWNER,
- TTL,
- TYPES,
- FILET,
- SERVE_ALIASES,
- AUTHREC,
- REVERSE
-};
-
-
-/* Table for looking up section headers. Order alphabetically! */
-static const namevalue_t section_headers[]= {
- {"global", GLOBAL},
- {"include", INCLUDE_F},
- {"neg", NEG},
- {"rr", RR},
- {"server", SERVER},
- {"source", SOURCE}
-};
-
-/* Table for looking up global options. Order alphabetically! */
-static const namevalue_t global_options[]= {
- {"cache_dir", CACHE_DIR},
- {"ctl_perms", C_CTL_PERMS},
- {"daemon", DAEMON},
- {"debug", C_DEBUG},
- {"delegation_only", DELEGATION_ONLY},
- {"ignore_cd", IGNORE_CD},
- {"interface", SERVER_IP},
- {"ipv4_6_prefix", IPV4_6_PREFIX},
- {"linkdown_kluge", LINKDOWN_KLUGE},
- {"max_ttl", MAX_TTL},
- {"min_ttl", MIN_TTL},
- {"neg_domain_pol", NEG_DOMAIN_POL},
- {"neg_rrs_pol", NEG_RRS_POL},
- {"neg_ttl", NEG_TTL},
- {"outgoing_ip", OUTGOING_IP},
- {"outside_interface", OUTGOING_IP},
- {"par_queries", C_PAR_QUERIES},
- {"paranoid", PARANOID},
- {"perm_cache", PERM_CACHE},
- {"pid_file", PID_FILE},
- {"proc_limit", C_PROC_LIMIT},
- {"procq_limit", C_PROCQ_LIMIT},
- {"query_method", C_QUERY_METHOD},
- {"query_port_end", QUERY_PORT_END},
- {"query_port_start", QUERY_PORT_START},
- {"randomize_recs", C_RAND_RECS},
- {"run_as", RUN_AS},
- {"run_ipv4", RUN_IPV4},
- {"scheme_file", SCHEME_FILE},
- {"server_ip", SERVER_IP},
- {"server_port", SERVER_PORT},
- {"status_ctl", STATUS_CTL},
- {"strict_setuid", STRICT_SETUID},
- {"tcp_qtimeout", TCP_QTIMEOUT},
- {"tcp_server", C_TCP_SERVER},
- {"timeout", TIMEOUT},
- {"udpbufsize", UDP_BUFSIZE},
- {"use_nss", USE_NSS},
- {"verbosity", C_VERBOSITY}
-};
-
-/* Table for looking up server options. Order alphabetically! */
-static const namevalue_t server_options[]= {
- {"caching", CACHING},
- {"device", DEVICE},
- {"edns_query", EDNS_QUERY},
- {"exclude", EXCLUDE},
- {"file", FILET},
- {"include", INCLUDE},
- {"interface", INTERFACE},
- {"interval", INTERVAL},
- {"ip", IP},
- {"label", LABEL},
- {"lean_query", LEAN_QUERY},
- {"ping_ip", PING_IP},
- {"ping_timeout", PING_TIMEOUT},
- {"policy", POLICY},
- {"port", PORT},
- {"preset", PRESET},
- {"proxy_only", PROXY_ONLY},
- {"purge_cache", PURGE_CACHE},
- {"query_test_name", QUERY_TEST_NAME},
- {"randomize_servers", RANDOMIZE_SERVERS},
- {"reject", REJECTLIST},
- {"reject_policy", REJECTPOLICY},
- {"reject_recursively", REJECTRECURSIVELY},
- {"root_server", ROOT_SERVER},
- {"scheme", SCHEME},
- {"timeout", TIMEOUT},
- {"uptest", UPTEST},
- {"uptest_cmd", UPTEST_CMD}
-};
-
-/* Table for looking up rr options. Order alphabetically! */
-static const namevalue_t rr_options[]= {
- {"a", A},
- {"authrec", AUTHREC},
- {"cname", CNAME},
- {"mx", MX},
- {"name", NAME},
- {"ns", OWNER},
- {"owner", OWNER},
- {"ptr", PTR},
- {"reverse", REVERSE},
- {"soa", SOA},
- {"spf", SPF},
- {"ttl", TTL},
- {"txt", TXT}
-};
-
-/* Table for looking up source options. Order alphabetically! */
-static const namevalue_t source_options[]= {
- {"authrec", AUTHREC},
- {"file", FILET},
- {"ns", OWNER},
- {"owner", OWNER},
- {"serve_aliases", SERVE_ALIASES},
- {"ttl", TTL}
-};
-
-/* Table for looking up include options. Order alphabetically! */
-static const namevalue_t include_options[]= {
- {"file", FILET}
-};
-
-/* Table for looking up neg options. Order alphabetically! */
-static const namevalue_t neg_options[]= {
- {"name", NAME},
- {"ttl", TTL},
- {"types", TYPES}
-};
diff --git a/jni/pdnsd/src/conf-parser.c b/jni/pdnsd/src/conf-parser.c
deleted file mode 100644
index 9cf9180..0000000
--- a/jni/pdnsd/src/conf-parser.c
+++ /dev/null
@@ -1,2118 +0,0 @@
-/* conf-parser.c - Parser for pdnsd config files.
- Based on the files conf-lex.l and conf-parse.y written by
- Thomas Moestl.
- This version was rewritten in C from scratch by Paul A. Rombouts
- and doesn't require (f)lex or yacc/bison.
-
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Paul A. Rombouts.
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include "ipvers.h"
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <stdarg.h>
-#if defined(HAVE_STRUCT_IFREQ)
-#include <sys/ioctl.h>
-#endif
-#include "conff.h"
-#include "consts.h"
-#include "cache.h"
-#include "dns.h"
-#include "helpers.h"
-#include "rr_types.h"
-#include "netdev.h"
-#include "conf-keywords.h"
-#include "conf-parser.h"
-
-
-/* Check that include files are not nested deeper than MAXINCLUDEDEPTH,
- as a precaution against infinite recursion. */
-#define MAXINCLUDEDEPTH 100
-
-static char *report_error (const char *conftype, unsigned linenr, const char *msg)
-{
- char *retval;
- if(linenr) {
- if(asprintf(&retval, "Error in %s (line %u): %s",conftype,linenr,msg)<0)
- retval=NULL;
- }
- else {
- if(asprintf(&retval, "Error in %s: %s",conftype,msg)<0)
- retval=NULL;
- }
-
- return retval;
-}
-
-static char *report_errorf (const char *conftype, unsigned linenr, const char *frm,...) printfunc(3, 4);
-static char *report_errorf (const char *conftype, unsigned linenr, const char *frm,...)
-{
- char *msg,*retval; int mlen;
- va_list va;
- va_start(va,frm);
- mlen=vasprintf(&msg,frm,va);
- va_end(va);
- if(mlen<0) return NULL;
- retval=report_error(conftype,linenr,msg);
- free(msg);
- return retval;
-}
-
-/* return pointer to next character in linebuffer after skipping blanks and comments */
-static char* getnextp(char **buf, size_t *n, FILE* in, char *p, unsigned *linenr, char **errstr)
-{
- if(!p) goto nextline;
- tryagain:
- if(!*p) {
- nextline:
- do {
- if(!in || getline(buf,n,in)<0) {
- *errstr=NULL;
- return NULL;
- }
- ++*linenr;
- p=*buf;
- } while(!*p);
- }
- if(isspace(*p)) {
- ++p; goto tryagain;
- }
- if(*p=='#') {
- skip_rest_of_line:
- if(*linenr)
- goto nextline;
- else {
- p=strchr(p,'\n');
- if(p) {
- ++p;
- goto tryagain;
- }
- else
- goto nextline;
- }
- }
- if(*p=='/') {
- if(*(p+1)=='/')
- goto skip_rest_of_line;
- if(*(p+1)=='*') {
- int lev=1;
- p +=2;
- for(;;) {
- while(*p) {
- if(*p=='/' && *(p+1)=='*') {
- ++lev;
- p +=2;
- continue;
- }
- else if(*p=='*' && *(p+1)=='/') {
- p +=2;
- if(--lev==0) goto tryagain;
- continue;
- }
- ++p;
- }
- if(!in || getline(buf,n,in)<0) {
- *errstr="comment without closing */";
- return NULL;
- }
- ++*linenr;
- p=*buf;
- }
- }
- }
-
- return p;
-}
-
-static char translescapedchar(char c)
-{
- switch(c) {
- case 'f': return '\f';
- case 'n': return '\n';
- case 'r': return '\r';
- case 't': return '\t';
- case 'v': return '\v';
- }
- return c;
-}
-
-/* Scan a buffer for a string and copy the decoded (i.e. unescaped) version into
- another buffer.
-
- A string either begins after and ends before a double-quote ("),
- or simply consists of a sequence of "non-special" characters,
- starting at the current position.
- A back-slash (\) acts as an escape character, preventing any character
- following it from terminating the string. Thus, for example,
- back-slash double-quote (\") may be used to include double-quotes
- in a string.
- A number of escape sequences are interpreted as in C, e.g.
- \t, \n, \r yield control-chars as in C.
-
- char **curp should point to the position in the buffer where
- the scanning should begin. It will be updated to point
- to the first character past the scanned string.
-
- char *outbuf is used to store the decoded string.
- size_t outbufsz should be the size of outbuf.
-
- The return value is the length of the decoded string, unless an error occurs,
- in which case -1 is returned and *errstr is assigned an error message.
- The returned length may be larger than outbufsz, in which case the buffer
- is filled with only the first outbufsz chars of the string.
-*/
-static int scan_string(char **curp,char *outbuf, unsigned outbufsz, char **errstr)
-{
- char *cur=*curp;
- unsigned i=0;
-
- if(*cur=='"') {
- /* Double-quoted string. */
- ++cur; /* Skip opening quote. */
- for(;; ++i,++cur) {
- if(!*cur) goto noclosingquote;
- if(*cur=='"') break;
- if(*cur=='\\') {
- if(!*++cur) goto nofollowingchar;
- if(i<outbufsz)
- outbuf[i]= translescapedchar(*cur);
- }
- else if(i<outbufsz)
- outbuf[i]= *cur;
- }
- ++cur; /* Skip closing quote. */
- }
- else {
- /* Bare (unquoted) string. */
- for(; *cur; ++i,++cur) {
- if(*cur=='\\') {
- /* Accept any non-null char following a back-slash. */
- if(!*++cur) goto nofollowingchar;
- if(i<outbufsz)
- outbuf[i]= translescapedchar(*cur);
- }
- else if(isspace(*cur) ||
- *cur==',' || *cur==';' ||
- *cur=='{' || *cur=='}' ||
- *cur=='"' || *cur=='#' ||
- (*cur=='/' && (*(cur+1)=='/'|| *(cur+1)=='*')))
- break;
- else if(i<outbufsz)
- outbuf[i]= *cur;
- }
- }
-
- if(i<outbufsz)
- outbuf[i]=0;
- *curp=cur;
- return i;
-
- noclosingquote:
- *errstr="quoted string without closing quote";
- return -1;
- nofollowingchar:
- *errstr="may not use backslash to escape end-of-line";
- return -1;
-}
-
-
-/* Convert a string to a time value in seconds.
- The string referred to by nptr is scanned for a sequence of components,
- where each component contains a non-empty sequence of digits followed
- by a possible one-letter suffix.
- The position where the scanning stops is returned in endptr.
- If an error is detected during scanning, a pointer to a
- (static) error message is returned in errstr.
-*/
-static time_t strtotime(char *nptr, char **endptr, char **errstr)
-{
- time_t retval=0,t;
- char c;
-
- *errstr=NULL;
- while(isalnum(c=*nptr)) {
- if(!isdigit(c)) {
- *errstr="no digits before suffix.";
- break;
- }
-
- t=strtol(nptr,&nptr,10);
-
- if(isalpha(c=*nptr)) {
- if(c=='s') /* seconds */
- ;
- else if(c=='m') /* minutes */
- t *= 60;
- else if(c=='h') /* hours */
- t *= 60*60;
- else if(c=='d') /* days */
- t *= 24*60*60;
- else if(c=='w') /* weeks */
- t *= 7*24*60*60;
- else {
- *errstr="allowed suffixes are w,d,h,m,s.";
- break;
- }
- ++nptr;
- }
-
- retval += t;
- }
-
- if(endptr) *endptr=nptr;
- return retval;
-}
-
-
-#define lookup_keyword(name,len,dic) binsearch_keyword(name,len,dic,sizeof(dic)/sizeof(namevalue_t))
-static const char *parse_ip(const char *ipstr, pdnsd_a *a);
-static const char *addr_add(atup_array *ata, const char *ipstr);
-#define addr_add_(ata,ipstr,len) addr_add(ata,ipstr)
-static const char *reject_add(servparm_t *serv, const char *ipstr);
-#define reject_add_(serv,ipstr,len) reject_add(serv,ipstr)
-static void check_localaddrs(servparm_t *serv);
-static int read_resolv_conf(const char *fn, atup_array *ata, char **errstr);
-static const char *slist_add(slist_array *sla, const char *nm, unsigned int len, int tp);
-#define include_list_add(sla,nm,len) slist_add(sla,nm,len,C_INCLUDED)
-#define exclude_list_add(sla,nm,len) slist_add(sla,nm,len,C_EXCLUDED)
-static const char *zone_add(zone_array *za, const char *zone, unsigned int len);
-
-#define CONCAT(a,b) a ## b
-/* a macro for concatenating tokens that expands its arguments */
-#define XCONCAT(a,b) CONCAT(a,b)
-/* a macro for generating (mostly) unique labels using line number */
-#define N_LABEL(pre) XCONCAT(pre,__LINE__)
-
-
-#define SCAN_ALPHANUM(start,cur,len) \
-{ \
- (start)=(cur); \
- do { \
- ++(cur); \
- } while(*(cur) && (isalnum(*(cur)) || *(cur)=='_')); \
- (len)=(cur)-(start); \
-}
-
-#define STRNDUP(dst,src,len) \
-{ \
- if(dst) free(dst); \
- if(!((dst)=strndup(src,len))) { \
- OUTOFMEMERROR; \
- } \
-}
-
-#define STRNCP(dst,src,len,errmsg) \
-{ \
- if ((len)<sizeof(dst)) { \
- memcpy(dst,src,len); \
- (dst)[len]=0; \
- } \
- else { \
- REPORT_ERROR(errmsg ": string too long"); \
- PARSERROR; \
- } \
-}
-
-/* TEMPSTRNCPY declares dst as a variable length array */
-#define TEMPSTRNCPY(dst,src,len) \
- char dst[(len)+1]; \
- memcpy(dst,src,len); \
- dst[len]=0;
-
-#define SCAN_STRING_LIST(dst,cur,strbuf,len,addfunc) \
-{ \
- for(;;) { \
- const char *_err; \
- SCAN_STRING(cur,strbuf,len); \
- if((_err=addfunc(dst,strbuf,len))) { \
- REPORT_ERROR(_err); \
- PARSERROR; \
- } \
- SKIP_BLANKS(cur); \
- if(*(cur)!=',') break; \
- ++(cur); \
- SKIP_BLANKS(cur); \
- } \
-}
-
-#define ASSIGN_ON_OFF(dst,cur,onoff,errmsg) \
-{ \
- if(isalpha(*(cur))) { \
- char *_str; \
- size_t _len; \
- int _cnst; \
- SCAN_ALPHANUM(_str,cur,_len); \
- _cnst=lookup_const(_str,_len); \
- if(_cnst==C_ON || _cnst==C_OFF) { \
- (dst)=(_cnst==(onoff)); \
- } \
- else { \
- goto N_LABEL(ASSIGN_ON_OFF_) ; \
- } \
- } \
- else { \
- N_LABEL(ASSIGN_ON_OFF_) : \
- REPORT_ERROR(errmsg); \
- PARSERROR; \
- } \
-}
-
-#define ASSIGN_CONST(dst,cur,test,errmsg) \
-{ \
- if(isalpha(*(cur))) { \
- char *_str; \
- size_t _len; \
- SCAN_ALPHANUM(_str,cur,_len); \
- (dst)=lookup_const(_str,_len); \
- if(!(test)) { \
- goto N_LABEL(ASSIGN_CONST_) ; \
- } \
- } \
- else { \
- N_LABEL(ASSIGN_CONST_) : \
- REPORT_ERROR(errmsg); \
- PARSERROR; \
- } \
-}
-
-#define SCAN_UNSIGNED_NUM(dst,cur,errmsg) \
-{ \
- if(isdigit(*(cur))) { \
- dst=strtol(cur,&(cur),0); \
- } \
- else { \
- REPORT_ERROR("expected unsigned integer value for " errmsg); \
- PARSERROR; \
- } \
-}
-
-#define SCAN_TIMESECS(dst,cur,errmsg) \
-{ \
- if(isdigit(*(cur))) { \
- char *_err; \
- dst=strtotime(cur,&(cur),&_err); \
- if(_err) { \
- REPORT_ERRORF("invalid time specification for %s: %s",errmsg,_err); \
- PARSERROR; \
- } \
- } \
- else { \
- REPORT_ERROR("expected a time specification for " errmsg); \
- PARSERROR; \
- } \
-}
-
-#define PARSESTR2RHN(src,len,dst) \
-{ \
- const char *_err; \
- if ((_err=parsestr2rhn(src,len,dst))) { \
- REPORT_ERROR(_err); \
- PARSERROR; \
- } \
-}
-
-
-#if 0
-/* Copy a domain name, adding a dot at the end if necessary.
- The format of the name (including the length) is checked with parsestr2rhn()
-*/
-#define DOM_NAME_CPY(dst,src,len) \
-{ \
- unsigned char _buf[DNSNAMEBUFSIZE]; \
- PARSESTR2RHN(src,len,_buf); \
- memcpy(dst,src,len); \
- (dst)[len]=0; \
- if((len)==0 || (dst)[(len)-1]!='.') { \
- (dst)[len]='.'; (dst)[(len)+1]=0; \
- } \
-}
-#endif
-
-# define SKIP_COMMA(cur,errmsg) \
-{ \
- SKIP_BLANKS(cur); \
- if(*(cur)!=',') { \
- REPORT_ERROR(errmsg); \
- PARSERROR; \
- } \
- ++(cur); \
- SKIP_BLANKS(cur); \
-}
-
-
-/* Parse a configuration file, adding data to a (separate) global section and servers array,
- and the cache.
-
- FILE *in should point to the input stream. It may be NULL, in which case no file is read.
-
- char *prestr may be NULL or point to a string which will be parsed before the input file.
-
- globparm_t *global should point to a struct which will be used to store the data of the
- global section(s). If it is NULL, no global sections are allowed in the
- input.
-
- servparm_array *servers should point to a dynamic array which will be grown to store the data
- of the server sections. If it is NULL, no server sections are allowed
- in the input.
-
- int includedepth is used to track how deeply recursive calls of confparse are nested.
- Should be 0 for a top-level call.
-
- char **errstr is used to return a possible error message.
- In case of failure, *errstr will refer to a newly allocated string.
-
- confparse returns 1 on success, 0 on failure.
-*/
-int confparse(FILE* in, char *prestr, globparm_t *global, servparm_array *servers, int includedepth, char **errstr)
-{
- char *linebuf=NULL,*p,*ps,*getnextperr=NULL,*scanstrerr=NULL;
- const char *conftype;
- size_t buflen=256;
- unsigned linenr=0;
- int retval=0,sechdr,option,len;
- char strbuf[1024];
-# define CLEANUP_HANDLER
-# define CLEANUP_HANDLER2
-# define CLEANUP_HANDLERS CLEANUP_HANDLER2;CLEANUP_HANDLER
-# define SKIP_BLANKS(cur) {if(!((cur)=getnextp(&linebuf,&buflen,in,cur,&linenr,&getnextperr))) {CLEANUP_HANDLERS; goto unexpected_eof;}}
-# define SCAN_STRING(cur,buf,len) { \
- if(((len)=scan_string(&(cur),buf,sizeof(buf),&scanstrerr))==-1) \
- {CLEANUP_HANDLERS; goto string_err;} \
- else if((len)>=sizeof(buf)) \
- {CLEANUP_HANDLERS; goto string_too_long;} \
- }
-# define REPORT_ERROR(msg) (*errstr=report_error(conftype,linenr,msg))
-# if !defined(CPP_C99_VARIADIC_MACROS)
- /* GNU C Macro Varargs style. */
-# define REPORT_ERRORF(args...) (*errstr=report_errorf(conftype,linenr,args))
-#else
- /* ANSI C99 style. */
-# define REPORT_ERRORF(...) (*errstr=report_errorf(conftype,linenr,__VA_ARGS__))
-# endif
-# define PARSERROR {CLEANUP_HANDLERS; goto free_linebuf_return;}
-# define OUTOFMEMERROR {CLEANUP_HANDLERS; goto out_of_memory;}
-# define CLEANUP_GOTO(lab) {CLEANUP_HANDLERS; goto lab;}
-
- *errstr=NULL;
- if(in) {
- linebuf=malloc(buflen);
- if(!linebuf) {
- /* If malloc() just failed, allocating space for an error message is unlikely to succeed. */
- return 0;
- }
- if(global)
- conftype="config file";
- else
- conftype="include file";
- }
- else
- conftype="config string";
-
- p=prestr;
- while((p=getnextp(&linebuf,&buflen,in,p,&linenr,&getnextperr))) {
- if(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- sechdr=lookup_keyword(ps,len,section_headers);
- if(!sechdr) {
- REPORT_ERRORF("invalid section header: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='{') goto expected_bropen;
- ++p;
- SKIP_BLANKS(p);
-
- switch(sechdr) {
- case GLOBAL:
- if(!global) {
- REPORT_ERROR(in?"global section not allowed in include file":
- "global section not allowed in eval string");
- PARSERROR;
- }
-
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,global_options);
- if(!option) {
- REPORT_ERRORF("invalid option for global section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') goto expected_equals;
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- pdnsd_a *ipaddrp;
-
- case PERM_CACHE:
- if (isalpha(*p)) {
- int cnst;
- SCAN_ALPHANUM(ps,p,len);
- cnst=lookup_const(ps,len);
- if(cnst==C_OFF) {
- global->perm_cache=0;
- }
- else
- goto bad_perm_cache_option;
- }
- else if(isdigit(*p)) {
- global->perm_cache=strtol(p,&p,0);
- }
- else {
- bad_perm_cache_option:
- REPORT_ERROR("bad qualifier in perm_cache= option.");
- PARSERROR;
- }
- break;
-
- case CACHE_DIR:
- SCAN_STRING(p,strbuf,len);
- STRNDUP(global->cache_dir,strbuf,len);
- break;
-
- case SERVER_PORT:
- SCAN_UNSIGNED_NUM(global->port,p,"server_port option")
- break;
-
- case OUTGOING_IP:
- ipaddrp= &global->out_a;
- goto scan_ip_or_interface;
-
- case SERVER_IP:
- ipaddrp= &global->a;
- scan_ip_or_interface:
- SCAN_STRING(p,strbuf,len);
- {
- const char *err;
- if ((err=parse_ip(strbuf,ipaddrp))) {
-#if defined(HAVE_STRUCT_IFREQ) && defined(IFNAMSIZ) && defined(SIOCGIFADDR)
- if(!strcmp(err,"bad IP address") && len<IFNAMSIZ) {
- /* Treat the string argument as the name of an interface
- and try to find its IP address.
- */
- int fd;
- struct ifreq req;
- memcpy(req.ifr_name, strbuf, len);
- req.ifr_name[len]=0;
- req.ifr_addr.sa_family = PDNSD_AF_INET;
-
-
- if ((fd = socket(PDNSD_PF_INET, SOCK_DGRAM, 0))!=-1 && ioctl(fd, SIOCGIFADDR, &req)!=-1) {
-# ifdef ENABLE_IPV4
- if (run_ipv4)
- ipaddrp->ipv4= ((struct sockaddr_in *)&req.ifr_addr)->sin_addr;
-# endif
-# ifdef ENABLE_IPV6
- ELSE_IPV6
- ipaddrp->ipv6= ((struct sockaddr_in6 *)&req.ifr_addr)->sin6_addr;
-# endif
- close(fd);
- }
- else {
- REPORT_ERRORF("Failed to get IP address of %s: %s",req.ifr_name,strerror(errno));
- if(fd!=-1) close(fd);
- PARSERROR;
- }
- }
- else
-#endif
- {
- REPORT_ERRORF("%s for the %s= option.",err,option==SERVER_IP?"server_ip":"outgoing_ip");
- PARSERROR;
- }
- }
- }
- break;
-
- case SCHEME_FILE:
- SCAN_STRING(p,strbuf,len);
- STRNDUP(global->scheme_file, strbuf,len);
- break;
-
- case LINKDOWN_KLUGE:
- ASSIGN_ON_OFF(global->lndown_kluge,p,C_ON,"bad qualifier in linkdown_kluge= option.");
- break;
-
- case MAX_TTL:
- SCAN_TIMESECS(global->max_ttl,p,"max_ttl option");
- break;
-
- case MIN_TTL:
- SCAN_TIMESECS(global->min_ttl,p,"min_ttl option");
- break;
-
- case RUN_AS:
- SCAN_STRING(p,strbuf,len);
- STRNCP(global->run_as, strbuf,len, "run_as");
- break;
-
- case STRICT_SETUID:
- ASSIGN_ON_OFF(global->strict_suid, p,C_ON,"bad qualifier in strict_setuid= option.");
- break;
-
- case USE_NSS:
- ASSIGN_ON_OFF(global->use_nss, p,C_ON,"bad qualifier in use_nss= option.");
- break;
-
- case PARANOID:
- ASSIGN_ON_OFF(global->paranoid, p,C_ON,"bad qualifier in paranoid= option.");
- break;
-
- case IGNORE_CD: {
- int ignore_cd;
- ASSIGN_ON_OFF(ignore_cd, p,C_ON,"bad qualifier in ignore_cd= option.");
- fprintf(stderr, "Warning: ignore_cd option in configuration file is obsolete and currently has no effect.\n");
- }
- break;
-
- case STATUS_CTL: {
- int cnst;
- ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in status_pipe= option.");
- if(!cmdline.stat_pipe) global->stat_pipe=(cnst==C_ON);
- }
- break;
-
- case DAEMON: {
- int cnst;
- ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in daemon= option.");
- if(!cmdline.daemon) global->daemon=(cnst==C_ON);
- }
- break;
-
- case C_TCP_SERVER: {
- int cnst;
- ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in tcp_server= option.");
- if(!cmdline.notcp) {
- global->notcp=(cnst==C_OFF);
-#ifdef NO_TCP_SERVER
- if(!global->notcp) {
- REPORT_ERROR("pdnsd was compiled without TCP server support. tcp_server=on is not allowed.");
- PARSERROR;
- }
-#endif
- }
- }
- break;
-
- case PID_FILE:
- SCAN_STRING(p,strbuf,len);
- if(!cmdline.pidfile) {STRNDUP(global->pidfile,strbuf,len);}
- break;
-
- case C_VERBOSITY: {
- int val;
- SCAN_UNSIGNED_NUM(val,p,"verbosity option");
- if(!cmdline.verbosity) global->verbosity=val;
- }
- break;
-
- case C_QUERY_METHOD: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==TCP_ONLY || cnst==UDP_ONLY || cnst==TCP_UDP || cnst==UDP_TCP,"bad qualifier in query_method= option.");
-#ifdef NO_TCP_QUERIES
- if (cnst==TCP_ONLY) {
- REPORT_ERROR("the tcp_only option is only available when pdnsd is compiled with TCP support.");
- PARSERROR;
- }
- else
-#endif
-#ifdef NO_UDP_QUERIES
- if (cnst==UDP_ONLY) {
- REPORT_ERROR("the udp_only option is only available when pdnsd is compiled with UDP support.");
- PARSERROR;
- }
- else
-#endif
-#if defined(NO_TCP_QUERIES) || defined(NO_UDP_QUERIES)
- if (cnst==TCP_UDP) {
- REPORT_ERROR("the tcp_udp option is only available when pdnsd is compiled with both TCP and UDP support.");
- PARSERROR;
- }
- else if (cnst==UDP_TCP) {
- REPORT_ERROR("the udp_tcp option is only available when pdnsd is compiled with both TCP and UDP support.");
- PARSERROR;
- }
- else
-#endif
- if(!cmdline.query_method) global->query_method=cnst;
- }
- break;
-
- case RUN_IPV4: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"bad qualifier in run_ipv4= option.");
-#ifndef ENABLE_IPV4
- if(cnst==C_ON) {
- REPORT_ERROR("You can only set run_ipv4=on when pdnsd is compiled with IPv4 support.");
- PARSERROR;
- }
-#endif
-#ifndef ENABLE_IPV6
- if(cnst==C_OFF) {
- REPORT_ERROR("You can only set run_ipv4=off when pdnsd is compiled with IPv6 support.");
- PARSERROR;
- }
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- if(!cmdlineipv) {
- run_ipv4=(cnst==C_ON); cmdlineipv=-1;
- }
- else if(cmdlineipv<0 && run_ipv4!=(cnst==C_ON)) {
- REPORT_ERROR(cmdlineipv==-1?
- "IPv4/IPv6 conflict: you are trying to set run_ipv4 to a value that conflicts with a previous run_ipv4 setting.":
- "You must set the run_ipv4 option before specifying IP addresses.");
- PARSERROR;
- }
-#endif
- }
- break;
-
- case IPV4_6_PREFIX:
- SCAN_STRING(p,strbuf,len);
-#ifdef ENABLE_IPV6
- if(!cmdline.prefix) {
- if(inet_pton(AF_INET6,strbuf,&global->ipv4_6_prefix)<=0) {
- REPORT_ERROR("ipv4_6_prefix: argument not a valid IPv6 address.");
- PARSERROR;
- }
- }
-#else
- fprintf(stderr,"pdnsd was compiled without IPv6 support. ipv4_6_prefix option in config file will be ignored.\n");
-#endif
- break;
-
- case C_DEBUG: {
- int cnst;
- ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in debug= option.");
- if(!cmdline.debug) {
- global->debug=(cnst==C_ON);
-#if !DEBUG
- if(global->debug)
- fprintf(stderr,"pdnsd was compiled without debugging support. debug=on has no effect.\n");
-#endif
- }
- }
- break;
-
- case C_CTL_PERMS:
- SCAN_UNSIGNED_NUM(global->ctl_perms, p,"ctl_perms option");
- break;
-
- case C_PROC_LIMIT:
- SCAN_UNSIGNED_NUM(global->proc_limit, p,"proc_limit option");
- break;
-
- case C_PROCQ_LIMIT:
- SCAN_UNSIGNED_NUM(global->procq_limit, p,"procq_limit option");
- break;
-
- case TCP_QTIMEOUT:
- SCAN_TIMESECS(global->tcp_qtimeout, p,"tcp_qtimeout option");
- break;
-
- case TIMEOUT:
- SCAN_TIMESECS(global->timeout, p,"global timeout option");
- break;
-
- case C_PAR_QUERIES: {
- int val;
- SCAN_UNSIGNED_NUM(val, p,"par_queries option");
- if(val<=0) {
- REPORT_ERROR("bad value for par_queries.");
- PARSERROR;
- } else {
- global->par_queries=val;
- }
- }
- break;
-
- case C_RAND_RECS:
- ASSIGN_ON_OFF(global->rnd_recs, p,C_ON,"bad qualifier in randomize_recs= option.");
- break;
-
- case NEG_TTL:
- SCAN_TIMESECS(global->neg_ttl, p,"neg_ttl option");
- break;
-
- case NEG_RRS_POL: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_DEFAULT || cnst==C_AUTH,
- "bad qualifier in neg_rrs_pol= option.");
- global->neg_rrs_pol=cnst;
- }
- break;
-
- case NEG_DOMAIN_POL: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_AUTH,"bad qualifier in neg_domain_pol= option.");
- global->neg_domain_pol=cnst;
- }
- break;
-
- case QUERY_PORT_START: {
- int val;
- if(isalpha(*p)) {
- int cnst;
- SCAN_ALPHANUM(ps,p,len);
- cnst=lookup_const(ps,len);
- if(cnst==C_NONE)
- val=-1;
- else
- goto bad_port_start_option;
- }
- else if(isdigit(*p)) {
- val=strtol(p,&p,0);
- if(val>65535) {
- REPORT_ERROR("value for query_port_start out of range.");
- PARSERROR;
- }
- else if(val<1024)
- fprintf(stderr,"Warning: query_port_start=%i but source ports <1204 can only be used as root.\n",
- val);
- }
- else {
- bad_port_start_option:
- REPORT_ERROR("bad qualifier in query_port_start= option.");
- PARSERROR;
- }
- global->query_port_start=val;
- }
- break;
-
- case QUERY_PORT_END: {
- int val;
- SCAN_UNSIGNED_NUM(val,p,"query_port_end option");
- if(val>65535) {
- REPORT_ERROR("value for query_port_end out of range.");
- PARSERROR;
- }
- global->query_port_end=val;
- }
- break;
-
- case UDP_BUFSIZE: {
- int val;
- SCAN_UNSIGNED_NUM(val,p,"udpbufsize");
- if(val<512 || val>65535-(20+8)) {
- REPORT_ERROR("value for udpbufsize out of range.");
- PARSERROR;
- }
- global->udpbufsize=val;
- }
- break;
-
- case DELEGATION_ONLY:
- SCAN_STRING_LIST(&global->deleg_only_zones,p,strbuf,len,zone_add)
- break;
-
- default: /* we should never get here */
- goto internal_parse_error;
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') goto expected_semicolon;
- ++p;
- SKIP_BLANKS(p);
- }
-
- if(*p!='}') goto expected_closing_brace;
- if (global->query_port_end < global->query_port_start) {
- REPORT_ERROR("query_port_end may not be smaller than query_port_start.");
- PARSERROR;
- }
- break;
-
- case SERVER: {
- servparm_t server;
-
- if(!servers) {
- REPORT_ERROR(in?"server section not allowed in include file":
- "server section not allowed in eval string");
- PARSERROR;
- }
-
- server=serv_presets;
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER (free_servparm(&server))
-
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,server_options);
- if(!option) {
- REPORT_ERRORF("invalid option for server section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') CLEANUP_GOTO(expected_equals);
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- case IP:
- SCAN_STRING_LIST(&server.atup_a,p,strbuf,len,addr_add_);
- break;
-
- case FILET:
- SCAN_STRING(p,strbuf,len);
- {
- char *errmsg;
- if (!read_resolv_conf(strbuf, &server.atup_a, &errmsg)) {
- if(errmsg) {REPORT_ERROR(errmsg); free(errmsg);}
- else *errstr=NULL;
- PARSERROR;
- }
- }
- break;
-
- case PORT:
- SCAN_UNSIGNED_NUM(server.port,p,"port option");
- break;
-
- case SCHEME:
- SCAN_STRING(p,strbuf,len);
- STRNCP(server.scheme, strbuf,len, "scheme");
- break;
-
- case UPTEST: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_PING || cnst==C_NONE || cnst==C_IF || cnst==C_EXEC || cnst==C_DEV || cnst==C_DIALD || cnst==C_QUERY,"bad qualifier in uptest= option.");
- server.uptest=cnst;
- }
- break;
-
- case TIMEOUT:
- SCAN_TIMESECS(server.timeout,p,"timeout option");
- break;
-
- case PING_TIMEOUT:
- SCAN_UNSIGNED_NUM(server.ping_timeout,p,"ping_timeout option");
- break;
-
- case PING_IP:
- SCAN_STRING(p,strbuf,len);
- {
- const char *err;
- if ((err=parse_ip(strbuf,&server.ping_a))) {
- REPORT_ERRORF("%s for the ping_ip= option.",err);
- PARSERROR;
- }
- }
- break;
-
- case UPTEST_CMD:
- SCAN_STRING(p,strbuf,len);
- STRNDUP(server.uptest_cmd, strbuf,len);
- SKIP_BLANKS(p);
- if(*p==',') {
- ++p;
- SKIP_BLANKS(p);
- SCAN_STRING(p,strbuf,len);
- STRNCP(server.uptest_usr, strbuf,len, "second argument of uptest_cmd");
- }
- break;
-
- case QUERY_TEST_NAME:
- if(isalpha(*p)) {
- int cnst;
- SCAN_ALPHANUM(ps,p,len);
- if(*p!='.' && *p!='-') {
- cnst=lookup_const(ps,len);
- if(cnst==C_NONE) {
- if(server.query_test_name)
- free(server.query_test_name);
- server.query_test_name=NULL;
- break;
- }
- }
- p=ps; /* reset current char pointer and try again. */
- }
- {
- unsigned char tname[DNSNAMEBUFSIZE], *copy;
- unsigned sz;
-
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,tname);
- sz=rhnlen(tname);
- copy= malloc(sz);
- if(!copy) {
- OUTOFMEMERROR;
- }
- memcpy(copy,tname,sz);
- if(server.query_test_name)
- free(server.query_test_name);
- server.query_test_name=copy;
- }
- break;
-
- case INTERVAL:
- if(isalpha(*p)) {
- int cnst;
- SCAN_ALPHANUM(ps,p,len);
- cnst=lookup_const(ps,len);
- if(cnst==C_ONQUERY) {
- server.interval=-1;
- }
- else if(cnst==C_ONTIMEOUT) {
- server.interval=-2;
- }
- else {
- goto bad_interval_option;
- }
- }
- else if(isdigit(*p)) {
- char *err;
- server.interval=strtotime(p,&p,&err);
- if(err) {
- REPORT_ERRORF("bad time specification in interval= option: %s",err);
- PARSERROR;
- }
- }
- else {
- bad_interval_option:
- REPORT_ERROR("bad qualifier in interval= option.");
- PARSERROR;
- }
- break;
-
- case INTERFACE:
- SCAN_STRING(p,strbuf,len);
- STRNCP(server.interface, strbuf,len, "interface");
- break;
-
- case DEVICE:
- SCAN_STRING(p,strbuf,len);
- STRNCP(server.device, strbuf,len, "device");
- break;
-
- case PURGE_CACHE:
- ASSIGN_ON_OFF(server.purge_cache,p,C_ON,"bad qualifier in purge_cache= option.");
- break;
-
- case CACHING:
- ASSIGN_ON_OFF(server.nocache,p,C_OFF,"bad qualifier in caching= option.");
- break;
-
- case LEAN_QUERY:
- ASSIGN_ON_OFF(server.lean_query,p,C_ON,"bad qualifier in lean_query= option.");
- break;
-
- case EDNS_QUERY:
- ASSIGN_ON_OFF(server.edns_query,p,C_ON,"bad qualifier in edns_query= option.");
- break;
-
- case PRESET:
- ASSIGN_ON_OFF(server.preset,p,C_ON,"bad qualifier in preset= option.");
- break;
-
- case PROXY_ONLY:
- ASSIGN_ON_OFF(server.is_proxy,p,C_ON,"bad qualifier in proxy_only= option.");
- break;
-
- case ROOT_SERVER: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_DISCOVER,"bad qualifier in root_server= option.");
- server.rootserver= (cnst==C_DISCOVER? 2: cnst==C_ON);
- }
- break;
-
- case RANDOMIZE_SERVERS:
- ASSIGN_ON_OFF(server.rand_servers,p,C_ON,"bad qualifier in randomize_servers= option.");
- break;
-
- case POLICY: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_INCLUDED || cnst==C_EXCLUDED || cnst==C_SIMPLE_ONLY || cnst==C_FQDN_ONLY,"bad qualifier in policy= option.");
- server.policy=cnst;
- }
- break;
-
- case INCLUDE:
- SCAN_STRING_LIST(&server.alist,p,strbuf,len,include_list_add)
- break;
-
- case EXCLUDE:
- SCAN_STRING_LIST(&server.alist,p,strbuf,len,exclude_list_add)
- break;
-
- case REJECTLIST:
- SCAN_STRING_LIST(&server,p,strbuf,len,reject_add_);
- break;
-
- case REJECTPOLICY: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_FAIL || cnst==C_NEGATE,"bad qualifier in reject_policy= option.");
- server.rejectpolicy=cnst;
- }
- break;
-
- case REJECTRECURSIVELY:
- ASSIGN_ON_OFF(server.rejectrecursively,p,C_ON,"bad qualifier in reject_recursively= option.");
- break;
-
- case LABEL:
- SCAN_STRING(p,strbuf,len);
- STRNDUP(server.label,strbuf,len);
- break;
-
- default: /* we should never get here */
- CLEANUP_GOTO(internal_parse_error);
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') CLEANUP_GOTO(expected_semicolon);
- ++p;
- SKIP_BLANKS(p);
- }
-
- if(*p!='}') CLEANUP_GOTO(expected_closing_brace);
- if (server.uptest==C_EXEC) {
- if (!server.uptest_cmd) {
- REPORT_ERROR("you must specify uptest_cmd if you specify uptest=exec!");
- PARSERROR;
- }
- }
- if (server.is_proxy && server.rootserver) {
- REPORT_ERROR("A server may not be specified as both a proxy and a root-server.");
- PARSERROR;
- }
- if(server.rootserver && (server.policy==C_SIMPLE_ONLY || server.policy==C_FQDN_ONLY))
- fprintf(stderr,"Warning: using policy=%s with a root-server usually makes no sense.",
- const_name(server.policy));
- if (DA_NEL(server.atup_a)) {
- check_localaddrs(&server);
- if(!DA_NEL(server.atup_a)) {
- REPORT_ERROR("Server section contains only local IP addresses.\n"
- "Bind pdnsd to a different local IP address or specify different port numbers"
- " in global section and server section if you want pdnsd to query servers on"
- " the same machine.");
- PARSERROR;
- }
- }
- {
- int j,n=DA_NEL(server.atup_a);
- for(j=0;j<n;++j) {
- atup_t *at= &DA_INDEX(server.atup_a,j);
- at->is_up=server.preset;
- /* A negative test interval means don't test at startup or reconfig. */
- if(server.interval<0) at->i_ts=time(NULL);
- }
- }
- if(server.interval==-1) global->onquery=1;
-
- if (!(*servers=DA_GROW1_F(*servers,(void(*)(void*))free_servparm))) {
- OUTOFMEMERROR;
- }
- DA_LAST(*servers)= server;
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER
- }
- break;
-
- case RR: {
- /* Initialize c_cent to all zeros.
- Then it should be safe to call free_cent() on it, even before calling init_cent(). */
- dns_cent_t c_cent={0};
- time_t c_ttl=86400;
- unsigned c_flags=DF_LOCAL;
- unsigned char reverse=0;
-
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER (free_cent(&c_cent DBG0))
-
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,rr_options);
- if(!option) {
- REPORT_ERRORF("invalid option for rr section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') CLEANUP_GOTO(expected_equals);
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- int tp; const char *tpname;
- case NAME: {
- unsigned char c_name[DNSNAMEBUFSIZE];
- if (c_cent.qname) {
- REPORT_ERROR("You may specify only one name in a rr section.");
- PARSERROR;
- }
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,c_name);
- if (!init_cent(&c_cent, c_name, 0, 0, c_flags DBG0))
- goto out_of_memory;
- }
- break;
-
- case TTL:
- SCAN_TIMESECS(c_ttl,p, "ttl option");
- break;
-
- case AUTHREC: {
- int cnst;
- if (c_cent.qname) {
- REPORT_ERROR("The authrec= option has no effect unless it precedes name= in a rr section.");
- PARSERROR;
- }
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"Bad qualifier in authrec= option.");
- c_flags=(cnst==C_ON)?DF_LOCAL:0;
- }
- break;
-
- case REVERSE:
- ASSIGN_ON_OFF(reverse,p,C_ON,"bad qualifier in reverse= option.");
- break;
-
- case A: {
- unsigned int sz;
- pdnsd_ca c_a;
-
- if (!c_cent.qname)
- goto no_name_spec;
- SCAN_STRING(p,strbuf,len);
- if (inet_aton(strbuf,&c_a.ipv4)) {
- tp=T_A;
- sz=sizeof(struct in_addr);
- }
- else
-#if ALLOW_LOCAL_AAAA
- if (inet_pton(AF_INET6,strbuf,&c_a.ipv6)>0) {
- tp=T_AAAA;
- sz=sizeof(struct in6_addr);
- }
- else
-#endif
- {
- REPORT_ERROR("bad IP address in a= option.");
- PARSERROR;
- }
-
- if(!add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,sz,&c_a DBG0))
- goto add_rr_failed;
- }
- break;
-
- case OWNER:
- tp=T_NS;
- goto scan_name;
- case CNAME:
- tp=T_CNAME;
- goto scan_name;
- case PTR:
- tp=T_PTR;
- scan_name:
- {
- unsigned char c_name[DNSNAMEBUFSIZE];
-
- if (!c_cent.qname)
- goto no_name_spec;
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,c_name);
- if(!add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,rhnlen(c_name),c_name DBG0))
- goto add_rr_failed;
- }
- break;
-
- case MX: {
- unsigned char *cp;
- unsigned pref;
- unsigned char c_mx[2+DNSNAMEBUFSIZE];
-
- if (!c_cent.qname)
- goto no_name_spec;
- cp=c_mx+2;
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,cp);
- SKIP_COMMA(p,"missing second argument (preference level) of mx= option");
- SCAN_UNSIGNED_NUM(pref,p,"second argument of mx= option");
- cp=c_mx;
- PUTINT16(pref,cp);
- if(!add_cent_rr(&c_cent,T_MX,c_ttl,0,CF_LOCAL,2+rhnlen(cp),c_mx DBG0))
- goto add_rr_failed;
- }
- break;
-
- case SOA: {
- unsigned int blen,rlen;
- unsigned char *bp;
- uint32_t val;
- unsigned char buf[2*DNSNAMEBUFSIZE+20];
-
- if (!c_cent.qname)
- goto no_name_spec;
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,buf);
- rlen=rhnlen(buf);
- blen=rlen;
- bp=buf+rlen;
- SKIP_COMMA(p,"missing 2nd argument of soa= option");
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,bp);
- rlen=rhnlen(bp);
- blen += rlen;
- bp += rlen;
- SKIP_COMMA(p,"missing 3rd argument of soa= option");
- SCAN_UNSIGNED_NUM(val,p,"3rd argument of soa= option");
- PUTINT32(val,bp);
- SKIP_COMMA(p,"missing 4th argument of soa= option");
- SCAN_TIMESECS(val,p,"4th argument of soa= option");
- PUTINT32(val,bp);
- SKIP_COMMA(p,"missing 5th argument of soa= option");
- SCAN_TIMESECS(val,p,"5th argument of soa= option");
- PUTINT32(val,bp);
- SKIP_COMMA(p,"missing 6th argument of soa= option");
- SCAN_TIMESECS(val,p,"6th argument of soa= option");
- PUTINT32(val,bp);
- SKIP_COMMA(p,"missing 7th argument of soa= option");
- SCAN_TIMESECS(val,p,"7th argument of soa= option");
- PUTINT32(val,bp);
- blen += 20;
- if(!add_cent_rr(&c_cent,T_SOA,c_ttl,0,CF_LOCAL,blen,buf DBG0))
- goto add_rr_failed;
- }
- break;
- case SPF:
-#if IS_CACHED_SPF
- tp=T_SPF; tpname="spf";
- goto define_txt_rr;
-#else
- REPORT_ERROR("Missing support for caching SPF records in rr section");
- PARSERROR;
-#endif
- case TXT:
-#if IS_CACHED_TXT
- tp=T_TXT; tpname="txt";
-#else
- REPORT_ERROR("Missing support for caching TXT records in rr section");
- PARSERROR;
-#endif
-#if IS_CACHED_TXT || IS_CACHED_SPF
-#if IS_CACHED_SPF
- define_txt_rr:
-#endif
- {
- unsigned char *rbuf;
- unsigned sz,allocsz;
- int rv;
-
- if (!c_cent.qname)
- goto no_name_spec;
- rbuf=NULL;
- sz=allocsz=0;
-# undef CLEANUP_HANDLER2
-# define CLEANUP_HANDLER2 (free(rbuf))
-
- for(;;) {
- unsigned char *newbuf,*cp;
- unsigned newsz=sz+256;
- int n;
- if(newsz>allocsz) {
- allocsz += 512;
- newbuf=realloc(rbuf,allocsz);
- if(!newbuf) {
- OUTOFMEMERROR;
- }
- rbuf=newbuf;
- }
- cp = rbuf+sz;
- n=scan_string(&p, charp (cp+1), 255, &scanstrerr);
- if(n==-1) {
- REPORT_ERRORF("%s in %s= option", scanstrerr, tpname);
- PARSERROR;
- }
- if(n>255) {
- REPORT_ERRORF("string longer than 255 bytes in %s= option", tpname);
- PARSERROR;
- }
- *cp=n;
- sz += n+1;
- if(sz>0xffff) {
- REPORT_ERRORF("data exceeds maximum size (65535 bytes) in %s= option", tpname);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!=',') break;
- ++p;
- SKIP_BLANKS(p);
- }
- rv=add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,sz,rbuf DBG0);
- CLEANUP_HANDLER2;
-# undef CLEANUP_HANDLER2
-# define CLEANUP_HANDLER2
- if(!rv)
- goto add_rr_failed;
- }
- break;
-#endif
- default: /* we should never get here */
- CLEANUP_GOTO(internal_parse_error);
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') CLEANUP_GOTO(expected_semicolon);
- ++p;
- SKIP_BLANKS(p);
- }
-
- if(*p!='}') CLEANUP_GOTO(expected_closing_brace);
- if (!c_cent.qname)
- goto no_name_spec;
- if(c_cent.qname[0]==1 && c_cent.qname[1]=='*') {
- /* Wild card record. Set the DF_WILD flag for the name with '*.' removed. */
- if(!set_cent_flags(&c_cent.qname[2],DF_WILD)) {
- unsigned char buf[DNSNAMEBUFSIZE];
- rhn2str(c_cent.qname,buf,sizeof(buf));
- REPORT_ERRORF("You must define some records for '%s'"
- " before you can define records for the wildcard name '%s'",
- &buf[2],buf);
- PARSERROR;
- }
- }
-
- add_cache(&c_cent);
- if(reverse) {
- if(!add_reverse_cache(&c_cent)) {
- REPORT_ERROR("Can't convert IP address in a= option"
- " into form suitable for reverse resolving.");
- PARSERROR;
- }
- }
- CLEANUP_HANDLER;
- break;
-
- add_rr_failed:
- OUTOFMEMERROR;
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER
- }
-
- case SOURCE: {
- unsigned char c_owner[DNSNAMEBUFSIZE];
- time_t c_ttl;
- unsigned c_flags;
- unsigned char c_aliases;
-
- c_owner[0]='\0';
- c_ttl=86400;
- c_flags=DF_LOCAL;
- c_aliases=0;
-
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,source_options);
- if(!option) {
- REPORT_ERRORF("invalid option for source section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') goto expected_equals;
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- case OWNER:
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,c_owner);
- break;
-
- case TTL:
- SCAN_TIMESECS(c_ttl,p,"ttl option");
- break;
-
- case FILET:
- if (!c_owner[0]) {
- REPORT_ERROR("you must specify owner before file= in source records.");
- PARSERROR;
- }
- SCAN_STRING(p,strbuf,len);
- {
- char *errmsg;
- if (!read_hosts(strbuf, c_owner, c_ttl, c_flags, c_aliases, &errmsg)) {
- if(errmsg) { REPORT_ERROR(errmsg); free(errmsg); }
- else *errstr=NULL;
- PARSERROR;
- }
- }
- break;
-
- case SERVE_ALIASES:
- ASSIGN_ON_OFF(c_aliases,p,C_ON,"Bad qualifier in serve_aliases= option.");
- break;
-
- case AUTHREC: {
- int cnst;
- ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"Bad qualifier in authrec= option.");
- c_flags=(cnst==C_ON)?DF_LOCAL:0;
- }
- break;
-
- default: /* we should never get here */
- goto internal_parse_error;
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') goto expected_semicolon;
- ++p;
- SKIP_BLANKS(p);
- }
- }
- break;
-
- case INCLUDE_F: {
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,include_options);
- if(!option) {
- REPORT_ERRORF("invalid option for include section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') goto expected_equals;
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- case FILET:
- if(includedepth>=MAXINCLUDEDEPTH) {
- REPORT_ERRORF("maximum include depth (%d) exceeded.",MAXINCLUDEDEPTH);
- PARSERROR;
- }
- SCAN_STRING(p,strbuf,len);
- {
- char *errmsg;
- if (!read_config_file(strbuf, NULL, NULL, includedepth+1, &errmsg)) {
- if(errmsg) {
- if(linenr) {
- if(asprintf(errstr, "In file %s included at line %u:\n%s",strbuf,linenr,errmsg)<0)
- *errstr=NULL;
- }
- else {
- if(asprintf(errstr, "In file %s:\n%s",strbuf,errmsg)<0)
- *errstr=NULL;
- }
- free(errmsg);
- }
- else
- *errstr=NULL;
- PARSERROR;
- }
- }
- break;
-
- default: /* we should never get here */
- goto internal_parse_error;
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') goto expected_semicolon;
- ++p;
- SKIP_BLANKS(p);
- }
- }
- break;
-
- case NEG: {
- unsigned char c_name[DNSNAMEBUFSIZE];
- time_t c_ttl;
- unsigned char htp,hdtp;
-
- htp=0;
- hdtp=0;
- c_name[0]='\0';
- c_ttl=86400;
-
- while(isalpha(*p)) {
- SCAN_ALPHANUM(ps,p,len);
- option=lookup_keyword(ps,len,neg_options);
- if(!option) {
- REPORT_ERRORF("invalid option for neg section: %.*s",(int)len,ps);
- PARSERROR;
- }
- SKIP_BLANKS(p);
- if(*p!='=') goto expected_equals;
- ++p;
- SKIP_BLANKS(p);
-
- switch(option) {
- case NAME:
- SCAN_STRING(p,strbuf,len);
- PARSESTR2RHN(ucharp strbuf,len,c_name);
- break;
-
- case TTL:
- SCAN_TIMESECS(c_ttl,p, "ttl option");
- break;
-
- case TYPES:
- if (!c_name[0]) {
- REPORT_ERROR("you must specify a name before the types= option.");
- PARSERROR;
- }
- if (isalpha(*p)) {
- int cnst;
- dns_cent_t c_cent /* ={0} */;
- SCAN_ALPHANUM(ps,p,len);
- cnst=lookup_const(ps,len);
- if(cnst==C_DOMAIN) {
- if (htp) {
- REPORT_ERROR("You may not specify types=domain together with other types!");
- PARSERROR;
- }
- hdtp=1;
- if (!init_cent(&c_cent, c_name, c_ttl, 0, DF_LOCAL|DF_NEGATIVE DBG0))
- goto out_of_memory;
- }
- else if(cnst==0) {
- if (hdtp) {
- REPORT_ERROR("You may not specify types=domain together with other types!");
- PARSERROR;
- }
- htp=1;
- if (!init_cent(&c_cent, c_name, 0, 0, 0 DBG0))
- goto out_of_memory;
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER (free_cent(&c_cent DBG0))
- for(;;) {
- {
- TEMPSTRNCPY(buf,ps,len);
- cnst=rr_tp_byname(buf);
- }
- if(cnst==-1) {
- REPORT_ERRORF("unrecognized rr type '%.*s' used as argument for types= option.",(int)len,ps);
- PARSERROR;
- }
- if(PDNSD_NOT_CACHED_TYPE(cnst)) {
- REPORT_ERRORF("illegal rr type '%.*s' used as argument for types= option.",(int)len,ps);
- PARSERROR;
- }
- if (!getrrset_eff(&c_cent,cnst) && !add_cent_rrset_by_type(&c_cent,cnst,c_ttl,0,CF_LOCAL|CF_NEGATIVE DBG0)) {
- OUTOFMEMERROR;
- }
- SKIP_BLANKS(p);
- if(*p!=',') break;
- ++p;
- SKIP_BLANKS(p);
- if (!isalpha(*p))
- {CLEANUP_GOTO(bad_types_option);}
- SCAN_ALPHANUM(ps,p,len);
- }
- }
- else
- goto bad_types_option;
-
- add_cache(&c_cent);
- CLEANUP_HANDLER;
-# undef CLEANUP_HANDLER
-# define CLEANUP_HANDLER
- }
- else {
- bad_types_option:
- REPORT_ERROR("Bad argument for types= option.");
- PARSERROR;
- }
- break;
-
- default: /* we should never get here */
- goto internal_parse_error;
- } /* end of switch(option) */
-
- SKIP_BLANKS(p);
- if(*p!=';') goto expected_semicolon;
- ++p;
- SKIP_BLANKS(p);
- }
- }
- break;
-
- default: /* we should never get here */
- goto internal_parse_error;
- } /* end of switch(sechdr) */
-
- if(*p!='}') goto expected_closing_brace;
- ++p;
- }
- else {
- REPORT_ERROR("expected section header");
- PARSERROR;
- }
- }
-
- if(!in || feof(in)) {
- if(getnextperr) {
- REPORT_ERROR(getnextperr);
- PARSERROR;
- }
- retval=1; /* success */
- }
- else
- goto input_error;
-
- goto free_linebuf_return;
-
- expected_bropen:
- REPORT_ERROR("expected opening brace after section name");
- PARSERROR;
-
- expected_closing_brace:
- REPORT_ERROR("expected beginning of new option or closing brace");
- PARSERROR;
-
- expected_equals:
- REPORT_ERROR("expected equals sign after option name");
- PARSERROR;
-
- expected_semicolon:
- REPORT_ERROR("too many arguments to option or missing semicolon");
- PARSERROR;
-
- string_err:
- REPORT_ERROR(scanstrerr);
- PARSERROR;
-
- string_too_long:
- REPORT_ERROR("string length exceeds buffer size");
- PARSERROR;
-
- no_name_spec:
- REPORT_ERROR("you must specify a name before a,ptr,cname,mx,ns(owner) and soa records.");
- PARSERROR;
-
- internal_parse_error:
- if(asprintf(errstr,"Internal inconsistency detected while parsing line %u of %s.\n"
- "Please consider reporting this error to one of the maintainers.\n",linenr,conftype)<0)
- *errstr=NULL;
- PARSERROR;
-
- out_of_memory:
- /* If malloc() just failed, allocating space for an error message is unlikely to succeed. */
- *errstr=NULL;
- PARSERROR;
-
- unexpected_eof:
- if(!in || feof(in)) {
- REPORT_ERROR(getnextperr?getnextperr:in?"unexpected end of file":"unexpected end of input string");
- }
- else
- input_error: {
- if(asprintf(errstr,"Error while reading config file: %s",strerror(errno))<0)
- *errstr=NULL;
- }
-
- free_linebuf_return:
- free(linebuf);
- return retval;
-
-#undef SKIP_BLANKS
-#undef SCAN_STRING
-#undef REPORT_ERROR
-#undef REPORT_ERRORF
-#undef PARSERROR
-#undef OUTOFMEMERROR
-#undef CLEANUP_GOTO
-}
-
-
-/* Convert a string representation of an IP address into a binary format. */
-static const char* parse_ip(const char *ipstr, pdnsd_a *a)
-{
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- if(!cmdlineipv) cmdlineipv=-2;
-#endif
- {
- if(!strcmp(ipstr,"any")) {
-#ifdef ENABLE_IPV4
- if (run_ipv4)
- a->ipv4.s_addr=INADDR_ANY;
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6
- a->ipv6=in6addr_any;
-#endif
- }
- else if(!str2pdnsd_a(ipstr,a)) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- if(run_ipv4 && inet_pton(AF_INET6,ipstr,&a->ipv6)>0) {
- return "You should set run_ipv4=off or use the command-line option -6"
- " before specifying an IPv6 address";
- }
-#endif
- return "bad IP address";
- }
- }
- return NULL;
-}
-
-/* Add an IP address to the list of name servers. */
-static const char *addr_add(atup_array *ata, const char *ipstr)
-{
- atup_t *at;
- pdnsd_a addr;
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- if(!cmdlineipv) cmdlineipv=-2;
-#endif
- {
- if(!str2pdnsd_a(ipstr,&addr)) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- if(run_ipv4 && inet_pton(AF_INET6,ipstr,&addr.ipv6)>0) {
- fprintf(stderr,"IPv6 address \"%s\" in config file ignored while running in IPv4 mode.\n",ipstr);
- return NULL;
- }
-#endif
- return "bad IP address";
- }
- }
-
- if (!(*ata=DA_GROW1(*ata))) {
- return "out of memory!";
- }
- at=&DA_LAST(*ata);
- SET_PDNSD_A2(&at->a, &addr);
- at->is_up=0;
- at->i_ts=0;
- return NULL;
-}
-
-
-/* Helper functions for making netmasks */
-inline static uint32_t mk_netmask4(int len)
-{
- uint32_t m;
-
- if(len<=0)
- return 0;
-
- m= ~(uint32_t)0;
- return (len<32)? htonl(m<<(32-len)): m;
-}
-
-#if ALLOW_LOCAL_AAAA
-inline static void mk_netmask6(struct in6_addr *m, int len)
-{
- uint32_t *ma = (uint32_t *)m;
- ma[0] = mk_netmask4(len);
- ma[1] = mk_netmask4(len -= 32);
- ma[2] = mk_netmask4(len -= 32);
- ma[3] = mk_netmask4(len -= 32);
-}
-#endif
-
-/* Add an IP address/mask to the reject lists. */
-static const char *reject_add(servparm_t *serv, const char *ipstr)
-{
- char *slash=strchr(ipstr,'/'); int mlen=0;
-
- if(slash) {
- *slash++=0;
-
- if(*slash && isdigit(*slash)) {
- char *endptr;
- int l = strtol(slash,&endptr,10);
- if(!*endptr) {
- mlen=l;
- slash=NULL;
- }
- }
- }
- else
- mlen=128; /* Works for both IPv4 and IPv6 */
-
- {
- addr4maskpair_t am;
-
- am.mask.s_addr = mk_netmask4(mlen);
- if(inet_aton(ipstr,&am.a) && (!slash || inet_aton(slash,&am.mask))) {
- if(!(serv->reject_a4=DA_GROW1(serv->reject_a4)))
- return "out of memory!";
-
- DA_LAST(serv->reject_a4) = am;
- return NULL;
- }
- }
-#if ALLOW_LOCAL_AAAA
- {
- addr6maskpair_t am;
-
- mk_netmask6(&am.mask,mlen);
- if(inet_pton(AF_INET6,ipstr,&am.a)>0 && (!slash || inet_pton(AF_INET6,slash,&am.mask)>0)) {
- if(!(serv->reject_a6=DA_GROW1(serv->reject_a6)))
- return "out of memory!";
-
- DA_LAST(serv->reject_a6) = am;
- return NULL;
- }
- }
-#endif
-
- return "bad IP address";
-}
-
-/* Try to avoid the possibility that pdnsd will query itself. */
-static void check_localaddrs(servparm_t *serv)
-{
- if(serv->port == global.port) {
- atup_array ata=serv->atup_a;
- int i,j=0,n=DA_NEL(ata);
- for(i=0;i<n;++i) {
- atup_t *at=&DA_INDEX(ata,i);
- if(is_inaddr_any(&global.a)) {
- if(is_local_addr(PDNSD_A2_TO_A(&at->a))) {
- char buf[ADDRSTR_MAXLEN];
- fprintf(stderr,"Local name-server address \"%s\" ignored in config file.\n",
- pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));
- continue;
- }
- }
- else {
- if(equiv_inaddr2(&global.a,&at->a)) {
- char buf[ADDRSTR_MAXLEN];
- fprintf(stderr,"Ignoring name-server address \"%s\" in config file (identical to server_ip address).\n",
- pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));
- continue;
- }
- }
- if(j<i)
- DA_INDEX(ata,j)=*at;
- ++j;
- }
- if(j<n)
- serv->atup_a=DA_RESIZE(ata,j);
- }
-}
-
-/* Read the name server addresses from a resolv.conf-style file. */
-static int read_resolv_conf(const char *fn, atup_array *ata, char **errstr)
-{
- int rv=0;
- FILE *f;
- char *buf;
- size_t buflen=256;
- unsigned linenr=0;
-
- if (!(f=fopen(fn,"r"))) {
- if(asprintf(errstr, "Failed to open %s: %s", fn, strerror(errno))<0)
- *errstr=NULL;
- return 0;
- }
- buf=malloc(buflen);
- if(!buf) {
- *errstr=NULL;
- goto fclose_return;
- }
- while(getline(&buf,&buflen,f)>=0) {
- size_t len;
- char *p,*ps;
- ++linenr;
- p=buf;
- for(;; ++p) {
- if(!*p) goto nextline;
- if(!isspace(*p)) break;
- }
- ps=p;
- do {
- if(!*++p) goto nextline;
- } while(!isspace(*p));
- len=p-ps;
- if(len==strlitlen("nameserver") && !strncmp(ps,"nameserver",len)) {
- const char *errmsg;
- do {
- if(!*++p) goto nextline;
- } while (isspace(*p));
- ps=p;
- do {
- ++p;
- } while(*p && !isspace(*p));
- len=p-ps;
- {
- TEMPSTRNCPY(ipstr,ps,len);
- errmsg=addr_add(ata, ipstr);
- }
- if(errmsg) {
- if(asprintf(errstr, "%s in line %u of file %s", errmsg,linenr,fn)<0)
- *errstr=NULL;
- goto cleanup_return;
- }
- }
- nextline:;
- }
- if (feof(f))
- rv=1;
- else if(asprintf(errstr, "Failed to read %s: %s", fn, strerror(errno))<0)
- *errstr=NULL;
- cleanup_return:
- free(buf);
- fclose_return:
- fclose(f);
- return rv;
-}
-
-static const char *slist_add(slist_array *sla, const char *nm, unsigned int len, int tp)
-{
- slist_t *sl;
- int exact=1;
- const char *err;
- size_t sz;
- unsigned char rhn[DNSNAMEBUFSIZE];
-
- if (len>1 && *nm=='.') {
- exact=0;
- ++nm;
- --len;
- }
- if((err=parsestr2rhn(ucharp nm,len,rhn)))
- return err;
- sz=rhnlen(rhn);
- if (!(*sla=DA_GROW1_F(*sla,free_slist_domain))) {
- return "out of memory!";
- }
- sl=&DA_LAST(*sla);
-
- sl->exact=exact;
- sl->rule=tp;
- if (!(sl->domain=malloc(sz)))
- return "out of memory!";
- memcpy(sl->domain,rhn,sz);
- return NULL;
-}
-
-static const char *zone_add(zone_array *za, const char *zone, unsigned int len)
-{
- zone_t z;
- const char *err;
- size_t sz;
- unsigned char rhn[DNSNAMEBUFSIZE];
-
- if((err=parsestr2rhn(ucharp zone,len,rhn)))
- return err;
- sz=rhnlen(rhn);
- if(!(*za=DA_GROW1_F(*za,free_zone)) || !(DA_LAST(*za)=z=malloc(sz)))
- return "out of memory!";
- memcpy(z,rhn,sz);
- return NULL;
-}
-
diff --git a/jni/pdnsd/src/conf-parser.h b/jni/pdnsd/src/conf-parser.h
deleted file mode 100644
index d3a3e99..0000000
--- a/jni/pdnsd/src/conf-parser.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* conf-parser.h - definitions for parser of pdnsd config files.
- The parser was rewritten in C from scratch and doesn't require (f)lex
- or yacc/bison.
-
- Copyright (C) 2004,2008 Paul A. Rombouts.
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONF_PARSER_H
-#define CONF_PARSER_H
-
-int confparse(FILE* in, char *prestr, globparm_t *global, servparm_array *servers, int includedepth, char **errstr);
-
-#endif /* CONF_PARSER_H */
diff --git a/jni/pdnsd/src/conff.c b/jni/pdnsd/src/conff.c
deleted file mode 100644
index db6c5d1..0000000
--- a/jni/pdnsd/src/conff.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* conff.c - Maintain configuration information
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <pwd.h>
-#include "ipvers.h"
-#include "conff.h"
-#include "consts.h"
-#include "helpers.h"
-#include "conf-parser.h"
-#include "servers.h"
-#include "icmp.h"
-
-
-globparm_t global={
- perm_cache: 2048,
- cache_dir: NULL,
- pidfile: NULL,
- port: 53,
- a: PDNSD_A_INITIALIZER,
- out_a: PDNSD_A_INITIALIZER,
-#ifdef ENABLE_IPV6
- ipv4_6_prefix: IN6ADDR_ANY_INIT,
-#endif
- max_ttl: 604800,
- min_ttl: 120,
- neg_ttl: 900,
- neg_rrs_pol: C_DEFAULT,
- neg_domain_pol: C_AUTH,
- verbosity: VERBOSITY,
- run_as: "",
- daemon: 0,
- debug: 0,
- stat_pipe: 0,
- notcp: 0,
- strict_suid: 1,
- use_nss: 1,
- paranoid: 0,
- lndown_kluge: 0,
- onquery: 0,
- rnd_recs: 1,
- ctl_perms: 0600,
- scheme_file: NULL,
- proc_limit: 40,
- procq_limit: 60,
- tcp_qtimeout: TCP_TIMEOUT,
- timeout: 0,
- par_queries: PAR_QUERIES,
- query_method: M_PRESET,
- query_port_start: 1024,
- query_port_end: 65535,
- udpbufsize: 1024,
- deleg_only_zones: NULL
-};
-
-servparm_t serv_presets={
- port: 53,
- uptest: C_NONE,
- timeout: 120,
- interval: 900,
- ping_timeout: 600,
- scheme: "",
- uptest_cmd: NULL,
- uptest_usr: "",
- interface: "",
- device: "",
- query_test_name: NULL,
- label: NULL,
- purge_cache: 0,
- nocache: 0,
- lean_query: 1,
- edns_query: 0,
- is_proxy: 0,
- rootserver: 0,
- rand_servers: 0,
- preset: 1,
- rejectrecursively: 0,
- rejectpolicy: C_FAIL,
- policy: C_INCLUDED,
- alist: NULL,
- atup_a: NULL,
- reject_a4: NULL,
-#if ALLOW_LOCAL_AAAA
- reject_a6: NULL,
-#endif
- ping_a: PDNSD_A_INITIALIZER
-};
-
-servparm_array servers=NULL;
-
-static void free_zones(zone_array za);
-static void free_server_data(servparm_array sa);
-static int report_server_stat(int f,int i);
-
-
-/*
- * Read a configuration file, saving the results in a (separate) global section and servers array,
- * and the cache.
- *
- * char *nm should contain the name of the file to read. If it is NULL, the name of the config file
- * read during startup is used.
- *
- * globparm_t *global should point to a struct which will be used to store the data of the
- * global section(s). If it is NULL, no global sections are allowed in the
- * file.
- *
- * servparm_array *servers should point to a dynamic array which will be grown to store the data
- * of the server sections. If it is NULL, no server sections are allowed
- * in the file.
- *
- * char **errstr is used to return a possible error message.
- * In case of failure, *errstr will refer to a newly allocated string.
- *
- * read_config_file returns 1 on success, 0 on failure.
- */
-int read_config_file(const char *nm, globparm_t *global, servparm_array *servers, int includedepth, char **errstr)
-{
- int retval=0;
- const char *conftype= (global?"config":"include");
- FILE *in;
-
- if (nm==NULL)
- nm=conf_file;
-
- if (!(in=fopen(nm,"r"))) {
- if(asprintf(errstr,"Error: Could not open %s file %s: %s",conftype,nm,strerror(errno))<0)
- *errstr=NULL;
- return 0;
- }
-
- retval=confparse(in,NULL,global,servers,includedepth,errstr);
-close_file:
- if(fclose(in) && retval) {
- if(asprintf(errstr,"Error: Could not close %s file %s: %s",
- conftype,nm,strerror(errno))<0)
- *errstr=NULL;
- return 0;
- }
- if(retval && servers && !DA_NEL(*servers)) {
- if(asprintf(errstr,"Error: no server sections defined in config file %s",nm)<0)
- *errstr=NULL;
- return 0;
- }
- return retval;
-}
-
-/*
- * Re-Read the configuration file.
- * Return 1 on success, 0 on failure.
- * In case of failure, the old configuration will be unchanged (although the cache may not) and
- * **errstr will refer to a newly allocated string containing an error message.
- */
-int reload_config_file(const char *nm, char **errstr)
-{
- globparm_t global_new;
- servparm_array servers_new;
-
- global_new=global;
- global_new.cache_dir=NULL;
- global_new.pidfile=NULL;
- global_new.scheme_file=NULL;
- global_new.deleg_only_zones=NULL;
- global_new.onquery=0;
- servers_new=NULL;
- if(read_config_file(nm,&global_new,&servers_new,0,errstr)) {
- if(global_new.cache_dir && strcmp(global_new.cache_dir,global.cache_dir)) {
- *errstr=strdup("Cannot reload config file: the specified cache_dir directory has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.pidfile && (!global.pidfile || strcmp(global_new.pidfile,global.pidfile))) {
- *errstr=strdup("Cannot reload config file: the specified pid_file has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.scheme_file && strcmp(global_new.scheme_file,global.scheme_file)) {
- *errstr=strdup("Cannot reload config file: the specified scheme_file has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.port!=global.port) {
- *errstr=strdup("Cannot reload config file: the specified server_port has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(!ADDR_EQUIV(&global_new.a,&global.a)) {
- *errstr=strdup("Cannot reload config file: the specified interface address (server_ip) has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
-#ifdef ENABLE_IPV6
- if(!IN6_ARE_ADDR_EQUAL(&global_new.ipv4_6_prefix,&global.ipv4_6_prefix)) {
- *errstr=strdup("Cannot reload config file: the specified ipv4_6_prefix has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
-#endif
- if(strcmp(global_new.run_as,global.run_as)) {
- *errstr=strdup("Cannot reload config file: the specified run_as id has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.daemon!=global.daemon) {
- *errstr=strdup("Cannot reload config file: the daemon option has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.debug!=global.debug) {
- *errstr=strdup("Cannot reload config file: the debug option has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.stat_pipe!=global.stat_pipe) {
- *errstr=strdup("Cannot reload config file: the status_ctl option has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.notcp!=global.notcp) {
- *errstr=strdup("Cannot reload config file: the tcp_server option has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.strict_suid!=global.strict_suid) {
- *errstr=strdup("Cannot reload config file: the strict_setuid option has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(global_new.ctl_perms!=global.ctl_perms) {
- *errstr=strdup("Cannot reload config file: the specified ctl_perms has changed.\n"
- "Try restarting pdnsd instead.");
- goto cleanup_return;
- }
- if(ping_isocket==-1
-#ifdef ENABLE_IPV6
- && ping6_isocket==-1
-#endif
- ) {
- int i,n=DA_NEL(servers_new);
- for (i=0;i<n;++i) {
- if (DA_INDEX(servers_new,i).uptest==C_PING) {
- if(asprintf(errstr,"Cannot reload config file: the ping socket is not initialized"
- " and the new config contains uptest=ping in server section %i.\n"
- "Try restarting pdnsd instead.",i)<0)
- *errstr=NULL;
- goto cleanup_return;
- }
- }
- }
-
- /* we need exclusive access to the server data to make the changes */
- /* Wait at most 60 seconds to obtain a lock. */
- if(!exclusive_lock_server_data(60)) {
- *errstr=strdup("Cannot reload config file: Timed out while waiting for access to config data.");
- goto cleanup_return;
- }
- free(global_new.cache_dir); global_new.cache_dir=global.cache_dir;
- free(global_new.pidfile); global_new.pidfile=global.pidfile;
- free(global_new.scheme_file); global_new.scheme_file=global.scheme_file;
- free_zones(global.deleg_only_zones);
- global=global_new;
-
- free_server_data(servers);
- servers=servers_new;
- /* schedule a retest to check which servers are up,
- and free the lock. */
- exclusive_unlock_server_data(1);
-
- return 1;
- }
-
- cleanup_return:
- free(global_new.cache_dir);
- free(global_new.pidfile);
- free(global_new.scheme_file);
- free_zones(global_new.deleg_only_zones);
- free_server_data(servers_new);
- return 0;
-}
-
-void free_zone(void *ptr)
-{
- free(*((unsigned char **)ptr));
-}
-
-static void free_zones(zone_array za)
-{
- int i,n=DA_NEL(za);
- for(i=0;i<n;++i)
- free(DA_INDEX(za,i));
-
- da_free(za);
-}
-
-void free_slist_domain(void *ptr)
-{
- free(((slist_t *)ptr)->domain);
-}
-
-void free_slist_array(slist_array sla)
-{
- int j,m=DA_NEL(sla);
- for(j=0;j<m;++j)
- free(DA_INDEX(sla,j).domain);
- da_free(sla);
-
-}
-
-void free_servparm(servparm_t *serv)
-{
- free(serv->uptest_cmd);
- free(serv->query_test_name);
- free(serv->label);
- da_free(serv->atup_a);
- free_slist_array(serv->alist);
- da_free(serv->reject_a4);
-#if ALLOW_LOCAL_AAAA
- da_free(serv->reject_a6);
-#endif
-}
-
-static void free_server_data(servparm_array sa)
-{
- int i,n=DA_NEL(sa);
- for(i=0;i<n;++i)
- free_servparm(&DA_INDEX(sa,i));
- da_free(sa);
-}
-
-/* Report the current configuration to the file descriptor f (for the status fifo, see status.c) */
-int report_conf_stat(int f)
-{
- int i,n,retval=0;
-
- fsprintf_or_return(f,"\nConfiguration:\n==============\nGlobal:\n-------\n");
- fsprintf_or_return(f,"\tCache size: %li kB\n",global.perm_cache);
- fsprintf_or_return(f,"\tServer directory: %s\n",global.cache_dir);
- fsprintf_or_return(f,"\tScheme file (for Linux pcmcia support): %s\n",global.scheme_file);
- fsprintf_or_return(f,"\tServer port: %i\n",global.port);
- {
- char buf[ADDRSTR_MAXLEN];
- fsprintf_or_return(f,"\tServer IP (%s=any available one): %s\n", SEL_IPVER("0.0.0.0","::"),
- pdnsd_a2str(&global.a,buf,ADDRSTR_MAXLEN));
- if(!is_inaddr_any(&global.out_a)) {
- fsprintf_or_return(f,"\tIP bound to interface used for querying remote servers: %s\n",
- pdnsd_a2str(&global.out_a,buf,ADDRSTR_MAXLEN));
- }
- }
-#ifdef ENABLE_IPV6
- if(!run_ipv4) {
- char buf[ADDRSTR_MAXLEN];
- fsprintf_or_return(f,"\tIPv4 to IPv6 prefix: %s\n",inet_ntop(AF_INET6,&global.ipv4_6_prefix,buf,ADDRSTR_MAXLEN)?:"?.?.?.?");
- }
-#endif
- fsprintf_or_return(f,"\tIgnore cache when link is down: %s\n",global.lndown_kluge?"on":"off");
- fsprintf_or_return(f,"\tMaximum ttl: %li\n",(long)global.max_ttl);
- fsprintf_or_return(f,"\tMinimum ttl: %li\n",(long)global.min_ttl);
- fsprintf_or_return(f,"\tNegative ttl: %li\n",(long)global.neg_ttl);
- fsprintf_or_return(f,"\tNegative RRS policy: %s\n",const_name(global.neg_rrs_pol));
- fsprintf_or_return(f,"\tNegative domain policy: %s\n",const_name(global.neg_domain_pol));
- fsprintf_or_return(f,"\tRun as: %s\n",global.run_as);
- fsprintf_or_return(f,"\tStrict run as: %s\n",global.strict_suid?"on":"off");
- fsprintf_or_return(f,"\tUse NSS: %s\n",global.use_nss?"on":"off");
- fsprintf_or_return(f,"\tParanoid mode (cache pollution prevention): %s\n",global.paranoid?"on":"off");
- fsprintf_or_return(f,"\tControl socket permissions (mode): %o\n",global.ctl_perms);
- fsprintf_or_return(f,"\tMaximum parallel queries served: %i\n",global.proc_limit);
- fsprintf_or_return(f,"\tMaximum queries queued for serving: %i\n",global.procq_limit);
- fsprintf_or_return(f,"\tGlobal timeout setting: %li\n",(long)global.timeout);
- fsprintf_or_return(f,"\tParallel queries increment: %i\n",global.par_queries);
- fsprintf_or_return(f,"\tRandomize records in answer: %s\n",global.rnd_recs?"on":"off");
- fsprintf_or_return(f,"\tQuery method: %s\n",const_name(global.query_method));
- {
- int query_port_start=global.query_port_start;
- if(query_port_start==-1) {
- fsprintf_or_return(f,"\tQuery port start: (let kernel choose)\n");
- }
- else {
- fsprintf_or_return(f,"\tQuery port start: %i\n",query_port_start);
- fsprintf_or_return(f,"\tQuery port end: %i\n",global.query_port_end);
- }
- }
-#ifndef NO_TCP_SERVER
- fsprintf_or_return(f,"\tTCP server thread: %s\n",global.notcp?"off":"on");
- if(!global.notcp)
- {fsprintf_or_return(f,"\tTCP query timeout: %li\n",(long)global.tcp_qtimeout);}
-#endif
- fsprintf_or_return(f,"\tMaximum udp buffer size: %i\n",global.udpbufsize);
-
- lock_server_data();
- {
- int rv=fsprintf(f,"\tDelegation-only zones: ");
- if(rv<0) {retval=rv; goto unlock_return;}
- }
- if(global.deleg_only_zones==NULL) {
- int rv=fsprintf(f,"(none)\n");
- if(rv<0) {retval=rv; goto unlock_return;}
- }
- else {
- int rv;
- n=DA_NEL(global.deleg_only_zones);
- for(i=0;i<n;++i) {
- unsigned char buf[DNSNAMEBUFSIZE];
- rv=fsprintf(f,i==0?"%s":", %s",
- rhn2str(DA_INDEX(global.deleg_only_zones,i),buf,sizeof(buf)));
- if(rv<0) {retval=rv; goto unlock_return;}
- }
- rv=fsprintf(f,"\n");
- if(rv<0) {retval=rv; goto unlock_return;}
- }
-
- n=DA_NEL(servers);
- for(i=0;i<n;++i) {
- int rv=report_server_stat(f,i);
- if(rv<0) {retval=rv; goto unlock_return;}
- }
- unlock_return:
- unlock_server_data();
-
- return retval;
-}
-
-
-#if ALLOW_LOCAL_AAAA
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL || (s)->reject_a6!=NULL)
-#else
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL)
-#endif
-
-
-/* Report the current status of server i to the file descriptor f.
- Call with locks applied.
-*/
-static int report_server_stat(int f,int i)
-{
- servparm_t *st=&DA_INDEX(servers,i);
- int j,m;
-
- fsprintf_or_return(f,"Server %i:\n------\n",i);
- fsprintf_or_return(f,"\tlabel: %s\n",st->label?st->label:"(none)");
- m=DA_NEL(st->atup_a);
- if(st->rootserver>1 && m)
- fsprintf_or_return(f,"\tThe following name servers will be used for discovery of rootservers only:\n");
- for(j=0;j<m;j++) {
- atup_t *at=&DA_INDEX(st->atup_a,j);
- {char buf[ADDRSTR_MAXLEN];
- fsprintf_or_return(f,"\tip: %s\n",pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));}
- fsprintf_or_return(f,"\tserver assumed available: %s\n",at->is_up?"yes":"no");
- }
- fsprintf_or_return(f,"\tport: %hu\n",st->port);
- fsprintf_or_return(f,"\tuptest: %s\n",const_name(st->uptest));
- fsprintf_or_return(f,"\ttimeout: %li\n",(long)st->timeout);
- if(st->interval>0) {
- fsprintf_or_return(f,"\tuptest interval: %li\n",(long)st->interval);
- } else {
- fsprintf_or_return(f,"\tuptest interval: %s\n",
- st->interval==-1?"onquery":
- st->interval==-2?"ontimeout":
- "(never retest)");
- }
- fsprintf_or_return(f,"\tping timeout: %li\n",(long)st->ping_timeout);
- {char buf[ADDRSTR_MAXLEN];
- fsprintf_or_return(f,"\tping ip: %s\n",is_inaddr_any(&st->ping_a)?"(using server ip)":pdnsd_a2str(&st->ping_a,buf,ADDRSTR_MAXLEN));}
- if(st->interface[0]) {
- fsprintf_or_return(f,"\tinterface: %s\n",st->interface);
- }
- if(st->device[0]) {
- fsprintf_or_return(f,"\tdevice (for special Linux ppp device support): %s\n",st->device);
- }
- if(st->uptest_cmd) {
- fsprintf_or_return(f,"\tuptest command: %s\n",st->uptest_cmd);
- fsprintf_or_return(f,"\tuptest user: %s\n",st->uptest_usr[0]?st->uptest_usr:"(process owner)");
- }
- if(st->query_test_name) {
- unsigned char nmbuf[DNSNAMEBUFSIZE];
- fsprintf_or_return(f,"\tname used in query uptest: %s\n",
- rhn2str(st->query_test_name,nmbuf,sizeof(nmbuf)));
- }
- if (st->scheme[0]) {
- fsprintf_or_return(f,"\tscheme: %s\n", st->scheme);
- }
- fsprintf_or_return(f,"\tforce cache purging: %s\n",st->purge_cache?"on":"off");
- fsprintf_or_return(f,"\tserver is cached: %s\n",st->nocache?"off":"on");
- fsprintf_or_return(f,"\tlean query: %s\n",st->lean_query?"on":"off");
- fsprintf_or_return(f,"\tUse EDNS in outgoing queries: %s\n",st->edns_query?"on":"off");
- fsprintf_or_return(f,"\tUse only proxy?: %s\n",st->is_proxy?"on":"off");
- fsprintf_or_return(f,"\tAssumed root server: %s\n",st->rootserver?(st->rootserver==1?"yes":"discover"):"no");
- fsprintf_or_return(f,"\tRandomize server query order: %s\n",st->rand_servers?"yes":"no");
- fsprintf_or_return(f,"\tDefault policy: %s\n",const_name(st->policy));
- fsprintf_or_return(f,"\tPolicies:%s\n", st->alist?"":" (none)");
- for (j=0;j<DA_NEL(st->alist);++j) {
- slist_t *sl=&DA_INDEX(st->alist,j);
- unsigned char buf[DNSNAMEBUFSIZE];
- fsprintf_or_return(f,"\t\t%s: %s%s\n",
- sl->rule==C_INCLUDED?"include":"exclude",
- sl->exact?"":".",
- rhn2str(sl->domain,buf,sizeof(buf)));
- }
- if(serv_has_rejectlist(st)) {
- fsprintf_or_return(f,"\tAddresses which should be rejected in replies:\n");
- m=DA_NEL(st->reject_a4);
- for (j=0;j<m;++j) {
- addr4maskpair_t *am=&DA_INDEX(st->reject_a4,j);
- char abuf[ADDRSTR_MAXLEN],mbuf[ADDRSTR_MAXLEN];
- fsprintf_or_return(f,"\t\t%s/%s\n",inet_ntop(AF_INET,&am->a,abuf,sizeof(abuf)),
- inet_ntop(AF_INET,&am->mask,mbuf,sizeof(mbuf)));
- }
-#if ALLOW_LOCAL_AAAA
- m=DA_NEL(st->reject_a6);
- for (j=0;j<m;++j) {
- addr6maskpair_t *am=&DA_INDEX(st->reject_a6,j);
- char abuf[INET6_ADDRSTRLEN],mbuf[INET6_ADDRSTRLEN];
- fsprintf_or_return(f,"\t\t%s/%s\n",inet_ntop(AF_INET6,&am->a,abuf,sizeof(abuf)),
- inet_ntop(AF_INET6,&am->mask,mbuf,sizeof(mbuf)));
- }
-#endif
- fsprintf_or_return(f,"\tReject policy: %s\n",const_name(st->rejectpolicy));
- fsprintf_or_return(f,"\tReject recursively: %s\n",st->rejectrecursively?"yes":"no");
- }
- return 0;
-}
diff --git a/jni/pdnsd/src/conff.h b/jni/pdnsd/src/conff.h
deleted file mode 100644
index a07b156..0000000
--- a/jni/pdnsd/src/conff.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/* conff.h - Definitions for configuration management.
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef CONFF_H
-#define CONFF_H
-
-/* XXX should use the system defined ones. */
-/* #define MAXPATH 1024 */
-/* #define MAXIFNAME 31 */
-
-#include <config.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include "ipvers.h"
-#include "list.h"
-
-/* From main.c */
-#if DEBUG>0
-extern short int debug_p;
-#else
-#define debug_p 0
-#endif
-extern short int stat_pipe;
-extern pthread_t main_thrid;
-extern uid_t init_uid;
-extern char *conf_file;
-
-/* ----------- */
-
-typedef DYNAMIC_ARRAY(pdnsd_a) *addr_array;
-typedef DYNAMIC_ARRAY(pdnsd_a2) *addr2_array;
-
-typedef struct {
- time_t i_ts;
- char is_up;
- pdnsd_a2 a;
-} atup_t;
-typedef DYNAMIC_ARRAY(atup_t) *atup_array;
-
-typedef struct {
- unsigned char *domain;
- short exact;
- short rule;
-} slist_t;
-typedef DYNAMIC_ARRAY(slist_t) *slist_array;
-
-typedef struct {
- struct in_addr a,mask;
-} addr4maskpair_t;
-
-typedef DYNAMIC_ARRAY(addr4maskpair_t) *a4_array;
-
-#if ALLOW_LOCAL_AAAA
-typedef struct {
- struct in6_addr a,mask;
-} addr6maskpair_t;
-
-typedef DYNAMIC_ARRAY(addr6maskpair_t) *a6_array;
-#endif
-
-typedef struct {
- unsigned short port;
- short uptest;
- time_t timeout;
- time_t interval;
- time_t ping_timeout;
- char scheme[32];
- char *uptest_cmd;
- char uptest_usr[21];
- char interface[IFNAMSIZ];
- char device[IFNAMSIZ];
- unsigned char *query_test_name;
- char *label;
- char purge_cache;
- char nocache;
- char lean_query;
- char edns_query;
- char is_proxy;
- char rootserver;
- char rand_servers;
- char preset;
- char rejectrecursively;
- short rejectpolicy;
- short policy;
- slist_array alist;
- atup_array atup_a;
- a4_array reject_a4;
-#if ALLOW_LOCAL_AAAA
- a6_array reject_a6;
-#endif
- pdnsd_a ping_a;
-} servparm_t;
-typedef DYNAMIC_ARRAY(servparm_t) *servparm_array;
-
-typedef unsigned char *zone_t;
-typedef DYNAMIC_ARRAY(zone_t) *zone_array;
-
-typedef struct {
- long perm_cache;
- char *cache_dir;
- char *pidfile;
- int port;
- pdnsd_a a;
- pdnsd_a out_a;
-#ifdef ENABLE_IPV6
- struct in6_addr ipv4_6_prefix;
-#endif
- time_t max_ttl;
- time_t min_ttl;
- time_t neg_ttl;
- short neg_rrs_pol;
- short neg_domain_pol;
- short verbosity;
- char run_as[21];
- char daemon;
- char debug;
- char stat_pipe;
- char notcp;
- char strict_suid;
- char use_nss;
- char paranoid;
- char lndown_kluge;
- char onquery;
- char rnd_recs;
- int ctl_perms;
- char *scheme_file;
- int proc_limit;
- int procq_limit;
- time_t tcp_qtimeout;
- time_t timeout;
- int par_queries;
- int query_method;
- int query_port_start;
- int query_port_end;
- int udpbufsize;
- zone_array deleg_only_zones;
-} globparm_t;
-
-typedef struct {
- char
-#ifdef ENABLE_IPV6
- prefix,
-#endif
- pidfile,
- verbosity,
- pdnsduser,
- daemon,
- debug,
- stat_pipe,
- notcp,
- query_method;
-} cmdlineflags_t;
-
-extern globparm_t global;
-extern cmdlineflags_t cmdline;
-extern servparm_t serv_presets;
-
-extern servparm_array servers;
-
-int read_config_file(const char *nm, globparm_t *global, servparm_array *servers, int includedepth, char **errstr);
-int reload_config_file(const char *nm, char **errstr);
-void free_zone(void *ptr);
-void free_slist_domain(void *ptr);
-void free_slist_array(slist_array sla);
-void free_servparm(servparm_t *serv);
-
-int report_conf_stat(int f);
-#endif
diff --git a/jni/pdnsd/src/consts.c b/jni/pdnsd/src/consts.c
deleted file mode 100644
index c875a09..0000000
--- a/jni/pdnsd/src/consts.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* consts.c - Common config constants & handling
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2005, 2006, 2007, 2009 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "consts.h"
-#include "rr_types.h"
-
-
-/* Order alphabetically!! */
-static const namevalue_t const_dic[]={
- {"auth", C_AUTH},
- {"default", C_DEFAULT},
- {"dev", C_DEV},
- {"diald", C_DIALD},
- {"discover", C_DISCOVER},
- {"domain", C_DOMAIN},
- {"excluded", C_EXCLUDED},
- {"exec", C_EXEC},
- {"fail", C_FAIL},
- {"false", C_OFF},
- {"fqdn_only", C_FQDN_ONLY},
- {"if", C_IF},
- {"included", C_INCLUDED},
- {"negate", C_NEGATE},
- {"no", C_OFF},
- {"none", C_NONE},
- {"off", C_OFF},
- {"on", C_ON},
- {"onquery", C_ONQUERY},
- {"ontimeout", C_ONTIMEOUT},
- {"ping", C_PING},
- {"query", C_QUERY},
- {"simple_only", C_SIMPLE_ONLY},
- {"tcp_only", TCP_ONLY},
- {"tcp_udp", TCP_UDP},
- {"true", C_ON},
- {"udp_only", UDP_ONLY},
- {"udp_tcp", UDP_TCP},
- {"yes", C_ON}
-};
-
-/* Added by Paul Rombouts */
-static const char *const const_names[]={
- "error",
- "on",
- "off",
- "default",
- "discover",
- "none",
- "if",
- "exec",
- "ping",
- "query",
- "onquery",
- "ontimeout",
- "udp_only",
- "tcp_only",
- "tcp_udp",
- "udp_tcp",
- "dev",
- "diald",
- "included",
- "excluded",
- "simple_only",
- "fqdn_only",
- "auth",
- "domain",
- "fail",
- "negate"
-};
-
-/* compare two strings.
- The first one is given as pointer to a char array of length len (which
- should not contain any null chars),
- the second one as a pointer to a null terminated char array.
-*/
-inline static int keyncmp(const char *key1, int len, const char *key2)
-{
- int cmp=strncmp(key1,key2,len);
- if(cmp) return cmp;
- return -(int)((unsigned char)(key2[len]));
-}
-
-int binsearch_keyword(const char *name, int len, const namevalue_t dic[], int range)
-{
- int i=0,j=range;
-
- while(i<j) {
- int k=(i+j)/2;
- int cmp=keyncmp(name,len,dic[k].name);
- if(cmp<0)
- j=k;
- else if(cmp>0)
- i=k+1;
- else
- return dic[k].val;
- }
-
- return 0;
-}
-
-
-int lookup_const(const char *name, int len)
-{
- return binsearch_keyword(name,len,const_dic,sizeof(const_dic)/sizeof(namevalue_t));
-}
-
-/* Added by Paul Rombouts */
-const char *const_name(int c)
-{
- return (c>=0 && c<sizeof(const_names)/sizeof(char *))? const_names[c] : "ILLEGAL!";
-}
diff --git a/jni/pdnsd/src/consts.h b/jni/pdnsd/src/consts.h
deleted file mode 100644
index c812b15..0000000
--- a/jni/pdnsd/src/consts.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* consts.h - Common config constants & handling
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2005, 2006, 2007, 2009 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef CONSTS_H
-#define CONSTS_H
-
-#include <config.h>
-
-#define C_RRTOFFS 64
-
-enum {
- C_ERR,
- C_ON,
- C_OFF,
- C_DEFAULT,
- C_DISCOVER,
- C_NONE,
- C_IF,
- C_EXEC,
- C_PING,
- C_QUERY,
- C_ONQUERY,
- C_ONTIMEOUT,
- UDP_ONLY,
- TCP_ONLY,
- TCP_UDP,
- UDP_TCP,
- C_DEV,
- C_DIALD,
- C_INCLUDED,
- C_EXCLUDED,
- C_SIMPLE_ONLY,
- C_FQDN_ONLY,
- C_AUTH,
- C_DOMAIN,
- C_FAIL,
- C_NEGATE
-};
-
-typedef struct {
- const char *name;
- int val;
-} namevalue_t;
-
-int binsearch_keyword(const char *name, int len, const namevalue_t dic[], int range);
-int lookup_const(const char *name, int len);
-const char *const_name(int c); /* Added by Paul Rombouts */
-
-#endif
diff --git a/jni/pdnsd/src/debug.c b/jni/pdnsd/src/debug.c
deleted file mode 100644
index dd7f244..0000000
--- a/jni/pdnsd/src/debug.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* debug.c - Various debugging facilities
- * Copyright (C) 2001 Thomas Moestl
- *
- * This file is part of the pdnsd package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "helpers.h"
-#include "error.h"
-
-
-/*
- * This is indeed very primitive (it does not track allocation failures
- * and so on). It should be expanded some time.
- */
-#ifdef ALLOC_DEBUG
-void *DBGcalloc(size_t n, size_t sz, char *file, int line)
-{
- DEBUG_MSG("+ calloc, %s:%d\n", file, line);
- return calloc(n, sz);
-}
-
-void *DBGmalloc(size_t sz, char *file, int line)
-{
- DEBUG_MSG("+ malloc, %s:%d\n", file, line);
- return malloc(sz);
-}
-
-void *DBGrealloc(void *ptr, size_t sz, char *file, int line)
-{
- if (ptr == NULL && sz != 0)
- DEBUG_MSG("+ realloc, %s:%d\n", file, line);
- if (ptr != NULL && sz == 0)
- DEBUG_MSG("- realloc(0), %s:%d\n", file, line);
- return realloc(ptr, sz);
-}
-void DBGfree(void *ptr, char *file, int line)
-{
- DEBUG_MSG("- free, %s:%d\n", file, line);
- free(ptr);
-}
-#endif
diff --git a/jni/pdnsd/src/debug.h b/jni/pdnsd/src/debug.h
deleted file mode 100644
index 02f0e5d..0000000
--- a/jni/pdnsd/src/debug.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* debug.h - Various debugging facilities
- * Copyright (C) 2001 Thomas Moestl
- *
- * This file is part of the pdnsd package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef DEBUG_H
-#define DEBUG_H
-
-/*
- * A hand-rolled alloc debug factility, because most available libraries have
- * problems with at least one thread implementation.
- */
-#ifdef ALLOC_DEBUG
-void *DBGcalloc(size_t n, size_t sz, char *file, int line);
-void *DBGmalloc(size_t sz, char *file, int line);
-void *DBGrealloc(void *ptr, size_t sz, char *file, int line);
-void DBGfree(void *ptr, char *file, int line);
-
-#define pdnsd_calloc(n,sz) DBGcalloc(n,sz,__FILE__,__LINE__)
-#define pdnsd_malloc(sz) DBGmalloc(sz,__FILE__,__LINE__)
-#define pdnsd_realloc(ptr,sz) DBGrealloc(ptr,sz,__FILE__,__LINE__)
-#define pdnsd_free(ptr) DBGfree(ptr,__FILE__,__LINE__)
-#else
-#define pdnsd_calloc calloc
-#define pdnsd_malloc malloc
-#define pdnsd_realloc realloc
-#define pdnsd_free free
-#endif
-
-#endif /* def DEBUG_H */
diff --git a/jni/pdnsd/src/dns.c b/jni/pdnsd/src/dns.c
deleted file mode 100644
index a02d7fd..0000000
--- a/jni/pdnsd/src/dns.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/* dns.c - Declarations for dns handling and generic dns functions
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include "error.h"
-#include "helpers.h"
-#include "dns.h"
-
-
-/* Decompress a name record, taking the whole message as msg, returning its results in tgt
- * (which should be able hold at least DNSNAMEBUFSIZE chars),
- * taking sz as the remaining msg size (it is returned decremented by the name length, ready for further use) and
- * a source pointer (it is returned pointing to the location after the name). msgsize is the size of the whole message,
- * len is the total name length.
- * msg and msgsz are needed for decompression (see rfc1035). The returned data is decompressed, but still in the
- * rr name form (length byte - string of that length, terminated by a 0 length byte).
- *
- * Returned is a dns return code, with one exception: RC_TRUNC, as defined in dns.h, indicates that the message is
- * truncated at the name (which needs a special return code, as it might or might not be fatal).
- */
-int decompress_name(unsigned char *msg, size_t msgsz, unsigned char **src, size_t *sz, unsigned char *tgt, unsigned int *len)
-{
- unsigned int lb,offs;
- unsigned int hops=0,tpos=0;
- unsigned char *lptr=*src;
- size_t oldsz=*sz;
- size_t newsz=oldsz;
-
- if (newsz==0)
- goto name_outside_data;
- if (lptr-msg>=msgsz)
- goto name_outside_msg;
-
- for(;;) {
- newsz--;
- lb=*lptr++;
-
- if(lb>0x3f) {
- if (lb<0xc0) /* The two highest bits must be either 00 or 11 */
- goto unsupported_lbl_bits;
- if (newsz==0)
- goto name_outside_data;
- if (lptr-msg>=msgsz)
- goto name_outside_msg;
- newsz--;
- offs=((lb&0x3f)<<8)|(*lptr);
- if (offs>=msgsz)
- goto offset_outside_msg;
- lptr=msg+offs;
- goto jumped;
- }
- tgt[tpos++]=lb;
- if (lb==0)
- break;
-
- if (newsz<=lb)
- goto name_outside_data;
- if (lptr+lb-msg>=msgsz)
- goto name_outside_msg;
- if (tpos+lb>DNSNAMEBUFSIZE-1) /* terminating null byte has to follow */
- goto name_buf_full;
- newsz -= lb;
- do {
- /* if (!*lptr || *lptr=='.')
- return RC_FORMAT; */
- tgt[tpos++]=*lptr++;
- } while(--lb);
- }
- goto return_OK;
-
- jumped:
- ++hops;
- for(;;) {
- lb=*lptr++;
-
- while(lb>0x3f) {
- if (lb<0xc0) /* The two highest bits must be either 00 or 11 */
- goto unsupported_lbl_bits;
- if (lptr-msg>=msgsz)
- goto name_outside_msg;
- if (++hops>255)
- goto too_many_hops;
- offs=((lb&0x3f)<<8)|(*lptr);
- if (offs>=msgsz)
- goto offset_outside_msg;
- lptr=msg+offs;
- lb=*lptr++;
- }
- tgt[tpos++]=lb;
- if (lb==0)
- break;
-
- if (lptr+lb-msg>=msgsz)
- goto name_outside_msg;
- if(tpos+lb>DNSNAMEBUFSIZE-1) /* terminating null byte has to follow */
- goto name_buf_full;
- do {
- /* if (!*lptr || *lptr=='.')
- return RC_FORMAT; */
- tgt[tpos++]=*lptr++;
- } while(--lb);
- }
- return_OK:
- *src += oldsz-newsz;
- *sz = newsz;
- if(len) *len=tpos;
- return RC_OK;
-
- name_outside_data:
- DEBUG_MSG("decompress_name: compressed name extends outside data field.\n");
- return RC_TRUNC;
-
- name_outside_msg:
- DEBUG_MSG("decompress_name: compressed name extends outside message.\n");
- return RC_FORMAT;
-
- unsupported_lbl_bits:
- DEBUG_MSG(lb==0x41?"decompress_name: Bit-string labels not supported.\n":
- "decompress_name: unsupported label type.\n");
- return RC_FORMAT;
-
- offset_outside_msg:
- DEBUG_MSG("decompress_name: offset points outside message.\n");
- return RC_FORMAT;
-
- name_buf_full:
- DEBUG_MSG("decompress_name: decompressed name larger than %u bytes.\n", DNSNAMEBUFSIZE);
- return RC_FORMAT;
-
- too_many_hops:
- DEBUG_MSG("decompress_name: too many offsets in compressed name.\n");
- return RC_FORMAT;
-}
-
-#if 0
-/* Compare two names (ordinary C-strings) back-to-forth and return the longest match.
- The comparison is done at name granularity.
- The return value is the length of the match in name elements.
- *os (*od) is set to the offset in the domain name ms (md) of the match.
- */
-int domain_name_match(const unsigned char *ms, const unsigned char *md, int *os, int *od)
-{
- int i,j,k=0,offs,offd;
-
- offs=i=strlen(ms); offd=j=strlen(md);
- if(i && ms[i-1]=='.') --offs;
- if(j && md[j-1]=='.') --offd;
-
- if(i==0 || (i==1 && *ms=='.') || j==0 || (j==1 && *md=='.'))
- /* Special case: root domain */
- ;
- else {
- --i; if(ms[i]=='.') --i;
- --j; if(md[j]=='.') --j;
- while(tolower(ms[i]) == tolower(md[j])) {
- if(ms[i]=='.') {
- ++k;
- offs=i+1; offd=j+1;
- }
- if(i==0 || j==0) {
- if((i==0 || ms[i-1]=='.') && (j==0 || md[j-1]=='.')) {
- ++k;
- offs=i; offd=j;
- }
- break;
- }
- --i; --j;
- }
- }
- if(os) *os=offs;
- if(od) *od=offd;
- return k;
-}
-#endif
-
-/* Compare the names (in length byte-string notation) back-to-forth and return the longest match.
- The comparison is done at name granularity.
- The return value is the length of the match in name elements.
- *os (*od) is set to the offset in the domain name ms (md) of the match.
- */
-unsigned int domain_match(const unsigned char *ms, const unsigned char *md, unsigned int *os, unsigned int *od)
-{
- unsigned int i,j,k,n,ns=0,nd=0,offs,offd;
- unsigned char lb,ls[128],ld[128];
-
- /* first collect all length bytes */
- i=0;
- while((lb=ms[i])) {
- PDNSD_ASSERT(ns<128, "domain_match: too many name segments");
- ls[ns++]=lb;
- i += ((unsigned)lb)+1;
- }
-
- j=0;
- while((lb=md[j])) {
- PDNSD_ASSERT(nd<128, "domain_match: too many name segments");
- ld[nd++]=lb;
- j += ((unsigned)lb)+1;
- }
-
- n=ns; if(n>nd) n=nd;
-
- for(k=1; offs=i,offd=j,k<=n; ++k) {
- lb=ls[ns-k];
- if(lb!=ld[nd-k]) goto mismatch;
- for(;lb;--lb)
- if(tolower(ms[--i]) != tolower(md[--j])) goto mismatch;
- --i; --j;
- }
- mismatch:
-
- if(os) *os=offs;
- if(od) *od=offd;
- return k-1;
-}
-
-/* compress the domain name in in and put the result (of maximum length of rhnlen(in)) and
- * fill cb with compression information for further strings.*cb may be NULL initially.
- * offs is the offset the generated string will be placed in the packet.
- * retval: 0 - error, otherwise length
- * When done, just free() cb (if it is NULL, free will behave correctly).
- * It is guaranteed (and insured by assertions) that the output is smaller or equal in
- * size to the input.
- */
-unsigned int compress_name(unsigned char *in, unsigned char *out, unsigned int offs, dlist *cb)
-{
- compel_t *ci;
- unsigned int longest=0,lrem=0,coffs=0;
- unsigned int rl=0;
- unsigned ilen = rhnlen(in);
- unsigned short add=1;
-
- PDNSD_ASSERT(ilen<=DNSNAMEBUFSIZE, "compress_name: name too long");
-
- /* part 1: compression */
- for (ci=dlist_first(*cb); ci; ci=dlist_next(ci)) {
- unsigned int rv,rem,to;
- if ((rv=domain_match(in, ci->s, &rem,&to))>longest) {
- /*
- * This has some not obvious implications that should be noted: If a
- * domain name as saved in the list has been compressed, we only can
- * index the non-compressed part. We rely here that the first occurence
- * can't be compressed. So we take the first occurence of a given length.
- * This works perfectly, but watch it if you change something.
- */
- unsigned int newoffs= ci->index + to;
- /* Only use if the offset is not too large. */
- if(newoffs<=0x3fff) {
- longest=rv;
- lrem=rem;
- coffs= newoffs;
- }
- }
- }
- if (longest>0) {
- PDNSD_ASSERT(lrem+2 <= ilen, "compress_name: length increased");
- memcpy(out, in,lrem);
- out[lrem]=0xc0|((coffs&0x3f00)>>8);
- out[lrem+1]=coffs&0xff;
- rl=lrem+2;
- add= lrem!=0;
- }
- else {
- memcpy(out,in,ilen);
- rl=ilen;
- }
-
- /* part 2: addition to the cache structure */
- if (add) {
- if (!(*cb=dlist_grow(*cb,sizeof(compel_t)+ilen)))
- return 0;
- ci=dlist_last(*cb);
- ci->index=offs;
- memcpy(ci->s,in,ilen);
- }
- return rl;
-}
-
-/* Convert a numeric IP address into a domain name representation
- (C string) suitable for PTR records.
- buf is assumed to be at least DNSNAMEBUFSIZE bytes in size.
-*/
-int a2ptrstr(pdnsd_ca *a, int tp, unsigned char *buf)
-{
- if(tp==T_A) {
- unsigned char *p=(unsigned char *)&a->ipv4.s_addr;
- int n=snprintf(charp buf,DNSNAMEBUFSIZE,"%u.%u.%u.%u.in-addr.arpa.",p[3],p[2],p[1],p[0]);
- if(n<0 || n>=DNSNAMEBUFSIZE)
- return 0;
- }
- else
-#if ALLOW_LOCAL_AAAA
- if(tp==T_AAAA) {
- unsigned char *p=(unsigned char *)&a->ipv6;
- int i,offs=0;
- for (i=15;i>=0;--i) {
- unsigned char bt=p[i];
- int n=snprintf(charp(buf+offs), DNSNAMEBUFSIZE-offs,"%x.%x.",bt&0xf,(bt>>4)&0xf);
- if(n<0) return 0;
- offs+=n;
- if(offs>=DNSNAMEBUFSIZE) return 0;
- }
- if(!strncp(charp(buf+offs),"ip6.arpa.",DNSNAMEBUFSIZE-offs))
- return 0;
- }
- else
-#endif
- return 0;
- return 1;
-}
-
-/*
- * Add records for a host as read from a hosts-style file.
- * Returns 1 on success, 0 in an out of memory condition, and -1 when there was a problem with
- * the record data.
- */
-static int add_host(unsigned char *pn, unsigned char *rns, pdnsd_ca *a, int tp, int a_sz, time_t ttl, unsigned flags, int reverse)
-{
- dns_cent_t ce;
-
- if (!init_cent(&ce, pn, 0, 0, flags DBG0))
- return 0;
- if (!add_cent_rr(&ce,tp,ttl,0,CF_LOCAL,a_sz,a DBG0))
- goto free_cent_return0;
- if (!add_cent_rr(&ce,T_NS,ttl,0,CF_LOCAL,rhnlen(rns),rns DBG0))
- goto free_cent_return0;
- add_cache(&ce);
- free_cent(&ce DBG0);
- if (reverse) {
- unsigned char b2[DNSNAMEBUFSIZE],rhn[DNSNAMEBUFSIZE];
- if(!a2ptrstr(a,tp,b2))
- return -1;
- if (!str2rhn(b2,rhn))
- return -1;
- if (!init_cent(&ce, rhn, 0, 0, flags DBG0))
- return 0;
- if (!add_cent_rr(&ce,T_PTR,ttl,0,CF_LOCAL,rhnlen(pn),pn DBG0))
- goto free_cent_return0;
- if (!add_cent_rr(&ce,T_NS,ttl,0,CF_LOCAL,rhnlen(rns),rns DBG0))
- goto free_cent_return0;
- add_cache(&ce);
- free_cent(&ce DBG0);
- }
- return 1;
-
- free_cent_return0:
- free_cent(&ce DBG0);
- return 0;
-}
-
-/*
- * Read a file in /etc/hosts-format and add generate rrs for it.
- * Errors are largely ignored so that we can skip entries we do not understand
- * (but others possibly do).
- */
-int read_hosts(const char *fn, unsigned char *rns, time_t ttl, unsigned flags, int aliases, char **errstr)
-{
- int rv=0;
- FILE *f;
- char *buf;
- size_t buflen=256;
-
- if (!(f=fopen(fn,"r"))) {
- if(asprintf(errstr, "Failed to source %s: %s", fn, strerror(errno))<0) *errstr=NULL;
- return 0;
- }
- buf=malloc(buflen);
- if(!buf) {
- *errstr=NULL;
- goto fclose_return;
- }
- while(getline(&buf,&buflen,f)>=0) {
- unsigned int len;
- unsigned char *p,*pn,*pi;
- unsigned char rhn[DNSNAMEBUFSIZE];
- int tp,sz;
- pdnsd_ca a;
-
- p= ucharp strchr(buf,'#');
- if(p) *p=0;
- p= ucharp buf;
- for(;;) {
- if(!*p) goto nextline;
- if(!isspace(*p)) break;
- ++p;
- }
- pi=p;
- do {
- if(!*++p) goto nextline;
- } while(!isspace(*p));
- *p=0;
- do {
- if(!*++p) goto nextline;
- } while (isspace(*p));
- pn=p;
- do {
- ++p;
- } while(*p && !isspace(*p));
- len=p-pn;
- if (parsestr2rhn(pn,len,rhn)!=NULL)
- continue;
- if (inet_aton(charp pi,&a.ipv4)) {
- tp=T_A;
- sz=sizeof(struct in_addr);
- } else {
-#if ALLOW_LOCAL_AAAA /* We don't read them otherwise, as the C library may not be able to to that.*/
- if (inet_pton(AF_INET6,charp pi,&a.ipv6)>0) {
- tp=T_AAAA;
- sz=sizeof(struct in6_addr);
- } else
-#endif
- continue;
- }
- {
- int res=add_host(rhn, rns, &a, tp,sz, ttl, flags, 1);
- if(res==0) {
- *errstr= NULL;
- goto cleanup_return;
- }
- else if(res<0)
- continue;
- }
- if(aliases) {
- for(;;) {
- for(;;) {
- if(!*p) goto nextline;
- if(!isspace(*p)) break;
- ++p;
- }
- pn=p;
- do {
- ++p;
- } while(*p && !isspace(*p));
- len=p-pn;
- if (parsestr2rhn(pn,len,rhn)!=NULL)
- break;
- if (add_host(rhn, rns, &a, tp,sz, ttl, flags, 0) == 0) {
- *errstr= NULL;
- goto cleanup_return;
- }
- }
- }
- nextline:;
- }
- if (feof(f))
- rv=1;
- else if(asprintf(errstr, "Failed to source %s: %s", fn, strerror(errno))<0) *errstr=NULL;
- cleanup_return:
- free(buf);
- fclose_return:
- fclose(f);
- return rv;
-}
-
-
-/* Get the name of an RR type given its value. */
-const char *getrrtpname(int tp)
-{
- return tp>=T_MIN && tp<=T_MAX? rrnames[tp-T_MIN]: "[unknown]";
-}
-
-#if DEBUG>0
-/*
- * Const decoders for debugging display
- */
-static const char *const c_names[C_NUM] = {"IN","CS","CH","HS"};
-static const char *const qt_names[QT_NUM]={"IXFR","AXFR","MAILB","MAILA","*"};
-
-const char *get_cname(int id)
-{
- if (id>=C_MIN && id<=C_MAX)
- return c_names[id-C_MIN];
- if (id==QC_ALL)
- return "*";
- return "[unknown]";
-}
-
-const char *get_tname(int id)
-{
- if (id>=T_MIN && id<=T_MAX)
- return rrnames[id-T_MIN];
- else if (id>=QT_MIN && id<=QT_MAX)
- return qt_names[id-QT_MIN];
- return "[unknown]";
-}
-
-
-#define NRC 17
-static const char *const e_names[NRC]={
- "no error",
- "query format error",
- "server failed",
- "non-existent domain",
- "not supported",
- "query refused",
- "name exists when it should not",
- "RR set exists when it should not",
- "RR set that should exist does not",
- "server not authoritative for zone",
- "name not contained in zone",
- "11",
- "12",
- "13",
- "14",
- "15",
- "bad OPT version"
-};
-
-const char *get_ename(int id)
-{
- if (id>=0 && id<NRC)
- return e_names[id];
- return "[unknown]";
-}
-
-
-/* Construct a human-readable string listing the flags that are set
- in a dns header. buf must have a size of at least DNSFLAGSMAXSTRSIZE.
- Used for debugging purposes only.
-*/
-char *dnsflags2str(dns_hdr_t *hdr, char *buf)
-{
- char *p= buf;
-
- if (hdr->aa)
- p=mempcpy(p, " AA", 3);
- if (hdr->tc)
- p=mempcpy(p, " TC", 3);
- if (hdr->rd)
- p=mempcpy(p, " RD", 3);
- if (hdr->ra)
- p=mempcpy(p, " RA", 3);
- if (hdr->z)
- p=mempcpy(p, " Z", 2);
- if (hdr->ad)
- p=mempcpy(p, " AD", 3);
- if (hdr->cd)
- p=mempcpy(p, " CD", 3);
- *p=0;
-
- return buf;
-}
-
-#endif
-
-
-#if DEBUG>=9
-/* Based on debug code contributed by Kiyo Kelvin Lee. */
-
-void debug_dump_dns_msg(void *data, size_t len)
-{
- unsigned char *udata = (unsigned char *)data;
-# define dmpchksz 16
- char buf[dmpchksz*4+2];
- size_t i, j, k, l;
-
- DEBUG_MSG("pointer=%p len=%lu\n", udata, (unsigned long)len);
-
- for (i = 0; i < len; i += dmpchksz) {
- char *cp = buf;
- k = l = i + dmpchksz;
- if(k > len) k = len;
- for (j = i; j < k; ++j) {
- int n = sprintf(cp, "%02x ", udata[j]);
- cp += n;
- }
- for (; j < l; ++j) {
- *cp++ = ' ';
- *cp++ = ' ';
- *cp++ = ' ';
- }
- *cp++ = ' ';
- for (j = i; j < k; ++j) {
- *cp++ = isprint(udata[j]) ? udata[j] : '.';
- }
- PDNSD_ASSERT(cp < buf + sizeof(buf), "debug_dump_dns_msg: line buffer overflowed");
- *cp = '\0';
- DEBUG_MSG("%s\n", buf);
- }
-
- if(len >= sizeof(dns_hdr_t)) {
- dns_hdr_t *hdr = (dns_hdr_t *)data;
-
- DEBUG_MSG(
- "id=%04x qr=%x opcode=%x aa=%x tc=%x rd=%x "
- "ra=%x z=%x ad=%x cd=%x rcode=%x\n",
- ntohs(hdr->id), hdr->qr, hdr->opcode, hdr->aa, hdr->tc, hdr->rd,
- hdr->ra, hdr->z, hdr->ad, hdr->cd, hdr->rcode);
- DEBUG_MSG(
- "qdcount=%04x ancount=%04x nscount=%04x arcount=%04x\n",
- ntohs(hdr->qdcount), ntohs(hdr->ancount), ntohs(hdr->nscount), ntohs(hdr->arcount));
- }
-}
-#endif
diff --git a/jni/pdnsd/src/dns.h b/jni/pdnsd/src/dns.h
deleted file mode 100644
index 0f6a4ac..0000000
--- a/jni/pdnsd/src/dns.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* dns.h - Declarations for dns handling and generic dns functions
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_H
-#define DNS_H
-
-#include <config.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/types.h>
-#include <inttypes.h>
-#include "rr_types.h"
-#include "list.h"
-#include "ipvers.h"
-
-#if (TARGET==TARGET_BSD)
-# if !defined(__BIG_ENDIAN)
-# if defined(BIG_ENDIAN)
-# define __BIG_ENDIAN BIG_ENDIAN
-# elif defined(_BIG_ENDIAN)
-# define __BIG_ENDIAN _BIG_ENDIAN
-# endif
-# endif
-# if !defined(__LITTLE_ENDIAN)
-# if defined(LITTLE_ENDIAN)
-# define __LITTLE_ENDIAN LITTLE_ENDIAN
-# elif defined(_LITTLE_ENDIAN)
-# define __LITTLE_ENDIAN _LITTLE_ENDIAN
-# endif
-# endif
-# if !defined(__BYTE_ORDER)
-# if defined(BYTE_ORDER)
-# define __BYTE_ORDER BYTE_ORDER
-# elif defined(_BYTE_ORDER)
-# define __BYTE_ORDER _BYTE_ORDER
-# endif
-# endif
-#endif
-
-/* Deal with byte orders */
-#ifndef __BYTE_ORDER
-# if defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
-# error Fuzzy endianness system! Both __LITTLE_ENDIAN and __BIG_ENDIAN have been defined!
-# endif
-# if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN)
-# error Strange Endianness-less system! Neither __LITTLE_ENDIAN nor __BIG_ENDIAN has been defined!
-# endif
-# if defined(__LITTLE_ENDIAN)
-# define __BYTE_ORDER __LITTLE_ENDIAN
-# elif defined(__BIG_ENDIAN)
-# define __BYTE_ORDER __BIG_ENDIAN
-# endif
-#endif
-
-/* special rr type codes for queries */
-#define QT_MIN 251
-#define QT_IXFR 251
-#define QT_AXFR 252
-#define QT_MAILB 253
-#define QT_MAILA 254
-#define QT_ALL 255
-#define QT_MAX 255
-#define QT_NUM 5
-
-/* rr classes */
-#define C_MIN 1
-#define C_IN 1
-#define C_CS 2
-#define C_CH 3
-#define C_HS 4
-#define C_MAX 4
-#define C_NUM 4
-
-/* special classes for queries */
-#define QC_ALL 255
-
-/* status codes */
-#define RC_OK 0
-#define RC_FORMAT 1
-#define RC_SERVFAIL 2
-#define RC_NAMEERR 3
-#define RC_NOTSUPP 4
-#define RC_REFUSED 5
-#define RC_BADVERS 16
-
-/*
- * special internal retvals
- */
-#define RC_NOTCACHED 0xfffa
-#define RC_CACHED 0xfffb
-#define RC_STALE 0xfffc
-#define RC_TCPREFUSED 0xfffd
-#define RC_TRUNC 0xfffe
-#define RC_FATALERR 0xffff
-
-/* query/response */
-#define QR_QUERY 0
-#define QR_RESP 1
-
-/*opcodes */
-#define OP_QUERY 0
-#define OP_IQUERY 1
-#define OP_STATUS 2
-
-#if 0
-typedef struct {
- /* the name is the first field. It has variable length, so it can't be put in the struct */
- uint16_t type;
- uint16_t class;
- uint32_t ttl;
- uint16_t rdlength;
- /* rdata follows */
-} __attribute__((packed)) rr_hdr_t;
-
-#define sizeof_rr_hdr_t (sizeof rr_hdr_t)
-#else
-
-/* We will not actually use the rr_hdr_t type, only its size:
- sizeof(rr_hdr_t) = 2 + 2 + 4 + 2 */
-#define sizeof_rr_hdr_t 10
-#endif
-
-#define sizeof_opt_pseudo_rr (1+sizeof_rr_hdr_t)
-
-#if 0
-typedef struct {
- /* The server name and maintainer mailbox are the first two fields. It has variable length, */
- /* so they can't be put in the struct */
- uint32_t serial;
- uint32_t refresh;
- uint32_t retry;
- uint32_t expire;
- uint32_t minimum;
-} __attribute__((packed)) soa_r_t;
-
-
-typedef struct {
-/* char qname[];*/
- uint16_t qtype;
- uint16_t qclass;
-} __attribute__((packed)) std_query_t;
-#endif
-
-
-typedef struct {
- uint16_t id;
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- unsigned int rd:1;
- unsigned int tc:1;
- unsigned int aa:1;
- unsigned int opcode:4;
- unsigned int qr:1;
- unsigned int rcode:4;
- unsigned int cd:1;
- unsigned int ad:1;
- unsigned int z :1;
- unsigned int ra:1;
-#elif __BYTE_ORDER == __BIG_ENDIAN
- unsigned int qr:1;
- unsigned int opcode:4;
- unsigned int aa:1;
- unsigned int tc:1;
- unsigned int rd:1;
- unsigned int ra:1;
- unsigned int z :1;
- unsigned int ad:1;
- unsigned int cd:1;
- unsigned int rcode:4;
-#else
-# error "Please define __BYTE_ORDER to be __LITTLE_ENDIAN or __BIG_ENDIAN"
-#endif
- uint16_t qdcount;
- uint16_t ancount;
- uint16_t nscount;
- uint16_t arcount;
-} __attribute__((packed)) dns_hdr_t;
-
-
-/* A structure that can also be used for DNS messages over TCP. */
-typedef struct {
-#ifndef NO_TCP_QUERIES
- uint16_t len;
-#endif
- dns_hdr_t hdr;
-} __attribute__((packed)) dns_msg_t;
-
-#ifdef NO_TCP_QUERIES
-# define dnsmsghdroffset 0
-#else
-# define dnsmsghdroffset 2
-#endif
-
-
-/* Structure for storing EDNS (Extension mechanisms for DNS) information. */
-typedef struct {
- unsigned short udpsize;
- unsigned short rcode;
- unsigned short version;
- unsigned char do_flg;
-} edns_info_t;
-
-
-/* Macros to retrieve or store integer data that is not necessarily aligned.
- Also takes care of network to host byte order.
- The pointer cp is advanced and should be of type void* or char*.
- These are actually adapted versions of the NS_GET16 and NS_GET32
- macros in the arpa/nameser.h include file in the BIND 9 source.
-*/
-
-#define GETINT16(s,cp) do { \
- register uint16_t t_s; \
- register const unsigned char *t_cp = (const unsigned char *)(cp); \
- t_s = (uint16_t)*t_cp++ << 8; \
- t_s |= (uint16_t)*t_cp++; \
- (s) = t_s; \
- (cp) = (void *)t_cp; \
-} while (0)
-
-#define GETINT32(l,cp) do { \
- register uint32_t t_l; \
- register const unsigned char *t_cp = (const unsigned char *)(cp); \
- t_l = (uint32_t)*t_cp++ << 24; \
- t_l |= (uint32_t)*t_cp++ << 16; \
- t_l |= (uint32_t)*t_cp++ << 8; \
- t_l |= (uint32_t)*t_cp++; \
- (l) = t_l; \
- (cp) = (void *)t_cp; \
-} while (0)
-
-#define PUTINT16(s,cp) do { \
- register uint16_t t_s = (uint16_t)(s); \
- register unsigned char *t_cp = (unsigned char *)(cp); \
- *t_cp++ = t_s >> 8; \
- *t_cp++ = t_s; \
- (cp) = (void *)t_cp; \
-} while (0)
-
-#define PUTINT32(l,cp) do { \
- register uint32_t t_l = (uint32_t)(l); \
- register unsigned char *t_cp = (unsigned char *)(cp); \
- *t_cp++ = t_l >> 24; \
- *t_cp++ = t_l >> 16; \
- *t_cp++ = t_l >> 8; \
- *t_cp++ = t_l; \
- (cp) = (void *)t_cp; \
-} while (0)
-
-
-/* Size (number of bytes) of buffers used to hold domain names. */
-#define DNSNAMEBUFSIZE 256
-
-/* Recursion depth. */
-#define MAX_HOPS 20
-
-/*
- * Types for compression buffers.
- */
-typedef struct {
- unsigned int index;
- unsigned char s[0];
-} compel_t;
-
-
-
-int decompress_name(unsigned char *msg, size_t msgsz, unsigned char **src, size_t *sz, unsigned char *tgt, unsigned int *len);
-/* int domain_name_match(const unsigned char *ms, const unsigned char *md, int *os, int *od); */
-unsigned int domain_match(const unsigned char *ms, const unsigned char *md, unsigned int *os, unsigned int *od);
-unsigned int compress_name(unsigned char *in, unsigned char *out, unsigned int offs, dlist *cb);
-int a2ptrstr(pdnsd_ca *a, int tp, unsigned char *buf);
-int read_hosts(const char *fn, unsigned char *rns, time_t ttl, unsigned flags, int aliases, char **errstr);
-
-const char *getrrtpname(int tp);
-#if DEBUG>0
-const char *get_cname(int id);
-const char *get_tname(int id);
-const char *get_ename(int id);
-#define DNSFLAGSMAXSTRSIZE (7*3+1)
-char *dnsflags2str(dns_hdr_t *hdr, char *buf);
-#endif
-
-#if DEBUG>=9
-void debug_dump_dns_msg(void *data, size_t len);
-#define DEBUG_DUMP_DNS_MSG(d,l) {if(debug_p && global.verbosity>=9) debug_dump_dns_msg(d,l);}
-#else
-#define DEBUG_DUMP_DNS_MSG(d,l)
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/dns_answer.c b/jni/pdnsd/src/dns_answer.c
deleted file mode 100644
index 6a2a5b5..0000000
--- a/jni/pdnsd/src/dns_answer.c
+++ /dev/null
@@ -1,2170 +0,0 @@
-/* dns_answer.c - Receive and process incoming dns queries.
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * STANDARD CONFORMITY
- *
- * There are several standard conformity issues noted in the comments.
- * Some additional comments:
- *
- * I always set RA but I ignore RD largely (in everything but CNAME recursion),
- * not because it is not supported, but because I _always_ do a recursive
- * resolve in order to be able to cache the results.
- */
-
-#include <config.h>
-#include "ipvers.h"
-#include <pthread.h>
-#include <sys/uio.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <sys/param.h>
-#include <netdb.h>
-#include <signal.h>
-#include <time.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include "thread.h"
-#include "list.h"
-#include "dns.h"
-#include "dns_answer.h"
-#include "dns_query.h"
-#include "helpers.h"
-#include "cache.h"
-#include "error.h"
-#include "debug.h"
-
-
-/*
- * This is for error handling to prevent spewing the log files.
- * Maximums of different message types are set.
- * Races do not really matter here, so no locks.
- */
-#define TCP_MAX_ERRS 10
-#define UDP_MAX_ERRS 10
-#define MEM_MAX_ERRS 10
-#define THRD_MAX_ERRS 10
-#define MISC_MAX_ERRS 10
-static volatile unsigned long da_tcp_errs=0;
-static volatile unsigned long da_udp_errs=0;
-static volatile unsigned long da_mem_errs=0;
-static volatile unsigned long da_thrd_errs=0;
-#if DEBUG>0
-static volatile unsigned long da_misc_errs=0;
-#endif
-static volatile int procs=0; /* active query processes */
-static volatile int qprocs=0; /* queued query processes */
-static volatile unsigned long dropped=0,spawned=0;
-static volatile unsigned thrid_cnt=0;
-static pthread_mutex_t proc_lock = PTHREAD_MUTEX_INITIALIZER;
-
-#ifdef SOCKET_LOCKING
-static pthread_mutex_t s_lock = PTHREAD_MUTEX_INITIALIZER;
-#endif
-
-typedef union {
-#ifdef ENABLE_IPV4
-# if (TARGET==TARGET_LINUX)
- struct in_pktinfo pi4;
-# else
- struct in_addr ai4;
-# endif
-#endif
-#ifdef ENABLE_IPV6
- struct in6_pktinfo pi6;
-#endif
-} pkt_info_t;
-
-
-typedef struct {
- union {
-#ifdef ENABLE_IPV4
- struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#endif
- } addr;
-
- pkt_info_t pi;
-
- int sock;
- int proto;
- size_t len;
- unsigned char buf[0]; /* Actual size determined by global.udpbufsize */
-} udp_buf_t;
-
-
-/* ALLOCINITIALSIZE should be at least sizeof(dns_msg_t) = 2+12 */
-#define ALLOCINITIALSIZE 256
-/* This mask corresponds to a chunk size of 128 bytes. */
-#define ALLOCCHUNKSIZEMASK ((size_t)0x7f)
-
-typedef struct {
- unsigned short qtype;
- unsigned short qclass;
- unsigned char query[0];
-} dns_queryel_t;
-
-
-#define S_ANSWER 1
-#define S_AUTHORITY 2
-#define S_ADDITIONAL 3
-
-typedef struct {
- unsigned short tp,dlen;
- unsigned char nm[0];
- /* unsigned char data[0]; */
-} sva_t;
-
-
-/*
- * Mark an additional record as added to avoid double records.
- */
-static int sva_add(dlist *sva, const unsigned char *rhn, unsigned short tp, unsigned short dlen, void* data)
-{
- if (sva) {
- size_t rlen=rhnlen(rhn);
- sva_t *st;
- if (!(*sva=dlist_grow(*sva,sizeof(sva_t)+rlen+dlen))) {
- return 0;
- }
- st=dlist_last(*sva);
- st->tp=tp;
- st->dlen=dlen;
- memcpy(mempcpy(st->nm,rhn,rlen),data,dlen);
- }
- return 1;
-}
-
-/* ans_ttl computes the ttl value to return to the client.
- This is the ttl value stored in the cache entry minus the time
- the cache entry has lived in the cache.
- Local cache entries are an exception, they never "age".
-*/
-inline static time_t ans_ttl(rr_set_t *rrset, time_t queryts)
-{
- time_t ttl= rrset->ttl;
-
- if (!(rrset->flags&CF_LOCAL)) {
- time_t tpassed= queryts - rrset->ts;
- if(tpassed<0) tpassed=0;
- ttl -= tpassed;
- if(ttl<0) ttl=0;
- }
- return ttl;
-}
-
-/* follow_cname_chain takes a cache entry and a buffer (must be at least DNSNAMEBUFSIZE bytes),
- and copies the name indicated by the first cname record in the cache entry.
- The name is returned in length-byte string notation.
- follow_cname_chain returns 1 if a cname record is found, otherwise 0.
-*/
-inline static int follow_cname_chain(dns_cent_t *c, unsigned char *name)
-{
- rr_set_t *rrset=getrrset_CNAME(c);
- rr_bucket_t *rr;
- if (!rrset || !(rr=rrset->rrs))
- return 0;
- PDNSD_ASSERT(rr->rdlen <= DNSNAMEBUFSIZE, "follow_cname_chain: record too long");
- memcpy(name,rr->data,rr->rdlen);
- return 1;
-}
-
-
-/*
- * Add data from a rr_bucket_t (as in cache) into a dns message in ans. Ans is grown
- * to fit, sz is the old size of the packet (it is modified so at the end of the procedure
- * it is the new size), type is the rr type and ltime is the time in seconds the record is
- * old.
- * cb is the buffer used for message compression. *cb should be NULL when you call compress_name
- * or add_to_response the first time.
- * It gets filled with a pointer to compression information that can be reused in subsequent calls
- * to add_to_response.
- * sect is the section (S_ANSWER, S_AUTHORITY or S_ADDITIONAL) in which the record
- * belongs logically. Note that you still have to add the rrs in the right order (answer rrs first,
- * then authority and last additional).
- */
-static int add_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
- unsigned char *rrn, unsigned short type, uint32_t ttl,
- unsigned int dlen, void *data, char section, unsigned *udp, dlist *cb)
-{
- size_t osz= *sz;
- unsigned int ilen,blen,rdlen;
- unsigned char *rrht;
-
- {
- unsigned int nlen;
- unsigned char nbuf[DNSNAMEBUFSIZE];
-
- if (!(nlen=compress_name(rrn,nbuf,*sz,cb)))
- return 0;
-
- /* This buffer is usually over-allocated due to compression.
- Never mind, just a few bytes, and the buffer is freed soon. */
- {
- size_t newsz= dnsmsghdroffset + *sz + nlen + sizeof_rr_hdr_t + dlen;
- if(newsz > *allocsz) {
- /* Need to allocate more space.
- To avoid frequent reallocs, we allocate
- a multiple of a certain chunk size. */
- size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
- dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(*ans,newallocsz);
- if (!newans)
- return 0;
- *ans=newans;
- *allocsz=newallocsz;
- }
- }
- memcpy((unsigned char *)(&(*ans)->hdr)+ *sz, nbuf, nlen);
- *sz += nlen;
- }
-
- /* the rr header will be filled in later. Just reserve some space for it. */
- rrht= ((unsigned char *)(&(*ans)->hdr)) + *sz;
- *sz += sizeof_rr_hdr_t;
-
- switch (type) {
- case T_CNAME:
- case T_MB:
- case T_MD:
- case T_MF:
- case T_MG:
- case T_MR:
- case T_NS:
- case T_PTR:
- if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- PDNSD_ASSERT(rdlen <= dlen, "T_CNAME/T_MB/...: got longer");
- *sz+=rdlen;
- break;
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
- case T_MINFO:
-#endif
-#if IS_CACHED_RP
- case T_RP:
-#endif
- if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- *sz+=rdlen;
- ilen=rhnlen((unsigned char *)data);
- PDNSD_ASSERT(rdlen <= ilen, "T_MINFO/T_RP: got longer");
- if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen+=blen;
- PDNSD_ASSERT(rdlen <= dlen, "T_MINFO/T_RP: got longer");
- *sz+=blen;
- break;
-#endif
- case T_MX:
-#if IS_CACHED_AFSDB
- case T_AFSDB:
-#endif
-#if IS_CACHED_RT
- case T_RT:
-#endif
-#if IS_CACHED_KX
- case T_KX:
-#endif
- PDNSD_ASSERT(dlen > 2, "T_MX/T_AFSDB/...: rr botch");
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,2);
- *sz+=2;
- if (!(blen=compress_name(((unsigned char *)data)+2, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen=2+blen;
- PDNSD_ASSERT(rdlen <= dlen, "T_MX/T_AFSDB/...: got longer");
- *sz+=blen;
- break;
- case T_SOA:
- if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- *sz+=rdlen;
- ilen=rhnlen((unsigned char *)data);
- PDNSD_ASSERT(rdlen <= ilen, "T_SOA: got longer");
- if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen+=blen;
- *sz+=blen;
- ilen+=rhnlen(((unsigned char *)data)+ilen);
- PDNSD_ASSERT(rdlen <= ilen, "T_SOA: got longer");
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data)+ilen,20);
- rdlen+=20;
- PDNSD_ASSERT(rdlen <= dlen, "T_SOA: rr botch");
- *sz+=20;
- break;
-#if IS_CACHED_PX
- case T_PX:
- PDNSD_ASSERT(dlen > 2, "T_PX: rr botch");
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,2);
- *sz+=2;
- ilen=2;
- if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen=2+blen;
- *sz+=blen;
- ilen+=rhnlen(((unsigned char *)data)+ilen);
- PDNSD_ASSERT(rdlen <= ilen, "T_PX: got longer");
- if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen+=blen;
- PDNSD_ASSERT(rdlen <= dlen, "T_PX: got longer");
- *sz+=blen;
- break;
-#endif
-#if IS_CACHED_SRV
- case T_SRV:
- PDNSD_ASSERT(dlen > 6, "T_SRV: rr botch");
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,6);
- *sz+=6;
- if (!(blen=compress_name(((unsigned char *)data)+6, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen=6+blen;
- PDNSD_ASSERT(rdlen <= dlen, "T_SRV: got longer");
- *sz+=blen;
- break;
-#endif
-#if IS_CACHED_NXT
- case T_NXT:
- if (!(blen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen=blen;
- *sz+=blen;
- ilen=rhnlen((unsigned char *)data);
- PDNSD_ASSERT(rdlen <= ilen, "T_NXT: got longer");
- PDNSD_ASSERT(dlen >= ilen, "T_NXT: rr botch");
- if (dlen > ilen) {
- unsigned int wlen = dlen - ilen;
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data)+ilen,wlen);
- *sz+=wlen;
- rdlen+=wlen;
- }
- break;
-#endif
-#if IS_CACHED_NAPTR
- case T_NAPTR:
- PDNSD_ASSERT(dlen > 4, "T_NAPTR: rr botch");
- ilen=4;
- {
- int j;
- for (j=0;j<3;j++) {
- ilen += ((unsigned)*(((unsigned char *)data)+ilen)) + 1;
- PDNSD_ASSERT(dlen > ilen, "T_NAPTR: rr botch 2");
- }
- }
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data),ilen);
- (*sz)+=ilen;
-
- if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
- return 0;
- rdlen=ilen+blen;
- PDNSD_ASSERT(rdlen <= dlen, "T_NAPTR: got longer");
- *sz+=blen;
- break;
-#endif
- default:
- memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data),dlen);
- rdlen=dlen;
- *sz+=dlen;
- }
-
- if (udp && *sz>*udp && section==S_ADDITIONAL) /* only add the record if we do not increase the length over 512 */
- *sz=osz; /* (or possibly more if the request used EDNS) in additionals for udp answer. */
- else {
- PUTINT16(type,rrht);
- PUTINT16(C_IN,rrht);
- PUTINT32(ttl,rrht);
- PUTINT16(rdlen,rrht);
-
- switch (section) {
- case S_ANSWER:
- (*ans)->hdr.ancount=htons(ntohs((*ans)->hdr.ancount)+1);
- break;
- case S_AUTHORITY:
- (*ans)->hdr.nscount=htons(ntohs((*ans)->hdr.nscount)+1);
- break;
- case S_ADDITIONAL:
- (*ans)->hdr.arcount=htons(ntohs((*ans)->hdr.arcount)+1);
- break;
- }
- }
-
- return 1;
-}
-
-/* Add an OPT pseudo RR containing EDNS info.
- Can only be added to the additional section!
-*/
-int add_opt_pseudo_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
- unsigned short udpsize, unsigned short rcode,
- unsigned short ednsver, unsigned short Zflags)
-{
- unsigned char *ptr;
- size_t newsz= dnsmsghdroffset + *sz + sizeof_opt_pseudo_rr;
- if(newsz > *allocsz) {
- /* Need to allocate more space.
- To avoid frequent reallocs, we allocate
- a multiple of a certain chunk size. */
- size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
- dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(*ans,newallocsz);
- if (!newans)
- return 0;
- *ans=newans;
- *allocsz=newallocsz;
- }
-
- ptr= ((unsigned char *)(&(*ans)->hdr)) + *sz;
- *ptr++ = 0; /* Empty name */
- PUTINT16(T_OPT,ptr); /* type field */
- PUTINT16(udpsize,ptr); /* class field */
- *ptr++ = rcode>>4; /* 4 byte TTL field */
- *ptr++ = ednsver;
- PUTINT16(Zflags,ptr);
- PUTINT16(0,ptr); /* rdlen field */
- /* Empty RDATA. */
-
- *sz += sizeof_opt_pseudo_rr;
- /* Increment arcount field in dns header. */
- (*ans)->hdr.arcount = htons(ntohs((*ans)->hdr.arcount)+1);
- return 1;
-}
-
-/* Remove the last entry in the additional section,
- assuming it is an OPT pseudo RR of fixed size.
- Returns the new message size if successful, or
- zero if an inconsistency is detected.
-*/
-size_t remove_opt_pseudo_rr(dns_msg_t *ans, size_t sz)
-{
- uint16_t acnt=ntohs(ans->hdr.arcount), type;
- unsigned char *ptr;
- /* First do some sanity checks. */
- if(!(acnt>0 && sz >= sizeof(dns_hdr_t)+sizeof_opt_pseudo_rr))
- return 0;
- sz -= sizeof_opt_pseudo_rr;
- ptr= ((unsigned char *)(&ans->hdr)) + sz;
- if(*ptr++)
- return 0; /* Name must be empty. */
- GETINT16(type,ptr);
- if(type!=T_OPT)
- return 0; /* RR type must be OPT. */
- /* Decrement arcount field in dns header. */
- ans->hdr.arcount = htons(acnt-1);
- return sz;
-}
-
-typedef struct rre_s {
- unsigned short tp;
- unsigned short tsz; /* Size of tnm field */
- uint32_t ttl; /* ttl of the record in the answer (if tp==T_NS or T_SOA) */
- unsigned char tnm[0]; /* Name for the domain a record refers to */
- /* unsigned char nm[0]; */ /* Name of the domain the record is for (if tp==T_NS or T_SOA) */
-} rr_ext_t;
-
-
-/* types for the tp field */
-/* #define RRETP_NS T_NS */ /* For name server: add to authority, add address to additional. */
-/* #define RRETP_SOA T_SOA */ /* For SOA record: add to authority. */
-#define RRETP_ADD 0 /* For other records: add the address of buf to additional */
-
-static int add_ar(dlist *ar,unsigned short tp, unsigned short tsz,void *tnm,unsigned char *nm, uint32_t ttl)
-{
- rr_ext_t *re;
- unsigned char *p;
- size_t nmsz=0,size=sizeof(rr_ext_t)+tsz;
- if(tp==T_NS || tp==T_SOA) {
- nmsz=rhnlen(nm);
- size += nmsz;
- }
- if (!(*ar=dlist_grow(*ar,size)))
- return 0;
- re=dlist_last(*ar);
- re->tp=tp;
- re->tsz=tsz;
- re->ttl=ttl;
- p=mempcpy(re->tnm,tnm,tsz);
- if(tp==T_NS || tp==T_SOA) {
- memcpy(p,nm,nmsz);
- }
- return 1;
-}
-
-
-/* Select a random rr record from a list. */
-inline static rr_bucket_t *randrr(rr_bucket_t *rrb)
-{
- rr_bucket_t *rr;
- unsigned cnt=0;
-
- /* In order to have an equal chance for each record to be selected, we have to count first. */
- for(rr=rrb; rr; rr=rr->next) ++cnt;
-
- /* We do not use the pdnsd random functions (these might use /dev/urandom if the user is paranoid,
- * and we do not need any good PRNG here). */
- if(cnt) for(cnt=random()%cnt; cnt; --cnt) rrb=rrb->next;
-
- return rrb;
-}
-
-#if IS_CACHED_SRV
-#define AR_NUM 6
-#else
-#define AR_NUM 5
-#endif
-static const int ar_recs[AR_NUM]={T_NS, T_MD, T_MF, T_MB, T_MX
-#if IS_CACHED_SRV
- ,T_SRV
-#endif
-};
-/* offsets from record data start to server name */
-static const int ar_offs[AR_NUM]={0,0,0,0,2
-#if IS_CACHED_SRV
- ,6
-#endif
-};
-
-/* This adds an rrset, optionally randomizing the first element it adds.
- * if that is done, all rrs after the randomized one appear in order, starting from
- * that one and wrapping over if needed. */
-static int add_rrset(dns_msg_t **ans, size_t *sz, size_t *allocsz,
- unsigned char *rrn, unsigned tp, time_t queryts,
- dns_cent_t *cached, unsigned *udp, dlist *cb, dlist *sva, dlist *ar)
-{
- rr_set_t *crrset=getrrset(cached,tp);
-
- if (crrset && crrset->rrs) {
- rr_bucket_t *b;
- rr_bucket_t *first=NULL; /* Initialized to inhibit compiler warning */
- int i;
- short rnd_recs=global.rnd_recs;
-
- b=crrset->rrs;
- if (rnd_recs) b=first=randrr(crrset->rrs);
-
- while (b) {
- if (!add_rr(ans, sz, allocsz, rrn, tp, ans_ttl(crrset,queryts),
- b->rdlen, b->data, S_ANSWER, udp, cb))
- return 0;
- if (tp==T_NS || tp==T_A || tp==T_AAAA) {
- /* mark it as added */
- if (!sva_add(sva,rrn,tp,b->rdlen,b->data))
- return 0;
- }
- /* Mark for additional address records. XXX: this should be a more effective algorithm; at least the list is small */
- for (i=0;i<AR_NUM;i++) {
- if (ar_recs[i]==tp) {
- if (!add_ar(ar, RRETP_ADD,b->rdlen-ar_offs[i],((unsigned char *)(b->data))+ar_offs[i],
- ucharp "", 0))
- return 0;
- break;
- }
- }
- b=b->next;
- if (rnd_recs) {
- if(!b) b=crrset->rrs; /* wraparound */
- if(b==first) break;
- }
- }
- }
- return 1;
-}
-
-/*
- * Add the fitting elements of the cached record to the message in ans, where ans
- * is grown to fit, sz is the size of the packet and is modified to be the new size.
- * The query is in qe.
- * cb is the buffer used for message compression. *cb should be NULL if you call add_to_response
- * the first time. It gets filled with a pointer to compression information that can be
- * reused in subsequent calls to add_to_response.
- */
-static int add_to_response(dns_msg_t **ans, size_t *sz, size_t *allocsz,
- unsigned char *rrn, unsigned qtype, time_t queryts,
- dns_cent_t *cached, unsigned *udp, dlist *cb, dlist *sva, dlist *ar)
-{
- /* First of all, unless we have records of qtype, add cnames.
- Well, actually, there should be at max one cname. */
- if (qtype!=T_CNAME && qtype!=QT_ALL && !(qtype>=T_MIN && qtype<=T_MAX && have_rr(cached,qtype)))
- if (!add_rrset(ans, sz, allocsz, rrn, T_CNAME, queryts, cached, udp, cb, sva, ar))
- return 0;
-
- /* We need no switch for qclass, since we already have filtered packets we cannot understand */
- if (qtype==QT_AXFR || qtype==QT_IXFR) {
- /* I do not know what to do in this case. Since we do not maintain zones (and since we are
- no master server, so it is not our task), I just return an error message. If anyone
- knows how to do this better, please notify me.
- Anyway, this feature is rarely used in client communication, and there is no need for
- other name servers to ask pdnsd. Btw: many bind servers reject an ?XFR query for security
- reasons. */
- return 0;
- } else if (qtype==QT_MAILB) {
- if (!add_rrset(ans, sz, allocsz, rrn, T_MB, queryts, cached, udp, cb, sva, ar))
- return 0;
- if (!add_rrset(ans, sz, allocsz, rrn, T_MG, queryts, cached, udp, cb, sva, ar))
- return 0;
- if (!add_rrset(ans, sz, allocsz, rrn, T_MR, queryts, cached, udp, cb, sva, ar))
- return 0;
- } else if (qtype==QT_MAILA) {
- if (!add_rrset(ans, sz, allocsz, rrn, T_MD, queryts, cached, udp, cb, sva, ar))
- return 0;
- if (!add_rrset(ans, sz, allocsz, rrn, T_MF, queryts, cached, udp, cb, sva, ar))
- return 0;
- } else if (qtype==QT_ALL) {
- int i, n= NRRITERLIST(cached);
- const unsigned short *iterlist= RRITERLIST(cached);
- for (i=0; i<n; ++i) {
- if (!add_rrset(ans, sz, allocsz, rrn, iterlist[i], queryts, cached, udp, cb, sva, ar))
- return 0;
- }
- } else if (qtype>=T_MIN && qtype<=T_MAX) {
- if (!add_rrset(ans, sz, allocsz, rrn, qtype, queryts, cached, udp, cb, sva, ar))
- return 0;
- } else /* Shouldn't get here. */
- return 0;
-#if 0
- if (!ntohs((*ans)->hdr.ancount)) {
- /* Add a SOA if we have one and no other records are present in the answer.
- * This is to aid caches so that they have a ttl. */
- if (!add_rrset(ans, sz, allocsz, rrn, T_SOA , queryts, cached, udp, cb, sva, ar))
- return 0;
- }
-#endif
- return 1;
-}
-
-/*
- * Add an additional
- */
-static int add_additional_rr(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
- unsigned char *rhn, unsigned tp, time_t ttl,
- unsigned dlen, void *data, int sect, unsigned *udp, dlist *cb, dlist *sva)
-{
- sva_t *st;
-
- /* Check if already added; no double additionals */
- for (st=dlist_first(*sva); st; st=dlist_next(st)) {
- if (st->tp==tp && rhnicmp(st->nm,rhn) && st->dlen==dlen &&
- (memcmp(skiprhn(st->nm),data, dlen)==0))
- {
- return 1;
- }
- }
- /* add_rr will do nothing when udp!=NULL and sz>*udp. */
- if(!add_rr(ans, rlen, allocsz, rhn, tp, ttl, dlen, data, sect, udp, cb))
- return 0;
- /* mark it as added */
- if (!sva_add(sva,rhn,tp,dlen,data))
- return 0;
-
- return 1;
-}
-
-/*
- * Add one or more additionals from an rr bucket.
- */
-static int add_additional_rrs(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
- unsigned char *rhn, unsigned tp, time_t ttl,
- rr_bucket_t *rrb, int sect, unsigned *udp, dlist *cb, dlist *sva)
-{
- rr_bucket_t *rr;
- rr_bucket_t *first=NULL; /* Initialized to inhibit compiler warning */
- short rnd_recs=global.rnd_recs;
-
- rr=rrb;
- if (rnd_recs) rr=first=randrr(rrb);
-
- while(rr) {
- if (!add_additional_rr(ans, rlen, allocsz, rhn, tp, ttl, rr->rdlen,rr->data, sect, udp, cb, sva))
- return 0;
- rr=rr->next;
- if (rnd_recs) {
- if(!rr) rr=rrb; /* wraparound */
- if(rr==first) break;
- }
- }
- return 1;
-}
-
-/*
- * The code below actually handles A and AAAA additionals.
- */
-static int add_additional_a(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
- unsigned char *rhn, time_t queryts,
- unsigned *udp, dlist *cb, dlist *sva)
-{
- dns_cent_t *ae;
- int retval = 1;
-
- if ((ae=lookup_cache(rhn,NULL))) {
- rr_set_t *rrset; rr_bucket_t *rr;
- rrset=getrrset_A(ae);
- if (rrset && (rr=rrset->rrs))
- if (!add_additional_rrs(ans, rlen, allocsz,
- rhn, T_A, ans_ttl(rrset,queryts),
- rr, S_ADDITIONAL, udp, cb, sva))
- retval = 0;
-
-#if IS_CACHED_AAAA
- if(retval) {
- rrset=getrrset_AAAA(ae);
- if (rrset && (rr=rrset->rrs))
- if (!add_additional_rrs(ans, rlen, allocsz,
- rhn, T_AAAA, ans_ttl(rrset,queryts),
- rr, S_ADDITIONAL, udp, cb, sva))
- retval = 0;
- }
-#endif
- free_cent(ae DBG1);
- pdnsd_free(ae);
- }
- return retval;
-}
-
-/*
- * Compose an answer message for the decoded query in ql, hdr is the header of the dns request
- * rlen is set to be the answer length.
- * If udp is not NULL, *udp indicates the max length the dns response may have.
- */
-static dns_msg_t *compose_answer(llist *ql, dns_hdr_t *hdr, size_t *rlen, edns_info_t *ednsinfo, unsigned *udp, int *rcodep)
-{
- unsigned short rcode=RC_OK, aa=1;
- dlist cb=NULL;
- dlist sva=NULL;
- dlist ar=NULL;
- time_t queryts=time(NULL);
- dns_queryel_t *qe;
- dns_msg_t *ans;
- size_t allocsz= ALLOCINITIALSIZE;
- dns_cent_t *cached;
-
- ans=(dns_msg_t *)pdnsd_malloc(allocsz);
- if (!ans)
- goto return_ans;
- ans->hdr.id=hdr->id;
- ans->hdr.qr=QR_RESP;
- ans->hdr.opcode=OP_QUERY;
- ans->hdr.aa=0;
- ans->hdr.tc=0; /* If tc is needed, it is set when the response is sent in udp_answer_thread. */
- ans->hdr.rd=hdr->rd;
- ans->hdr.ra=1;
- ans->hdr.z=0;
- ans->hdr.ad=0;
- ans->hdr.cd=0;
- ans->hdr.rcode=rcode;
- ans->hdr.qdcount=0; /* this is first filled in and will be modified */
- ans->hdr.ancount=0;
- ans->hdr.nscount=0;
- ans->hdr.arcount=0;
-
- *rlen=sizeof(dns_hdr_t);
- /* first, add the query to the response */
- for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
- unsigned int qclen;
- size_t newsz= dnsmsghdroffset + *rlen + rhnlen(qe->query) + 4;
- if(newsz > allocsz) {
- /* Need to allocate more space.
- To avoid frequent reallocs, we allocate
- a multiple of a certain chunk size. */
- size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
- dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(ans,newallocsz);
- if (!newans)
- goto error_ans;
- ans=newans;
- allocsz=newallocsz;
- }
-
- {
- unsigned char *p = ((unsigned char *)&ans->hdr) + *rlen;
- /* the first name occurrence will not be compressed,
- but the offset needs to be stored for future compressions */
- if (!(qclen=compress_name(qe->query,p,*rlen,&cb)))
- goto error_ans;
- p += qclen;
- PUTINT16(qe->qtype,p);
- PUTINT16(qe->qclass,p);
- }
- *rlen += qclen+4;
- ans->hdr.qdcount=htons(ntohs(ans->hdr.qdcount)+1);
- }
-
- /* Barf if we get a query we cannot answer */
- for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
- if ((PDNSD_NOT_CACHED_TYPE(qe->qtype) &&
- (qe->qtype!=QT_MAILB && qe->qtype!=QT_MAILA && qe->qtype!=QT_ALL)) ||
- (qe->qclass!=C_IN && qe->qclass!=QC_ALL))
- {
- DEBUG_MSG("Unsupported QTYPE or QCLASS.\n");
- ans->hdr.rcode=rcode=RC_NOTSUPP;
- goto cleanup_return;
- }
- }
-
- /* second, the answer section */
- for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
- int hops;
- unsigned char qname[DNSNAMEBUFSIZE];
-
- rhncpy(qname,qe->query);
- /* look if we have a cached copy. otherwise, perform a nameserver query. Same with timeout */
- hops=MAX_HOPS;
- do {
- int rc;
- unsigned char c_soa=cundef;
- if ((rc=dns_cached_resolve(qname,qe->qtype, &cached, MAX_HOPS,queryts,&c_soa))!=RC_OK) {
- ans->hdr.rcode=rcode=rc;
- if(rc==RC_NAMEERR) {
- if(c_soa!=cundef) {
- /* Try to add a SOA record to the authority section. */
- unsigned scnt=rhnsegcnt(qname);
- if(c_soa<scnt && (cached=lookup_cache(skipsegs(qname,scnt-c_soa),NULL))) {
- rr_set_t *rrset=getrrset_SOA(cached);
- if (rrset && !(rrset->flags&CF_NEGATIVE)) {
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- if (!add_rr(&ans,rlen,&allocsz,cached->qname,T_SOA,ans_ttl(rrset,queryts),
- rr->rdlen,rr->data,S_AUTHORITY,udp,&cb))
- goto error_cached;
- }
- }
- free_cent(cached DBG1);
- pdnsd_free(cached);
- }
- }
-
- /* Possibly add an OPT pseudo-RR to the additional section. */
- if(ednsinfo) {
- if(!add_opt_pseudo_rr(&ans, rlen, &allocsz, global.udpbufsize, rcode, 0,0))
- goto error_ans;
- }
- }
- goto cleanup_return;
- }
- if(!(cached->flags&DF_LOCAL))
- aa=0;
-
- if (!add_to_response(&ans,rlen,&allocsz,qname,qe->qtype,queryts,cached,udp,&cb,&sva,&ar))
- goto error_cached;
- if (hdr->rd && qe->qtype!=T_CNAME && qe->qtype!=QT_ALL &&
- !(qe->qtype>=T_MIN && qe->qtype<=T_MAX && have_rr(cached,qe->qtype)) &&
- follow_cname_chain(cached,qname))
- /* The rd bit is set and the response does not contain records of the requested type,
- * but the response does contain a cname, so repeat the inquiry with the cname.
- * add_to_response() has already added the cname to the response.
- * Because of follow_cname_chain(), qname now contains the last cname in the chain. */
- ;
- else {
- /* maintain a list (ar) for authority records: We will add every name server that was
- listed as authoritative in a reply we received (and only those) to this list.
- This list will be used to fill the authority and additional sections of our own reply.
- We only do this for the last record in a cname chain, to prevent answer bloat. */
- rr_set_t *rrset;
- int rretp=T_NS;
- if((qe->qtype>=T_MIN && qe->qtype<=T_MAX && !have_rr(cached,qe->qtype)) ||
- (qe->qtype==QT_MAILB && !have_rr_MB(cached) && !have_rr_MG(cached) && !have_rr_MR(cached)) ||
- (qe->qtype==QT_MAILA && !have_rr_MD(cached) && !have_rr_MF(cached)))
- {
- /* no record of requested type in the answer section. */
- rretp=T_SOA;
- }
- rrset=getrrset(cached,rretp);
- if(rrset && (rrset->flags&CF_NEGATIVE))
- rrset=NULL;
- if(!rrset) {
- /* Try to find a name server higher up the hierarchy .
- */
- dns_cent_t *prev=cached;
- unsigned scnt=rhnsegcnt(prev->qname);
- unsigned tcnt=(rretp==T_NS?prev->c_ns:prev->c_soa);
- if((cached=lookup_cache((tcnt!=cundef && tcnt<scnt)?skipsegs(prev->qname,scnt-tcnt):prev->qname,NULL))) {
- rrset=getrrset(cached,rretp);
- if(rrset && (rrset->flags&CF_NEGATIVE))
- rrset=NULL;
- }
- if(!rrset && (prev->flags&DF_LOCAL)) {
- unsigned char *nm=getlocalowner(prev->qname,rretp);
- if(nm) {
- if(cached) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- }
- if((cached=lookup_cache(nm,NULL)))
- rrset=getrrset(cached,rretp);
- }
- }
- free_cent(prev DBG1);
- pdnsd_free(prev);
- }
- if (rrset) {
- rr_bucket_t *rr;
- for (rr=rrset->rrs; rr; rr=rr->next) {
- if (!add_ar(&ar, rretp, rr->rdlen,rr->data, cached->qname,
- ans_ttl(rrset,queryts)))
- goto error_cached;
- }
- }
- hops=0; /* this will break the loop */
- }
- if(cached) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- }
- } while (--hops>=0);
- }
-
- {
- rr_ext_t *rre;
- /* Add the authority section */
- for (rre=dlist_first(ar); rre; rre=dlist_next(rre)) {
- if (rre->tp == T_NS || rre->tp == T_SOA) {
- unsigned char *nm = rre->tnm + rre->tsz;
- if (!add_additional_rr(&ans, rlen, &allocsz,
- nm, rre->tp, rre->ttl, rre->tsz, rre->tnm,
- S_AUTHORITY, udp, &cb, &sva))
- {
- goto error_ans;
- }
- }
- }
-
- /* Add the additional section, but only if we stay within the UDP buffer limit. */
- /* If a pseudo RR doesn't fit, nothing else will. */
- if(!(udp && *rlen+sizeof_opt_pseudo_rr>*udp)) {
-
- /* Possibly add an OPT pseudo-RR to the additional section. */
- if(ednsinfo) {
- if(!add_opt_pseudo_rr(&ans, rlen, &allocsz, global.udpbufsize, rcode, 0,0))
- goto error_ans;
- }
-
- /* now add the name server addresses */
- for (rre=dlist_first(ar); rre; rre=dlist_next(rre)) {
- if (rre->tp == T_NS || rre->tp == RRETP_ADD) {
- if (!add_additional_a(&ans, rlen, &allocsz,
- rre->tnm, queryts, udp, &cb, &sva))
- goto error_ans;
- }
- }
- }
- }
- if (aa)
- ans->hdr.aa=1;
- goto cleanup_return;
-
- /* You may not like goto's, but here we avoid lots of code duplication. */
-error_cached:
- free_cent(cached DBG1);
- pdnsd_free(cached);
-error_ans:
- pdnsd_free(ans);
- ans=NULL;
-cleanup_return:
- dlist_free(ar);
- dlist_free(sva);
- dlist_free(cb);
-return_ans:
- if(rcodep) *rcodep=rcode;
- return ans;
-}
-
-/*
- * Decode the query (the query messgage is in data and rlen bytes long) into a dlist.
- * XXX: data needs to be aligned.
- * The return value can be RC_OK or RC_TRUNC, in which case the (partially) constructed list is
- * returned in qp, or something else (RC_FORMAT or RC_SERVFAIL), in which case no list is returned.
- *
- * *ptrrem will be assigned the address just after the questions sections in the message, and *lenrem
- * the remaining message length after the questions section. These values are only meaningful if the
- * return value is RC_OK.
- */
-static int decode_query(unsigned char *data, size_t rlen, unsigned char **ptrrem, size_t *lenrem, llist *qp)
-{
- int i,res=RC_OK;
- dns_hdr_t *hdr=(dns_hdr_t *)data; /* aligned, so no prob. */
- unsigned char *ptr=(unsigned char *)(hdr+1);
- size_t sz= rlen - sizeof(dns_hdr_t);
- uint16_t qdcount=ntohs(hdr->qdcount);
-
- llist_init(qp);
- for (i=0; i<qdcount; ++i) {
- dns_queryel_t *qe;
- unsigned int qlen;
- unsigned char qbuf[DNSNAMEBUFSIZE];
- res=decompress_name(data,rlen,&ptr,&sz,qbuf,&qlen);
- if (res==RC_TRUNC)
- break;
- if (res!=RC_OK) {
- llist_free(qp);
- break;
- }
- if (sz<4) {
- /* truncated in qtype or qclass */
- DEBUG_MSG("decode_query: query truncated in qtype or qclass.\n");
- res=RC_TRUNC;
- break;
- }
- if(!llist_grow(qp,sizeof(dns_queryel_t)+qlen)) {
- res=RC_SERVFAIL;
- break;
- }
- qe=llist_last(qp);
- GETINT16(qe->qtype,ptr);
- GETINT16(qe->qclass,ptr);
- sz-=4;
- memcpy(qe->query,qbuf,qlen);
- }
-
- if(ptrrem) *ptrrem=ptr;
- if(lenrem) *lenrem=sz;
- return res;
-}
-
-
-/* Scan the additional section of a query message for an OPT pseudo RR.
- data and rlen are as in decode_query(). Note in particular that data needs to be aligned!
- ptr should point the beginning of the additional section, sz should contain the
- length of this remaining part of the message and numrr the number of resource records in the section.
- *numopt is incremented with the number of OPT RRs found (should be at most one).
-
- Note that a return value of RC_OK means the additional section was parsed without errors, not that
- an OPT pseudo RR was found! Check the value of *numopt for the latter.
-
- The structure pointed to by ep is filled with the information of the first OPT pseudo RR found,
- but only if *numopt was set to zero before the call.
-*/
-static int decode_query_additional(unsigned char *data, size_t rlen, unsigned char *ptr, size_t sz, int numrr,
- int *numopt, edns_info_t *ep)
-{
- int i, res;
-
- for (i=0; i<numrr; ++i) {
- unsigned char nmbuf[DNSNAMEBUFSIZE];
- uint16_t type,class;
- unsigned char *ttlp;
- uint16_t rdlen;
- res=decompress_name(data,rlen,&ptr,&sz,nmbuf,NULL);
- if (res!=RC_OK)
- return res;
- if (sz<sizeof_rr_hdr_t) {
- /* truncated in rr header */
- DEBUG_MSG("decode_query_additional: additional section truncated in RR header.\n");
- return RC_TRUNC;
- }
- sz -= sizeof_rr_hdr_t;
- GETINT16(type,ptr);
- GETINT16(class,ptr);
- ttlp= ptr; /* Remember pointer to ttl field. */
- ptr += 4; /* Skip ttl field (4 bytes). */
- GETINT16(rdlen,ptr);
- if (sz<rdlen) {
- DEBUG_MSG("decode_query_additional: additional section truncated in RDATA field.\n");
- return RC_TRUNC;
- }
-
- if(type==T_OPT) {
- /* Found OPT pseudo-RR */
- if((*numopt)++ == 0) {
-#if DEBUG>0
- if(nmbuf[0]!=0) {
- DEBUG_MSG("decode_query_additional: name in OPT record not empty!\n");
- }
-#endif
- ep->udpsize= class;
- ep->rcode= ((uint16_t)ttlp[0]<<4) | ((dns_hdr_t *)data)->rcode;
- ep->version= ttlp[1];
- ep->do_flg= (ttlp[2]>>7)&1;
-#if DEBUG>0
- if(debug_p) {
- unsigned int Zflags= ((uint16_t)ttlp[2]<<8) | ttlp[3];
- if(Zflags & 0x7fff) {
- DEBUG_MSG("decode_query_additional: Z field contains unknown nonzero bits (%04x).\n",
- Zflags);
- }
- if(rdlen) {
- DEBUG_MSG("decode_query_additional: RDATA field in OPT record not empty!\n");
- }
- }
-#endif
- }
- else {
- DEBUG_MSG("decode_query_additional: ingnoring surplus OPT record.\n");
- }
- }
- else {
- DEBUG_MSG("decode_query_additional: ignoring record of type %s (%d).\n",
- getrrtpname(type), type);
- }
-
- /* Skip RDATA field. */
- sz -= rdlen;
- ptr += rdlen;
- }
-
- return RC_OK;
-}
-
-/* Make a dns error reply message
- * Id is the query id and still in network order.
- * op is the opcode to fill in, rescode - name says it all.
- */
-static void mk_error_reply(unsigned short id, unsigned short opcode,unsigned short rescode,dns_hdr_t *rep)
-{
- rep->id=id;
- rep->qr=QR_RESP;
- rep->opcode=opcode;
- rep->aa=0;
- rep->tc=0;
- rep->rd=0;
- rep->ra=1;
- rep->z=0;
- rep->ad=0;
- rep->cd=0;
- rep->rcode=rescode;
- rep->qdcount=0;
- rep->ancount=0;
- rep->nscount=0;
- rep->arcount=0;
-}
-
-/*
- * Analyze and answer the query in data. The answer is returned. rlen is at call the query length and at
- * return the length of the answer. You have to free the answer after sending it.
- */
-static dns_msg_t *process_query(unsigned char *data, size_t *rlenp, unsigned *udp, int *rcodep)
-{
- size_t rlen= *rlenp;
- int res;
- dns_hdr_t *hdr;
- llist ql;
- dns_msg_t *ans;
- edns_info_t ednsinfo= {0}, *ednsinfop= NULL;
-
- DEBUG_MSG("Received query (msg len=%u).\n", (unsigned int)rlen);
- DEBUG_DUMP_DNS_MSG(data, rlen);
-
- /*
- * We will ignore all records that come with a query, except for the actual query records,
- * and possible OPT pseudo RRs in the addtional section.
- * We will send back the query in the response. We will reject all non-queries, and
- * some not supported thingies.
- * If anyone notices behaviour that is not in standard conformance, please notify me!
- */
- hdr=(dns_hdr_t *)data;
- if (rlen<2) {
- DEBUG_MSG("Message too short.\n");
- return NULL; /* message too short: no id provided. */
- }
- if (rlen<sizeof(dns_hdr_t)) {
- DEBUG_MSG("Message too short.\n");
- res=RC_FORMAT;
- goto error_reply;
- }
- if (hdr->qr!=QR_QUERY) {
- DEBUG_MSG("The QR bit indicates this is a response, not a query.\n");
- return NULL; /* RFC says: discard */
- }
- if (hdr->opcode!=OP_QUERY) {
- DEBUG_MSG("Not a standard query (opcode=%u).\n",hdr->opcode);
- res=RC_NOTSUPP;
- goto error_reply;
- }
-#if DEBUG>0
- if(debug_p) {
- char flgsbuf[DNSFLAGSMAXSTRSIZE];
- dnsflags2str(hdr, flgsbuf);
- if(flgsbuf[0]) {
- DEBUG_MSG("Flags:%s\n", flgsbuf);
- }
- }
-#endif
- if (hdr->z!=0) {
- DEBUG_MSG("Malformed query (nonzero Z bit).\n");
- res=RC_FORMAT;
- goto error_reply;
- }
- if (hdr->rcode!=RC_OK) {
- DEBUG_MSG("Bad rcode(%u).\n",hdr->rcode);
- return NULL; /* discard (may cause error storms) */
- }
-
- if (hdr->ancount) {
- DEBUG_MSG("Query has a non-empty answer section!\n");
- res=RC_FORMAT;
- goto error_reply;
- }
-
- if (hdr->nscount) {
- DEBUG_MSG("Query has a non-empty authority section!\n");
- res=RC_FORMAT;
- goto error_reply;
- }
-
-#if 0
- /* The following only makes sense if we completely disallow
- Extension Mechanisms for DNS (RFC 2671). */
- if (hdr->arcount) {
- DEBUG_MSG("Query has a non-empty additional section!\n");
- res=RC_FORMAT;
- goto error_reply;
- }
-#endif
- {
- unsigned char *ptr;
- size_t sz;
- uint16_t arcount;
- res=decode_query(data,rlen,&ptr,&sz,&ql);
- if(res!=RC_OK) {
- if(res==RC_TRUNC) {
- if(!hdr->tc || llist_isempty(&ql)) {
- res=RC_FORMAT;
- goto free_ql_error_reply;
- }
- }
- else
- goto error_reply;
- }
-
- if ((arcount=ntohs(hdr->arcount))) {
- int numoptrr= 0;
- DEBUG_MSG("Query has a non-empty additional section: "
- "checking for OPT pseudo-RR.\n");
- if(res==RC_TRUNC) {
- DEBUG_MSG("Additional section cannot be read due to truncation!\n");
- res=RC_FORMAT;
- goto free_ql_error_reply;
- }
- res=decode_query_additional(data,rlen,ptr,sz,arcount, &numoptrr, &ednsinfo);
- if(!(res==RC_OK || (res==RC_TRUNC && hdr->tc))) {
- res=RC_FORMAT;
- goto free_ql_error_reply;
- }
- if(numoptrr) {
-#if DEBUG>0
- if(numoptrr!=1) {
- DEBUG_MSG("Additional section in query contains %d OPT pseudo-RRs!\n", numoptrr);
- }
-#endif
- if(ednsinfo.version!=0) {
- DEBUG_MSG("Query contains unsupported EDNS version %d!\n", ednsinfo.version);
- res=RC_BADVERS;
- goto free_ql_error_reply;
- }
- if(ednsinfo.rcode!=0) {
- DEBUG_MSG("Query contains non-zero EDNS rcode (%d)!\n", ednsinfo.rcode);
- res=RC_FORMAT;
- goto free_ql_error_reply;
- }
- DEBUG_MSG("Query contains OPT pseudosection: EDNS udp size = %u, flag DO=%u\n",
- ednsinfo.udpsize, ednsinfo.do_flg);
- ednsinfop = &ednsinfo;
- if(udp && ednsinfo.udpsize>UDP_BUFSIZE) {
- unsigned udpbufsize = global.udpbufsize;
- if(udpbufsize > ednsinfo.udpsize)
- udpbufsize = ednsinfo.udpsize;
- *udp = udpbufsize;
- }
- }
- }
- }
-
-#if DEBUG>0
- if (debug_p) {
- if(!llist_isempty(&ql)) {
- dns_queryel_t *qe;
- DEBUG_MSG("Questions are:\n");
- for (qe=llist_first(&ql); qe; qe=llist_next(qe)) {
- DEBUG_RHN_MSG("\tqc=%s (%u), qt=%s (%u), query=\"%s\"\n",
- get_cname(qe->qclass),qe->qclass,get_tname(qe->qtype),qe->qtype,RHN2STR(qe->query));
- }
- }
- else {
- DEBUG_MSG("Query contains no questions.\n");
- }
- }
-#endif
-
- if (llist_isempty(&ql)) {
- res=RC_FORMAT;
- goto error_reply;
- }
- if (!(ans=compose_answer(&ql, hdr, rlenp, ednsinfop, udp, rcodep))) {
- /* An out of memory condition or similar could cause NULL output. Send failure notification */
- res=RC_SERVFAIL;
- goto free_ql_error_reply;
- }
- llist_free(&ql);
- return ans;
-
- free_ql_error_reply:
- llist_free(&ql);
- error_reply:
- *rlenp=sizeof(dns_hdr_t);
- {
- size_t allocsz = sizeof(dns_msg_t);
- if(res&~0xf)
- allocsz += sizeof_opt_pseudo_rr;
- ans= (dns_msg_t *)pdnsd_malloc(allocsz);
- if (ans) {
- mk_error_reply(hdr->id,rlen>=3?hdr->opcode:OP_QUERY,res,&ans->hdr);
- if(res&~0xf)
- add_opt_pseudo_rr(&ans,rlenp,&allocsz,
- global.udpbufsize,res,0,0);
- }
- else if (++da_mem_errs<=MEM_MAX_ERRS) {
- log_error("Out of memory in query processing.");
- }
- }
- if(rcodep) *rcodep= res;
- return ans;
-}
-
-/*
- * Called by *_answer_thread exit handler to clean up process count.
- */
-inline static void decrease_procs()
-{
-
- pthread_mutex_lock(&proc_lock);
- procs--;
- qprocs--;
- pthread_mutex_unlock(&proc_lock);
-}
-
-static void udp_answer_thread_cleanup(void *data)
-{
- pdnsd_free(data);
- decrease_procs();
-}
-
-/*
- * A thread opened to answer a query transmitted via udp. Data is a pointer to the structure udp_buf_t that
- * contains the received data and various other parameters.
- * After the query is answered, the thread terminates
- * XXX: data must point to a correctly aligned buffer
- */
-static void *udp_answer_thread(void *data)
-{
- struct msghdr msg;
- struct iovec v;
- struct cmsghdr *cmsg;
-#if defined(SRC_ADDR_DISC)
- char ctrl[CMSG_SPACE(sizeof(pkt_info_t))];
-#endif
- size_t rlen=((udp_buf_t *)data)->len;
- unsigned udpmaxrespsize = UDP_BUFSIZE;
- /* XXX: process_query is assigned to this, this mallocs, so this points to aligned memory */
- dns_msg_t *resp;
- int rcode;
- unsigned thrid;
- pthread_cleanup_push(udp_answer_thread_cleanup, data);
- THREAD_SIGINIT;
-
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- pdnsd_exit();
- }
- }
-
- for(;;) {
- pthread_mutex_lock(&proc_lock);
- if (procs<global.proc_limit)
- break;
- pthread_mutex_unlock(&proc_lock);
- usleep_r(50000);
- }
- ++procs;
- thrid= ++thrid_cnt;
- pthread_mutex_unlock(&proc_lock);
-
-#if DEBUG>0
- if(debug_p) {
- int err;
- if ((err=pthread_setspecific(thrid_key, &thrid)) != 0) {
- if(++da_misc_errs<=MISC_MAX_ERRS)
- log_error("pthread_setspecific failed: %s",strerror(err));
- /* pdnsd_exit(); */
- }
- }
-#endif
-
- if (!(resp=process_query(((udp_buf_t *)data)->buf,&rlen,&udpmaxrespsize,&rcode))) {
- /*
- * A return value of NULL is a fatal error that prohibits even the sending of an error message.
- * logging is already done. Just exit the thread now.
- */
- pthread_exit(NULL); /* data freed by cleanup handler */
- }
- pthread_cleanup_push(free, resp);
- if (rlen>udpmaxrespsize) {
- rlen=udpmaxrespsize;
- resp->hdr.tc=1; /*set truncated bit*/
- }
- DEBUG_MSG("Outbound msg len %li, tc=%u, rc=\"%s\"\n",(long)rlen,resp->hdr.tc,get_ename(rcode));
-
- v.iov_base=(char *)&resp->hdr;
- v.iov_len=rlen;
- msg.msg_iov=&v;
- msg.msg_iovlen=1;
-#if (TARGET!=TARGET_CYGWIN)
-#if defined(SRC_ADDR_DISC)
- msg.msg_control=ctrl;
- msg.msg_controllen=sizeof(ctrl);
-#else
- msg.msg_control=NULL;
- msg.msg_controllen=0;
-#endif
- msg.msg_flags=0; /* to avoid warning message by Valgrind */
-#endif
-
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
-
- msg.msg_name=&((udp_buf_t *)data)->addr.sin4;
- msg.msg_namelen=sizeof(struct sockaddr_in);
-# if defined(SRC_ADDR_DISC)
-# if (TARGET==TARGET_LINUX)
- ((udp_buf_t *)data)->pi.pi4.ipi_spec_dst=((udp_buf_t *)data)->pi.pi4.ipi_addr;
- cmsg=CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len=CMSG_LEN(sizeof(struct in_pktinfo));
- cmsg->cmsg_level=SOL_IP;
- cmsg->cmsg_type=IP_PKTINFO;
- memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.pi4,sizeof(struct in_pktinfo));
- msg.msg_controllen=CMSG_SPACE(sizeof(struct in_pktinfo));
-# else
- cmsg=CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len=CMSG_LEN(sizeof(struct in_addr));
- cmsg->cmsg_level=IPPROTO_IP;
- cmsg->cmsg_type=IP_RECVDSTADDR;
- memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.ai4,sizeof(struct in_addr));
- msg.msg_controllen=CMSG_SPACE(sizeof(struct in_addr));
-# endif
-# endif
-# if DEBUG>0
- {
- char buf[ADDRSTR_MAXLEN];
-
- DEBUG_MSG("Answering to: %s", inet_ntop(AF_INET,&((udp_buf_t *)data)->addr.sin4.sin_addr,buf,ADDRSTR_MAXLEN));
-# if defined(SRC_ADDR_DISC)
-# if (TARGET==TARGET_LINUX)
- DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET,&((udp_buf_t *)data)->pi.pi4.ipi_spec_dst,buf,ADDRSTR_MAXLEN));
-# else
- DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET,&((udp_buf_t *)data)->pi.ai4,buf,ADDRSTR_MAXLEN));
-# endif
-# else
- DEBUG_MSGC("\n");
-# endif
- }
-# endif /* DEBUG */
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
-
- msg.msg_name=&((udp_buf_t *)data)->addr.sin6;
- msg.msg_namelen=sizeof(struct sockaddr_in6);
-# if defined(SRC_ADDR_DISC)
- cmsg=CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_len=CMSG_LEN(sizeof(struct in6_pktinfo));
- cmsg->cmsg_level=SOL_IPV6;
- cmsg->cmsg_type=IPV6_PKTINFO;
- memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.pi6,sizeof(struct in6_pktinfo));
- msg.msg_controllen=CMSG_SPACE(sizeof(struct in6_pktinfo));
-# endif
-# if DEBUG>0
- {
- char buf[ADDRSTR_MAXLEN];
-
- DEBUG_MSG("Answering to: %s", inet_ntop(AF_INET6,&((udp_buf_t *)data)->addr.sin6.sin6_addr,buf,ADDRSTR_MAXLEN));
-# if defined(SRC_ADDR_DISC)
- DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET6,&((udp_buf_t *)data)->pi.pi6.ipi6_addr,buf,ADDRSTR_MAXLEN));
-# else
- DEBUG_MSGC("\n");
-# endif
- }
-# endif /* DEBUG */
- }
-#endif
-
- /* Lock the socket, and clear the error flag before dropping the lock */
-#ifdef SOCKET_LOCKING
- pthread_mutex_lock(&s_lock);
-#endif
- if (sendmsg(((udp_buf_t *)data)->sock,&msg,0)<0) {
-#ifdef SOCKET_LOCKING
- pthread_mutex_unlock(&s_lock);
-#endif
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("Error in udp send: %s",strerror(errno));
- }
- } else {
- int tmp;
- socklen_t sl=sizeof(tmp);
- getsockopt(((udp_buf_t *)data)->sock, SOL_SOCKET, SO_ERROR, &tmp, &sl);
-#ifdef SOCKET_LOCKING
- pthread_mutex_unlock(&s_lock);
-#endif
- }
-
- pthread_cleanup_pop(1); /* free(resp) */
- pthread_cleanup_pop(1); /* free(data) */
- return NULL;
-}
-
-int init_udp_socket()
-{
- int sock;
- int so=1;
- union {
-#ifdef ENABLE_IPV4
- struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#endif
- } sin;
- socklen_t sinl;
-
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- if ((sock=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) {
- log_error("Could not open udp socket: %s",strerror(errno));
- return -1;
- }
- memset(&sin.sin4,0,sizeof(struct sockaddr_in));
- sin.sin4.sin_family=AF_INET;
- sin.sin4.sin_port=htons(global.port);
- sin.sin4.sin_addr=global.a.ipv4;
- SET_SOCKA_LEN4(sin.sin4);
- sinl=sizeof(struct sockaddr_in);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- if ((sock=socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP))==-1) {
- log_error("Could not open udp socket: %s",strerror(errno));
- return -1;
- }
- memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
- sin.sin6.sin6_family=AF_INET6;
- sin.sin6.sin6_port=htons(global.port);
- sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
- sin.sin6.sin6_addr=global.a.ipv6;
- SET_SOCKA_LEN6(sin.sin6);
- sinl=sizeof(struct sockaddr_in6);
- }
-#endif
-
-#ifdef SRC_ADDR_DISC
-# if (TARGET!=TARGET_LINUX)
- if (run_ipv4) {
-# endif
- /* The following must be set on any case because it also applies for IPv4 packets sent to
- * ipv6 addresses. */
-# if (TARGET==TARGET_LINUX )
- if (setsockopt(sock,SOL_IP,IP_PKTINFO,&so,sizeof(so))!=0) {
-# else
- if (setsockopt(sock,IPPROTO_IP,IP_RECVDSTADDR,&so,sizeof(so))!=0) {
-# endif
- log_error("Could not set options on udp socket: %s",strerror(errno));
- close(sock);
- return -1;
- }
-# if (TARGET!=TARGET_LINUX)
- }
-# endif
-
-# ifdef ENABLE_IPV6
- if (!run_ipv4) {
- if (setsockopt(sock,SOL_IPV6,IPV6_RECVPKTINFO,&so,sizeof(so))!=0) {
- log_error("Could not set options on udp socket: %s",strerror(errno));
- close(sock);
- return -1;
- }
- }
-# endif
-#endif
- if (bind(sock,(struct sockaddr *)&sin,sinl)!=0) {
- log_error("Could not bind to udp socket: %s",strerror(errno));
- close(sock);
- return -1;
- }
- return sock;
-}
-
-/*
- * Listen on the specified port for udp packets and answer them (each in a new thread to be nonblocking)
- * This was changed to support sending UDP packets with exactly the same source address as they were coming
- * to us, as required by rfc2181. Although this is a sensible requirement, it is slightly more difficult
- * and may introduce portability issues.
- */
-void *udp_server_thread(void *dummy)
-{
- int sock;
- ssize_t qlen;
- pthread_t pt;
- udp_buf_t *buf;
- struct msghdr msg;
- struct iovec v;
- struct cmsghdr *cmsg;
- char ctrl[512];
-#if defined(ENABLE_IPV6) && (TARGET==TARGET_LINUX)
- struct in_pktinfo sip;
-#endif
- /* (void)dummy; */ /* To inhibit "unused variable" warning */
-
- THREAD_SIGINIT;
-
-
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- pdnsd_exit();
- }
- }
-
- sock=udp_socket;
-
- while (1) {
- int udpbufsize= global.udpbufsize;
- if (!(buf=(udp_buf_t *)pdnsd_calloc(1,sizeof(udp_buf_t)+udpbufsize))) {
- if (++da_mem_errs<=MEM_MAX_ERRS) {
- log_error("Out of memory in request handling.");
- }
- break;
- }
-
- buf->sock=sock;
-
- v.iov_base=(char *)buf->buf;
- v.iov_len=udpbufsize;
- msg.msg_iov=&v;
- msg.msg_iovlen=1;
-#if (TARGET!=TARGET_CYGWIN)
- msg.msg_control=ctrl;
- msg.msg_controllen=sizeof(ctrl);
-#endif
-
-#if defined(SRC_ADDR_DISC)
-# ifdef ENABLE_IPV4
- if (run_ipv4) {
- msg.msg_name=&buf->addr.sin4;
- msg.msg_namelen=sizeof(struct sockaddr_in);
- if ((qlen=recvmsg(sock,&msg,0))>=0) {
- cmsg=CMSG_FIRSTHDR(&msg);
- while(cmsg) {
-# if (TARGET==TARGET_LINUX)
- if (cmsg->cmsg_level==SOL_IP && cmsg->cmsg_type==IP_PKTINFO) {
- memcpy(&buf->pi.pi4,CMSG_DATA(cmsg),sizeof(struct in_pktinfo));
- break;
- }
-# else
- if (cmsg->cmsg_level==IPPROTO_IP && cmsg->cmsg_type==IP_RECVDSTADDR) {
- memcpy(&buf->pi.ai4,CMSG_DATA(cmsg),sizeof(buf->pi.ai4));
- break;
- }
-# endif
- cmsg=CMSG_NXTHDR(&msg,cmsg);
- }
- if (!cmsg) {
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("Could not discover udp destination address");
- }
- goto free_buf_continue;
- }
- } else if (errno!=EINTR) {
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("error in UDP recv: %s", strerror(errno));
- }
- }
- }
-# endif
-# ifdef ENABLE_IPV6
- ELSE_IPV6 {
- msg.msg_name=&buf->addr.sin6;
- msg.msg_namelen=sizeof(struct sockaddr_in6);
- if ((qlen=recvmsg(sock,&msg,0))>=0) {
- cmsg=CMSG_FIRSTHDR(&msg);
- while(cmsg) {
- if (cmsg->cmsg_level==SOL_IPV6 && cmsg->cmsg_type==IPV6_PKTINFO) {
- memcpy(&buf->pi.pi6,CMSG_DATA(cmsg),sizeof(struct in6_pktinfo));
- break;
- }
- cmsg=CMSG_NXTHDR(&msg,cmsg);
- }
- if (!cmsg) {
- /* We might have an IPv4 Packet incoming on our IPv6 port, so we also have to
- * check for IPv4 sender addresses */
- cmsg=CMSG_FIRSTHDR(&msg);
- while(cmsg) {
-# if (TARGET==TARGET_LINUX)
- if (cmsg->cmsg_level==SOL_IP && cmsg->cmsg_type==IP_PKTINFO) {
- memcpy(&sip,CMSG_DATA(cmsg),sizeof(sip));
- IPV6_MAPIPV4(&sip.ipi_addr,&buf->pi.pi6.ipi6_addr);
- buf->pi.pi6.ipi6_ifindex=sip.ipi_ifindex;
- break;
- }
- /* FIXME: What about BSD? probably ok, but... */
-# endif
- cmsg=CMSG_NXTHDR(&msg,cmsg);
- }
- if (!cmsg) {
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("Could not discover udp destination address");
- }
- goto free_buf_continue;
- }
- }
- } else if (errno!=EINTR) {
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("error in UDP recv: %s", strerror(errno));
- }
- }
- }
-# endif
-#else /* !SRC_ADDR_DISC */
-# ifdef ENABLE_IPV4
- if (run_ipv4) {
- msg.msg_name=&buf->addr.sin4;
- msg.msg_namelen=sizeof(struct sockaddr_in);
- }
-# endif
-# ifdef ENABLE_IPV6
- ELSE_IPV6 {
- msg.msg_name=&buf->addr.sin6;
- msg.msg_namelen=sizeof(struct sockaddr_in6);
- }
-# endif
- qlen=recvmsg(sock,&msg,0);
- if (qlen<0 && errno!=EINTR) {
- if (++da_udp_errs<=UDP_MAX_ERRS) {
- log_error("error in UDP recv: %s", strerror(errno));
- }
- }
-#endif /* SRC_ADDR_DISC */
-
- if (qlen>=0) {
- pthread_mutex_lock(&proc_lock);
- if (qprocs<global.proc_limit+global.procq_limit) {
- int err;
- ++qprocs; ++spawned;
- pthread_mutex_unlock(&proc_lock);
- buf->len=qlen;
- err=pthread_create(&pt,&attr_detached,udp_answer_thread,(void *)buf);
- if(err==0)
- continue;
- if(++da_thrd_errs<=THRD_MAX_ERRS)
- log_warn("pthread_create failed: %s",strerror(err));
- /* If thread creation failed, free resources associated with it. */
- pthread_mutex_lock(&proc_lock);
- --qprocs; --spawned;
- }
- ++dropped;
- pthread_mutex_unlock(&proc_lock);
- }
- free_buf_continue:
- pdnsd_free(buf);
- usleep_r(50000);
- }
-
- udp_socket=-1;
- close(sock);
- udps_thrid=main_thrid;
- if (tcp_socket==-1)
- pdnsd_exit();
- return NULL;
-}
-
-#ifndef NO_TCP_SERVER
-
-static void tcp_answer_thread_cleanup(void *csock)
-{
- close(*((int *)csock));
- pdnsd_free(csock);
- decrease_procs();
-}
-
-/*
- * Process a dns query via tcp. The argument is a pointer to the socket.
- */
-static void *tcp_answer_thread(void *csock)
-{
- /* XXX: This should be OK, the original must be (and is) aligned */
- int sock=*((int *)csock);
- unsigned thrid;
-
- pthread_cleanup_push(tcp_answer_thread_cleanup, csock);
- THREAD_SIGINIT;
-
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- pdnsd_exit();
- }
- }
-
- for(;;) {
- pthread_mutex_lock(&proc_lock);
- if (procs<global.proc_limit)
- break;
- pthread_mutex_unlock(&proc_lock);
- usleep_r(50000);
- }
- ++procs;
- thrid= ++thrid_cnt;
- pthread_mutex_unlock(&proc_lock);
-
-#if DEBUG>0
- if(debug_p) {
- int err;
- if ((err=pthread_setspecific(thrid_key, &thrid)) != 0) {
- if(++da_misc_errs<=MISC_MAX_ERRS)
- log_error("pthread_setspecific failed: %s",strerror(err));
- /* pdnsd_exit(); */
- }
- }
-#endif
-#ifdef TCP_SUBSEQ
-
- /* rfc1035 says we should process multiple queries in succession, so we are looping until
- * the socket is closed by the other side or by tcp timeout.
- * This in fact makes DoSing easier. If that is your concern, you should disable pdnsd's
- * TCP server.*/
- for(;;)
-#endif
- {
- int rlen,olen;
- size_t nlen;
- unsigned char *buf;
- dns_msg_t *resp;
-
-#ifdef NO_POLL
- fd_set fds;
- struct timeval tv;
- FD_ZERO(&fds);
- PDNSD_ASSERT(sock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
- FD_SET(sock, &fds);
- tv.tv_usec=0;
- tv.tv_sec=global.tcp_qtimeout;
- if (select(sock+1,&fds,NULL,NULL,&tv)<=0)
- pthread_exit(NULL); /* socket is closed by cleanup handler */
-#else
- struct pollfd pfd;
- pfd.fd=sock;
- pfd.events=POLLIN;
- if (poll(&pfd,1,global.tcp_qtimeout*1000)<=0)
- pthread_exit(NULL); /* socket is closed by cleanup handler */
-#endif
- {
- ssize_t err;
- uint16_t rlen_net;
- if ((err=read(sock,&rlen_net,sizeof(rlen_net)))!=sizeof(rlen_net)) {
- DEBUG_MSG("Error while reading from TCP client: %s\n",err==-1?strerror(errno):"incomplete data");
- /*
- * If the socket timed or was closed before we even received the
- * query length, we cannot return an error. So exit silently.
- */
- pthread_exit(NULL); /* socket is closed by cleanup handler */
- }
- rlen=ntohs(rlen_net);
- }
- if (rlen == 0) {
- log_error("TCP zero size query received.\n");
- pthread_exit(NULL);
- }
- buf=(unsigned char *)pdnsd_malloc(rlen);
- if (!buf) {
- if (++da_mem_errs<=MEM_MAX_ERRS) {
- log_error("Out of memory in request handling.");
- }
- pthread_exit(NULL); /* socket is closed by cleanup handler */
- }
- pthread_cleanup_push(free, buf);
-
- olen=0;
- while(olen<rlen) {
- int rv;
-#ifdef NO_POLL
- FD_ZERO(&fds);
- FD_SET(sock, &fds);
- tv.tv_usec=0;
- tv.tv_sec=global.tcp_qtimeout;
- if (select(sock+1,&fds,NULL,NULL,&tv)<=0)
- pthread_exit(NULL); /* buf freed and socket closed by cleanup handlers */
-#else
- pfd.fd=sock;
- pfd.events=POLLIN;
- if (poll(&pfd,1,global.tcp_qtimeout*1000)<=0)
- pthread_exit(NULL); /* buf freed and socket closed by cleanup handlers */
-#endif
- rv=read(sock,buf+olen,rlen-olen);
- if (rv<=0) {
- DEBUG_MSG("Error while reading from TCP client: %s\n",rv==-1?strerror(errno):"incomplete data");
- /*
- * If the promised length was not sent, we should return an error message,
- * but if read fails that way, it is unlikely that it will arrive. Nevertheless...
- */
- if (olen>=2) { /* We need the id to send a valid reply. */
- dns_msg_t err;
- mk_error_reply(((dns_hdr_t*)buf)->id,
- olen>=3?((dns_hdr_t*)buf)->opcode:OP_QUERY,
- RC_FORMAT,
- &err.hdr);
- err.len=htons(sizeof(dns_hdr_t));
- write_all(sock,&err,sizeof(err)); /* error anyway. */
- }
- pthread_exit(NULL); /* buf freed and socket closed by cleanup handlers */
- }
- olen += rv;
- }
- nlen=rlen;
- if (!(resp=process_query(buf,&nlen,NULL,NULL))) {
- /*
- * A return value of NULL is a fatal error that prohibits even the sending of an error message.
- * logging is already done. Just exit the thread now.
- */
- pthread_exit(NULL);
- }
- pthread_cleanup_pop(1); /* free(buf) */
- pthread_cleanup_push(free,resp);
- {
- int err; size_t rsize;
- resp->len=htons(nlen);
- rsize=dnsmsghdroffset+nlen;
- if ((err=write_all(sock,resp,rsize))!=rsize) {
- DEBUG_MSG("Error while writing to TCP client: %s\n",err==-1?strerror(errno):"unknown error");
- pthread_exit(NULL); /* resp is freed and socket is closed by cleanup handlers */
- }
- }
- pthread_cleanup_pop(1); /* free(resp) */
- }
-
- /* socket is closed by cleanup handler */
- pthread_cleanup_pop(1);
- return NULL;
-}
-
-int init_tcp_socket()
-{
- int sock;
- union {
-#ifdef ENABLE_IPV4
- struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#endif
- } sin;
- socklen_t sinl;
-
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- if ((sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==-1) {
- log_error("Could not open tcp socket: %s",strerror(errno));
- return -1;
- }
- memset(&sin.sin4,0,sizeof(struct sockaddr_in));
- sin.sin4.sin_family=AF_INET;
- sin.sin4.sin_port=htons(global.port);
- sin.sin4.sin_addr=global.a.ipv4;
- SET_SOCKA_LEN4(sin.sin4);
- sinl=sizeof(struct sockaddr_in);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- if ((sock=socket(PF_INET6,SOCK_STREAM,IPPROTO_TCP))==-1) {
- log_error("Could not open tcp socket: %s",strerror(errno));
- return -1;
- }
- memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
- sin.sin6.sin6_family=AF_INET6;
- sin.sin6.sin6_port=htons(global.port);
- sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
- sin.sin6.sin6_addr=global.a.ipv6;
- SET_SOCKA_LEN6(sin.sin6);
- sinl=sizeof(struct sockaddr_in6);
- }
-#endif
- {
- int so=1;
- /* The SO_REUSEADDR socket option tells the kernel that even if this port
- is busy (in the TIME_WAIT state), go ahead and reuse it anyway. If it
- is busy, but with another state, we should get an address already in
- use error. It is useful if pdnsd is shut down, and then restarted right
- away while sockets are still active on its port. There is a slight risk
- though. If unexpected data comes in, it may confuse pdnsd, but while
- this is possible, it is not likely.
- */
- if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&so,sizeof(so)))
- log_warn("Could not set options on tcp socket: %s",strerror(errno));
- }
- if (bind(sock,(struct sockaddr *)&sin,sinl)) {
- log_error("Could not bind tcp socket: %s",strerror(errno));
- close(sock);
- return -1;
- }
- return sock;
-}
-
-/*
- * Listen on the specified port for tcp connects and answer them (each in a new thread to be nonblocking)
- */
-void *tcp_server_thread(void *p)
-{
- int sock;
- pthread_t pt;
- int *csock;
-
- /* (void)p; */ /* To inhibit "unused variable" warning */
-
- THREAD_SIGINIT;
-
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- pdnsd_exit();
- }
- }
-
- sock=tcp_socket;
-
- if (listen(sock,5)) {
- if (++da_tcp_errs<=TCP_MAX_ERRS) {
- log_error("Could not listen on tcp socket: %s",strerror(errno));
- }
- goto close_sock_return;
- }
-
- while (1) {
- if (!(csock=(int *)pdnsd_malloc(sizeof(int)))) {
- if (++da_mem_errs<=MEM_MAX_ERRS) {
- log_error("Out of memory in request handling.");
- }
- break;
- }
- if ((*csock=accept(sock,NULL,0))==-1) {
- if (errno!=EINTR && ++da_tcp_errs<=TCP_MAX_ERRS) {
- log_error("tcp accept failed: %s",strerror(errno));
- }
- } else {
- /*
- * With creating a new thread, we follow recommendations
- * in rfc1035 not to block
- */
- pthread_mutex_lock(&proc_lock);
- if (qprocs<global.proc_limit+global.procq_limit) {
- int err;
- ++qprocs; ++spawned;
- pthread_mutex_unlock(&proc_lock);
- err=pthread_create(&pt,&attr_detached,tcp_answer_thread,(void *)csock);
- if(err==0)
- continue;
- if(++da_thrd_errs<=THRD_MAX_ERRS)
- log_warn("pthread_create failed: %s",strerror(err));
- /* If thread creation failed, free resources associated with it. */
- pthread_mutex_lock(&proc_lock);
- --qprocs; --spawned;
- }
- ++dropped;
- pthread_mutex_unlock(&proc_lock);
- close(*csock);
- }
- pdnsd_free(csock);
- usleep_r(50000);
- }
- close_sock_return:
- tcp_socket=-1;
- close(sock);
- tcps_thrid=main_thrid;
- if (udp_socket==-1)
- pdnsd_exit();
- return NULL;
-}
-#endif
-
-/*
- * Starts the tcp server thread and the udp server thread. Both threads
- * are not terminated, so only a signal can interrupt the server.
- */
-void start_dns_servers()
-{
-
-#ifndef NO_TCP_SERVER
- if (tcp_socket!=-1) {
- pthread_t tcps;
-
- if (pthread_create(&tcps,&attr_detached,tcp_server_thread,NULL)) {
- log_error("Could not create TCP server thread. Exiting.");
- pdnsd_exit();
- } else {
- tcps_thrid=tcps;
- log_info(2,"TCP server thread started.");
- }
- }
-#endif
-
- if (udp_socket!=-1) {
- pthread_t udps;
-
- if (pthread_create(&udps,&attr_detached,udp_server_thread,NULL)) {
- log_error("Could not create UDP server thread. Exiting.");
- pdnsd_exit();
- } else {
- udps_thrid=udps;
- log_info(2,"UDP server thread started.");
- }
- }
-}
-
-
-/* Report the thread status to the file descriptor f, for the status fifo (see status.c) */
-int report_thread_stat(int f)
-{
- unsigned long nspawned,ndropped;
- int nactive,ncurrent,nqueued;
-
- /* The thread counters are volatile, so we will make copies
- under locked conditions to make sure we get consistent data.
- */
- pthread_mutex_lock(&proc_lock);
- nspawned=spawned; ndropped=dropped;
- nactive=procs; ncurrent=qprocs;
- nqueued=ncurrent-nactive;
- pthread_mutex_unlock(&proc_lock);
-
- fsprintf_or_return(f,"\nThread status:\n==============\n");
- if(!pthread_equal(servstat_thrid,main_thrid))
- fsprintf_or_return(f,"server status thread is running.\n");
- if(!pthread_equal(statsock_thrid,main_thrid))
- fsprintf_or_return(f,"pdnsd control thread is running.\n");
- if(!pthread_equal(tcps_thrid,main_thrid))
- fsprintf_or_return(f,"tcp server thread is running.\n");
- if(!pthread_equal(udps_thrid,main_thrid))
- fsprintf_or_return(f,"udp server thread is running.\n");
- fsprintf_or_return(f,"%lu query threads spawned in total (%lu queries dropped).\n",
- nspawned,ndropped);
- fsprintf_or_return(f,"%i running query threads (%i active, %i queued).\n",
- ncurrent,nactive,nqueued);
- return 0;
-}
-
diff --git a/jni/pdnsd/src/dns_answer.h b/jni/pdnsd/src/dns_answer.h
deleted file mode 100644
index 9d67b5b..0000000
--- a/jni/pdnsd/src/dns_answer.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* dns_answer.h - Receive and process icoming dns queries.
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2005 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_ANSWER_H
-#define DNS_ANSWER_H
-
-#include <config.h>
-
-/* --- from main.c */
-extern pthread_t main_thrid,servstat_thrid,statsock_thrid,tcps_thrid,udps_thrid;
-extern volatile int tcp_socket;
-extern volatile int udp_socket;
-/* --- */
-
-int init_udp_socket(void);
-int init_tcp_socket(void);
-void start_dns_servers(void);
-int report_thread_stat(int f);
-
-#endif
diff --git a/jni/pdnsd/src/dns_query.c b/jni/pdnsd/src/dns_query.c
deleted file mode 100644
index 0b6c9c0..0000000
--- a/jni/pdnsd/src/dns_query.c
+++ /dev/null
@@ -1,3798 +0,0 @@
-/* dns_query.c - Execute outgoing dns queries and write entries to cache
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <stdlib.h>
-#include <netdb.h>
-#include <errno.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include "list.h"
-#include "consts.h"
-#include "ipvers.h"
-#include "dns_query.h"
-#include "cache.h"
-#include "dns.h"
-#include "conff.h"
-#include "servers.h"
-#include "helpers.h"
-#include "netdev.h"
-#include "error.h"
-#include "debug.h"
-
-
-#if defined(NO_TCP_QUERIES) && M_PRESET!=UDP_ONLY
-# error "You may not define NO_TCP_QUERIES when M_PRESET is not set to UDP_ONLY"
-#endif
-#if defined(NO_UDP_QUERIES) && M_PRESET!=TCP_ONLY
-# error "You may not define NO_UDP_QUERIES when M_PRESET is not set to TCP_ONLY"
-#endif
-
-/* data type to hold lists of IP addresses (both v4 and v6)
- The allocated size should be:
- sizeof(rejectlist_t) + na4*sizeof(addr4maskpair_t) + na6*sizeof(addr6maskpair_t)
-*/
-typedef struct rejectlist_s {
- struct rejectlist_s *next;
- short policy;
- short inherit;
- int na4;
-#if ALLOW_LOCAL_AAAA
- int na6;
- addr6maskpair_t rdata[0]; /* dummy array for alignment */
-#else
- addr4maskpair_t rdata[0];
-#endif
-} rejectlist_t;
-
-/* --- structures and state constants for parallel query */
-typedef struct {
- union {
-#ifdef ENABLE_IPV4
- struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#endif
- } a;
-#ifdef ENABLE_IPV6
- struct in_addr a4fallback;
-#endif
- time_t timeout;
- unsigned short flags;
- short state;
- short qm;
- char nocache;
- char auth_serv;
- char lean_query;
- char edns_query;
- char needs_testing;
- char trusted;
- char aa;
- char tc;
- char ra;
- char failed;
- const unsigned char *nsdomain;
- rejectlist_t *rejectlist;
- /* internal state for p_exec_query */
- int sock;
-#if 0
- dns_cent_t nent;
- dns_cent_t servent;
-#endif
- unsigned short transl;
- unsigned short recvl;
-#ifndef NO_TCP_QUERIES
- int iolen; /* number of bytes written or read up to now */
-#endif
- dns_msg_t *msg;
- dns_hdr_t *recvbuf;
- unsigned short myrid;
- int s_errno;
-} query_stat_t;
-typedef DYNAMIC_ARRAY(query_stat_t) *query_stat_array;
-
-/* Some macros for handling data in reject lists
- Perhaps we should use inline functions instead of macros.
-*/
-#define have_rejectlist(st) ((st)->rejectlist!=NULL)
-#define inherit_rejectlist(st) ((st)->rejectlist && (st)->rejectlist->inherit)
-#define reject_policy(st) ((st)->rejectlist->policy)
-#define nreject_a4(st) ((st)->rejectlist->na4)
-#if ALLOW_LOCAL_AAAA
-#define nreject_a6(st) ((st)->rejectlist->na6)
-#define rejectlist_a6(st) ((addr6maskpair_t *)(st)->rejectlist->rdata)
-#define rejectlist_a4(st) ((addr4maskpair_t *)(rejectlist_a6(st)+nreject_a6(st)))
-#else
-#define rejectlist_a4(st) ((addr4maskpair_t *)(st)->rejectlist->rdata)
-#endif
-
-#define QS_INITIAL 0 /* This is the initial state. Set this before starting. */
-
-#define QS_TCPINITIAL 1 /* Start a TCP query. */
-#define QS_TCPWRITE 2 /* Waiting to write data. */
-#define QS_TCPREAD 3 /* Waiting to read data. */
-
-#define QS_UDPINITIAL 4 /* Start a UDP query */
-#define QS_UDPRECEIVE 5 /* UDP query transmitted, waiting for response. */
-
-#define QS_QUERY_CASES case QS_TCPINITIAL: case QS_TCPWRITE: case QS_TCPREAD: case QS_UDPINITIAL: case QS_UDPRECEIVE
-
-#define QS_CANCELED 7 /* query was started, but canceled before completion */
-#define QS_DONE 8 /* done, resources freed, result is in stat_t */
-
-
-/* Events to be polled/selected for */
-#define QS_WRITE_CASES case QS_TCPWRITE
-#define QS_READ_CASES case QS_TCPREAD: case QS_UDPRECEIVE
-
-/*
- * This is for error handling to prevent spewing the log files.
- * Races do not really matter here, so no locks.
- */
-#define MAXPOLLERRS 10
-static volatile unsigned long poll_errs=0;
-
-#define SOCK_ADDR(p) ((struct sockaddr *) &(p)->a)
-
-#ifdef SIN_LEN
-#undef SIN_LEN
-#endif
-
-#define SIN_LEN SEL_IPVER(sizeof(struct sockaddr_in),sizeof(struct sockaddr_in6))
-#define PDNSD_A(p) SEL_IPVER(((pdnsd_a *) &(p)->a.sin4.sin_addr),((pdnsd_a *) &(p)->a.sin6.sin6_addr))
-
-#ifndef EWOULDBLOCK
-#define EWOULDBLOCK EAGAIN
-#endif
-
-typedef DYNAMIC_ARRAY(dns_cent_t) *dns_cent_array;
-
-
-/*
- * Take the data from an RR and add it to an array of cache entries.
- * The return value will be RC_OK in case of success,
- * RC_SERVFAIL in case there is a problem with inconsistent ttl timestamps
- * or RC_FATALERR in case of a memory allocation failure.
- */
-static int rr_to_cache(dns_cent_array *centa, unsigned char *oname, int tp, time_t ttl,
- unsigned dlen, void *data, unsigned flags, time_t queryts)
-{
- int i,n;
- dns_cent_t *cent;
-
- n=DA_NEL(*centa);
- for(i=0;i<n;++i) {
- cent=&DA_INDEX(*centa,i);
- if (rhnicmp(cent->qname,oname)) {
- int retval=RC_OK;
- /* We already have an entry in the array for this name. add_cent_rr is sufficient.
- However, make sure there are no double records. This is done by add_cent_rr */
-#ifdef RFC2181_ME_HARDER
- rr_set_t *rrset= getrrset(cent,tp);
- if (rrset && rrset->ttl!=ttl)
- retval= RC_SERVFAIL;
-#endif
- return add_cent_rr(cent,tp,ttl,queryts,flags,dlen,data DBG1)? retval: RC_FATALERR;
- }
- }
-
- /* Add a new entry to the array for this name. */
- if (!(*centa=DA_GROW1_F(*centa,free_cent0)))
- return RC_FATALERR;
- cent=&DA_LAST(*centa);
- if (!init_cent(cent,oname, 0, 0, 0 DBG1)) {
- *centa=DA_RESIZE(*centa,n);
- return RC_FATALERR;
- }
- return add_cent_rr(cent,tp,ttl,queryts,flags,dlen,data DBG1)? RC_OK: RC_FATALERR;
-}
-
-/*
- * Takes a pointer (ptr) to a buffer with recnum rrs,decodes them and enters
- * them into an array of cache entries. *ptr is modified to point after the last
- * rr, and *lcnt is decremented by the size of the rrs.
- *
- * *numopt is incremented with the number of OPT pseudo RRs found (should be at most one).
- * The structure pointed to by ep is filled with the information of the first OPT pseudo RR found,
- * but only if *numopt was set to zero before the call.
- *
- * The return value will be either RC_OK (which indicates success),
- * or one of the failure codes RC_FORMAT, RC_TRUNC, RC_SERVFAIL or RC_FATALERR
- * (the latter indicates a memory allocation failure).
-*/
-static int rrs2cent(unsigned char *msg, size_t msgsz, unsigned char **ptr, size_t *lcnt, int recnum,
- unsigned flags, time_t queryts, dns_cent_array *centa, int *numopt, edns_info_t *ep)
-{
- int rc, retval=RC_OK;
- int i;
- uint16_t type,class; uint32_t ttl; uint16_t rdlength;
-
- for (i=0;i<recnum;i++) {
- unsigned char oname[DNSNAMEBUFSIZE], *ttlp;
- unsigned int len;
- if ((rc=decompress_name(msg, msgsz, ptr, lcnt, oname, &len))!=RC_OK) {
- return rc;
- }
- if (*lcnt<sizeof_rr_hdr_t) {
- return RC_TRUNC;
- }
- *lcnt -= sizeof_rr_hdr_t;
- GETINT16(type,*ptr);
- GETINT16(class,*ptr);
- ttlp= *ptr; /* Remember pointer to ttl field. */
- GETINT32(ttl,*ptr);
- GETINT16(rdlength,*ptr);
- if (*lcnt<rdlength) {
- return RC_TRUNC;
- }
-
- if(type==T_OPT) {
- /* Found OPT pseudo-RR */
- if((*numopt)++ == 0) {
-#if DEBUG>0
- if(oname[0]!=0) {
- DEBUG_MSG("rrs2cent: name in OPT record not empty!\n");
- }
-#endif
- ep->udpsize= class;
- ep->rcode= ((uint16_t)ttlp[0]<<4) | ((dns_hdr_t *)msg)->rcode;
- ep->version= ttlp[1];
- ep->do_flg= (ttlp[2]>>7)&1;
-#if DEBUG>0
- if(debug_p) {
- unsigned int Zflags= ((uint16_t)ttlp[2]<<8) | ttlp[3];
- if(Zflags & 0x7fff) {
- DEBUG_MSG("rrs2cent: Z field contains unknown nonzero bits (%04x).\n",
- Zflags);
- }
- }
- if(rdlength) {
- DEBUG_MSG("rrs2cent: RDATA field in OPT record not empty!\n");
- }
-#endif
- }
- else {
- DEBUG_MSG("rrs2cent: ingnoring surplus OPT record.\n");
- }
- }
- else if (!(PDNSD_NOT_CACHED_TYPE(type) || class!=C_IN)) {
- /* Some types contain names that may be compressed, so these need to be processed.
- * The other records are taken as they are. */
-
- size_t blcnt=rdlength;
- unsigned char *bptr=*ptr; /* make backup for decompression, because rdlength is the
- authoritative record length and pointer and size will be
- modified by decompress_name. */
- unsigned char *nptr;
- unsigned int slen;
-
- switch (type) {
- case T_A:
- /* Validate types we use internally */
- if(rdlength!=4) goto invalid_length;
- goto default_case;
-
- case T_CNAME:
- case T_MB:
- case T_MD:
- case T_MF:
- case T_MG:
- case T_MR:
- case T_NS:
- case T_PTR:
- {
- unsigned char db[DNSNAMEBUFSIZE];
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, db, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, len, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
- case T_MINFO:
-#endif
-#if IS_CACHED_RP
- case T_RP:
-#endif
- {
- unsigned char db[DNSNAMEBUFSIZE+DNSNAMEBUFSIZE];
- nptr=db;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_MINFO/T_RP: buffer limit reached"); */
- nptr+=len;
- slen=len;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /*nptr+=len;*/
- slen+=len;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
- case T_MX:
-#if IS_CACHED_AFSDB
- case T_AFSDB:
-#endif
-#if IS_CACHED_RT
- case T_RT:
-#endif
-#if IS_CACHED_KX
- case T_KX:
-#endif
- {
- unsigned char db[2+DNSNAMEBUFSIZE];
- if (blcnt<2)
- goto record_too_short;
- memcpy(db,bptr,2); /* copy the preference field*/
- blcnt-=2;
- bptr+=2;
- nptr=db+2;
- slen=2;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /*nptr+=len;*/
- slen+=len;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-
- case T_SOA:
- {
- unsigned char db[DNSNAMEBUFSIZE+DNSNAMEBUFSIZE+20];
- nptr=db;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_SOA: buffer limit reached"); */
- nptr+=len;
- slen=len;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- nptr+=len;
- slen+=len;
- /* PDNSD_ASSERT(slen + 20 <= sizeof(db), "T_SOA: buffer limit reached"); */
- if (blcnt<20)
- goto record_too_short;
- memcpy(nptr,bptr,20); /*copy the rest of the SOA record*/
- blcnt-=20;
- slen+=20;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#if IS_CACHED_AAAA
- case T_AAAA:
- /* Validate types we use internally */
- if(rdlength!=16) goto invalid_length;
- goto default_case;
-#endif
-#if IS_CACHED_PX
- case T_PX:
- {
- unsigned char db[2+DNSNAMEBUFSIZE+DNSNAMEBUFSIZE];
- if (blcnt<2)
- goto record_too_short;
- memcpy(db,bptr,2); /* copy the preference field*/
- blcnt-=2;
- bptr+=2;
- nptr=db+2;
- slen=2;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_PX: buffer limit reached"); */
- nptr+=len;
- slen+=len;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /* nptr+=len; */
- slen+=len;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
-#if IS_CACHED_SRV
- case T_SRV:
- {
- unsigned char db[6+DNSNAMEBUFSIZE];
- if (blcnt<6)
- goto record_too_short;
- memcpy(db,bptr,6);
- blcnt-=6;
- bptr+=6;
- nptr=db+6;
- slen=6;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /*nptr+=len;*/
- slen+=len;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
-#if IS_CACHED_NXT
- case T_NXT:
- {
- unsigned char db[1040];
- nptr=db;
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- nptr+=len;
- slen=len+blcnt;
- if (slen > sizeof(db))
- goto buffer_overflow;
- memcpy(nptr,bptr,blcnt);
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
-#if IS_CACHED_NAPTR
- case T_NAPTR:
- {
- int j;
- unsigned char db[4 + 3*256 + DNSNAMEBUFSIZE];
- nptr=db;
- /*
- * After the preference field, three text strings follow, the maximum length being 255
- * characters for each (this is ensured by the type of *bptr), plus one length byte for
- * each, so 3 * 256 = 786 in total. In addition, the name below is up to DNSNAMEBUFSIZE characters
- * in size, and the preference field is another 4 bytes in size, so the total length
- * that can be taken up is 1028 characters. This means that the whole record will always
- * fit into db.
- */
- len=4; /* also copy the preference field*/
- for (j=0;j<3;j++) {
- if (len>=blcnt)
- goto record_too_short;
- len += ((unsigned)bptr[len])+1;
- }
- if(len>blcnt)
- goto record_too_short;
- memcpy(nptr,bptr,len);
- blcnt-=len;
- bptr+=len;
- nptr+=len;
- slen=len;
-
- /* PDNSD_ASSERT(slen+DNSNAMEBUFSIZE <= sizeof(db), "T_NAPTR: buffer limit reached (name)"); */
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- /*nptr+=len;*/
- slen+=len;
- if (blcnt!=0)
- goto trailing_junk;
- if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
-#if IS_CACHED_IPSECKEY
- case T_IPSECKEY:
- {
- unsigned gwtp;
- /* An IPSECKEY record can contain a domain name, so we do some sanity checks just to be sure. */
- if(blcnt<3) goto record_too_short;
- gwtp= bptr[1];
- blcnt -= 3;
- bptr += 3;
- switch(gwtp) {
- case 0: goto default_case;
- case 1: /* There should be enough room for IPv4 address. */
- if(blcnt<4) goto record_too_short;
- goto default_case;
- case 2: /* There should be enough room for IPv6 address. */
- if(blcnt<16) goto record_too_short;
- goto default_case;
- case 3: /* Check that domain name is not compressed. */
- if(isnormalencdomname(bptr,blcnt)) goto default_case;
- /* It appears the name is compressed even though RFC 4025
- says it shouldn't be. For the sake of flexibility, we
- try to decompress it anyway. */
- {
- unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- slen=3+len+blcnt;
- rbuf=malloc(slen);
- if(!rbuf) return RC_FATALERR;
- nptr=mempcpy(rbuf,*ptr,3);
- nptr=mempcpy(nptr,nmbuf,len);
- memcpy(nptr,bptr,blcnt);
- rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
- free(rbuf);
- if(rc!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
- default:
- DEBUG_MSG("rrs2cent: %s record contains unsupported gateway type (%u).\n",getrrtpname(type),gwtp);
- return RC_FORMAT;
- }
- }
- break;
-#endif
-#if IS_CACHED_RRSIG
- case T_RRSIG:
- /* An RRSIG record contains a domain name, so we do some sanity checks just to be sure. */
- if(blcnt<18) goto record_too_short;
- blcnt -= 18;
- bptr += 18;
- if(isnormalencdomname(bptr,blcnt)) goto default_case;
- /* It appears the name is compressed even though RFC 4034
- says it shouldn't be. For the sake of flexibility, we
- try to decompress it anyway. */
- {
- unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- slen=18+len+blcnt;
- rbuf=malloc(slen);
- if(!rbuf) return RC_FATALERR;
- nptr=mempcpy(rbuf,*ptr,18);
- nptr=mempcpy(nptr,nmbuf,len);
- memcpy(nptr,bptr,blcnt);
- rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
- free(rbuf);
- if(rc!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
-#if IS_CACHED_NSEC
- case T_NSEC:
- /* An NSEC record contains a domain name, so we do some sanity checks just to be sure. */
- if(isnormalencdomname(bptr,blcnt)) goto default_case;
- /* It appears the name is compressed even though RFC 4034
- says it shouldn't be. For the sake of flexibility, we
- try to decompress it anyway. */
- {
- unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
- if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
- return rc==RC_TRUNC?RC_FORMAT:rc;
- slen=len+blcnt;
- rbuf=malloc(slen);
- if(!rbuf) return RC_FATALERR;
- nptr=mempcpy(rbuf,nmbuf,len);
- memcpy(nptr,bptr,blcnt);
- rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
- free(rbuf);
- if(rc!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- break;
-#endif
- default:
- default_case:
- if ((rc=rr_to_cache(centa, oname, type, ttl, rdlength, *ptr, flags,queryts))!=RC_OK) {
- if(rc==RC_FATALERR)
- return rc;
- retval=rc;
- }
- }
- }
- else {
- /* skip otherwise */
- DEBUG_MSG("rrs2cent: ignoring record of type %s (%d), class %s (%d).\n",
- getrrtpname(type), type,
- class==C_IN?"IN":"[unknown]", class);
- }
-
- *lcnt -= rdlength;
- *ptr += rdlength;
- }
- return retval;
-
- trailing_junk:
- DEBUG_MSG("rrs2cent: %s record has trailing junk.\n",getrrtpname(type));
- return RC_FORMAT;
-
- record_too_short:
- DEBUG_MSG("rrs2cent: %s record too short.\n",getrrtpname(type));
- return RC_FORMAT;
-
- buffer_overflow:
- DEBUG_MSG("rrs2cent: buffer too small to process %s record.\n",getrrtpname(type));
- return RC_FORMAT;
-
- invalid_length:
- DEBUG_MSG("rrs2cent: %s record has length %u.\n",getrrtpname(type),rdlength);
- return RC_FORMAT;
-}
-
-/*
- * Try to bind the socket to a port in the given port range. Returns 1 on success, or 0 on failure.
- */
-static int bind_socket(int s)
-{
- int query_port_start=global.query_port_start,query_port_end=global.query_port_end;
-
- /*
- * -1, as a special value for query_port_start, denotes that we let the kernel select
- * a port when we first use the socket, which used to be the default.
- */
- if (query_port_start >= 0) {
- union {
-#ifdef ENABLE_IPV4
- struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#endif
- } sin;
- socklen_t sinl;
- int prt, pstart, range = query_port_end-query_port_start+1, m=0xffff;
- unsigned try1,try2, maxtry2;
-
- if (range<=0 || range>0x10000) {
- log_warn("Illegal port range in %s line %d, dropping query!\n",__FILE__,__LINE__);
- return 0;
- }
- if(range<=0x8000) {
- /* Find the smallest power of 2 >= range. */
- for(m=1; m<range; m <<= 1);
- /* Convert into a bit mask. */
- --m;
- }
-
- for (try2=0,maxtry2=range*2;;) {
- /* Get a random number < range, by rejecting those >= range. */
- for(try1=0;;) {
- prt= get_rand16()&m;
- if(prt<range) break;
- if(++try1>=0x10000) {
- log_warn("Cannot get random number < range"
- " after %d tries in %s line %d,"
- " bad random number generator?\n",
- try1,__FILE__,__LINE__);
- return 0;
- }
- }
- prt += query_port_start;
-
- for(pstart=prt;;) {
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- memset(&sin.sin4,0,sizeof(struct sockaddr_in));
- sin.sin4.sin_family=AF_INET;
- sin.sin4.sin_port=htons(prt);
- sin.sin4.sin_addr=global.out_a.ipv4;
- SET_SOCKA_LEN4(sin.sin4);
- sinl=sizeof(struct sockaddr_in);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
- sin.sin6.sin6_family=AF_INET6;
- sin.sin6.sin6_port=htons(prt);
- sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
- sin.sin6.sin6_addr=global.out_a.ipv6;
- SET_SOCKA_LEN6(sin.sin6);
- sinl=sizeof(struct sockaddr_in6);
- }
-#endif
- if (bind(s,(struct sockaddr *)&sin,sinl)==-1) {
- if (errno!=EADDRINUSE &&
- errno!=EADDRNOTAVAIL) { /* EADDRNOTAVAIL should not happen here... */
- log_warn("Could not bind to socket: %s\n", strerror(errno));
- return 0;
- }
- /* If the address is in use, we continue. */
- } else
- goto done;
-
- if(++try2>=maxtry2) {
- /* It is possible we missed the free ports by chance,
- try scanning the whole range. */
- if (++prt>query_port_end)
- prt=query_port_start;
- if (prt==pstart) {
- /* Wrapped around, scanned the whole range. Give up. */
- log_warn("Out of ports in the range"
- " %d-%d, dropping query!\n",
- query_port_start,query_port_end);
- return 0;
- }
- }
- else /* Try new random number */
- break;
- }
- }
- }
-done:
- return 1;
-}
-
-
-inline static void *realloc_or_cleanup(void *ptr,size_t size)
-{
- void *retval=pdnsd_realloc(ptr,size);
- if(!retval)
- pdnsd_free(ptr);
- return retval;
-}
-
-#if defined(NO_TCP_QUERIES)
-# define USE_UDP(st) 1
-#elif defined(NO_UDP_QUERIES)
-# define USE_UDP(st) 0
-#else /* !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES) */
-# define USE_UDP(st) ((st)->qm==UDP_ONLY || (st)->qm==UDP_TCP)
-
-/* These functions will be used in case a TCP query might fail and we want to try again using UDP. */
-
-# define tentative_tcp_query(st) ((st)->qm==TCP_UDP && ((st)->state==QS_TCPWRITE || ((st)->state==QS_TCPREAD && (st)->iolen==0)))
-
-inline static void switch_to_udp(query_stat_t *st)
-{
- st->qm=UDP_ONLY;
- st->myrid=get_rand16();
- st->msg->hdr.id=htons(st->myrid);
- st->state=QS_UDPINITIAL;
- /* st->failed=0; */
-}
-
-/* This function will be used in case a UDP reply was truncated and we want to try again using TCP. */
-
-inline static void switch_to_tcp(query_stat_t *st)
-{
- /* PDNSD_ASSERT(st->state==QS_INITIAL || st->state==QS_DONE || st->state==QS_CANCELED,
- "Attempt to switch to TCP while a query is in progress."); */
- st->qm=TCP_ONLY;
- st->state=QS_INITIAL;
- st->failed=0;
-}
-#endif
-
-
-/* ------ following is the parallel query code.
- * It has been observed that a whole lot of name servers are just damn lame, with response time
- * of about 1 min. If that slow one is by chance the first server we try, serializing the tries is quite
- * sub-optimal. Also when doing serial queries, the timeout values given in the config will add up, which
- * is not the Right Thing. Now that serial queries are in place, this is still true for CNAME recursion,
- * and for recursion in quest for the holy AA, but not totally for querying multiple servers.
- * The impact on network bandwith should be only marginal (given todays bandwith).
- *
- * The actual strategy is to do (max) PAR_QUERIES parallel queries, and, if these time out or fail, do again
- * that number of queries, until we are successful or there are no more servers to query.
- * Since the memory footprint of a thread is considerably large on some systems, and because we have better
- * control, we will do the parallel queries multiplexed in one thread.
- */
-
-/* The query state machine that is called from p_exec_query. This is called once for initialization (state
- * QS_TCPINITIAL or QS_UDPINITIAL is preset), and the state that it gives back may either be state QS_DONE,
- * in which case it must return a return code other than -1 and is called no more for this server
- * (except perhaps in UDP mode if TCP failed). If p_query_sm returns -1, then the state machine is in a read
- * or write state, and a function higher up the calling chain can setup a poll() or select() together with st->sock.
- * If that poll/select is succesful for that socket, p_exec_query is called again and will hand over to p_query_sm.
- * So, you can assume that read(), write() and recvfrom() will not block at the start of a state handling when you
- * have returned -1 (which means "call again") as last step of the last state handling. */
-static int p_query_sm(query_stat_t *st)
-{
- int retval=RC_SERVFAIL,rv;
-
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- tryagain:
-#endif
- switch (st->state){
- /* TCP query code */
-#ifndef NO_TCP_QUERIES
- case QS_TCPINITIAL:
- if ((st->sock=socket(PDNSD_PF_INET,SOCK_STREAM,IPPROTO_TCP))==-1) {
- DEBUG_MSG("Could not open socket: %s\n", strerror(errno));
- break;
- }
- /* sin4 or sin6 is intialized, hopefully. */
-
- /* maybe bind */
- if (!bind_socket(st->sock)) {
- close(st->sock);
- break;
- }
-
- /* transmit query by tcp*/
- /* make the socket non-blocking */
- {
- int oldflags = fcntl(st->sock, F_GETFL, 0);
- if (oldflags == -1 || fcntl(st->sock,F_SETFL,oldflags|O_NONBLOCK)==-1) {
- DEBUG_PDNSDA_MSG("fcntl error while trying to make socket to %s non-blocking: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
- close(st->sock);
- break;
- }
- }
- st->iolen=0;
-#ifdef ENABLE_IPV6
- retry_tcp_connect:
-#endif
- if (connect(st->sock,SOCK_ADDR(st),SIN_LEN)==-1) {
- if (errno==EINPROGRESS || errno==EPIPE) {
- st->state=QS_TCPWRITE;
- /* st->event=QEV_WRITE; */ /* wait for writability; the connect is then done */
- return -1;
- } else if (errno==ECONNREFUSED) {
- st->s_errno=errno;
- DEBUG_PDNSDA_MSG("TCP connection refused by %s\n", PDNSDA2STR(PDNSD_A(st)));
- close(st->sock);
- goto tcp_failed; /* We may want to try again using UDP */
- } else {
- /* Since immediate connect() errors do not cost any time, we do not try to switch the
- * server status to offline */
-#ifdef ENABLE_IPV6
- /* if IPv6 connectivity is for some reason unavailable, perhaps the
- IPv4 fallback address can still be reached. */
- if(!run_ipv4 && (errno==ENETUNREACH || errno==ENETDOWN)
- && st->a4fallback.s_addr!=INADDR_ANY)
- {
-#if DEBUG>0
- char abuf[ADDRSTR_MAXLEN];
- DEBUG_PDNSDA_MSG("Connecting to %s failed: %s, retrying with IPv4 address %s\n",
- PDNSDA2STR(PDNSD_A(st)),strerror(errno),
- inet_ntop(AF_INET,&st->a4fallback,abuf,sizeof(abuf)));
-#endif
- IPV6_MAPIPV4(&st->a4fallback,&st->a.sin6.sin6_addr);
- st->a4fallback.s_addr=INADDR_ANY;
- goto retry_tcp_connect;
- }
-#endif
- DEBUG_PDNSDA_MSG("Error while connecting to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
- close(st->sock);
- break;
- }
- }
- st->state=QS_TCPWRITE;
- /* st->event=QEV_WRITE; */
- /* fall through in case of not EINPROGRESS */
- case QS_TCPWRITE:
- {
- int rem= dnsmsghdroffset + st->transl - st->iolen;
- if(rem>0) {
- rv=write(st->sock,((unsigned char*)st->msg)+st->iolen,rem);
- if(rv==-1) {
- if(errno==EWOULDBLOCK)
- return -1;
- st->s_errno=errno;
- close(st->sock);
- if (st->iolen==0 &&
- (st->s_errno==ECONNREFUSED || st->s_errno==ECONNRESET ||
- st->s_errno==EPIPE))
- {
- /* This error may be delayed from connect() */
- DEBUG_PDNSDA_MSG("TCP connection to %s failed: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(st->s_errno));
- goto tcp_failed; /* We may want to try again using UDP */
- }
- DEBUG_PDNSDA_MSG("Error while sending data to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(st->s_errno));
- break;
- }
- st->iolen += rv;
- if(rv<rem)
- return -1;
- }
- }
- st->state=QS_TCPREAD;
- st->iolen=0;
- /* st->event=QEV_READ; */
- /* fall through */
- case QS_TCPREAD:
- if(st->iolen==0) {
- uint16_t recvl_net;
- rv=read(st->sock,&recvl_net,sizeof(recvl_net));
- if(rv==-1 && errno==EWOULDBLOCK)
- return -1;
- if(rv!=sizeof(recvl_net))
- goto error_receiv_data;
- st->iolen=rv;
- st->recvl=ntohs(recvl_net);
- if(!(st->recvbuf=(dns_hdr_t *)realloc_or_cleanup(st->recvbuf,st->recvl))) {
- close(st->sock);
- DEBUG_MSG("Out of memory in query.\n");
- retval=RC_FATALERR;
- break;
- }
- }
- {
- int offset=st->iolen-sizeof(uint16_t);
- int rem=st->recvl-offset;
- if(rem>0) {
- rv=read(st->sock,((unsigned char*)st->recvbuf)+offset,rem);
- if(rv==-1) {
- if(errno==EWOULDBLOCK)
- return -1;
- goto error_receiv_data;
- }
- if(rv==0)
- goto error_receiv_data; /* unexpected EOF */
- st->iolen += rv;
- if(rv<rem)
- return -1;
- }
- }
- close(st->sock);
- st->state=QS_DONE;
- return RC_OK;
- error_receiv_data:
- if(rv==-1) st->s_errno=errno;
- DEBUG_PDNSDA_MSG("Error while receiving data from %s: %s\n", PDNSDA2STR(PDNSD_A(st)),
- rv==-1?strerror(errno):(rv==0 && st->iolen==0)?"no data":"incomplete data");
- close(st->sock);
- tcp_failed:
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- if(st->qm==TCP_UDP) {
- switch_to_udp(st);
- DEBUG_PDNSDA_MSG("TCP query to %s failed. Trying to use UDP.\n", PDNSDA2STR(PDNSD_A(st)));
- goto tryagain;
- }
-#endif
- break;
-#endif
-
-#ifndef NO_UDP_QUERIES
- /* UDP query code */
- case QS_UDPINITIAL:
- if ((st->sock=socket(PDNSD_PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) {
- DEBUG_MSG("Could not open socket: %s\n", strerror(errno));
- break;
- }
-
- /* maybe bind */
- if (!bind_socket(st->sock)) {
- close(st->sock);
- break;
- }
-
- /* connect */
-#ifdef ENABLE_IPV6
- retry_udp_connect:
-#endif
- if (connect(st->sock,SOCK_ADDR(st),SIN_LEN)==-1) {
- if (errno==ECONNREFUSED) st->s_errno=errno;
-#ifdef ENABLE_IPV6
- /* if IPv6 connectivity is for some reason unavailable, perhaps the
- IPv4 fallback address can still be reached. */
- else if(!run_ipv4 && (errno==ENETUNREACH || errno==ENETDOWN)
- && st->a4fallback.s_addr!=INADDR_ANY)
- {
-#if DEBUG>0
- char abuf[ADDRSTR_MAXLEN];
- DEBUG_PDNSDA_MSG("Connecting to %s failed: %s, retrying with IPv4 address %s\n",
- PDNSDA2STR(PDNSD_A(st)),strerror(errno),
- inet_ntop(AF_INET,&st->a4fallback,abuf,sizeof(abuf)));
-#endif
- IPV6_MAPIPV4(&st->a4fallback,&st->a.sin6.sin6_addr);
- st->a4fallback.s_addr=INADDR_ANY;
- goto retry_udp_connect;
- }
-#endif
- DEBUG_PDNSDA_MSG("Error while connecting to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
- close(st->sock);
- break;
- }
-
- /* transmit query by udp*/
- /* send will hopefully not block on a freshly opened socket (the buffer
- * must be empty) */
- if (send(st->sock,&st->msg->hdr,st->transl,0)==-1) {
- st->s_errno=errno;
- DEBUG_PDNSDA_MSG("Error while sending data to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
- close(st->sock);
- break;
- }
- st->state=QS_UDPRECEIVE;
- /* st->event=QEV_READ; */
- return -1;
- case QS_UDPRECEIVE:
- {
- int udpbufsize= (st->edns_query?global.udpbufsize:UDP_BUFSIZE);
- if(!(st->recvbuf=(dns_hdr_t *)realloc_or_cleanup(st->recvbuf,udpbufsize))) {
- close(st->sock);
- DEBUG_MSG("Out of memory in query.\n");
- retval=RC_FATALERR;
- break;
- }
- if ((rv=recv(st->sock,st->recvbuf,udpbufsize,0))==-1) {
- st->s_errno=errno;
- DEBUG_PDNSDA_MSG("Error while receiving data from %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
- close(st->sock);
- break;
- }
- st->recvl=rv;
- if (st->recvl<sizeof(dns_hdr_t) || ntohs(st->recvbuf->id)!=st->myrid) {
- DEBUG_MSG("Bad answer received. Ignoring it.\n");
- /* no need to care about timeouts here. That is done at an upper layer. */
- st->state=QS_UDPRECEIVE;
- /* st->event=QEV_READ; */
- return -1;
- }
- close(st->sock);
- st->state=QS_DONE;
- return RC_OK;
- }
-#endif
- }
-
- /* If we get here, something has gone wrong. */
- st->state=QS_DONE;
- return retval; /* should be either RC_SERVFAIL or RC_FATALERR */
-}
-
-static dns_cent_t *lookup_cent_array(dns_cent_array ca, const unsigned char *nm)
-{
- int i,n=DA_NEL(ca);
- for(i=0;i<n;++i) {
- dns_cent_t *ce=&DA_INDEX(ca,i);
- if(rhnicmp(ce->qname,nm))
- return ce;
- }
- return NULL;
-}
-
-/* Extract the minimum ttl field from the SOA record stored in an rr bucket. */
-static time_t soa_minimum(rr_bucket_t *rrs)
-{
- uint32_t minimum;
- unsigned char *p=(unsigned char *)(rrs->data);
-
- /* Skip owner and maintainer. Lengths are validated in cache. */
- p=skiprhn(skiprhn(p));
- /* Skip serial, refresh, retry, expire fields. */
- p += 4*sizeof(uint32_t);
- GETINT32(minimum,p);
- return minimum;
-}
-
-/*
- * The function that will actually execute a query. It takes a state structure in st.
- * st->state must be set to QS_INITIAL before calling.
- * This may return one of the RC_* codes, where RC_OK indicates success, the other
- * RC codes indicate the appropriate errors. -1 is the return value that indicates that
- * you should call p_exec_query again with the same state for the result until you get
- * a return value >0. Alternatively, call p_cancel_query to cancel it.
- * Timeouts are already handled by this function.
- * Any records that the query has yielded and that are not a direct answer to the query
- * (i.e. are records for other domains) are added to the cache, while the direct answers
- * are returned in ent.
- * All ns records, to whomever they might belong, are additionally returned in the ns list.
- * Free it when done.
- * This function calls another query state machine function that supports TCP and UDP.
- *
- * If you want to tell me that this function has a truly ugly coding style, ah, well...
- * You are right, somehow, but I feel it is conceptually elegant ;-)
- */
-static int p_exec_query(dns_cent_t **entp, const unsigned char *name, int thint,
- query_stat_t *st, dlist *ns, unsigned char *c_soa)
-{
- int rv,rcode;
- unsigned short rd;
-
- switch (st->state){
- case QS_INITIAL: {
- size_t transl,allocsz;
- unsigned int rrnlen=0;
-
- allocsz= sizeof(dns_msg_t);
- if(name) {
- rrnlen=rhnlen(name);
- allocsz += rrnlen+4;
- if(st->edns_query)
- allocsz += sizeof_opt_pseudo_rr;
- }
- st->msg=(dns_msg_t *)pdnsd_malloc(allocsz);
- if (!st->msg) {
- st->state=QS_DONE;
- return RC_FATALERR; /* unrecoverable error */
- }
- st->myrid=get_rand16();
- st->msg->hdr.id=htons(st->myrid);
- st->msg->hdr.qr=QR_QUERY;
- st->msg->hdr.opcode=OP_QUERY;
- st->msg->hdr.aa=0;
- st->msg->hdr.tc=0;
- st->msg->hdr.rd=(name && st->trusted);
- st->msg->hdr.ra=0;
- st->msg->hdr.z=0;
- st->msg->hdr.ad=0;
- st->msg->hdr.cd=0;
- st->msg->hdr.rcode=RC_OK;
- st->msg->hdr.qdcount=htons(name!=NULL);
- st->msg->hdr.ancount=0;
- st->msg->hdr.nscount=0;
- st->msg->hdr.arcount=0;
-
- transl= sizeof(dns_hdr_t);
- if(name) {
- unsigned char *p = mempcpy((unsigned char *)(&st->msg->hdr+1),name,rrnlen);
- unsigned short qtype=(st->lean_query?thint:QT_ALL);
- PUTINT16(qtype,p);
- PUTINT16(C_IN,p);
- transl += rrnlen+4;
- if(st->edns_query)
- add_opt_pseudo_rr(&st->msg,&transl,&allocsz,
- global.udpbufsize,RC_OK,0,0);
- }
- st->transl=transl;
-#ifndef NO_TCP_QUERIES
- st->msg->len=htons(st->transl);
-#endif
- st->recvbuf=NULL;
- st->state=(USE_UDP(st)?QS_UDPINITIAL:QS_TCPINITIAL);
- /* fall through */
- }
- QS_QUERY_CASES:
- tryagain:
- rv=p_query_sm(st);
- if (rv==-1) {
- return -1;
- }
- if (rv!=RC_OK) {
- pdnsd_free(st->msg);
- pdnsd_free(st->recvbuf);
- st->state=QS_DONE;
- if(st->needs_testing) {
- switch(st->s_errno) {
- case ENETUNREACH: /* network unreachable */
- case EHOSTUNREACH: /* host unreachable */
- case ENOPROTOOPT: /* protocol unreachable */
- case ECONNREFUSED: /* port unreachable */
- case ENETDOWN: /* network down */
- case EHOSTDOWN: /* host down */
-#ifdef ENONET
- case ENONET: /* machine not on the network */
-#endif
- /* Mark this server as down for a period of time */
- sched_server_test(PDNSD_A(st),1,0);
- st->needs_testing=0;
- }
- }
- return rv;
- }
- /* rv==RC_OK */
- DEBUG_PDNSDA_MSG("Received reply from %s (msg len=%u).\n", PDNSDA2STR(PDNSD_A(st)), st->recvl);
- DEBUG_DUMP_DNS_MSG(st->recvbuf, st->recvl);
-
- /* Basic sanity checks */
- if (st->recvl<sizeof(dns_hdr_t)) {
- DEBUG_MSG("Message too short!\n");
- goto discard_reply;
- }
- {
- uint16_t recvid=ntohs(st->recvbuf->id);
- if (recvid!=st->myrid) {
- DEBUG_MSG("ID mismatch: expected %04x, got %04x!\n", st->myrid, recvid);
- goto discard_reply;
- }
- }
- if (st->recvbuf->qr!=QR_RESP) {
- DEBUG_MSG("The QR bit indicates this is a query, not a response!\n");
- goto discard_reply;
- }
- if (st->recvbuf->opcode!=OP_QUERY) {
- DEBUG_MSG("Not a reply to a standard query (opcode=%u).\n",st->recvbuf->opcode);
- goto discard_reply;
- }
-
- rcode=st->recvbuf->rcode;
-#if DEBUG>0
- {
- char flgsbuf[DNSFLAGSMAXSTRSIZE];
- DEBUG_MSG("rcode=%u (%s), flags:%s\n", rcode, get_ename(rcode), dnsflags2str(st->recvbuf, flgsbuf));
- }
-#endif
- if (st->recvbuf->z!=0) {
- DEBUG_MSG("Malformed response (nonzero Z bit).\n");
- goto discard_reply;
- }
-
- if(st->needs_testing) {
- /* We got an answer from this server, so don't bother with up tests for a while. */
- sched_server_test(PDNSD_A(st),1,1);
- st->needs_testing=0;
- }
-
- rv=rcode;
- if(rcode==RC_OK || rcode==RC_NAMEERR) {
- /* success or at least no requery is needed */
- st->state=QS_DONE;
- break;
- }
- else if (entp) {
- if(rcode==RC_SERVFAIL || rcode==RC_NOTSUPP || rcode==RC_REFUSED) {
- if (st->msg->hdr.rd && !st->recvbuf->ra) {
- /* seems as if we have got no recursion available.
- We will have to do it by ourselves (sigh...) */
- DEBUG_PDNSDA_MSG("Server %s returned error code: %s."
- " Maybe does not support recursive query?"
- " Querying non-recursively.\n",
- PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
- st->msg->hdr.rd=0;
- goto resetstate_tryagain;
- }
- else if(rcode!=RC_SERVFAIL && st->edns_query && st->msg->hdr.arcount)
- goto try_withoutedns;
- else if (st->recvbuf->ancount && st->auth_serv==2) {
- /* The name server returned a failure code,
- but the answer section is not empty,
- and the answer is from a server lower down the call chain.
- Use this answer tentatively (it may be the
- best we can get), but remember the failure. */
- DEBUG_PDNSDA_MSG("Server %s returned error code: %s,"
- " but the answer section is not empty."
- " Using the answer tentatively.\n",
- PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
- st->failed=3;
- st->state=QS_DONE;
- break;
- }
- }
- else if(rcode==RC_FORMAT && st->edns_query && st->msg->hdr.arcount)
- try_withoutedns: {
- size_t transl;
- /* Perhaps the remote server barfs when the query
- contains an OPT RR in the additional section.
- Try again with an empty addtional section. */
- DEBUG_PDNSDA_MSG("Server %s returned error code: %s."
- " Maybe cannot handle EDNS?"
- " Querying with empty additional section.\n",
- PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
- transl=remove_opt_pseudo_rr(st->msg,st->transl);
- if(transl!=0 && st->msg->hdr.arcount==0) {
- st->transl=transl;
-#ifndef NO_TCP_QUERIES
- st->msg->len=htons(st->transl);
-#endif
- st->edns_query=0;
- resetstate_tryagain:
- st->myrid=get_rand16();
- st->msg->hdr.id=htons(st->myrid);
- st->state=(USE_UDP(st)?QS_UDPINITIAL:QS_TCPINITIAL);
- goto tryagain;
- }
- else {
- DEBUG_PDNSDA_MSG("Internal error: could not remove additional section from query"
- " to server %s\n", PDNSDA2STR(PDNSD_A(st)));
- }
- }
- }
-
- discard_reply:
- /* report failure */
- pdnsd_free(st->msg);
- pdnsd_free(st->recvbuf);
- /*close(st->sock);*/
- st->state=QS_DONE;
-#if DEBUG>0
- if(entp) {
- DEBUG_PDNSDA_MSG("Discarding reply from server %s\n", PDNSDA2STR(PDNSD_A(st)));
- }
-#endif
- if (rv!=RC_OK)
- return rv;
-
- return RC_SERVFAIL; /* mock error code */
-
- default: /* we shouldn't get here */
- st->state=QS_DONE;
- return RC_SERVFAIL; /* mock error code */
- }
-
- /* If we reach this code, we have successfully received an answer,
- * because we have returned error codes on errors or -1 on AGAIN conditions.
- * So we *should* have a usable dns record in recvbuf by now.
- */
- rd= st->msg->hdr.rd; /* Save the 'Recursion Desired' bit of the query. */
- pdnsd_free(st->msg);
- if(entp) {
- time_t queryts=time(NULL);
- size_t lcnt= ((size_t)st->recvl) - sizeof(dns_hdr_t);
- unsigned char *rrp=(unsigned char *)(st->recvbuf+1);
- dns_cent_array secs[3]={NULL,NULL,NULL};
-# define ans_sec secs[0]
-# define auth_sec secs[1]
-# define add_sec secs[2]
- unsigned short qtype,flags,aa,neg_ans=0,reject_ans=0,num_ns=0;
- int numoptrr;
- edns_info_t ednsinfo= {0};
-
- if (ntohs(st->recvbuf->qdcount)!=1) {
- DEBUG_PDNSDA_MSG("Bad number of query records in answer from %s\n",
- PDNSDA2STR(PDNSD_A(st)));
- rv=RC_SERVFAIL;
- goto free_recvbuf_return;
- }
- /* check & skip the query record. */
- {
- unsigned char nbuf[DNSNAMEBUFSIZE];
- if ((rv=decompress_name((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, nbuf, NULL))!=RC_OK) {
- DEBUG_PDNSDA_MSG("Cannot decompress QNAME in answer from %s\n",
- PDNSDA2STR(PDNSD_A(st)));
- rv=RC_SERVFAIL;
- goto free_recvbuf_return;
- }
- if(!rhnicmp(nbuf,name)) {
- DEBUG_PDNSDA_MSG("Answer from %s does not match query.\n",
- PDNSDA2STR(PDNSD_A(st)));
- rv=RC_SERVFAIL;
- goto free_recvbuf_return;
- }
- }
-
- qtype=(st->lean_query?thint:QT_ALL);
- if (lcnt<4) {
- DEBUG_PDNSDA_MSG("Format error in reply from %s (message truncated in qtype or qclass).\n",
- PDNSDA2STR(PDNSD_A(st)));
- rv=RC_SERVFAIL; /* mock error code */
- goto free_recvbuf_return;
- }
- {
- unsigned short qt,qc;
- GETINT16(qt,rrp);
- GETINT16(qc,rrp);
- if(qt!=qtype) {
- DEBUG_PDNSDA_MSG("qtype in answer (%u) from %s does not match expected qtype (%u).\n",
- qt,PDNSDA2STR(PDNSD_A(st)),qtype);
- rv=RC_SERVFAIL;
- goto free_recvbuf_return;
- }
- }
- lcnt-=4;
-
- st->aa= (st->recvbuf->aa && !st->failed);
- st->tc= st->recvbuf->tc;
- st->ra= (rd && st->recvbuf->ra);
-
- /* Don't flag cache entries from a truncated reply as authoritative. */
- aa= (st->aa && !st->tc);
- flags=st->flags;
- if (aa) flags|=CF_AUTH;
-
-
- /* Initialize a dns_cent_t in the array for the answer section */
- if (!(ans_sec=DA_GROW1(ans_sec))) {
- rv=RC_FATALERR; /* unrecoverable error */
- goto free_recvbuf_return;
- }
- /* By marking DF_AUTH, we mean authoritative AND complete. */
- if (!init_cent(&DA_INDEX(ans_sec,0), name, 0, 0, (aa && qtype==QT_ALL)?DF_AUTH:0 DBG1)) {
- rv=RC_FATALERR; /* unrecoverable error */
- goto free_centarrays_recvbuf_return;
- }
-
- /* Now read the answer, authority and additional sections,
- storing the results in the arrays ans_sec,auth_sec and add_sec.
- */
- numoptrr=0;
- rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, ntohs(st->recvbuf->ancount),
- flags, queryts, &ans_sec, &numoptrr, &ednsinfo);
-#if DEBUG>0
- if(numoptrr!=0) {
- DEBUG_MSG("Answer section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
- }
-#endif
- numoptrr=0;
- if(rv==RC_OK) {
- uint16_t nscount=ntohs(st->recvbuf->nscount);
- if (nscount) {
- rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, nscount,
- flags|CF_ADDITIONAL, queryts, &auth_sec, &numoptrr, &ednsinfo);
-#if DEBUG>0
- if(numoptrr!=0) {
- DEBUG_MSG("Authority section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
- }
-#endif
- }
- }
-
- numoptrr=0;
- if(rv==RC_OK) {
- uint16_t arcount=ntohs(st->recvbuf->arcount);
- if (arcount) {
- rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, arcount,
- flags|CF_ADDITIONAL, queryts, &add_sec, &numoptrr, &ednsinfo);
- if(numoptrr!=0) {
-#if DEBUG>0
- if(numoptrr!=1) {
- DEBUG_MSG("Additional section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
- }
- DEBUG_PDNSDA_MSG("Reply from %s contains OPT pseudosection: EDNS version = %u, udp size = %u, flag DO=%u\n",
- PDNSDA2STR(PDNSD_A(st)), ednsinfo.version, ednsinfo.udpsize, ednsinfo.do_flg);
-#endif
- if(rcode!=ednsinfo.rcode) {
- DEBUG_PDNSDA_MSG("Reply from %s contains unexpected EDNS rcode %u (%s)!\n",
- PDNSDA2STR(PDNSD_A(st)), ednsinfo.rcode, get_ename(ednsinfo.rcode));
- rcode=ednsinfo.rcode;
- /* Mark as failed, but use answer tentatively. */
- if(!st->failed) st->failed=1;
- }
- }
- }
- }
-
- if(!(rv==RC_OK || (rv==RC_TRUNC && st->recvbuf->tc))) {
- DEBUG_PDNSDA_MSG(rv==RC_FORMAT?"Format error in reply from %s.\n":
- rv==RC_TRUNC?"Format error in reply from %s (message unexpectedly truncated).\n":
- rv==RC_SERVFAIL?"Inconsistent timestamps in reply from %s.\n":
- "Out of memory while processing reply from %s.\n",
- PDNSDA2STR(PDNSD_A(st)));
- if(rv==RC_SERVFAIL) {
- /* Inconsistent ttl timestamps and we are
- enforcing strict RFC 2181 compliance.
- Mark as failed, but use answer tentatively. */
- if(!st->failed) st->failed=1;
- }
- else {
- if(rv!=RC_FATALERR) rv=RC_SERVFAIL;
- goto free_ent_centarrays_recvbuf_return;
- }
- }
-
- {
- /* Remember references to NS and SOA records in the answer or authority section
- so that we can add this information to our own reply. */
- int i,n=DA_NEL(ans_sec);
- for(i=0;i<n;++i) {
- dns_cent_t *cent=&DA_INDEX(ans_sec,i);
- unsigned scnt=rhnsegcnt(cent->qname);
-
- if(getrrset_NS(cent))
- cent->c_ns=scnt;
- if(getrrset_SOA(cent))
- cent->c_soa=scnt;
-
- if((qtype>=QT_MIN && qtype<=QT_MAX) ||
- (/* (qtype>=T_MIN && qtype<=T_MAX) && */ getrrset(cent,qtype)) ||
- (n==1 && cent->num_rrs==0))
- {
- /* Match this name with names in the authority section */
- int j,m=DA_NEL(auth_sec);
- for(j=0;j<m;++j) {
- dns_cent_t *ce=&DA_INDEX(auth_sec,j);
- unsigned int ml,rem;
- ml=domain_match(ce->qname,cent->qname, &rem, NULL);
- if(rem==0 &&
- /* Don't accept records for the root domain from name servers
- that were not listed in the configuration file. */
- (ml || st->auth_serv!=2)) {
- if(getrrset_NS(ce)) {
- if(cent->c_ns==cundef || cent->c_ns<ml)
- cent->c_ns=ml;
- }
- if(getrrset_SOA(ce)) {
- if(cent->c_soa==cundef || cent->c_soa<ml)
- cent->c_soa=ml;
- }
- }
- }
- }
- }
- }
-
- /* Check whether the answer contains an IP address that should be rejected. */
- if(have_rejectlist(st)) {
- int i;
- int na4=nreject_a4(st);
- addr4maskpair_t *a4arr=rejectlist_a4(st);
-#if ALLOW_LOCAL_AAAA
- int na6=nreject_a6(st);
- addr6maskpair_t *a6arr=rejectlist_a6(st);
-#endif
- /* Check addresses in the answer, authority and additional sections. */
- for(i=0;i<3;++i) {
- dns_cent_array sec=secs[i];
- int j,nce=DA_NEL(sec);
- for(j=0;j<nce;++j) {
- dns_cent_t *cent=&DA_INDEX(sec,j);
- rr_set_t *rrset=getrrset_A(cent);
- if(rrset && na4) {
- /* This is far from the world's most efficient matching algorithm,
- but it should work OK as long as the numbers involved are small.
- */
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- struct in_addr *a=(struct in_addr *)(rr->data);
- int k;
- for(k=0;k<na4;++k) {
- addr4maskpair_t *am = &a4arr[k];
- if(ADDR4MASK_EQUIV(a,&am->a,&am->mask)) {
-#if DEBUG>0
- unsigned char nmbuf[DNSNAMEBUFSIZE]; char abuf[ADDRSTR_MAXLEN];
- DEBUG_PDNSDA_MSG("Rejecting answer from server %s because it contains an A record"
- " for \"%s\" with an address in the reject list: %s\n",
- PDNSDA2STR(PDNSD_A(st)),
- rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),
- inet_ntop(AF_INET,a,abuf,sizeof(abuf)));
-#endif
- reject_ans=1; goto rejectlist_scan_done;
- }
- }
- }
- }
-#if ALLOW_LOCAL_AAAA
- rrset=getrrset_AAAA(cent);
- if(rrset && na6) {
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- struct in6_addr *a=(struct in6_addr *)(rr->data);
- int k;
- for(k=0;k<na6;++k) {
- addr6maskpair_t *am = &a6arr[k];
- if(ADDR6MASK_EQUIV(a,&am->a,&am->mask)) {
-#if DEBUG>0
- unsigned char nmbuf[DNSNAMEBUFSIZE]; char abuf[INET6_ADDRSTRLEN];
- DEBUG_PDNSDA_MSG("Rejecting answer from server %s because it contains an AAAA record"
- " for \"%s\" with an address in the reject list: %s\n",
- PDNSDA2STR(PDNSD_A(st)),
- rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),
- inet_ntop(AF_INET6,a,abuf,sizeof(abuf)));
-#endif
- reject_ans=1; goto rejectlist_scan_done;
- }
- }
- }
- }
-#endif
- }
- }
- rejectlist_scan_done:;
- }
-
- /* negative caching for domains */
- if (rcode==RC_NAMEERR) {
- DEBUG_PDNSDA_MSG("Server %s returned error code: %s\n", PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
- name_error:
- neg_ans=1;
- {
- /* We did not get what we wanted. Cache according to policy */
- dns_cent_t *ent=&DA_INDEX(ans_sec,0);
- int neg_domain_pol=global.neg_domain_pol;
- if (neg_domain_pol==C_ON || (neg_domain_pol==C_AUTH && st->aa)) {
- time_t ttl=global.neg_ttl;
-
- /* Try to find a SOA record that came with the reply.
- */
- if(ent->c_soa!=cundef) {
- unsigned scnt=rhnsegcnt(name);
- dns_cent_t *cent;
- if(ent->c_soa<scnt && (cent=lookup_cent_array(auth_sec,skipsegs(name,scnt-ent->c_soa)))) {
- rr_set_t *rrset=getrrset_SOA(cent);
- if (rrset && rrset->rrs) {
- time_t min=soa_minimum(rrset->rrs);
- ttl=rrset->ttl;
- if(ttl>min)
- ttl=min;
- }
- }
- }
- DEBUG_RHN_MSG("Caching domain %s negative with ttl %li\n",RHN2STR(name),(long)ttl);
- negate_cent(ent,ttl,queryts);
- if(st->nocache) ent->flags |= DF_NOCACHE;
- goto cleanup_return_OK;
- } else {
- if(c_soa) *c_soa=ent->c_soa;
- free_cent(ent DBG1);
- rv=RC_NAMEERR;
- goto add_additional;
- }
- }
- }
-
- if(reject_ans) {
- if(reject_policy(st)==C_NEGATE && st->failed<=1)
- goto name_error;
- else {
- rv=RC_SERVFAIL;
- goto free_ent_centarrays_recvbuf_return;
- }
- }
-
- if(global.deleg_only_zones && st->auth_serv<3) { /* st->auth_serv==3 means this server is a root-server. */
- int missingdelegation,authcnt;
- /* The deleg_only_zones data may change due to runtime reconfiguration,
- therefore use locks. */
- lock_server_data();
- missingdelegation=0; authcnt=0;
- {
- int i,n=DA_NEL(global.deleg_only_zones); unsigned rem,zrem;
- for(i=0;i<n;++i) {
- if(domain_match(name,DA_INDEX(global.deleg_only_zones,i),&rem,&zrem) && zrem==0)
- goto zone_match;
- }
- goto delegation_OK;
- zone_match:
- /* The name queried matches a delegation-only zone. */
- if(rem) {
- /* Check if we can find delegation in the answer or authority section. */
- /* dns_cent_array secs[2]={ans_sec,auth_sec}; */
- int j;
- for(j=0;j<2;++j) {
- dns_cent_array sec=secs[j];
- int k,m=DA_NEL(sec);
- for(k=0;k<m;++k) {
- dns_cent_t *ce=&DA_INDEX(sec,k);
- if(getrrset_NS(ce) || getrrset_SOA(ce)) {
- /* Found a NS or SOA record in the answer or authority section. */
- int l;
- ++authcnt;
- for(l=0;l<n;++l) {
- if(domain_match(ce->qname,DA_INDEX(global.deleg_only_zones,l),&rem,&zrem) && zrem==0) {
- if(rem) break;
- else goto try_next_auth;
- }
- }
- goto delegation_OK;
- }
- try_next_auth:;
- }
- }
-#if DEBUG>0
- {
- unsigned char nmbuf[DNSNAMEBUFSIZE],zbuf[DNSNAMEBUFSIZE];
- DEBUG_PDNSDA_MSG(authcnt?"%s is in %s zone, but no delegation found in answer returned by server %s\n"
- :"%s is in %s zone, but no authority information provided by server %s\n",
- rhn2str(name,nmbuf,sizeof(nmbuf)), rhn2str(DA_INDEX(global.deleg_only_zones,i),zbuf,sizeof(zbuf)),
- PDNSDA2STR(PDNSD_A(st)));
- }
-#endif
- missingdelegation=1;
- }
- delegation_OK:;
- }
- unlock_server_data();
-
- if(missingdelegation) {
- if(authcnt && st->failed<=1) {
- /* Treat this as a nonexistant name. */
- goto name_error;
- }
- else if(st->auth_serv<2) {
- /* If this is one of the servers obtained from the list
- pdnsd was configured with, treat this as a failure.
- Hopefully one of the other servers in the list will
- return a non-empty authority section.
- */
- rv=RC_SERVFAIL;
- goto free_ent_centarrays_recvbuf_return;
- }
- }
- }
-
- {
- /* Negative caching of rr sets */
- dns_cent_t *ent=&DA_INDEX(ans_sec,0);
-
- if(!ent->num_rrs) neg_ans=1;
-
- if (thint>=T_MIN && thint<=T_MAX && !getrrset(ent,thint) && !st->tc && st->failed<=1) {
- /* We did not get what we wanted. Cache according to policy */
- int neg_rrs_pol=global.neg_rrs_pol;
- if (neg_rrs_pol==C_ON || (neg_rrs_pol==C_AUTH && aa) ||
- (neg_rrs_pol==C_DEFAULT && (aa || st->ra)))
- {
- time_t ttl=global.neg_ttl;
- rr_set_t *rrset=getrrset_SOA(ent);
- dns_cent_t *cent;
- unsigned scnt;
- /* If we received a SOA, we should take the ttl of that record. */
- if ((rrset && rrset->rrs) ||
- /* Try to find a SOA record higher up the hierarchy that came with the reply. */
- ((cent=lookup_cent_array(auth_sec,
- (ent->c_soa!=cundef && ent->c_soa<(scnt=rhnsegcnt(name)))?
- skipsegs(name,scnt-ent->c_soa):
- name)) &&
- (rrset=getrrset_SOA(cent)) && rrset->rrs))
- {
- time_t min=soa_minimum(rrset->rrs);
- ttl=rrset->ttl;
- if(ttl>min)
- ttl=min;
- }
- DEBUG_RHN_MSG("Caching type %s for domain %s negative with ttl %li\n",getrrtpname(thint),RHN2STR(name),(long)ttl);
- if (!add_cent_rrset_by_type(ent, thint, ttl, queryts, CF_NEGATIVE|flags DBG1)) {
- rv=RC_FATALERR;
- goto free_ent_centarrays_recvbuf_return;
- }
- }
- }
- }
-
- if (st->failed<=1) {
- /* The domain names of all name servers found in the answer and authority sections are placed in *ns,
- which is automatically grown. */
- /* dns_cent_array secs[2]={ans_sec,auth_sec}; */
- int i;
- for(i=0;i<2;++i) {
- dns_cent_array sec=secs[i];
- int j,n=DA_NEL(sec);
- for(j=0;j<n;++j) {
- dns_cent_t *cent=&DA_INDEX(sec,j);
- unsigned int rem;
- /* Don't accept records for the root domain from name servers
- that were not listed in the configuration file. */
- if((*(cent->qname) || st->auth_serv!=2) &&
- /* Don't accept possibly poisoning nameserver entries in paranoid mode */
- (st->trusted || !st->nsdomain || (domain_match(st->nsdomain, cent->qname, &rem,NULL),rem==0)) &&
- /* The following test is actually redundant and should never fail. */
- *(cent->qname)!=0xff)
- {
- /* Some nameservers obviously choose to send SOA records instead of NS ones.
- * Although I think that this is poor behaviour, we'll have to work around that. */
- static const unsigned short nstypes[2]={T_NS,T_SOA};
- int k;
- for(k=0;k<2;++k) {
- rr_set_t *rrset=getrrset(cent,nstypes[k]);
- if(rrset) {
- rr_bucket_t *rr;
- unsigned short first=1;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- size_t sz1,sz2;
- unsigned char *p;
- /* Skip duplicate records */
- for(p=dlist_first(*ns); p; p=dlist_next(p)) {
- if(rhnicmp(*p==0xff?p+1:skiprhn(p),(unsigned char *)(rr->data)))
- goto next_nsr;
- }
- /* add to the nameserver list.
- Here we use a little compression trick: if
- the first byte of a name is 0xff, this means
- repeat the previous name.
- */
- sz1= (first?rhnlen(cent->qname):1);
- sz2=rhnlen((unsigned char *)(rr->data));
- if (!(*ns=dlist_grow(*ns,sz1+sz2))) {
- rv=RC_FATALERR;
- goto free_ent_centarrays_recvbuf_return;
- }
- p=dlist_last(*ns);
- if(first) {
- first=0;
- p=mempcpy(p,cent->qname,sz1);
- }
- else
- *p++ = 0xff; /* 0xff means 'idem' */
- /* This will only copy the first name, which is the NS */
- memcpy(p,(unsigned char *)(rr->data),sz2);
- ++num_ns;
- next_nsr:;
- }
- }
- }
- }
- }
- }
- }
- cleanup_return_OK:
- if(st->failed && neg_ans && num_ns==0) {
- DEBUG_PDNSDA_MSG("Answer from server %s does not contain usable records.\n",
- PDNSDA2STR(PDNSD_A(st)));
- rv=RC_SERVFAIL;
- goto free_ns_ent_centarrays_recvbuf_return;
- }
- if(!(*entp=malloc(sizeof(dns_cent_t)))) {
- rv=RC_FATALERR;
- goto free_ns_ent_centarrays_recvbuf_return;
- }
- **entp=DA_INDEX(ans_sec,0);
- rv=RC_OK;
- add_additional:
- if (!st->failed && !reject_ans) {
- /* Add the additional RRs to the cache. */
- /* dns_cent_array secs[3]={ans_sec,auth_sec,add_sec}; */
- int i;
-#if DEBUG>0
- if(debug_p && neg_ans) {
- int j,n=DA_NEL(ans_sec);
- for(j=1; j<n; ++j) {
- unsigned char nmbuf[DNSNAMEBUFSIZE],nmbuf2[DNSNAMEBUFSIZE];
- DEBUG_PDNSDA_MSG("Reply from %s is negative for %s, dropping record(s) for %s in answer section.\n",
- PDNSDA2STR(PDNSD_A(st)),
- rhn2str(name,nmbuf,sizeof(nmbuf)),
- rhn2str(DA_INDEX(ans_sec,j).qname,nmbuf2,sizeof(nmbuf2)));
- }
- }
-#endif
- for(i=neg_ans; i<3; ++i) {
- dns_cent_array sec=secs[i];
- int j,n=DA_NEL(sec);
- /* The first entry in the answer section is treated separately, so skip that one. */
- for(j= !i; j<n; ++j) {
- dns_cent_t *cent=&DA_INDEX(sec,j);
- if(*(cent->qname) || st->auth_serv!=2) {
- unsigned int rem;
- if(st->trusted || !st->nsdomain || (domain_match(st->nsdomain, cent->qname, &rem, NULL),rem==0))
- add_cache(cent);
- else {
-#if DEBUG>0
- unsigned char nmbuf[DNSNAMEBUFSIZE],nsbuf[DNSNAMEBUFSIZE];
- DEBUG_MSG("Record for %s not in nsdomain %s; dropped.\n",
- rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),rhn2str(st->nsdomain,nsbuf,sizeof(nsbuf)));
-#endif
- }
- }
- else {
-#if DEBUG>0
- static const char *const secname[3]={"answer","authority","additional"};
- DEBUG_PDNSDA_MSG("Record(s) for root domain in %s section from %s dropped.\n", secname[i],PDNSDA2STR(PDNSD_A(st)));
-#endif
- }
- }
- }
- }
- goto free_centarrays_recvbuf_return;
-
- free_ns_ent_centarrays_recvbuf_return:
- dlist_free(*ns); *ns=NULL;
- free_ent_centarrays_recvbuf_return:
- if(DA_NEL(ans_sec)>=1) free_cent(&DA_INDEX(ans_sec,0) DBG1);
- free_centarrays_recvbuf_return:
- {
- /* dns_cent_array secs[3]={ans_sec,auth_sec,add_sec}; */
- int i;
- for(i=0;i<3;++i) {
- dns_cent_array sec=secs[i];
- int j,n=DA_NEL(sec);
- /* The first entry in the answer section is treated separately, so skip that one. */
- for(j= !i; j<n; ++j)
- free_cent(&DA_INDEX(sec,j) DBG1);
-
- da_free(sec);
- }
- }
-#undef ans_sec
-#undef auth_sec
-#undef add_sec
- }
- free_recvbuf_return:
- pdnsd_free(st->recvbuf);
- return rv;
-}
-
-/*
- * Cancel a query, freeing all resources. Any query state is valid as input (this may even be called
- * if a call to p_exec_query already returned error or success)
- */
-static void p_cancel_query(query_stat_t *st)
-{
- switch (st->state) {
- QS_WRITE_CASES:
- QS_READ_CASES:
- close(st->sock);
- /* fall through */
- case QS_TCPINITIAL:
- case QS_UDPINITIAL:
- pdnsd_free(st->recvbuf);
- pdnsd_free(st->msg);
- }
- if(st->state!=QS_INITIAL && st->state!=QS_DONE)
- st->state=QS_CANCELED;
-}
-
-#if 0
-/*
- * Initialize a query_serv_t (server list for parallel query)
- * This is there for historical reasons only.
- */
-inline static void init_qserv(query_stat_array *q)
-{
- *q=NULL;
-}
-#endif
-
-/*
- * Add a server entry to a query_serv_t
- * Note: only a reference to nsdomain is copied, not the name itself.
- * Be sure to free the q-list before freeing the name.
- */
-static int add_qserv(query_stat_array *q, pdnsd_a2 *a, int port, time_t timeout, unsigned flags,
- char nocache, char lean_query, char edns_query, char auth_s, char needs_testing, char trusted,
- const unsigned char *nsdomain, rejectlist_t *rejectlist)
-{
- query_stat_t *qs;
-
- if ((*q=DA_GROW1(*q))==NULL) {
- DEBUG_MSG("Out of memory in add_qserv()\n");
- return 0;
- }
-
- qs=&DA_LAST(*q);
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- memset(&qs->a.sin4,0,sizeof(qs->a.sin4));
- qs->a.sin4.sin_family=AF_INET;
- qs->a.sin4.sin_port=htons(port);
- qs->a.sin4.sin_addr=a->ipv4;
- SET_SOCKA_LEN4(qs->a.sin4);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- memset(&qs->a.sin6,0,sizeof(qs->a.sin6));
- qs->a.sin6.sin6_family=AF_INET6;
- qs->a.sin6.sin6_port=htons(port);
- qs->a.sin6.sin6_flowinfo=IPV6_FLOWINFO;
- qs->a.sin6.sin6_addr=a->ipv6;
- SET_SOCKA_LEN6(qs->a.sin6);
-
- qs->a4fallback=a->ipv4;
- }
-#endif
- qs->timeout=timeout;
- qs->flags=flags;
- qs->nocache=nocache;
- qs->auth_serv=auth_s;
- qs->lean_query=lean_query;
- qs->edns_query=edns_query;
- qs->needs_testing=needs_testing;
- qs->trusted=trusted;
- qs->aa=0;
- qs->tc=0;
- qs->ra=0;
- qs->failed=0;
- qs->nsdomain=nsdomain; /* Note: only a reference is copied, not the name itself! */
- qs->rejectlist=rejectlist;
-
- qs->state=QS_INITIAL;
- qs->qm=global.query_method;
- qs->s_errno=0;
- return 1;
-}
-
-/* Test whether two pdnsd_a2 addresses are the same. */
-inline __attribute__((always_inline))
-static int same_inaddr2_2(pdnsd_a2 *a, pdnsd_a2 *b)
-{
- return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
- IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) &&
- a->ipv4.s_addr==b->ipv4.s_addr );
-}
-
-/* This can be used to check whether a server address was already used in a
- previous query_stat_t entry. */
-inline static int query_stat_same_inaddr2(query_stat_t *qs, pdnsd_a2 *b)
-{
- return SEL_IPVER( qs->a.sin4.sin_addr.s_addr==b->ipv4.s_addr,
- IN6_ARE_ADDR_EQUAL(&qs->a.sin6.sin6_addr,&b->ipv6) &&
- qs->a4fallback.s_addr==b->ipv4.s_addr );
-}
-
-
-/*
- * Free resources used by a query_serv_t
- * There for historical reasons only.
- */
-inline static void del_qserv(query_stat_array q)
-{
- da_free(q);
-}
-
-struct qstatnode_s {
- query_stat_array qa;
- struct qstatnode_s *next;
-};
-typedef struct qstatnode_s qstatnode_t;
-
-struct qhintnode_s {
- const unsigned char *nm;
- int tp;
- struct qhintnode_s *next;
-};
-/* typedef struct qhintnode_s qhintnode_t; */ /* Already defined in dns_query.h */
-
-static int auth_ok(query_stat_array q, const unsigned char *name, int thint, dns_cent_t *ent,
- int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
- query_stat_t *qse, dlist ns, query_stat_array *serv);
-static int p_dns_cached_resolve(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **cachedp,
- int hops, qstatnode_t *qslist, qhintnode_t *qhlist, time_t queryts,
- unsigned char *c_soa);
-static int simple_dns_cached_resolve(atup_array atup_a, int port, char edns_query, time_t timeout,
- const unsigned char *name, int thint, dns_cent_t **cachedp);
-
-
-/*
- * Performs a semi-parallel query on the servers in q. PAR_QUERIES are executed parallel at a time.
- * name is the query name in dns protocol format (number.string etc),
- * ent is the dns_cent_t that will be filled.
- * hops is the number of recursions left.
- * qslist should refer to a list of server arrays used higher up in the calling chain. This way we can
- * avoid name servers that have already been tried for this name.
- * qhlist should refer to a list of names that we are trying to resolve higher up in the calling chain.
- * These names should be avoided further down the chain, or we risk getting caught in a wasteful cycle.
- * thint is a hint on the requested query type used to decide whether an aa record must be fetched
- * or a non-authoritative answer will be enough.
- *
- * nocache is needed because we add AA records to the cache. If the nocache flag is set, we do not
- * take the original values for the record, but flags=0 and ttl=0 (but only if we do not already have
- * a cached record for that set). These settings cause the record be purged on the next cache addition.
- * It will also not be used again.
- *
- * The return value of p_recursive_query() has the same meaning as that of p_dns_cached_resolve()
- * (see below).
- */
-static int p_recursive_query(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **entp,
- int *nocache, int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
- unsigned char *c_soa)
-{
- dns_cent_t *ent,*entsave=NULL;
- int i,j,k;
- int rv=RC_SERVFAIL;
- int qualval=0;
- query_stat_t *qse=NULL; /* Initialized to inhibit compiler warning */
- dlist ns=NULL,nssave=NULL;
- query_stat_array serv=NULL,servsave=NULL;
-
-# define W_AUTHOK 8
-# define W_NOTFAILED 2
-# define W_NOTTRUNC 1
-# define NOTFAILMASK 6
-# define GOODQUAL (W_AUTHOK+3*W_NOTFAILED)
-# define save_query_result(ent,qs,ns,serv,authok) \
- { \
- int qval = authok*W_AUTHOK + (3-qs->failed)*W_NOTFAILED + (!qs->tc)*W_NOTTRUNC; \
- if(entsave && qval>qualval) { \
- /* Free the old copy, because the new result is better. */ \
- free_cent(entsave DBG1); \
- pdnsd_free(entsave); \
- entsave=NULL; \
- del_qserv(servsave); \
- dlist_free(nssave); \
- } \
- if(!entsave) { \
- entsave=ent; \
- servsave=serv; \
- /* The serv array contains references to data within the ns list, \
- so we need to save a copy of the ns list as well! */ \
- if(DA_NEL(serv)>0) nssave=ns; else {nssave=NULL;dlist_free(ns);} \
- qualval=qval; \
- qse=qs; \
- } \
- else { \
- /* We already have a copy, free the present one. */ \
- free_cent(ent DBG1); \
- pdnsd_free(ent); \
- del_qserv(serv); \
- dlist_free(ns); \
- } \
- serv=NULL; \
- ns=NULL; \
- }
-
- {
- time_t ts0=time(NULL),global_timeout=global.timeout;
- int dc=0,mc=0,nq=DA_NEL(q),parqueries=global.par_queries;
-
- for (j=0; j<nq; j += parqueries) {
- mc=j+parqueries;
- if (mc>nq) mc=nq;
-
- /* First, call p_exec_query once for each parallel set to initialize.
- * Then, as long as not all have the state QS_DONE or we have a timeout,
- * build a poll/select set for all active queries and call them accordingly. */
- for (i=dc;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- if(i>=j) {
- /* The below should not happen any more, but may once again
- * (immediate success) */
- DEBUG_PDNSDA_MSG("Sending query to %s\n", PDNSDA2STR(PDNSD_A(qs)));
- retryquery:
- rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
- if (rv==RC_OK) {
- int authok;
- DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
- if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
- if(authok>=0) {
- if(!qs->failed
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- && !(qs->qm==UDP_TCP && qs->tc)
-#endif
- )
- {
- qse=qs;
- mc=i; /* No need to cancel queries beyond i */
- goto done;
- }
- }
- else {
- mc=i; /* No need to cancel queries beyond i */
- goto free_ent_return_failed;
- }
- }
- /* We do not have a satisfactory answer.
- However, we will save a copy in case none of the other
- servers in the q list give a satisfactory answer either.
- */
- save_query_result(ent,qs,ns,serv,authok);
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- if(qs->qm==UDP_TCP && qs->tc) {
- switch_to_tcp(qs);
- DEBUG_PDNSDA_MSG("Reply from %s was truncated. Trying again using TCP.\n",
- PDNSDA2STR(PDNSD_A(qs)));
- goto retryquery;
- }
-#endif
- }
- else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
- mc=i; /* No need to cancel queries beyond i */
- goto done;
- }
- }
- if (qs->state==QS_DONE && i==dc)
- dc++;
- }
- if (dc<mc) {
- time_t ts,maxto,now;
- int pc,nevents;
-#ifdef NO_POLL
- int maxfd;
- fd_set reads;
- fd_set writes;
- struct timeval tv;
-#else
- int ic;
- struct pollfd polls[mc-dc]; /* Variable length array, may cause portability problems */
-#endif
- /* we do time keeping by hand, because poll/select might be interrupted and
- * the returned times are not always to be trusted upon */
- ts=time(NULL);
- do {
- /* build poll/select sets, maintain time.
- * If you do parallel queries, the highest timeout will be honored
- * also for the other servers when their timeout is exceeded and
- * the highest is not.
- * Changed by Paul Rombouts: queries are not canceled until we receive
- * a useful reply or everything has failed or timed out (also taking into
- * account the global timeout option).
- * Thus in the worst case all the queries in the q list will be active
- * simultaneously. The downside is that we may be wasting more resources
- * this way. The advantage is that we have a greater chance of catching a
- * reply. After all, if we wait longer anyway, why not for more servers. */
- maxto=0;
- pc=0;
- rv=RC_SERVFAIL;
-
-#ifdef NO_POLL
- FD_ZERO(&reads);
- FD_ZERO(&writes);
- maxfd=0;
-#endif
- for (i=dc;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- if (qs->state!=QS_DONE) {
- if (i>=j && qs->timeout>maxto)
- maxto=qs->timeout;
-#ifdef NO_POLL
- if (qs->sock>maxfd) {
- maxfd=qs->sock;
- PDNSD_ASSERT(maxfd<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
- }
-
- switch (qs->state) {
- QS_READ_CASES:
- FD_SET(qs->sock,&reads);
- break;
- QS_WRITE_CASES:
- FD_SET(qs->sock,&writes);
- break;
- }
-#else
- polls[pc].fd=qs->sock;
- switch (qs->state) {
- QS_READ_CASES:
- polls[pc].events=POLLIN;
- break;
- QS_WRITE_CASES:
- polls[pc].events=POLLOUT;
- break;
- default:
- polls[pc].events=0;
- }
-#endif
- pc++;
- }
- }
- if (pc==0) {
- /* In this case, ALL are done and we do not need to cancel any
- * query. */
- dc=mc;
- break;
- }
- now=time(NULL);
- maxto -= now-ts;
- if (mc==nq) {
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- /* Don't use the global timeout if there are TCP queries
- we might want to retry using UDP. */
- for (i=j;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- if(tentative_tcp_query(qs))
- goto skip_globto;
- }
-#endif
- {
- time_t globto=global_timeout-(now-ts0);
- if(globto>maxto) maxto=globto;
- }
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- skip_globto:;
-#endif
- }
-#ifdef NO_POLL
- tv.tv_sec=(maxto>0)?maxto:0;
- tv.tv_usec=0;
- nevents=select(maxfd+1,&reads,&writes,NULL,&tv);
-#else
- nevents=poll(polls,pc,(maxto>0)?(maxto*1000):0);
-#endif
- if (nevents<0) {
- /* if(errno==EINTR)
- continue; */
- log_warn("poll/select failed: %s",strerror(errno));
- goto done;
- }
- if (nevents==0) {
- /* We have timed out. Mark the unresponsive servers so that we can consider
- them for retesting later on. We will continue to listen for replies from
- these servers as long as we have additional servers to try. */
- for (i=j;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- if (qs->state!=QS_DONE && qs->needs_testing)
- qs->needs_testing=2;
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- if (tentative_tcp_query(qs)) {
- /* We timed out while waiting for a TCP connection.
- Try again using UDP.
- */
- close(qs->sock);
- switch_to_udp(qs);
- DEBUG_PDNSDA_MSG("TCP connection to %s timed out. Trying to use UDP.\n",
- PDNSDA2STR(PDNSD_A(qs)));
-
- rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
- /* In the unlikely case of immediate success */
- if (rv==RC_OK) {
- int authok;
- DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
- if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
- if(authok>=0) {
- if(!qs->failed) {
- qse=qs;
- goto done;
- }
- }
- else
- goto free_ent_return_failed;
- }
- save_query_result(ent,qs,ns,serv,authok);
- }
- else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
- goto done;
- }
- ++nevents;
- }
-#endif
- }
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- if (mc==nq) {
- /* We will not try additional servers, but we might want to try again
- using UDP instead of TCP
- */
- if(nevents && (time(NULL)-ts0)<global_timeout)
- continue;
- }
-#endif
- break;
- }
-#ifndef NO_POLL
- ic=0;
-#endif
- for (i=dc;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- /* Check if we got a poll/select event */
- if (qs->state!=QS_DONE) {
- int srv_event=0;
- /* This detection may seem suboptimal, but normally, we have at most 2-3 parallel
- * queries, and anything else would be higher overhead, */
-#ifdef NO_POLL
- switch (qs->state) {
- QS_READ_CASES:
- srv_event=FD_ISSET(qs->sock,&reads);
- break;
- QS_WRITE_CASES:
- srv_event=FD_ISSET(qs->sock,&writes);
- break;
- }
-#else
- do {
- PDNSD_ASSERT(ic<pc, "file descriptor not found in poll() array");
- k=ic++;
- } while(polls[k].fd!=qs->sock);
- /*
- * In case of an error, reenter the state machine
- * to catch it.
- */
- switch (qs->state) {
- QS_READ_CASES:
- srv_event=polls[k].revents&(POLLIN|POLLERR|POLLHUP|POLLNVAL);
- break;
- QS_WRITE_CASES:
- srv_event=polls[k].revents&(POLLOUT|POLLERR|POLLHUP|POLLNVAL);
- break;
- }
-#endif
- if (srv_event) {
- --nevents;
- retryquery2:
- rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
- if (rv==RC_OK) {
- int authok;
- DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
- if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
- if(authok>=0) {
- if(!qs->failed
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- && !(qs->qm==UDP_TCP && qs->tc)
-#endif
- )
- {
- qse=qs;
- goto done;
- }
- }
- else
- goto free_ent_return_failed;
- }
- save_query_result(ent,qs,ns,serv,authok);
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- if(qs->qm==UDP_TCP && qs->tc) {
- switch_to_tcp(qs);
- DEBUG_PDNSDA_MSG("Reply from %s was truncated. Trying again using TCP.\n",
- PDNSDA2STR(PDNSD_A(qs)));
- goto retryquery2;
- }
-#endif
- }
- else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
- goto done;
- }
- }
- }
- /* recheck, this might have changed after the last p_exec_query */
- if (qs->state==QS_DONE && i==dc)
- dc++;
- }
- if(nevents>0) {
- /* We have not managed to handle all the events reported by poll/select.
- Better call it quits, or we risk getting caught in a wasteful cycle.
- */
- if(++poll_errs<=MAXPOLLERRS)
- log_error("%d unhandled poll/select event(s) in p_recursive_query() at %s, line %d.",nevents,__FILE__,__LINE__);
- rv=RC_SERVFAIL;
- goto done;
- }
- } while (dc<mc);
- }
- }
- goto cancel_queries;
- free_ent_return_failed:
- free_cent(ent DBG1);
- pdnsd_free(ent);
- rv=RC_FATALERR;
- done:
- if (entsave) {
- /* We have or will get an authoritative answer, or we have encountered an error.
- Free the non-authoritative answer. */
- free_cent(entsave DBG1);
- pdnsd_free(entsave);
- entsave=NULL;
- del_qserv(servsave);
- dlist_free(nssave);
- }
- cancel_queries:
- /* Cancel any remaining queries. */
- for (i=dc;i<mc;i++)
- p_cancel_query(&DA_INDEX(q,i));
-
- {
- /* See if any servers need to be retested for availability.
- We build up a list of addresses rather than call
- sched_server_test() separately for each address to
- reduce the overhead caused by locking and signaling */
- int n=0;
- for (i=0;i<mc;i++)
- if (DA_INDEX(q,i).needs_testing > 1)
- ++n;
- if(n>0) {
- pdnsd_a addrs[n]; /* variable length array */
- k=0;
- for (i=0;i<mc;i++) {
- query_stat_t *qs=&DA_INDEX(q,i);
- if (qs->needs_testing > 1)
- addrs[k++]= *PDNSD_A(qs);
- }
- sched_server_test(addrs,n,-1);
- }
- }
- }
-
- if(entsave) {
- /*
- * If we didn't get rrs from any of the authoritative servers, or the answers were
- * unsatisfactory for another reason, take the one we had.
- * However, raise the CF_NOCACHE flag, so that it won't be used again (outside the
- * cache latency period).
- */
- DEBUG_PDNSDA_MSG("Using %s reply from %s.\n",
- !(qualval&NOTFAILMASK)? "reportedly failed":
- !(qualval&W_NOTFAILED)? "inconsistent":
- !(qualval&W_NOTTRUNC)? "truncated":
- !(qualval&W_AUTHOK)? "non-authoritative": "good",
- PDNSDA2STR(PDNSD_A(qse)));
- ent=entsave;
- serv=servsave;
- ns=nssave;
- if(qualval<GOODQUAL) {
- if(!(ent->flags&DF_NEGATIVE)) {
- int jlim= RRARR_LEN(ent);
- for (j=0; j<jlim; ++j) {
- rr_set_t *rrs= RRARR_INDEX(ent,j);
- if (rrs)
- rrs->flags |= CF_NOCACHE;
- }
- }
- else /* Very unlikely, but not impossible. */
- ent->flags |= DF_NOCACHE;
- }
- rv=RC_OK;
- }
- else if (rv!=RC_OK) {
- if(rv==RC_FATALERR) {
- DEBUG_MSG("Unrecoverable error encountered while processing query.\n");
- rv=RC_SERVFAIL;
- }
- DEBUG_MSG("%sReturning error code \"%s\"\n",
- rv!=RC_NAMEERR? "No query succeeded. ": "",
- get_ename(rv));
- goto clean_up_return;
- }
-
- if(nocache) *nocache=qse->nocache;
-
- if (DA_NEL(serv)>0) {
- /* Authority records present. Ask them, because the answer was non-authoritative. */
- qstatnode_t qsn={q,qslist};
- unsigned char save_ns=ent->c_ns,save_soa=ent->c_soa;
-
- if(qse->aa || qse->ra) {
- /* The server claimed to be authoritative or have recursion available,
- yet we did not completely trust the answer for some reason.
- We will try to ask the servers in the authority records,
- but in case we fail, we will save a copy of the answer. */
- entsave=ent;
- }
- else {
- free_cent(ent DBG1);
- pdnsd_free(ent);
- entsave=NULL;
- }
- rv=p_dns_cached_resolve(serv, name, thint,&ent,hops-1,&qsn,qhlist,time(NULL),c_soa);
- if(rv==RC_OK || rv==RC_CACHED || (rv==RC_STALE && !entsave)) {
- if(save_ns!=cundef && (ent->c_ns==cundef || ent->c_ns<save_ns))
- ent->c_ns=save_ns;
- if(save_soa!=cundef && (ent->c_soa==cundef || ent->c_soa<save_soa))
- ent->c_soa=save_soa;
- goto free_entsave;
- }
- else if(rv==RC_NAMEERR) {
- if(c_soa && save_soa!=cundef && (*c_soa==cundef || *c_soa<save_soa))
- *c_soa=save_soa;
- free_entsave:
- if(entsave) {
- free_cent(entsave DBG1);
- pdnsd_free(entsave);
- }
- }
- else if(entsave) {
- if(rv==RC_STALE) {
- free_cent(ent DBG1);
- pdnsd_free(ent);
- }
- DEBUG_PDNSDA_MSG("Using saved reply from %s that claims to %s.\n",
- PDNSDA2STR(PDNSD_A(qse)),
- qse->aa? "be authoritative": "have recursion available");
- ent=entsave;
- rv=RC_OK;
- }
- }
-
- clean_up_return:
- /* Always free the serv array before freeing the ns list,
- because the serv array contains references to data within the ns list! */
- del_qserv(serv);
- dlist_free(ns);
-
- if(rv==RC_OK || rv==RC_CACHED || rv==RC_STALE) *entp=ent;
- return rv;
-# undef save_query_result
-}
-
-/* auth_ok returns 1 if we don't need an authoritative answer or
- if we can find servers to ask for an authoritative answer.
- In the latter case these servers will be added to the *serv list.
- A return value of 0 means the answer is not satisfactory in the
- previous sense.
- A return value of -1 indicates an error.
-*/
-static int auth_ok(query_stat_array q, const unsigned char *name, int thint, dns_cent_t *ent,
- int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
- query_stat_t *qse, dlist ns, query_stat_array *serv)
-{
- int retval=0;
-
- /* If the answer was obtained from a name server which returned a failure code,
- the answer is never satisfactory. */
- if(qse->failed > 1) return 0;
-
- /*
- Look into the query type hint. If it is a wildcard (QT_*), we need an authoritative answer.
- Same if there is no record that answers the query.
- This test will also succeed if we have a negative cached record. This is done purposely.
- */
-#define aa_needed ((thint>=QT_MIN && thint<=QT_MAX) || \
- ((thint>=T_MIN && thint<=T_MAX) && \
- (!have_rr(ent,thint) && !have_rr_CNAME(ent))))
-
- /* We will want to query authoritative servers if all of the following conditions apply:
-
- 1) The server from which we got the answer was not configured as "proxy only".
- 2) The answer is not a negatively cached domain (i.e. the server did not reply with NXDOMAIN).
- 3) The query type is a wild card (QT_*), or no record answers the query.
- 4) The answer that we have is non-authoritative.
- */
- if(!(qse->auth_serv && !(ent->flags&DF_NEGATIVE) && aa_needed))
- return 1;
-
- if(qse->aa) {
- /* The reply we have claims to be authoritative.
- However, I have seen cases where name servers raise the authority flag incorrectly (groan...),
- so as a work-around, we will check whether the domains for which the servers in the ns
- list are responsible, match the queried name better than the domain for which the
- last server was responsible. */
- unsigned char *nsdomain;
-
- if(!qse->nsdomain)
- return 1;
-
- nsdomain=dlist_first(ns);
- if(!nsdomain)
- return 1;
- for(;;) {
- unsigned int rem,crem;
- domain_match(nsdomain,qse->nsdomain,&rem,&crem);
- if(!(rem>0 && crem==0))
- return 1;
- domain_match(nsdomain,name,&rem,NULL);
- if(rem!=0)
- return 1;
- do {
- nsdomain=dlist_next(nsdomain);
- if(!nsdomain)
- goto done_checkauth;
- } while(*nsdomain==0xff); /* Skip repeats. */
- }
- done_checkauth:;
-
- /* The name servers in the ns list are a better match for the queried name than
- the server from which we got the last reply, so ignore the aa flag.
- */
-#if DEBUG>0
- if(debug_p) {
- unsigned char dbuf[DNSNAMEBUFSIZE],sdbuf[DNSNAMEBUFSIZE];
- nsdomain=dlist_first(ns);
- DEBUG_PDNSDA_MSG("The name server %s which is responsible for the %s domain, raised the aa flag, but appears to delegate to the sub-domain %s\n",
- PDNSDA2STR(PDNSD_A(qse)),
- rhn2str(qse->nsdomain,dbuf,sizeof(dbuf)),
- rhn2str(nsdomain,sdbuf,sizeof(sdbuf)));
- }
-#endif
- }
-
- /* The answer was non-authoritative. Try to build a list of addresses of authoritative servers. */
- if (hops>0) {
- unsigned char *nsdomp, *nsdomain=NULL;
- rr_set_t *localrrset=NULL;
- rr_bucket_t *localrr=NULL;
- for (nsdomp=dlist_first(ns);;) {
- unsigned char *nsname=NULL; /* Initialize to inhibit compiler warning. */
- int nserva, ia, n;
- pdnsd_a2 serva[MAXNAMESERVIPS];
-
- /* Get next name server. */
- if(localrr) {
- /* Use next locally defined NS record. */
- nsname=(unsigned char *)(localrr->data);
- localrr= localrr->next;
- }
- else {
- if(localrrset) {
- /* clean up rrset */
- del_rrset(localrrset DBG1);
- localrrset=NULL;
- }
- if(!nsdomp)
- break;
- else if(*nsdomp!=0xff) {
- /* New domain. */
- nsdomain=nsdomp;
- if (global.paranoid) {
- unsigned int rem;
- /* paranoia mode: don't query name servers that are not responsible */
- domain_match(nsdomain,name,&rem,NULL);
- if (rem!=0) {
-#if DEBUG>0
- unsigned char nmbuf[DNSNAMEBUFSIZE],dbuf[DNSNAMEBUFSIZE],nsbuf[DNSNAMEBUFSIZE];
- DEBUG_MSG("The name server %s is responsible for the %s domain, which does not match %s\n",
- rhn2str(nsname,nsbuf,sizeof(nsbuf)),
- rhn2str(nsdomain,dbuf,sizeof(dbuf)),
- rhn2str(name,nmbuf,sizeof(nmbuf)));
-#endif
- /* Skip records in ns list for the same domain. */
- do {
- nsdomp=dlist_next(nsdomp);
- } while (nsdomp && *nsdomp==0xff);
- continue;
- }
- }
- /* Check if we have locally defined NS records, because
- they will override the ones provided by remote servers.
- */
- localrrset=lookup_cache_local_rrset(nsdomain,T_NS);
- if(localrrset) {
- /* Skip records in ns list for the same domain. */
- do {
- nsdomp=dlist_next(nsdomp);
- } while (nsdomp && *nsdomp==0xff);
- localrr=localrrset->rrs;
- if(!localrr) continue;
- nsname=(unsigned char *)(localrr->data);
- localrr= localrr->next;
- }
- else {
- nsname=skiprhn(nsdomp);
- nsdomp=dlist_next(nsdomp);
- }
- }
- else {
- /* domain repeated. */
- nsname= nsdomp+1;
- nsdomp=dlist_next(nsdomp);
- }
- }
- /* look it up in the cache or resolve it if needed.
- The records received should be in the cache now, so it's ok.
- */
- nserva=0;
-
- {
- const unsigned char *nm=name;
- int tp=thint;
- qhintnode_t *ql=qhlist;
-
- for(;;) {
- if(rhnicmp(nm,nsname) && tp==T_A) {
- DEBUG_RHN_MSG("Not looking up address for name server \"%s\": "
- "risk of infinite recursion.\n",RHN2STR(nsname));
- goto skip_server;
- }
- if(!ql) break;
- nm=ql->nm;
- tp=ql->tp;
- ql=ql->next;
- }
- {
- qhintnode_t qhn={name,thint,qhlist};
- dns_cent_t *servent;
- if (r_dns_cached_resolve(nsname,T_A, &servent, hops-1, &qhn,time(NULL),NULL)==RC_OK) {
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- rr_set_t *rrset=getrrset_A(servent);
- rr_bucket_t *rrs;
- if (rrset)
- for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
- serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- rr_set_t *rrset6=getrrset_AAAA(servent);
- rr_bucket_t *rrs6= (rrset6? rrset6->rrs: NULL);
- rr_set_t *rrset4=getrrset_A(servent);
- rr_bucket_t *rrs4= (rrset4? rrset4->rrs: NULL);
- while(nserva<MAXNAMESERVIPS) {
- if(rrs6) {
- serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
- rrs6=rrs6->next;
- if (rrs4) {
- /* Store IPv4 address as fallback. */
- serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
- rrs4=rrs4->next;
- }
- else
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- }
- else if (rrs4) {
- struct in_addr *ina = (struct in_addr *)rrs4->data;
- struct in6_addr *in6a = &serva[nserva].ipv6;
- IPV6_MAPIPV4(ina,in6a);
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- rrs4=rrs4->next;
- }
- else
- break;
- ++nserva;
- }
- }
-#endif
- free_cent(servent DBG1);
- pdnsd_free(servent);
- }
- }
- }
-
-#if DEBUG>0
- if(nserva==0) {
- DEBUG_RHN_MSG("Looking up address for name server \"%s\" failed.\n",RHN2STR(nsname));
- }
-#endif
- n=DA_NEL(*serv);
- for(ia=0; ia<nserva; ++ia) {
- pdnsd_a2 *pserva= &serva[ia];
- int i;
-
- if(is_local_addr(PDNSD_A2_TO_A(pserva)))
- continue; /* Do not use local address (as defined in netdev.c). */
-
- /* Skip duplicate addresses. */
- for (i=0; i<n; ++i) {
- query_stat_t *qs=&DA_INDEX(*serv,i);
- if (query_stat_same_inaddr2(qs,pserva))
- goto skip_server_addr;
- }
-
- { /* We've got an address. Add it to the list if it wasn't one of the servers we queried. */
- query_stat_array qa=q;
- qstatnode_t *ql=qslist;
- for(;;) {
- int i,n=DA_NEL(qa);
- for (i=0; i<n; ++i) {
- /* If qa[i].state == QS_DONE, then p_exec_query() has been called,
- and we should not query this server again */
- query_stat_t *qs=&DA_INDEX(qa,i);
- if (qs->state==QS_DONE && equiv_inaddr2(PDNSD_A(qs),pserva)) {
- DEBUG_PDNSDA_MSG("Not trying name server %s, already queried.\n", PDNSDA2STR(PDNSD_A2_TO_A(pserva)));
- goto skip_server_addr;
- }
- }
- if(!ql) break;
- qa=ql->qa;
- ql=ql->next;
- }
- }
-
- /* lean query mode is inherited. CF_AUTH and CF_ADDITIONAL are not (as specified
- * in CFF_NOINHERIT). */
- if (!add_qserv(serv, pserva, 53, qse->timeout, qse->flags&~CFF_NOINHERIT, 0,
- qse->lean_query,qse->edns_query,2,0,!global.paranoid,nsdomain,
- inherit_rejectlist(qse)?qse->rejectlist:NULL))
- {
- return -1;
- }
- retval=1;
- skip_server_addr:;
- }
- skip_server:;
- }
-#if DEBUG>0
- if(!retval) {
- DEBUG_PDNSDA_MSG("No remaining authoritative name servers to try in authority section from %s.\n", PDNSDA2STR(PDNSD_A(qse)));
- }
-#endif
- }
- else {
- DEBUG_MSG("Maximum hops count reached; not trying any more name servers.\n");
- }
-
- return retval;
-
-#undef aa_needed
-}
-
-/*
- * This checks the given name to resolve against the access list given for the server using the
- * include=, exclude= and policy= parameters.
- */
-static int use_server(servparm_t *s, const unsigned char *name)
-{
- int i,n=DA_NEL(s->alist);
-
- for (i=0;i<n;i++) {
- slist_t *sl=&DA_INDEX(s->alist,i);
- unsigned int nrem,lrem;
- domain_match(name,sl->domain,&nrem,&lrem);
- if(!lrem && (!sl->exact || !nrem))
- return sl->rule==C_INCLUDED;
- }
-
- if (s->policy==C_SIMPLE_ONLY || s->policy==C_FQDN_ONLY) {
- if(rhnsegcnt(name)<=1)
- return s->policy==C_SIMPLE_ONLY;
- else
- return s->policy==C_FQDN_ONLY;
- }
-
- return s->policy==C_INCLUDED;
-}
-
-#if ALLOW_LOCAL_AAAA
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL || (s)->reject_a6!=NULL)
-#else
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL)
-#endif
-
-/* Take the lists of IP addresses from a server section sp and
- convert them into a form that can be used by p_exec_query().
- If successful, add_rejectlist returns a new list which is added to the old list rl,
- otherwise the return value is NULL.
-*/
-static rejectlist_t *add_rejectlist(rejectlist_t *rl, servparm_t *sp)
-{
- int i,na4=DA_NEL(sp->reject_a4);
- addr4maskpair_t *a4p;
-#if ALLOW_LOCAL_AAAA
- int na6=DA_NEL(sp->reject_a6);
- addr6maskpair_t *a6p;
-#endif
- rejectlist_t *rlist = malloc(sizeof(rejectlist_t) + na4*sizeof(addr4maskpair_t)
-#if ALLOW_LOCAL_AAAA
- + na6*sizeof(addr6maskpair_t)
-#endif
- );
-
- if(rlist) {
-#if ALLOW_LOCAL_AAAA
- /* Store the larger IPv6 addresses first to avoid possible alignment problems. */
- rlist->na6 = na6;
- a6p = (addr6maskpair_t *)rlist->rdata;
- for(i=0;i<na6;++i)
- *a6p++ = DA_INDEX(sp->reject_a6,i);
-#endif
- rlist->na4 = na4;
-#if ALLOW_LOCAL_AAAA
- a4p = (addr4maskpair_t *)a6p;
-#else
- a4p = (addr4maskpair_t *)rlist->rdata;
-#endif
- for(i=0;i<na4;++i)
- *a4p++ = DA_INDEX(sp->reject_a4,i);
-
- rlist->policy = sp->rejectpolicy;
- rlist->inherit = sp->rejectrecursively;
- rlist->next = rl;
- }
- else {
- DEBUG_MSG("Out of memory in add_rejectlist()\n");
- }
-
- return rlist;
-}
-
-inline static void free_rejectlist(rejectlist_t *rl)
-{
- while(rl) {
- rejectlist_t *next = rl->next;
- free(rl);
- rl=next;
- }
-}
-
-/* Lookup addresses of nameservers provided by root servers for a given domain in the cache.
- Returns NULL if unsuccessful (or the cache entries have timed out).
-*/
-static addr2_array lookup_ns(const unsigned char *domain)
-{
- addr2_array res=NULL;
-
- dns_cent_t *cent=lookup_cache(domain,NULL);
- if(cent) {
- rr_set_t *rrset=getrrset_NS(cent);
- if(rrset && (rrset->flags&CF_ROOTSERV) && !timedout(rrset)) {
- rr_bucket_t *rr;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- dns_cent_t *servent=lookup_cache((unsigned char*)(rr->data),NULL);
- int nserva=0;
- pdnsd_a2 serva[MAXNAMESERVIPS];
- if(servent) {
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- rr_set_t *rrset=getrrset_A(servent);
- rr_bucket_t *rrs;
- if (rrset && !timedout(rrset))
- for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
- serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- rr_set_t *rrset6=getrrset_AAAA(servent);
- rr_set_t *rrset4=getrrset_A(servent);
- rr_bucket_t *rrs6=NULL, *rrs4=NULL;
- if (rrset6 && !(rrset6->flags&CF_NEGATIVE)) {
- if(!timedout(rrset6)) {
- rrs6= rrset6->rrs;
- if (rrs6 && rrset4 && !(rrset4->flags&CF_NEGATIVE)) {
- if(timedout(rrset4) || !(rrs4=rrset4->rrs))
- /* Treat this as a failure. */
- rrs6=NULL;
- }
- }
- }
- else if (rrset4 && !timedout(rrset4))
- rrs4= rrset4->rrs;
-
- while(nserva<MAXNAMESERVIPS) {
- if(rrs6) {
- serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
- rrs6=rrs6->next;
- if (rrs4) {
- /* Store IPv4 address as fallback. */
- serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
- rrs4=rrs4->next;
- }
- else
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- }
- else if (rrs4) {
- struct in_addr *ina = (struct in_addr *)rrs4->data;
- struct in6_addr *in6a = &serva[nserva].ipv6;
- IPV6_MAPIPV4(ina,in6a);
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- rrs4=rrs4->next;
- }
- else
- break;
- ++nserva;
- }
- }
-#endif
- free_cent(servent DBG1);
- pdnsd_free(servent);
- }
- if(nserva==0) {
- /* Address lookup failed. */
- da_free(res); res=NULL;
- break;
- }
- else {
- int i, j, n=DA_NEL(res);
- for(i=0; i<nserva; ++i) {
- pdnsd_a2 *pserva= &serva[i];
- /* Skip duplicates */
- for (j=0; j<n; ++j) {
- pdnsd_a2 *pa= &DA_INDEX(res,j);
- if (same_inaddr2_2(pa,pserva))
- goto skip_address;
- }
- if(!(res=DA_GROW1(res))) {
- DEBUG_MSG("Out of memory in lookup_ns()\n");
- goto free_cent_return;
- }
- DA_LAST(res)= *pserva;
- skip_address:;
- }
- }
- }
- }
- free_cent_return:
- free_cent(cent DBG1);
- pdnsd_free(cent);
- }
-
- return res;
-}
-
-
-/* Find addresses of root servers by looking them up in the cache or querying (non-recursively)
- the name servers in the list provided.
- Returns NULL if unsuccessful (or the cache entries have timed out).
-*/
-addr2_array dns_rootserver_resolv(atup_array atup_a, int port, char edns_query, time_t timeout)
-{
- addr2_array res=NULL;
- dns_cent_t *cent;
- static const unsigned char rdomain[1]={0}; /* root-domain name. */
- int rc;
-
- rc=simple_dns_cached_resolve(atup_a,port,edns_query,timeout,rdomain,T_NS,¢);
- if(rc==RC_OK) {
- rr_set_t *rrset=getrrset_NS(cent);
- if(rrset) {
- rr_bucket_t *rr;
- unsigned nfail=0;
- for(rr=rrset->rrs; rr; rr=rr->next) {
- dns_cent_t *servent;
- int nserva=0;
- pdnsd_a2 serva[MAXNAMESERVIPS];
-
- rc=simple_dns_cached_resolve(atup_a,port,edns_query,timeout,
- (const unsigned char *)(rr->data),T_A,&servent);
- if(rc==RC_OK) {
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- rr_set_t *rrset=getrrset_A(servent);
- rr_bucket_t *rrs;
- if (rrset)
- for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
- serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- rr_set_t *rrset6=getrrset_AAAA(servent);
- rr_bucket_t *rrs6= (rrset6? rrset6->rrs: NULL);
- rr_set_t *rrset4=getrrset_A(servent);
- rr_bucket_t *rrs4= (rrset4? rrset4->rrs: NULL);
- while(nserva<MAXNAMESERVIPS) {
- if(rrs6) {
- serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
- rrs6=rrs6->next;
- if (rrs4) {
- /* Store IPv4 address as fallback. */
- serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
- rrs4=rrs4->next;
- }
- else
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- }
- else if (rrs4) {
- struct in_addr *ina = (struct in_addr *)rrs4->data;
- struct in6_addr *in6a = &serva[nserva].ipv6;
- IPV6_MAPIPV4(ina,in6a);
- serva[nserva].ipv4.s_addr=INADDR_ANY;
- rrs4=rrs4->next;
- }
- else
- break;
- ++nserva;
- }
- }
-#endif
- free_cent(servent DBG1);
- pdnsd_free(servent);
- }
- else {
- DEBUG_RHN_MSG("Simple query for %s type A failed (rc: %s)\n",
- RHN2STR((const unsigned char *)(rr->data)),get_ename(rc));
- }
-
- if(nserva==0) {
- /* Address lookup failed. */
- DEBUG_RHN_MSG("Failed to obtain address of root server %s in dns_rootserver_resolv()\n",
- RHN2STR((const unsigned char *)(rr->data)));
- ++nfail;
- }
- else {
- int i, j, n=DA_NEL(res);
- for(i=0; i<nserva; ++i) {
- pdnsd_a2 *pserva= &serva[i];
- /* Skip duplicates */
- for (j=0; j<n; ++j) {
- pdnsd_a2 *pa= &DA_INDEX(res,j);
- if (same_inaddr2_2(pa,pserva))
- goto skip_address;
- }
- if(!(res=DA_GROW1(res))) {
- DEBUG_MSG("Out of memory in dns_rootserver_resolv()\n");
- goto free_cent_return;
- }
- DA_LAST(res)= *pserva;
- skip_address:;
- }
- }
- }
- /* At least half of the names should resolve, otherwise we reject the result. */
- if(nfail>DA_NEL(res)) {
- DEBUG_MSG("Too many root-server resolve failures (%u succeeded, %u failed),"
- " rejecting the result.\n", DA_NEL(res),nfail);
- da_free(res); res=NULL;
- }
- }
- free_cent_return:
- free_cent(cent DBG1);
- pdnsd_free(cent);
- }
- else {
- DEBUG_MSG("Simple query for root domain type NS failed (rc: %s)\n",get_ename(rc));
- }
-
- return res;
-}
-
-
-static int p_dns_resolve(const unsigned char *name, int thint, dns_cent_t **cachedp, int hops, qhintnode_t *qhlist,
- unsigned char *c_soa)
-{
- int i,n,rc;
- int one_up=0,seenrootserv=0;
- query_stat_array serv=NULL;
- rejectlist_t *rejectlist=NULL;
-
- /* try the servers in the order of their definition */
- lock_server_data();
- n=DA_NEL(servers);
- for (i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- if(sp->rootserver<=1 && use_server(sp,name)) {
- int m=DA_NEL(sp->atup_a);
- if(m>0) {
- rejectlist_t *rjl=NULL;
- int j=0, jstart=0;
- if(sp->rand_servers) j=jstart=random()%m;
- do {
- atup_t *at=&DA_INDEX(sp->atup_a,j);
- if (at->is_up) {
- if(sp->rootserver) {
- if(!seenrootserv) {
- int nseg,mseg=1,l=0;
- const unsigned char *topdomain=NULL;
- addr2_array adrs=NULL;
- seenrootserv=1;
- nseg=rhnsegcnt(name);
- if(nseg>=2) {
- static const unsigned char rhn_arpa[6]= {4,'a','r','p','a',0};
- unsigned int rem;
- /* Check if the queried name ends in "arpa" */
- domain_match(rhn_arpa, name, &rem,NULL);
- if(rem==0) mseg=3;
- }
- if(nseg<=mseg) {
- if(nseg>0) mseg=nseg-1; else mseg=0;
- }
- for(;mseg>=1; --mseg) {
- topdomain=skipsegs(name,nseg-mseg);
- adrs=lookup_ns(topdomain);
- l=DA_NEL(adrs);
- if(l>0) break;
- if(adrs) da_free(adrs);
- }
- if(l>0) {
- /* The name servers for this top level domain have been found in the cache.
- Instead of asking the root server, we will use this cached information.
- */
- int k=0, kstart=0;
- if(sp->rand_servers) k=kstart=random()%l;
- if(serv_has_rejectlist(sp) && sp->rejectrecursively && !rjl) {
- rjl=add_rejectlist(rejectlist,sp);
- if(!rjl) {one_up=0; da_free(adrs); goto done;}
- rejectlist=rjl;
- }
- do {
- one_up=add_qserv(&serv, &DA_INDEX(adrs,k), 53, sp->timeout,
- mk_flag_val(sp)&~CFF_NOINHERIT, sp->nocache,
- sp->lean_query, sp->edns_query, 2, 0,
- !global.paranoid, topdomain, rjl);
- if(!one_up) {
- da_free(adrs);
- goto done;
- }
- if(++k==l) k=0;
- } while(k!=kstart);
- da_free(adrs);
- DEBUG_PDNSDA_MSG("Not querying root-server %s, using cached information instead.\n",
- PDNSDA2STR(PDNSD_A2_TO_A(&at->a)));
- seenrootserv=2;
- break;
- }
- }
- else if(seenrootserv==2)
- break;
- }
- if(serv_has_rejectlist(sp) && !rjl) {
- rjl=add_rejectlist(rejectlist,sp);
- if(!rjl) {one_up=0; goto done;}
- rejectlist=rjl;
- }
- one_up=add_qserv(&serv, &at->a, sp->port, sp->timeout,
- mk_flag_val(sp), sp->nocache, sp->lean_query, sp->edns_query,
- sp->rootserver?3:(!sp->is_proxy),
- needs_testing(sp), 1, NULL, rjl);
- if(!one_up)
- goto done;
- }
- if(++j==m) j=0;
- } while(j!=jstart);
- }
- }
- }
- done:
- unlock_server_data();
- if (one_up) {
- dns_cent_t *cached;
- int nocache;
- rc=p_recursive_query(serv, name, thint, &cached, &nocache, hops, NULL, qhlist, c_soa);
- if (rc==RC_OK) {
- if (!nocache) {
- dns_cent_t *tc;
- add_cache(cached);
- if ((tc=lookup_cache(name,NULL))) {
- /* The cache may hold more information than the recent query yielded.
- * try to get the merged record. If that fails, revert to the new one. */
- free_cent(cached DBG1);
- pdnsd_free(cached);
- cached=tc;
- /* rc=RC_CACHED; */
- } else
- DEBUG_MSG("p_dns_resolve: merging answer with cache failed, using local cent copy.\n");
- } else
- DEBUG_MSG("p_dns_resolve: nocache.\n");
-
- *cachedp=cached;
- }
- else if(rc==RC_CACHED || rc==RC_STALE)
- *cachedp=cached;
- }
- else {
- DEBUG_MSG("No server is marked up and allowed for this domain.\n");
- rc=RC_SERVFAIL; /* No server up */
- }
- del_qserv(serv);
- free_rejectlist(rejectlist);
- return rc;
-}
-
-static int set_flags_ttl(unsigned short *flags, time_t *ttl, dns_cent_t *cached, int tp)
-{
- rr_set_t *rrset=getrrset(cached,tp);
- if (rrset) {
- time_t t;
- *flags|=rrset->flags;
- t=rrset->ts+CLAT_ADJ(rrset->ttl);
- if (!*ttl || *ttl>t)
- *ttl=t;
- return 1;
- }
- return 0;
-}
-
-static void set_all_flags_ttl(unsigned short *flags, time_t *ttl, dns_cent_t *cached)
-{
- int i, ilim= RRARR_LEN(cached);
-
- for(i=0; i<ilim; ++i) {
- rr_set_t *rrset= RRARR_INDEX(cached,i);
- if (rrset) {
- time_t t;
- *flags|=rrset->flags;
- t=rrset->ts+CLAT_ADJ(rrset->ttl);
- if (!*ttl || *ttl>t)
- *ttl=t;
- }
- }
-}
-
-/*
- Lookup name in the cache, and if records of type thint are found, check whether a requery is needed.
- Possible returns values are:
- RC_OK: the name is locally defined.
- RC_NAMEERR: the name is locally negatively cached.
- RC_CACHED: name was found in the cache, requery not needed.
- RC_STALE: name was found in the cache, but requery is needed.
- RC_NOTCACHED: name was not found in the cache.
-*/
-static int lookup_cache_status(const unsigned char *name, int thint, dns_cent_t **cachedp, unsigned short *flagsp,
- time_t queryts, unsigned char *c_soa)
-{
- dns_cent_t *cached;
- int rc=RC_NOTCACHED;
- int wild=0;
- unsigned short flags=0;
-
- if ((cached=lookup_cache(name,&wild))) {
- short int neg=0,timed=0,need_req=0;
- time_t ttl=0;
-
- if (cached->flags&DF_LOCAL) {
-#if DEBUG>0
- {
- char dflagstr[DFLAGSTRLEN];
- DEBUG_RHN_MSG("Entry found in cache for '%s' with dflags=%s.\n",
- RHN2STR(cached->qname),dflags2str(cached->flags,dflagstr));
- }
-#endif
- if((cached->flags&DF_NEGATIVE) || wild==w_locnerr) {
- if(c_soa) {
- if(cached->c_soa!=cundef)
- *c_soa=cached->c_soa;
- else if(have_rr_SOA(cached))
- *c_soa=rhnsegcnt(cached->qname);
- else {
- unsigned char *owner=getlocalowner(cached->qname,T_SOA);
- if(owner)
- *c_soa=rhnsegcnt(owner);
- }
- }
- free_cent(cached DBG1);
- pdnsd_free(cached);
- rc= RC_NAMEERR;
- goto return_rc;
- }
- else {
- rc= RC_OK;
- goto return_rc_cent;
- }
- }
- DEBUG_RHN_MSG("Record found in cache for %s\n",RHN2STR(cached->qname));
- if (cached->flags&DF_NEGATIVE) {
- if ((ttl=cached->neg.ts+CLAT_ADJ(cached->neg.ttl))>=queryts)
- neg=1;
- else
- timed=1;
- } else {
- if (thint==QT_ALL) {
- set_all_flags_ttl(&flags, &ttl, cached);
- }
- else if (!set_flags_ttl(&flags, &ttl, cached, T_CNAME) || (getrrset_CNAME(cached)->flags&CF_NEGATIVE)) {
- flags=0; ttl=0;
- if (thint>=T_MIN && thint<=T_MAX) {
- if (set_flags_ttl(&flags, &ttl, cached, thint))
- neg=getrrset(cached,thint)->flags&CF_NEGATIVE && ttl>=queryts;
- }
- else if (thint==QT_MAILB) {
- set_flags_ttl(&flags, &ttl, cached, T_MB);
- set_flags_ttl(&flags, &ttl, cached, T_MG);
- set_flags_ttl(&flags, &ttl, cached, T_MR);
- }
- else if (thint==QT_MAILA) {
- set_flags_ttl(&flags, &ttl, cached, T_MD);
- set_flags_ttl(&flags, &ttl, cached, T_MF);
- }
- }
- if(!(flags&CF_LOCAL)) {
- if (thint==QT_ALL) {
- if(!(cached->flags&DF_AUTH))
- need_req=1;
- }
- else if (thint>=QT_MIN && thint<=QT_MAX) {
- if(!(flags&CF_AUTH && !(flags&CF_ADDITIONAL)))
- need_req=1;
- }
- if (ttl<queryts)
- timed=1;
- }
- }
-#if DEBUG>0
- {
- char dflagstr[DFLAGSTRLEN],cflagstr[CFLAGSTRLEN];
- DEBUG_MSG("Requery decision: dflags=%s, cflags=%s, req=%i, neg=%i, timed=%i, %s=%li\n",
- dflags2str(cached->flags,dflagstr),cflags2str(flags,cflagstr),need_req,neg,timed,
- ttl?"ttl":"timestamp",(long)(ttl?(ttl-queryts):ttl));
- }
-#endif
- rc = (!neg && (need_req || timed))? RC_STALE: RC_CACHED;
- return_rc_cent:
- *cachedp=cached;
- }
-
-return_rc:
- if(flagsp) *flagsp=flags;
- return rc;
-}
-
-
-/*
- * Resolve records for name into dns_cent_t, type thint.
- * q is the set of servers to query from. Set q to NULL if you want to ask the servers registered with pdnsd.
- * qslist should refer to a list of server arrays already used higher up the calling chain (may be NULL).
- * p_dns_cached_resolve() returns one of the following values:
- * RC_OK means that the name was successfully resolved by querying other servers.
- * RC_CACHED or RC_STALE means that the name was found in the cache.
- * RC_NAMEERR or RC_SERVFAIL indicates a resolve error.
- */
-static int p_dns_cached_resolve(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **cachedp,
- int hops, qstatnode_t *qslist, qhintnode_t *qhlist, time_t queryts,
- unsigned char *c_soa)
-{
- dns_cent_t *cached=NULL;
- int rc;
- unsigned short flags=0;
-
- DEBUG_RHN_MSG("Starting cached resolve for: %s, query %s\n",RHN2STR(name),get_tname(thint));
- rc= lookup_cache_status(name, thint, &cached, &flags,queryts,c_soa);
- if(rc==RC_OK) {
- /* Locally defined record. */
- *cachedp=cached;
- return RC_CACHED;
- }
- else if(rc==RC_NAMEERR) /* Locally negated name. */
- return RC_NAMEERR;
-
- /* update server records set onquery */
- if(global.onquery) test_onquery();
- if (global.lndown_kluge && !(flags&CF_LOCAL)) {
- int i,n,linkdown=1;
- lock_server_data();
- n=DA_NEL(servers);
- for(i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- if(sp->rootserver<=1) {
- int j,m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j) {
- if (DA_INDEX(sp->atup_a,j).is_up) {
- linkdown=0;
- goto done;
- }
- }
- }
- }
- done:
- unlock_server_data();
- if (linkdown) {
- DEBUG_MSG("Link is down.\n");
- rc=RC_SERVFAIL;
- goto cleanup_return;
- }
- }
- if (rc!=RC_CACHED) {
- dns_cent_t *ent;
- DEBUG_MSG("Trying name servers.\n");
- if (q)
- rc=p_recursive_query(q,name,thint, &ent,NULL,hops,qslist,qhlist,c_soa);
- else
- rc=p_dns_resolve(name,thint, &ent,hops,qhlist,c_soa);
-
- if(rc==RC_OK || rc==RC_CACHED || rc==RC_STALE) {
- if (cached) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- }
- cached=ent;
- }
- else if (rc==RC_SERVFAIL && cached && (flags&CF_NOPURGE)) {
- /* We could not get a new record, but we have a timed-out cached one
- with the nopurge flag set. This means that we shall use it even
- if timed out when no new one is available*/
- DEBUG_MSG("Falling back to cached record.\n");
- rc=RC_STALE;
- }
- else
- goto cleanup_return;
- } else {
- DEBUG_MSG("Using cached record.\n");
- }
- *cachedp=cached;
- return rc;
-
- cleanup_return:
- if(cached) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- }
- return rc;
-}
-
-
-/* r_dns_cached_resolve() is like p_dns_cached_resolve(), except that r_dns_cached_resolve()
- will not return negatively cached entries, but returns RC_NAMEERR instead.
- It also does not return RC_CACHED or RC_STALE, but RC_OK instead.
-*/
-int r_dns_cached_resolve(unsigned char *name, int thint, dns_cent_t **cachedp,
- int hops, qhintnode_t *qhlist, time_t queryts,
- unsigned char *c_soa)
-{
- dns_cent_t *cached;
- int rc=p_dns_cached_resolve(NULL,name,thint,&cached,hops,NULL,qhlist,queryts,c_soa);
- if(rc==RC_OK || rc==RC_CACHED || rc==RC_STALE) {
- if(cached->flags&DF_NEGATIVE) {
- if(c_soa)
- *c_soa=cached->c_soa;
- free_cent(cached DBG1);
- pdnsd_free(cached);
- return RC_NAMEERR;
- }
- else {
- *cachedp=cached;
- return RC_OK;
- }
- }
- return rc;
-}
-
-
-static int simple_dns_cached_resolve(atup_array atup_a, int port, char edns_query, time_t timeout,
- const unsigned char *name, int thint, dns_cent_t **cachedp)
-{
- dns_cent_t *cached=NULL;
- int rc;
-
- DEBUG_RHN_MSG("Starting simple cached resolve for: %s, query %s\n",RHN2STR(name),get_tname(thint));
- rc= lookup_cache_status(name, thint, &cached, NULL, time(NULL), NULL);
- if(rc==RC_OK) {
- /* Locally defined record. */
- *cachedp=cached;
- return RC_OK;
- }
- else if(rc==RC_NAMEERR) /* Locally negated name. */
- return RC_NAMEERR;
-
- if (rc!=RC_CACHED) {
- query_stat_array qserv;
- int j,m;
- if (cached) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- cached=NULL;
- }
- DEBUG_MSG("Trying name servers.\n");
- qserv=NULL;
- m=DA_NEL(atup_a);
- for(j=0; j<m; ++j) {
- if(!add_qserv(&qserv, &DA_INDEX(atup_a,j).a, port, timeout, 0, 0, 1, edns_query, 0, 0, 1, NULL, NULL)) {
- /* Note: qserv array already cleaned up by add_qserv() */
- return RC_SERVFAIL;
- }
- }
- rc=p_recursive_query(qserv,name,thint, &cached,NULL,0,NULL,NULL,NULL);
- del_qserv(qserv);
- if (rc==RC_OK) {
- dns_cent_t *tc;
- add_cache(cached);
- if ((tc=lookup_cache(name,NULL))) {
- /* The cache may hold more information than the recent query yielded.
- * try to get the merged record. If that fails, revert to the new one. */
- free_cent(cached DBG1);
- pdnsd_free(cached);
- cached=tc;
- } else
- DEBUG_MSG("simple_dns_cached_resolve: merging answer with cache failed, using local cent copy.\n");
- }
- else if(!(rc==RC_CACHED || rc==RC_STALE)) /* RC_CACHED and RC_STALE should not be possible. */
- return rc;
- } else {
- DEBUG_MSG("Using cached record.\n");
- }
-
- if(cached->flags&DF_NEGATIVE) {
- free_cent(cached DBG1);
- pdnsd_free(cached);
- return RC_NAMEERR;
- }
-
- *cachedp=cached;
- return RC_OK;
-}
-
-
-/* Check whether a server is responsive by sending it an (empty) query.
- rep is the number of times this is tried in case of no reply.
- */
-int query_uptest(pdnsd_a *addr, int port, const unsigned char *name, time_t timeout, int rep)
-{
- query_stat_t qs;
- int iter=0,rv;
-
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- memset(&qs.a.sin4,0,sizeof(qs.a.sin4));
- qs.a.sin4.sin_family=AF_INET;
- qs.a.sin4.sin_port=htons(port);
- qs.a.sin4.sin_addr=addr->ipv4;
- SET_SOCKA_LEN4(qs.a.sin4);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- memset(&qs.a.sin6,0,sizeof(qs.a.sin6));
- qs.a.sin6.sin6_family=AF_INET6;
- qs.a.sin6.sin6_port=htons(port);
- qs.a.sin6.sin6_flowinfo=IPV6_FLOWINFO;
- qs.a.sin6.sin6_addr=addr->ipv6;
- SET_SOCKA_LEN6(qs.a.sin6);
-
- qs.a4fallback.s_addr=INADDR_ANY;
- }
-#endif
- qs.timeout=timeout;
- qs.flags=0;
- qs.nocache=0;
- qs.auth_serv=0;
- qs.lean_query=1;
- qs.edns_query=0;
- qs.needs_testing=0;
- qs.trusted=1;
- qs.aa=0;
- qs.tc=0;
- qs.ra=0;
- qs.failed=0;
- qs.nsdomain=NULL;
- qs.rejectlist=NULL;
-
- try_again:
- qs.state=QS_INITIAL;
- qs.qm=global.query_method;
- qs.s_errno=0;
- rv=p_exec_query(NULL, name, T_A, &qs, NULL, NULL);
- if(rv==-1) {
- time_t ts, tpassed;
- for(ts=time(NULL), tpassed=0;; tpassed=time(NULL)-ts) {
- int event;
-#ifdef NO_POLL
- fd_set reads;
- fd_set writes;
- struct timeval tv;
- FD_ZERO(&reads);
- FD_ZERO(&writes);
- PDNSD_ASSERT(qs.sock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
- switch (qs.state) {
- QS_READ_CASES:
- FD_SET(qs.sock,&reads);
- break;
- QS_WRITE_CASES:
- FD_SET(qs.sock,&writes);
- break;
- }
- tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
- tv.tv_usec=0;
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that doing
- this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- p_cancel_query(&qs);
- return 0;
- }
- event=select(qs.sock+1,&reads,&writes,NULL,&tv);
-#else
- struct pollfd pfd;
- pfd.fd=qs.sock;
- switch (qs.state) {
- QS_READ_CASES:
- pfd.events=POLLIN;
- break;
- QS_WRITE_CASES:
- pfd.events=POLLOUT;
- break;
- default:
- pfd.events=0;
- }
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that doing
- this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- p_cancel_query(&qs);
- return 0;
- }
- event=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
- if (event<0) {
- if(errno==EINTR && is_interrupted_servstat_thread()) {
- DEBUG_MSG("poll/select interrupted in server status thread.\n");
- }
- else
- log_warn("poll/select failed: %s",strerror(errno));
- p_cancel_query(&qs);
- return 0;
- }
- if(event==0) {
- /* timed out */
- p_cancel_query(&qs);
- if(++iter<rep) goto try_again;
- return 0;
- }
- event=0;
-#ifdef NO_POLL
- switch (qs.state) {
- QS_READ_CASES:
- event=FD_ISSET(qs.sock,&reads);
- break;
- QS_WRITE_CASES:
- event=FD_ISSET(qs.sock,&writes);
- break;
- }
-#else
- switch (qs.state) {
- QS_READ_CASES:
- event=pfd.revents&(POLLIN|POLLERR|POLLHUP|POLLNVAL);
- break;
- QS_WRITE_CASES:
- event=pfd.revents&(POLLOUT|POLLERR|POLLHUP|POLLNVAL);
- break;
- }
-#endif
- if(event) {
- rv=p_exec_query(NULL, name, T_A, &qs, NULL, NULL);
- if(rv!=-1) break;
- }
- else {
- if(++poll_errs<=MAXPOLLERRS)
- log_error("Unhandled poll/select event in query_uptest() at %s, line %d.",__FILE__,__LINE__);
- p_cancel_query(&qs);
- return 0;
- }
- }
- }
- return (rv!=RC_SERVFAIL && rv!=RC_FATALERR);
-}
diff --git a/jni/pdnsd/src/dns_query.h b/jni/pdnsd/src/dns_query.h
deleted file mode 100644
index b57e7be..0000000
--- a/jni/pdnsd/src/dns_query.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* dns_query.h - Execute outgoing dns queries and write entries to cache
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2006, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_QUERY_H
-#define DNS_QUERY_H
-
-#include "cache.h"
-
-/* Default UDP buffer size (when EDNS is not used). */
-#define UDP_BUFSIZE 512
-
-
-typedef struct qhintnode_s qhintnode_t;
-
-/* --- parallel query */
-int r_dns_cached_resolve(unsigned char *name, int thint, dns_cent_t **cachedp,
- int hops, qhintnode_t *qhlist, time_t queryts,
- unsigned char *c_soa);
-#define dns_cached_resolve(name,thint,cachedp,hops,queryts,c_soa) \
- r_dns_cached_resolve(name,thint,cachedp,hops,NULL,queryts,c_soa)
-
-addr2_array dns_rootserver_resolv(atup_array atup_a, int port, char edns_query, time_t timeout);
-int query_uptest(pdnsd_a *addr, int port, const unsigned char *name, time_t timeout, int rep);
-
-/* --- from dns_answer.c */
-int add_opt_pseudo_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
- unsigned short udpsize, unsigned short rcode,
- unsigned short ednsver, unsigned short Zflags);
-size_t remove_opt_pseudo_rr(dns_msg_t *ans, size_t sz);
-
-#endif
diff --git a/jni/pdnsd/src/error.c b/jni/pdnsd/src/error.c
deleted file mode 100644
index 4584866..0000000
--- a/jni/pdnsd/src/error.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* error.c - Error handling
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2004, 2005, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <syslog.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include "error.h"
-#include "helpers.h"
-#include "conff.h"
-
-
-pthread_mutex_t loglock = PTHREAD_MUTEX_INITIALIZER;
-volatile short int use_log_lock=0;
-
-/*
- * Initialize a mutex for io-locking in order not to produce gibberish on
- * multiple simultaneous errors.
- */
-/* This is now defined as an inline function in error.h */
-#if 0
-void init_log_lock(void)
-{
- use_log_lock=1;
-}
-#endif
-
-/* We crashed? Ooops... */
-void crash_msg(char *msg)
-{
- log_error("%s", msg);
- log_error("pdnsd probably crashed due to a bug. Please consider sending a bug");
- log_error("report to p.a.rombouts@xxxxxxx or tmoestl@xxxxxxx");
-}
-
-/* Log a warning, error or info message.
- * If we are a daemon, use the syslog. s is a format string like in printf,
- * the optional following arguments are the arguments like in printf */
-void log_message(int prior, const char *s, ...)
-{
- int gotlock=0;
- va_list va;
- FILE *f;
-
- if (use_log_lock) {
- gotlock=softlock_mutex(&loglock);
- /* If we failed to get the lock and the type of the
- message is "info" or less important, then don't bother. */
- if(!gotlock && prior>=LOG_INFO)
- return;
- }
- if (global.daemon) {
- openlog("pdnsd",LOG_PID,LOG_DAEMON);
- va_start(va,s);
- vsyslog(prior,s,va);
- va_end(va);
- closelog();
- }
- else {
- f=stderr;
-#if DEBUG > 0
- goto printtofile;
- }
- if(debug_p) {
- f=dbg_file;
- printtofile:
-#endif
- {
- char ts[sizeof "* 12/31 23:59:59| "];
- time_t tt = time(NULL);
- struct tm tm;
-
- if(!localtime_r(&tt, &tm) || strftime(ts, sizeof(ts), "* %m/%d %T| ", &tm) <=0)
- ts[0]=0;
- fprintf(f,"%spdnsd: %s: ", ts,
- prior<=LOG_CRIT?"critical":
- prior==LOG_ERR?"error":
- prior==LOG_WARNING?"warning":
- "info");
- }
- va_start(va,s);
- vfprintf(f,s,va);
- va_end(va);
- {
- const char *p=strchr(s,0);
- if(!p || p==s || *(p-1)!='\n')
- fputc('\n',f);
- }
- }
- if (gotlock)
- pthread_mutex_unlock(&loglock);
-}
-
-
-#if DEBUG > 0
-/* XXX: The timestamp generation makes this a little heavy-weight */
-void debug_msg(int c, const char *fmt, ...)
-{
- va_list va;
-
- if (!c) {
- char ts[sizeof "12/31 23:59:59"];
- time_t tt = time(NULL);
- struct tm tm;
- unsigned *id;
-
- if(localtime_r(&tt, &tm) && strftime(ts, sizeof(ts), "%m/%d %T", &tm) > 0) {
- if((id = (unsigned *)pthread_getspecific(thrid_key)))
- fprintf(dbg_file,"%u %s| ", *id, ts);
- else
- fprintf(dbg_file,"- %s| ", ts);
- }
- }
- va_start(va,fmt);
- vfprintf(dbg_file,fmt,va);
- va_end(va);
- fflush(dbg_file);
-}
-#endif /* DEBUG */
diff --git a/jni/pdnsd/src/error.h b/jni/pdnsd/src/error.h
deleted file mode 100644
index 1678744..0000000
--- a/jni/pdnsd/src/error.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* error.h - Error handling
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2004, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef ERROR_H
-#define ERROR_H
-
-#include <config.h>
-#include <time.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <signal.h>
-#include <syslog.h>
-
-#include "thread.h"
-#include "helpers.h"
-#include "pdnsd_assert.h"
-
-/* --- from error.c */
-extern volatile short int use_log_lock;
-/* --- */
-
-void crash_msg(char *msg);
-
-inline static void init_log_lock(void) __attribute__((always_inline));
-inline static void init_log_lock(void)
-{
- use_log_lock=1;
-}
-
-void log_message(int prior,const char *s, ...) printfunc(2, 3);
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-#define log_error(args...) log_message(LOG_ERR,args)
-#define log_warn(args...) log_message(LOG_WARNING,args)
-#define log_info(level,args...) {if((level)<=global.verbosity) log_message(LOG_INFO,args);}
-#else
-/* ANSI C99 style. */
-#define log_error(...) log_message(LOG_ERR,__VA_ARGS__)
-#define log_warn(...) log_message(LOG_WARNING,__VA_ARGS__)
-#define log_info(level,...) {if((level)<=global.verbosity) log_message(LOG_INFO,__VA_ARGS__);}
-#endif
-
-/* Following are some ugly macros for debug messages that
- * should inhibit any code generation when DEBUG is not defined.
- * Of course, those messages could be done in a function, but I
- * want to save the overhead when DEBUG is not defined.
- * debug_p needs to be defined (by including conff.h), or you
- * will get strange errors.
- * A macro call expands to a complete statement, so a semicolon after
- * the macro call is redundant.
- * The arguments are normal printfs, so you know how to use the args
- */
-#if DEBUG>0
-void debug_msg(int c, const char *fmt, ...) printfunc(2, 3);
-/* from main.c */
-extern FILE *dbg_file;
-#endif
-
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-# if DEBUG > 0
-# define DEBUG_MSG(args...) {if (debug_p) debug_msg(0,args);}
-# define DEBUG_MSGC(args...) {if (debug_p) debug_msg(1,args);}
-# define DEBUG_PDNSDA_MSG(args...) {char _debugsockabuf[ADDRSTR_MAXLEN]; DEBUG_MSG(args);}
-# define PDNSDA2STR(a) pdnsd_a2str(a,_debugsockabuf,sizeof(_debugsockabuf))
-# define DEBUG_RHN_MSG(args...) {unsigned char _debugstrbuf[DNSNAMEBUFSIZE]; DEBUG_MSG(args);}
-# define RHN2STR(a) rhn2str(a,_debugstrbuf,sizeof(_debugstrbuf))
-# else
-# define DEBUG_MSG(args...)
-# define DEBUG_MSGC(args...)
-# define DEBUG_PDNSDA_MSG(args...)
-# define DEBUG_RHN_MSG(args...)
-# endif /* DEBUG > 0 */
-#else
-/* ANSI C99 style. */
-# if DEBUG > 0
-/*
- * XXX: The ANSI and GCC variadic macros should be merged as far as possible, but that
- * might make things even more messy...
- */
-# define DEBUG_MSG(...) {if (debug_p) debug_msg(0,__VA_ARGS__);}
-# define DEBUG_MSGC(...) {if (debug_p) debug_msg(1,__VA_ARGS__);}
-# define DEBUG_PDNSDA_MSG(...) {char _debugsockabuf[ADDRSTR_MAXLEN]; DEBUG_MSG(__VA_ARGS__);}
-# define PDNSDA2STR(a) pdnsd_a2str(a,_debugsockabuf,ADDRSTR_MAXLEN)
-# define DEBUG_RHN_MSG(...) {unsigned char _debugstrbuf[DNSNAMEBUFSIZE]; DEBUG_MSG(__VA_ARGS__);}
-# define RHN2STR(a) rhn2str(a,_debugstrbuf,sizeof(_debugstrbuf))
-# else
-# define DEBUG_MSG(...)
-# define DEBUG_MSGC(...)
-# define DEBUG_PDNSDA_MSG(...)
-# define DEBUG_RHN_MSG(...)
-# endif /* DEBUG > 0 */
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/freebsd_netinet_ip_icmp.h b/jni/pdnsd/src/freebsd_netinet_ip_icmp.h
deleted file mode 100644
index e4577ce..0000000
--- a/jni/pdnsd/src/freebsd_netinet_ip_icmp.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/netinet/ip_icmp.h,v 1.20 2003/03/21 15:28:10 mdodd Exp $
- */
-
-#ifndef _NETINET_IP_ICMP_H_
-#define _NETINET_IP_ICMP_H_
-
-/*
- * Interface Control Message Protocol Definitions.
- * Per RFC 792, September 1981.
- */
-
-/*
- * Internal of an ICMP Router Advertisement
- */
-struct icmp_ra_addr {
- u_int32_t ira_addr;
- u_int32_t ira_preference;
-};
-
-/*
- * Structure of an icmp header.
- */
-struct icmp {
- u_char icmp_type; /* type of message, see below */
- u_char icmp_code; /* type sub code */
- u_short icmp_cksum; /* ones complement cksum of struct */
- union {
- u_char ih_pptr; /* ICMP_PARAMPROB */
- struct in_addr ih_gwaddr; /* ICMP_REDIRECT */
- struct ih_idseq {
- n_short icd_id;
- n_short icd_seq;
- } ih_idseq;
- int ih_void;
-
- /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
- struct ih_pmtu {
- n_short ipm_void;
- n_short ipm_nextmtu;
- } ih_pmtu;
-
- struct ih_rtradv {
- u_char irt_num_addrs;
- u_char irt_wpa;
- u_int16_t irt_lifetime;
- } ih_rtradv;
- } icmp_hun;
-#define icmp_pptr icmp_hun.ih_pptr
-#define icmp_gwaddr icmp_hun.ih_gwaddr
-#define icmp_id icmp_hun.ih_idseq.icd_id
-#define icmp_seq icmp_hun.ih_idseq.icd_seq
-#define icmp_void icmp_hun.ih_void
-#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
-#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
-#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
-#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
-#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
- union {
- struct id_ts { /* ICMP Timestamp */
- n_time its_otime; /* Originate */
- n_time its_rtime; /* Receive */
- n_time its_ttime; /* Transmit */
- } id_ts;
- struct id_ip {
- struct ip idi_ip;
- /* options and then 64 bits of data */
- } id_ip;
- struct icmp_ra_addr id_radv;
- u_int32_t id_mask;
- char id_data[1];
- } icmp_dun;
-#define icmp_otime icmp_dun.id_ts.its_otime
-#define icmp_rtime icmp_dun.id_ts.its_rtime
-#define icmp_ttime icmp_dun.id_ts.its_ttime
-#define icmp_ip icmp_dun.id_ip.idi_ip
-#define icmp_radv icmp_dun.id_radv
-#define icmp_mask icmp_dun.id_mask
-#define icmp_data icmp_dun.id_data
-};
-
-/*
- * Lower bounds on packet lengths for various types.
- * For the error advice packets must first insure that the
- * packet is large enough to contain the returned ip header.
- * Only then can we do the check to see if 64 bits of packet
- * data have been returned, since we need to check the returned
- * ip header length.
- */
-#define ICMP_MINLEN 8 /* abs minimum */
-#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */
-#define ICMP_MASKLEN 12 /* address mask */
-#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */
-#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
- /* N.B.: must separately check that ip_hl >= 5 */
-
-/*
- * Definition of type and code field values.
- */
-#define ICMP_ECHOREPLY 0 /* echo reply */
-#define ICMP_UNREACH 3 /* dest unreachable, codes: */
-#define ICMP_UNREACH_NET 0 /* bad net */
-#define ICMP_UNREACH_HOST 1 /* bad host */
-#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */
-#define ICMP_UNREACH_PORT 3 /* bad port */
-#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */
-#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */
-#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */
-#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */
-#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */
-#define ICMP_UNREACH_NET_PROHIB 9 /* prohibited access */
-#define ICMP_UNREACH_HOST_PROHIB 10 /* ditto */
-#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */
-#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */
-#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */
-#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */
-#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */
-#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
-#define ICMP_REDIRECT 5 /* shorter route, codes: */
-#define ICMP_REDIRECT_NET 0 /* for network */
-#define ICMP_REDIRECT_HOST 1 /* for host */
-#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */
-#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */
-#define ICMP_ECHO 8 /* echo service */
-#define ICMP_ROUTERADVERT 9 /* router advertisement */
-#define ICMP_ROUTERSOLICIT 10 /* router solicitation */
-#define ICMP_TIMXCEED 11 /* time exceeded, code: */
-#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */
-#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */
-#define ICMP_PARAMPROB 12 /* ip header bad */
-#define ICMP_PARAMPROB_ERRATPTR 0 /* error at param ptr */
-#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */
-#define ICMP_PARAMPROB_LENGTH 2 /* bad length */
-#define ICMP_TSTAMP 13 /* timestamp request */
-#define ICMP_TSTAMPREPLY 14 /* timestamp reply */
-#define ICMP_IREQ 15 /* information request */
-#define ICMP_IREQREPLY 16 /* information reply */
-#define ICMP_MASKREQ 17 /* address mask request */
-#define ICMP_MASKREPLY 18 /* address mask reply */
-
-#define ICMP_MAXTYPE 18
-
-#define ICMP_INFOTYPE(type) \
- ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
- (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
- (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
- (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
- (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
-
-#ifdef _KERNEL
-void icmp_error(struct mbuf *, int, int, n_long, struct ifnet *);
-void icmp_input(struct mbuf *, int);
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/hash.c b/jni/pdnsd/src/hash.c
deleted file mode 100644
index 12e2074..0000000
--- a/jni/pdnsd/src/hash.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* hash.c - Manage hashes for cached dns records
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2005 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include "hash.h"
-#include "cache.h"
-#include "error.h"
-#include "helpers.h"
-#include "consts.h"
-
-
-/* This is not a perfect hash, but I hope it holds. It is designed for 1024 hash
- * buckets, and hashes strings with case-insensitivity.
- * It is position-aware in a limited way.
- * It is exactly seen a two-way hash: because I do not want to exaggerate
- * the hash buckets (i do have 1024), but I hash strings and string-comparisons
- * are expensive, I save another 32 bit hash in each hash element that is checked
- * before the string. The 32 bit hash is also used to order the entries in a hash chain.
- * I hope not to have all too much collision concentration.
- *
- * The ip hash was removed. I don't think it concentrated the collisions too much.
- * If it does, the hash algorithm needs to be changed, rather than using another
- * hash.
- * Some measurements seem to indicate that the hash algorithm is doing reasonable well.
- */
-
-dns_hash_ent_t *hash_buckets[HASH_NUM_BUCKETS];
-
-
-/*
- * Hash a dns name (length-byte string format) to HASH_SZ bit.
- * *rhash is set to a long int hash.
- */
-static unsigned dns_hash(const unsigned char *str, unsigned long *rhash)
-{
- unsigned s,i,lb,c;
- unsigned long r;
- s=0; r=0;
- i=0;
- while((lb=str[i])) {
- s+=lb<<(i%(HASH_SZ-5));
- r+=((unsigned long)lb)<<(i%(8*sizeof(unsigned long)-7));
- ++i;
- do {
- c=toupper(str[i]);
- s+=c<<(i%(HASH_SZ-5));
- r+=((unsigned long)c)<<(i%(8*sizeof(unsigned long)-7));
- ++i;
- } while(--lb);
- }
- s=(s&HASH_BITMASK)+((s&(~HASH_BITMASK))>>HASH_SZ);
- s=(s&HASH_BITMASK)+((s&(~HASH_BITMASK))>>HASH_SZ);
- s &= HASH_BITMASK;
-#ifdef DEBUG_HASH
- {
- unsigned char buf[DNSNAMEBUFSIZE];
- printf("Diagnostic: hashes for %s: %03x,%04lx\n",rhn2str(str,buf,sizeof(buf)),s,r);
- }
-#endif
- if(rhash) *rhash=r;
- return s;
-}
-
-/*
- * Initialize hash to hold a dns hash table
- */
-/* This is now defined as an inline function in hash.h */
-#if 0
-void mk_dns_hash()
-{
- int i;
- for(i=0;i<HASH_NUM_BUCKETS;i++)
- hash_buckets[i]=NULL;
-}
-#endif
-
-/*
- Lookup in the hash table for key. If it is found, return the pointer to the cache entry.
- If no entry is found, return 0.
- If loc is not NULL, it will used to store information about the location within the hash table
- This can be used to add an entry with add_dns_hash() or delete the entry with del_dns_hash_ent().
-*/
-dns_cent_t *dns_lookup(const unsigned char *key, dns_hash_loc_t *loc)
-{
- dns_cent_t *retval=NULL;
- unsigned idx;
- unsigned long rh;
- dns_hash_ent_t **hep,*he;
-
- idx = dns_hash(key,&rh);
- hep = &hash_buckets[idx];
- while ((he= *hep) && he->rhash<=rh) {
- if (he->rhash==rh && rhnicmp(key,he->data->qname)) {
- retval = he->data;
- break;
- }
- hep = &he->next;
- }
- if(loc) {
- loc->pos = hep;
- loc->rhash = rh;
- }
- return retval;
-}
-
-/*
- Add a cache entry to the hash table.
-
- loc must contain the location where the the new entry should be inserted
- (this location can be obtained with dns_lookup).
-
- add_dns_hash returns 1 on success, or 0 if out of memory.
-*/
-int add_dns_hash(dns_cent_t *data, dns_hash_loc_t *loc)
-{
- dns_hash_ent_t *he = malloc(sizeof(dns_hash_ent_t));
-
- if(!he)
- return 0;
-
- he->next = *(loc->pos);
- he->rhash = loc->rhash;
- he->data = data;
- *(loc->pos) = he;
-
- return 1;
-}
-
-/*
- Delete the hash entry indentified by the location returned by dns_lookup().
-*/
-dns_cent_t *del_dns_hash_ent(dns_hash_loc_t *loc)
-{
- dns_hash_ent_t *he = *(loc->pos);
- dns_cent_t *data;
-
- *(loc->pos) = he->next;
- data = he->data;
- free(he);
- return data;
-}
-
-/*
- * Delete the first entry indexed by key from the hash. Returns the data field or NULL.
- * Since two cents are not allowed to be for the same host name, there will be only one.
- */
-dns_cent_t *del_dns_hash(const unsigned char *key)
-{
- unsigned idx;
- unsigned long rh;
- dns_hash_ent_t **hep,*he;
- dns_cent_t *data;
-
- idx = dns_hash(key,&rh);
- hep = &hash_buckets[idx];
- while ((he= *hep) && he->rhash<=rh) {
- if (he->rhash==rh && rhnicmp(key,he->data->qname)) {
- *hep = he->next;
- data = he->data;
- free(he);
- return data;
- }
- hep = &he->next;
- }
- return NULL; /* not found */
-}
-
-
-/*
- * Delete all entries in a hash bucket.
- */
-void free_dns_hash_bucket(int i)
-{
- dns_hash_ent_t *he,*hen;
-
- he=hash_buckets[i];
- hash_buckets[i]=NULL;
- while (he) {
- hen=he->next;
- del_cent(he->data);
- free(he);
- he=hen;
- }
-}
-
-/*
- * Delete all entries in a hash bucket whose names match those in
- * an include/exclude list.
- */
-void free_dns_hash_selected(int i, slist_array sla)
-{
- dns_hash_ent_t **hep,*he,*hen;
- int j,m=DA_NEL(sla);
-
- hep= &hash_buckets[i];
- he= *hep;
-
- while (he) {
- unsigned char *name=he->data->qname;
- for(j=0;j<m;++j) {
- slist_t *sl=&DA_INDEX(sla,j);
- unsigned int nrem,lrem;
- domain_match(name,sl->domain,&nrem,&lrem);
- if(!lrem && (!sl->exact || !nrem)) {
- if(sl->rule==C_INCLUDED)
- goto delete_entry;
- else
- break;
- }
- }
- /* default policy is not to delete */
- hep= &he->next;
- he= *hep;
- continue;
-
- delete_entry:
- *hep=hen=he->next;;
- del_cent(he->data);
- free(he);
- he=hen;
- }
-}
-
-/*
- * Delete the whole hash table, freeing all memory
- */
-void free_dns_hash()
-{
- int i;
- dns_hash_ent_t *he,*hen;
- for (i=0;i<HASH_NUM_BUCKETS;i++) {
- he=hash_buckets[i];
- hash_buckets[i]=NULL;
- while (he) {
- hen=he->next;
- del_cent(he->data);
- free(he);
- he=hen;
- }
- }
-}
-
-/*
- * The following functions are for iterating over the hash.
- * fetch_first returns the data field of the first element (or NULL if there is none), and fills pos
- * for subsequent calls of fetch_next.
- * fetch_next returns the data field of the element after the element that was returned by the last
- * call with the same position argument (or NULL if there is none)
- *
- * Note that these are designed so that you may actually delete the elements you retrieved from the hash.
- */
-dns_cent_t *fetch_first(dns_hash_pos_t *pos)
-{
- int i;
- for (i=0;i<HASH_NUM_BUCKETS;i++) {
- dns_hash_ent_t *he=hash_buckets[i];
- if (he) {
- pos->bucket=i;
- pos->ent=he->next;
- return he->data;
- }
- }
- return NULL;
-}
-
-dns_cent_t *fetch_next(dns_hash_pos_t *pos)
-{
- dns_hash_ent_t *he=pos->ent;
- int i;
- if (he) {
- pos->ent=he->next;
- return he->data;
- }
-
- for (i=pos->bucket+1;i<HASH_NUM_BUCKETS;i++) {
- he=hash_buckets[i];
- if (he) {
- pos->bucket=i;
- pos->ent=he->next;
- return he->data;
- }
- }
- return NULL;
-}
-
-#ifdef DEBUG_HASH
-void dumphash()
-{
- if(debug_p) {
- int i, j;
- dns_hash_ent_t *he;
-
- for (i=0; i<HASH_NUM_BUCKETS; i++) {
- for (j=0, he=hash_buckets[i]; he; he=he->next, j++) ;
- DEBUG_MSG("bucket %d: %d entries\n", i, j);
- }
- }
-}
-#endif
diff --git a/jni/pdnsd/src/hash.h b/jni/pdnsd/src/hash.h
deleted file mode 100644
index db25a34..0000000
--- a/jni/pdnsd/src/hash.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* hash.h - Manage hashes for cached dns records
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2003, 2005 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _HASH_H_
-#define _HASH_H_
-#include <config.h>
-#include "cache.h"
-
-typedef struct dns_hash_ent_s {
- struct dns_hash_ent_s *next;
- unsigned long rhash; /* this is a better hash */
- dns_cent_t *data;
-} dns_hash_ent_t;
-
-/* Redefine this if you want another hash size. Should work ;-).
- * The number of hash buckets is computed as power of two;
- * so, e.g. HASH_SZ set to 10 yields 1024 hash rows (2^10 or 1<<10).
- * Only powers of two are possible conveniently.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-/* #define HASH_SZ 10 */ /* Now defined in config.h */
-#define HASH_NUM_BUCKETS (1<<HASH_SZ)
-
-#define HASH_BITMASK (HASH_NUM_BUCKETS-1)
-
-extern dns_hash_ent_t *hash_buckets[];
-
-/* A type for remembering the position in the hash table where a new entry can be inserted. */
-typedef struct {
- dns_hash_ent_t **pos; /* pointer to the location in the hash table */
- unsigned long rhash; /* long hash */
-} dns_hash_loc_t;
-
-/* A type for position specification for fetch_first and fetch_next */
-typedef struct {
- int bucket; /* bucket chain we are in */
- dns_hash_ent_t *ent; /* entry */
-} dns_hash_pos_t;
-
-inline static void mk_dns_hash() __attribute__((always_inline));
-inline static void mk_dns_hash()
-{
- int i;
- for(i=0;i<HASH_NUM_BUCKETS;i++)
- hash_buckets[i]=NULL;
-}
-
-dns_cent_t *dns_lookup(const unsigned char *key, dns_hash_loc_t *loc);
-int add_dns_hash(dns_cent_t *data, dns_hash_loc_t *loc);
-dns_cent_t *del_dns_hash_ent(dns_hash_loc_t *loc);
-dns_cent_t *del_dns_hash(const unsigned char *key);
-void free_dns_hash_bucket(int i);
-void free_dns_hash_selected(int i, slist_array sla);
-void free_dns_hash();
-
-dns_cent_t *fetch_first(dns_hash_pos_t *pos);
-dns_cent_t *fetch_next(dns_hash_pos_t *pos);
-
-#ifdef DEBUG_HASH
-void dumphash();
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/helpers.c b/jni/pdnsd/src/helpers.c
deleted file mode 100644
index 5682d64..0000000
--- a/jni/pdnsd/src/helpers.c
+++ /dev/null
@@ -1,795 +0,0 @@
-/* helpers.c - Various helper functions
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2005, 2006, 2008, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-#include <errno.h>
-#include "ipvers.h"
-#include "thread.h"
-#include "error.h"
-#include "helpers.h"
-#include "cache.h"
-#include "conff.h"
-
-
-/*
- * This is to exit pdnsd from any thread.
- */
-void pdnsd_exit()
-{
- pthread_kill(main_thrid,SIGTERM);
- pthread_exit(NULL);
-}
-
-/*
- * Try to grab a mutex. If we can't, fail. This will loop until we get the
- * mutex or fail. This is only used in debugging code or at exit, otherwise
- * we might run into lock contention problems.
- */
-int softlock_mutex(pthread_mutex_t *mutex)
-{
- unsigned int tr=0;
- while(pthread_mutex_trylock(mutex)) {
- if (++tr>=SOFTLOCK_MAXTRIES)
- return 0;
- usleep_r(10000);
- }
- return 1;
-}
-
-/*
- * setuid() and setgid() for a specified user.
- */
-int run_as(const char *user)
-{
- if (user[0]) {
-#ifdef HAVE_GETPWNAM_R
- struct passwd pwdbuf, *pwd;
- size_t buflen;
- int err;
-
- for(buflen=128;; buflen*=2) {
- char buf[buflen]; /* variable length array */
-
- /* Note that we use getpwnam_r() instead of getpwnam(),
- which returns its result in a statically allocated buffer and
- cannot be considered thread safe.
- Doesn't use NSS! */
- err=getpwnam_r(user, &pwdbuf, buf, buflen, &pwd);
- if(err==0 && pwd) {
- /* setgid first, because we may not be allowed to do it anymore after setuid */
- if (setgid(pwd->pw_gid)!=0) {
- log_error("Could not change group id to that of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
-
- /* initgroups uses NSS, so we can disable it,
- i.e. we might need DNS for LDAP lookups, which times out */
- if (global.use_nss && (initgroups(user, pwd->pw_gid)!=0)) {
- log_error("Could not initialize the group access list of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
- if (setuid(pwd->pw_uid)!=0) {
- log_error("Could not change user id to that of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
- break;
- }
- else if(err!=ERANGE) {
- if(err)
- log_error("run_as user '%s' could not be found: %s",user,strerror(err));
- else
- log_error("run_as user '%s' could not be found.",user);
- return 0;
- }
- else if(buflen>=16*1024) {
- /* If getpwnam_r() seems defective, call it quits rather than
- keep on allocating ever larger buffers until we crash. */
- log_error("getpwnam_r() requires more than %u bytes of buffer space.",(unsigned)buflen);
- return 0;
- }
- /* Else try again with larger buffer. */
- }
-#else
- /* No getpwnam_r() :-( We'll use getpwnam() and hope for the best. */
- struct passwd *pwd;
-
- if (!(pwd=getpwnam(user))) {
- log_error("run_as user %s could not be found.",user);
- return 0;
- }
- /* setgid first, because we may not allowed to do it anymore after setuid */
- if (setgid(pwd->pw_gid)!=0) {
- log_error("Could not change group id to that of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
- /* initgroups uses NSS, so we can disable it,
- i.e. we might need DNS for LDAP lookups, which times out */
- if (global.use_nss && (initgroups(user, pwd->pw_gid)!=0)) {
- log_error("Could not initialize the group access list of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
- if (setuid(pwd->pw_uid)!=0) {
- log_error("Could not change user id to that of run_as user '%s': %s",
- user,strerror(errno));
- return 0;
- }
-#endif
- }
-
- return 1;
-}
-
-/*
- * returns whether c is allowed in IN domain names
- */
-#if 0
-int isdchar (unsigned char c)
-{
- if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='-'
-#ifdef UNDERSCORE
- || c=='_'
-#endif
- )
- return 1;
- return 0;
-}
-#endif
-
-/*
- * Convert a string given in dotted notation to the transport format (length byte prepended
- * domain name parts, ended by a null length sequence)
- * The memory areas referenced by str and rhn may not overlap.
- * The buffer rhn points to is assumed to be at least DNSNAMEBUFSIZE bytes in size.
- *
- * Returns 1 if successful, otherwise 0.
- */
-int str2rhn(const unsigned char *str, unsigned char *rhn)
-{
- unsigned int i,j;
-
- if(*str=='.' && !*(str+1)) {
- /* Special case: root domain */
- rhn[0]=0;
- return 1;
- }
-
- for(i=0;;) {
- unsigned int jlim= i+63;
- if(jlim>DNSNAMEBUFSIZE-2) jlim=DNSNAMEBUFSIZE-2; /* DNSNAMEBUFSIZE-2 because the termination 0 has to follow */
- for(j=i; str[j] && str[j]!='.'; ++j) {
- if(j>=jlim) return 0;
- rhn[j+1]=str[j];
- }
- if(!str[j])
- break;
- if(j<=i)
- return 0;
- rhn[i]=(unsigned char)(j-i);
- i = j+1;
- }
-
- rhn[i]=0;
- if (j>i || i==0)
- return 0;
- return 1;
-}
-
-/*
- parsestr2rhn is essentially the same as str2rhn, except that it doesn't look beyond
- the first len chars in the input string. It also tolerates strings
- not ending in a dot and returns a message in case of an error.
- */
-const char *parsestr2rhn(const unsigned char *str, unsigned int len, unsigned char *rhn)
-{
- unsigned int i,j;
-
- if(len>0 && *str=='.' && (len==1 || !*(str+1))) {
- /* Special case: root domain */
- rhn[0]=0;
- return NULL;
- }
-
- i=0;
- do {
- unsigned int jlim= i+63;
- if(jlim>DNSNAMEBUFSIZE-2) jlim=DNSNAMEBUFSIZE-2;
- for(j=i; j<len && str[j] && str[j]!='.'; ++j) {
- /* if(!isdchar(str[j]))
- return "Illegal character in domain name"; */
- if(j>=jlim)
- return "Domain name element too long";
- rhn[j+1]=str[j];
- }
-
- if(j<=i) {
- if(j<len && str[j])
- return "Empty name element in domain name";
- else
- break;
- }
-
- rhn[i]=(unsigned char)(j-i);
- i = j+1;
- } while(j<len && str[j]);
-
- rhn[i]=0;
- if(i==0)
- return "Empty domain name not allowed";
- return NULL;
-}
-
-/*
- * Take a host name as used in the dns transfer protocol (a length byte,
- * followed by the first part of the name, ..., followed by a 0 length byte),
- * and return a string in the usual dotted notation. Length checking is done
- * elsewhere (in decompress_name), this takes names from the cache which are
- * validated. No more than "size" bytes will be written to the buffer str points to
- * (but size must be positive).
- * If the labels in rhn contains non-printable characters, these are represented
- * in the result by a backslash followed three octal digits. Additionally some
- * special characters are preceded by a backslash. Normally the result should
- * fit within DNSNAMEBUFSIZE bytes, but if there are many non-printable characters, the
- * receiving buffer may not be able to contain the full result. In that case the
- * truncation in the result is indicated by series of trailing dots. This
- * function is only used for diagnostic purposes, thus a truncated result should
- * not be a very serious problem (and should only occur under pathological
- * circumstances).
- */
-const unsigned char *rhn2str(const unsigned char *rhn, unsigned char *str, unsigned int size)
-{
- unsigned int i,j,lb;
-
- if(size==0) return NULL;
-
- i=0; j=0;
- lb=rhn[i++];
- if (!lb) {
- if(size>=2)
- str[j++]='.';
- }
- else {
- do {
- for (;lb;--lb) {
- unsigned char c;
- if(j+2>=size)
- goto overflow;
- c=rhn[i++];
- if(isgraph(c)) {
- if(c=='.' || c=='\\' || c=='"') {
- str[j++]='\\';
- if(j+2>=size)
- goto overflow;
- }
- str[j++]=c;
- }
- else {
- unsigned int rem=size-1-j;
- int n=snprintf(charp &str[j],rem,"\\%03o",c);
- if(n<0 || n>=rem) {
- str[j++]='.';
- goto overflow;
- }
- j+=n;
- }
- }
- str[j++]='.';
- lb=rhn[i++];
- } while(lb);
- }
- str[j]=0;
- return str;
-
- overflow:
- j=size;
- str[--j]=0;
- if(j>0) {
- str[--j]='.';
- if(j>0) {
- str[--j]='.';
- if(j>0)
- str[--j]='.';
- }
- }
- return str;
-}
-
-/* Return the length of a domain name in transport format.
- The definition has in fact been moved to helpers.h as an inline function.
- Note added by Paul Rombouts:
- Compared to the definition used by Thomas Moestl (strlen(rhn)+1), the following definition of rhnlen
- may yield a different result in certain error situations (when a domain name segment contains null byte).
-*/
-#if 0
-unsigned int rhnlen(const unsigned char *rhn)
-{
- unsigned int i=0,lb;
-
- while((lb=rhn[i++]))
- i+=lb;
- return i;
-}
-#endif
-
-/*
- * Non-validating rhn copy (use with checked or generated data only).
- * Returns number of characters copied. The buffer dst points to is assumed to be DNSNAMEBUFSIZE (or
- * at any rate large enough) bytes in size.
- * The answer assembly code uses this; it is guaranteed to not clobber anything
- * after the name.
- */
-unsigned int rhncpy(unsigned char *dst, const unsigned char *src)
-{
- unsigned int len = rhnlen(src);
-
- PDNSD_ASSERT(len<=DNSNAMEBUFSIZE,"rhncpy: src too long!");
- memcpy(dst,src,len>DNSNAMEBUFSIZE?DNSNAMEBUFSIZE:len);
- return len;
-}
-
-
-/* Check whether a name is a normal wire-encoded domain name,
- i.e. is not compressed, doesn't use extended labels and is not
- too long.
-*/
-int isnormalencdomname(const unsigned char *rhn, unsigned maxlen)
-{
- unsigned int i,lb;
-
- if(maxlen>DNSNAMEBUFSIZE)
- maxlen=DNSNAMEBUFSIZE;
- for(i=0;;) {
- if(i>=maxlen) return 0;
- lb=rhn[i++];
- if(lb==0) break;
- if(lb>0x3f) return 0;
- i += lb;
- }
-
- return 1;
-}
-
-int str2pdnsd_a(const char *addr, pdnsd_a *a)
-{
-#ifdef ENABLE_IPV4
- if (run_ipv4) {
- return inet_aton(addr,&a->ipv4);
- }
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- /* Try to map an IPv4 address to IPv6 */
- struct in_addr a4;
- if(inet_aton(addr,&a4)) {
- a->ipv6=global.ipv4_6_prefix;
- ((uint32_t *)(&a->ipv6))[3]=a4.s_addr;
- return 1;
- }
- return inet_pton(AF_INET6,addr,&a->ipv6)>0;
- }
-#endif
- /* return 0; */
-}
-
-/* definition moved to helpers.h */
-#if 0
-int is_inaddr_any(pdnsd_a *a)
-{
- return SEL_IPVER( a->ipv4.s_addr==INADDR_ANY,
- IN6_IS_ADDR_UNSPECIFIED(&a->ipv6) );
-}
-#endif
-
-/*
- * This is used for user output only, so it does not matter when an error occurs.
- */
-const char *pdnsd_a2str(pdnsd_a *a, char *buf, int maxlen)
-{
- const char *res= SEL_IPVER( inet_ntop(AF_INET,&a->ipv4,buf,maxlen),
- inet_ntop(AF_INET6,&a->ipv6,buf,maxlen) );
- if (!res) {
- log_error("inet_ntop: %s", strerror(errno));
- return "?.?.?.?";
- }
-
- return res;
-}
-
-
-/* Appropriately set our random device */
-#ifdef R_DEFAULT
-# if (TARGET == TARGET_BSD) && !defined(__NetBSD__)
-# define R_ARC4RANDOM 1
-# else
-# define R_RANDOM 1
-# endif
-#endif
-
-#ifdef RANDOM_DEVICE
-FILE *rand_file;
-#endif
-
-#ifdef R_RANDOM
-void init_crandom()
-{
- struct timeval tv;
- struct timezone tz;
-
- gettimeofday(&tv,&tz);
- srandom(tv.tv_sec^tv.tv_usec); /* not as guessable as time() */
-}
-#endif
-
-/* initialize the PRNG */
-int init_rng()
-{
-#ifdef RANDOM_DEVICE
- if (!(rand_file=fopen(RANDOM_DEVICE,"r"))) {
- log_error("Could not open %s.",RANDOM_DEVICE);
- return 0;
- }
-#endif
-#ifdef R_RANDOM
- init_crandom();
-#endif
- return 1;
-}
-
-/* The following function is now actually defined as a macro in helpers.h */
-#if 0
-void free_rng()
-{
-#ifdef RANDOM_DEVICE
- if (rand_file)
- fclose(rand_file);
-#endif
-}
-#endif
-
-/* generate a (more or less) random number 16 bits long. */
-unsigned short get_rand16()
-{
-#ifdef RANDOM_DEVICE
- unsigned short rv;
-
- if (rand_file) {
- if (fread(&rv,sizeof(rv),1, rand_file)!=1) {
- log_error("Error while reading from random device: %s", strerror(errno));
- pdnsd_exit();
- }
- return rv&0xffff;
- } else
- return random()&0xffff;
-#endif
-#ifdef R_RANDOM
- return random()&0xffff;
-#endif
-#ifdef R_ARC4RANDOM
- return arc4random()&0xffff;
-#endif
-}
-
-/* fsprintf does formatted output to a file descriptor.
- The functionality is similar to fprintf, but note that fd
- is of type int instead of FILE*.
- This function has been rewritten by Paul Rombouts */
-int fsprintf(int fd, const char *format, ...)
-{
- int n;
- va_list va;
-
- {
- char buf[256];
-
- va_start(va,format);
- n=vsnprintf(buf,sizeof(buf),format,va);
- va_end(va);
-
- if(n<(int)sizeof(buf)) {
- if(n>0) n=write_all(fd,buf,n);
- return n;
- }
- }
- /* retry with a right sized buffer, needs glibc 2.1 or higher to work */
- {
- unsigned bufsize=n+1;
- char buf[bufsize];
-
- va_start(va,format);
- n=vsnprintf(buf,bufsize,format,va);
- va_end(va);
-
- if(n>0) n=write_all(fd,buf,n);
- }
- return n;
-}
-
-/* Convert data into a hexadecimal representation (for debugging purposes)..
- The result is stored in the character array buf.
- If buf is not large enough to hold the result, the
- truncation is indicated by trailing dots.
-*/
-void hexdump(const void *data, int dlen, char *buf, int buflen)
-{
- const unsigned char *p=data;
- int i,j=0;
- for(i=0;i<dlen;++i) {
- int rem=buflen-j;
- int n=snprintf(buf+j, rem, i==0?"%02x":" %02x", p[i]);
- if(n<0 || n>=rem) goto truncated;
- j += n;
- }
- goto done;
-
- truncated:
- if(j>=6) {
- j -= 3;
- if(j+4>=buflen)
- j -= 3;
- buf[j++]=' ';
- buf[j++]='.';
- buf[j++]='.';
- buf[j++]='.';
- }
- else {
- int ndots=buflen-1;
- if(ndots>3) ndots=3;
- j=0;
- while(j<ndots) buf[j++]='.';
- }
- done:
- buf[j]=0;
-}
-
-/* Copy string "in" to "str" buffer, converting non-printable characters
- to escape sequences.
- Returns the length of the output string, or -1 if the result does not
- fit in the output buffer.
-*/
-int escapestr(const char *in, int ilen, char *str, int size)
-{
- int i,j=0;
- for(i=0;i<ilen;++i) {
- unsigned char c;
- if(j+1>=size)
- return -1;
- c=in[i];
- if(!isprint(c)) {
- int rem=size-j;
- int n=snprintf(&str[j],rem,"\\%03o",c);
- if(n<0 || n>=rem) {
- return -1;
- }
- j+=n;
- }
- else {
- if(c=='\\' || c=='"') {
- str[j++]='\\';
- if(j+1>=size)
- return -1;
- }
- str[j++]=c;
- }
- }
- str[j]=0;
- return j;
-}
-
-/*
- * This is not like strcmp, but will return 1 on match or 0 if the
- * strings are different.
- */
-/* definition moved to helpers.h as an inline function. */
-#if 0
-int stricomp(char *a, char *b)
-{
- int i;
- if (strlen(a) != strlen(b))
- return 0;
- for (i=0;i<strlen(a);i++) {
- if (tolower(a[i])!=tolower(b[i]))
- return 0;
- }
- return 1;
-}
-#endif
-
-/* Bah. I want strlcpy */
-/* definition moved to helpers.h */
-#if 0
-int strncp(char *dst, char *src, int dstsz)
-{
- char o;
-
- strncpy(dst,src,dstsz);
- o=dst[dstsz-1];
- dst[dstsz-1]='\0';
- if (strlen(dst) >= dstsz-1 && o!='\0')
- return 0;
- return 1;
-}
-#endif
-
-#ifndef HAVE_GETLINE
-/* Note by Paul Rombouts: I know that getline is a GNU extension and is not really portable,
- but the alternative standard functions have some real problems.
- The following substitute does not have exactly the same semantics as the GNU getline,
- but it should be good enough, as long as the stream doesn't contain any null chars.
- This version is actually based on fgets_realloc() that I found in the WWWOFFLE source.
-*/
-
-#define BUFSIZE 256
-int getline(char **lineptr, size_t *n, FILE *stream)
-{
- char *line=*lineptr;
- size_t sz=*n,i;
-
- if(!line || sz<BUFSIZE) {
- sz=BUFSIZE;
- line = realloc(line,sz);
- if(!line) return -1;
- *lineptr=line;
- *n=sz;
- }
-
- for (i=0;;) {
- char *lni;
-
- if(!(lni=fgets(line+i,sz-i,stream))) {
- if(i && feof(stream))
- break;
- else
- return -1;
- }
-
- i += strlen(lni);
-
- if(i<sz-1 || line[i-1]=='\n')
- break;
-
- sz += BUFSIZE;
- line = realloc(line,sz);
- if(!line) return -1;
- *lineptr=line;
- *n=sz;
- }
-
- return i;
-}
-#undef BUFSIZE
-#endif
-
-
-#ifndef HAVE_VASPRINTF
-/* On systems where the macro va_copy is not available, hopefully simple assignment will work.
- Otherwise, I don't see any portable way of defining vasprintf() (without using a completely
- different algorithm).
-*/
-#ifndef va_copy
-# ifdef __va_copy
-# define va_copy __va_copy
-# else
-# warning "No va_copy or __va_copy macro found, trying simple assignment."
-# define va_copy(dst,src) ((dst)=(src))
-# endif
-#endif
-
-int vasprintf (char **lineptr, const char *format, va_list va)
-{
- int sz=128,n;
- char *line=malloc(sz);
- va_list vasave;
-
- if(!line) return -1;
-
- va_copy(vasave,va);
- n=vsnprintf(line,sz,format,va);
-
- if(n>=sz) {
- /* retry with a right sized buffer, needs glibc 2.1 or higher to work */
- sz=n+1;
- {
- char *tmp=realloc(line,sz);
- if(tmp) {
- line=tmp;
- n=vsnprintf(line,sz,format,vasave);
- }
- else
- n= -1;
- }
- }
- va_end(vasave);
-
- if(n>=0)
- *lineptr=line;
- else
- free(line);
- return n;
-}
-#endif
-
-#ifndef HAVE_ASPRINTF
-int asprintf (char **lineptr, const char *format, ...)
-{
- int n;
- va_list va;
-
- va_start(va,format);
- n=vasprintf(lineptr,format,va);
- va_end(va);
-
- return n;
-}
-#endif
-
-#ifndef HAVE_INET_NTOP
-const char *inet_ntop(int af, const void *src, char *dst, size_t size)
-{
- const char *rc = NULL;
-
- if (src != NULL && dst != NULL && size > 0) {
- switch (af) {
- case AF_INET:
- {
- const unsigned char *p=src;
- int n = snprintf(dst, size, "%u.%u.%u.%u",
- p[0],p[1],p[2],p[3]);
- if (n >= 0 && n < size) rc = dst;
- }
- break;
-
-#ifdef AF_INET6
- case AF_INET6:
- {
- const unsigned char *p=src;
- unsigned int i,offs=0;
- for (i=0;i<16;i+=2) {
- int n=snprintf(dst+offs, size-offs,i==0?"%x":":%x", ((unsigned)p[i]<<8)|p[i+1]);
- if(n<0) return NULL;
- offs+=n;
- if(offs>=size) return NULL;
- }
- rc = dst;
- }
- break;
-#endif
- }
- }
-
- return rc;
-}
-#endif
diff --git a/jni/pdnsd/src/helpers.h b/jni/pdnsd/src/helpers.h
deleted file mode 100644
index e45c56e..0000000
--- a/jni/pdnsd/src/helpers.h
+++ /dev/null
@@ -1,319 +0,0 @@
-/* helpers.h - Various helper functions
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2007, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef HELPERS_H
-#define HELPERS_H
-
-#include <config.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <string.h>
-#include <ctype.h>
-#include "cache.h"
-#include "pdnsd_assert.h"
-
-#define SOFTLOCK_MAXTRIES 1000
-
-int run_as(const char *user);
-void pdnsd_exit(void);
-int softlock_mutex(pthread_mutex_t *mutex);
-
-#if 0
-inline static int isdchar (unsigned char c)
-{
- return ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='-'
-#ifdef UNDERSCORE
- || c=='_'
-#endif
- );
-}
-#endif
-
-const unsigned char *rhn2str(const unsigned char *rhn, unsigned char *str, unsigned int size);
-int str2rhn(const unsigned char *str, unsigned char *rhn);
-const char *parsestr2rhn(const unsigned char *str, unsigned int len, unsigned char *rhn);
-
-/* Note added by Paul Rombouts:
- Compared to the definition used by Thomas Moestl (strlen(rhn)+1), the following definition of rhnlen
- may yield a different result in certain error situations (when a domain name segment contains a null byte).
-*/
-inline static unsigned int rhnlen(const unsigned char *rhn)
- __attribute__((always_inline));
-inline static unsigned int rhnlen(const unsigned char *rhn)
-{
- unsigned int i=0,lb;
-
- while((lb=rhn[i++]))
- i+=lb;
- return i;
-}
-
-/* Skip k segments in a name in length-byte string notation. */
-inline static const unsigned char *skipsegs(const unsigned char *nm, unsigned k)
- __attribute__((always_inline));
-inline static const unsigned char *skipsegs(const unsigned char *nm, unsigned k)
-{
- unsigned lb;
- for(;k && (lb= *nm); --k) {
- nm += lb+1;
- }
- return nm;
-}
-
-/* Skip a name in length-byte string notation and return a pointer to the
- position right after the terminating null byte.
-*/
-inline static unsigned char *skiprhn(unsigned char *rhn)
- __attribute__((always_inline));
-inline static unsigned char *skiprhn(unsigned char *rhn)
-{
- unsigned lb;
-
- while((lb= *rhn++))
- rhn += lb;
- return rhn;
-}
-
-/* count the number of name segments of a name in length-byte string notation. */
-inline static unsigned int rhnsegcnt(const unsigned char *rhn)
- __attribute__((always_inline));
-inline static unsigned int rhnsegcnt(const unsigned char *rhn)
-{
- unsigned int res=0,lb;
-
- while((lb= *rhn)) {
- ++res;
- rhn += lb+1;
- }
- return res;
-}
-
-unsigned int rhncpy(unsigned char *dst, const unsigned char *src);
-int isnormalencdomname(const unsigned char *rhn, unsigned maxlen);
-
-inline static int is_inaddr_any(pdnsd_a *a) __attribute__((always_inline));
-inline static int is_inaddr_any(pdnsd_a *a)
-{
- return SEL_IPVER( a->ipv4.s_addr==INADDR_ANY,
- IN6_IS_ADDR_UNSPECIFIED(&a->ipv6) );
-}
-
-
-inline static int same_inaddr(pdnsd_a *a, pdnsd_a *b)
- __attribute__((always_inline));
-inline static int same_inaddr(pdnsd_a *a, pdnsd_a *b)
-{
- return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
- IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) );
-}
-
-/* Compare a pdnsd_a* with a pdnsd_a2*. */
-inline static int same_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
- __attribute__((always_inline));
-inline static int same_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-{
- return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
- IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) && b->ipv4.s_addr==INADDR_ANY );
-}
-
-inline static int equiv_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
- __attribute__((always_inline));
-inline static int equiv_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-{
- return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
- IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) ||
- (b->ipv4.s_addr!=INADDR_ANY && ADDR_EQUIV6_4(&a->ipv6,&b->ipv4)) );
-}
-
-int str2pdnsd_a(const char *addr, pdnsd_a *a);
-const char *pdnsd_a2str(pdnsd_a *a, char *buf, int maxlen);
-
-int init_rng(void);
-#ifdef RANDOM_DEVICE
-extern FILE *rand_file;
-/* Because this is usually empty, it is now defined as a macro to save overhead.*/
-#define free_rng() {if (rand_file) fclose(rand_file);}
-#else
-#define free_rng()
-#endif
-
-unsigned short get_rand16(void);
-
-int fsprintf(int fd, const char *format, ...) printfunc(2, 3);
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-# define fsprintf_or_return(args...) {int _retval; if((_retval=fsprintf(args))<0) return _retval;}
-#else
-/* ANSI C99 style variadic macro. */
-# define fsprintf_or_return(...) {int _retval; if((_retval=fsprintf(__VA_ARGS__))<0) return _retval;}
-#endif
-
-/* Added by Paul Rombouts */
-inline static ssize_t write_all(int fd,const void *data,size_t n)
- __attribute__((always_inline));
-inline static ssize_t write_all(int fd,const void *data,size_t n)
-{
- ssize_t written=0;
-
- while(written<n) {
- ssize_t m=write(fd,(const void*)(((const char*)data)+written),n-written);
-
- if(m<0)
- return m;
-
- written+=m;
- }
-
- return written;
-}
-
-void hexdump(const void *data, int dlen, char *buf, int buflen);
-int escapestr(const char *in, int ilen, char *str, int size);
-
-#if 0
-inline static int stricomp(const char *a, const char *b)
-{
- return !strcasecmp(a,b);
-}
-#endif
-
-/* compare two names in length byte - string format
- rhnicmp returns 1 if the names are the same (ignoring upper/lower case),
- 0 otherwise.
- */
-inline static int rhnicmp(const unsigned char *a, const unsigned char *b)
- __attribute__((always_inline));
-inline static int rhnicmp(const unsigned char *a, const unsigned char *b)
-{
- unsigned int i=0;
- unsigned char lb;
- for(;;) {
- lb=a[i];
- if(lb!=b[i]) return 0;
- if(!lb) break;
- ++i;
- do {
- if(tolower(a[i])!=tolower(b[i])) return 0;
- ++i;
- } while(--lb);
- }
- return 1;
-}
-
-/* Bah. I want strlcpy. */
-inline static int strncp(char *dst, const char *src, size_t dstsz)
- __attribute__((always_inline));
-inline static int strncp(char *dst, const char *src, size_t dstsz)
-{
-#ifdef HAVE_STRLCPY
- return (strlcpy(dst,src,dstsz)<dstsz);
-#else
-#ifdef HAVE_STPNCPY
- char *p=stpncpy(dst,src,dstsz);
- if(p<dst+dstsz) return 1;
- *(p-1)='\0';
- return 0;
-#else
- strncpy(dst,src,dstsz);
- if(strlen(src)<dstsz) return 1;
- dst[dstsz-1]='\0';
- return 0;
-#endif
-#endif
-}
-
-#ifndef HAVE_STRDUP
-inline static char *strdup(const char *s)
- __attribute__((always_inline));
-inline static char *strdup(const char *s)
-{
- size_t sz=strlen(s)+1;
- char *cp=malloc(sz);
- if(cp)
- memcpy(cp,s,sz);
- return cp;
-}
-#endif
-
-#ifndef HAVE_STRNDUP
-/* This version may allocate a buffer that is unnecessarily large,
- but I'm always going to use it with n<strlen(s)
-*/
-inline static char *strndup(const char *s, size_t n)
- __attribute__((always_inline));
-inline static char *strndup(const char *s, size_t n)
-{
- char *cp;
- cp=malloc(n+1);
- if(cp) {
- memcpy(cp,s,n);
- cp[n]='\0';
- }
- return cp;
-}
-#endif
-
-#ifndef HAVE_STPCPY
-inline static char *stpcpy (char *dest, const char *src)
- __attribute__((always_inline));
-inline static char *stpcpy (char *dest, const char *src)
-{
- register char *d = dest;
- register const char *s = src;
-
- while ((*d++ = *s++) != '\0');
-
- return d - 1;
-}
-#endif
-
-#ifndef HAVE_MEMPCPY
-inline static void *mempcpy(void *dest, const void *src, size_t len)
- __attribute__((always_inline));
-inline static void *mempcpy(void *dest, const void *src, size_t len)
-{
- memcpy(dest,src,len);
- return ((char *)dest)+len;
-}
-#endif
-
-#ifndef HAVE_GETLINE
-int getline(char **lineptr, size_t *n, FILE *stream);
-#endif
-
-#ifndef HAVE_ASPRINTF
-int asprintf (char **lineptr, const char *format, ...);
-#endif
-
-#ifndef HAVE_VASPRINTF
-#include <stdarg.h>
-int vasprintf (char **lineptr, const char *format, va_list va);
-#endif
-
-#ifndef HAVE_INET_NTOP
-const char *inet_ntop(int af, const void *src, char *dst, size_t size);
-#endif
-
-#define strlitlen(strlit) (sizeof(strlit)-1)
-
-#endif /* HELPERS_H */
diff --git a/jni/pdnsd/src/icmp.c b/jni/pdnsd/src/icmp.c
deleted file mode 100644
index 6e3e46f..0000000
--- a/jni/pdnsd/src/icmp.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* icmp.c - Server response tests using ICMP echo requests
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2005, 2007, 2012 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * This should now work on both Linux and FreeBSD (and CYGWIN?). If anyone
- * with experience in other Unix flavors wants to contribute platform-specific
- * code, he is very welcome.
- */
-
-#include <config.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <sys/time.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include "ipvers.h"
-#if (TARGET==TARGET_LINUX)
-# include <netinet/ip.h>
-# include <linux/types.h>
-# include <linux/icmp.h>
-#elif (TARGET==TARGET_BSD)
-# include <netinet/in_systm.h>
-# include <netinet/ip.h>
-# include <netinet/ip_icmp.h>
-#elif (TARGET==TARGET_CYGWIN)
-# include <netinet/ip.h>
-# include <netinet/in_systm.h>
-# include <netinet/ip_icmp.h>
-# include "freebsd_netinet_ip_icmp.h"
-#else
-# error Unsupported platform!
-#endif
-#ifdef ENABLE_IPV6
-# include <netinet/ip6.h>
-# include <netinet/icmp6.h>
-#endif
-#include <netdb.h>
-#include "icmp.h"
-#include "error.h"
-#include "helpers.h"
-#include "servers.h"
-
-
-#define ICMP_MAX_ERRS 10
-static volatile unsigned long icmp_errs=0; /* This is only here to minimize log output.
- Since the consequences of a race is only
- one log message more/less (out of
- ICMP_MAX_ERRS), no lock is required. */
-
-volatile int ping_isocket=-1;
-#ifdef ENABLE_IPV6
-volatile int ping6_isocket=-1;
-#endif
-
-/* different names, same thing... be careful, as these are macros... */
-#if (TARGET==TARGET_LINUX)
-# define ip_saddr saddr
-# define ip_daddr daddr
-# define ip_hl ihl
-# define ip_p protocol
-#else
-# define icmphdr icmp
-# define iphdr ip
-# define ip_saddr ip_src.s_addr
-# define ip_daddr ip_dst.s_addr
-#endif
-
-#if (TARGET==TARGET_LINUX)
-# define icmp_type type
-# define icmp_code code
-# define icmp_cksum checksum
-# define icmp_id un.echo.id
-# define icmp_seq un.echo.sequence
-#else
-# define ICMP_DEST_UNREACH ICMP_UNREACH
-# define ICMP_TIME_EXCEEDED ICMP_TIMXCEED
-#endif
-
-#define ICMP_BASEHDR_LEN 8
-#define ICMP4_ECHO_LEN ICMP_BASEHDR_LEN
-
-#if (TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-/*
- * These are the ping implementations for Linux/FreeBSD in their IPv4/ICMPv4 and IPv6/ICMPv6 versions.
- * I know they share some code, but I'd rather keep them separated in some parts, as some
- * things might go in different directions there.
- */
-
-/* Initialize the sockets for pinging */
-void init_ping_socket()
-{
- if ((ping_isocket=socket(PF_INET, SOCK_RAW, IPPROTO_ICMP))==-1) {
- log_warn("icmp ping: socket() failed: %s",strerror(errno));
- }
-#ifdef ENABLE_IPV6
- if (!run_ipv4) {
- /* Failure to initialize the IPv4 ping socket is not
- necessarily a problem, as long as the IPv6 version works. */
- if ((ping6_isocket=socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6))==-1) {
- log_warn("icmpv6 ping: socket() failed: %s",strerror(errno));
- }
- }
-#endif
-}
-
-/* Takes a packet as send out and a received ICMP packet and looks whether the ICMP packet is
- * an error reply on the sent-out one. packet is only the packet (without IP header).
- * errmsg includes an IP header.
- * to is the destination address of the original packet (the only thing that is actually
- * compared of the IP header). The RFC says that we get at least 8 bytes of the offending packet.
- * We do not compare more, as this is all we need.*/
-static int icmp4_errcmp(char *packet, int plen, struct in_addr *to, char *errmsg, int elen, int errtype)
-{
- struct iphdr iph;
- struct icmphdr icmph;
- struct iphdr eiph;
- char *data;
-
- /* XXX: lots of memcpy to avoid unaligned accesses on alpha */
- if (elen<sizeof(struct iphdr))
- return 0;
- memcpy(&iph,errmsg,sizeof(iph));
- if (iph.ip_p!=IPPROTO_ICMP || elen<iph.ip_hl*4+ICMP_BASEHDR_LEN+sizeof(eiph))
- return 0;
- PDNSD_ASSERT(sizeof(icmph) >= ICMP_BASEHDR_LEN, "icmp4_errcmp: ICMP_BASEHDR_LEN botched");
- memcpy(&icmph,errmsg+iph.ip_hl*4,ICMP_BASEHDR_LEN);
- memcpy(&eiph,errmsg+iph.ip_hl*4+ICMP_BASEHDR_LEN,sizeof(eiph));
- if (elen<iph.ip_hl*4+ICMP_BASEHDR_LEN+eiph.ip_hl*4+8)
- return 0;
- data=errmsg+iph.ip_hl*4+ICMP_BASEHDR_LEN+eiph.ip_hl*4;
- return icmph.icmp_type==errtype && memcmp(&to->s_addr, &eiph.ip_daddr, sizeof(to->s_addr))==0 &&
- memcmp(data, packet, plen<8?plen:8)==0;
-}
-
-/* IPv4/ICMPv4 ping. Called from ping (see below) */
-static int ping4(struct in_addr addr, int timeout, int rep)
-{
- int i;
- int isock;
-#if (TARGET==TARGET_LINUX)
- struct icmp_filter f;
-#endif
- unsigned short id=(unsigned short)get_rand16(); /* randomize a ping id */
-
- isock=ping_isocket;
-
-#if (TARGET==TARGET_LINUX)
- /* Fancy ICMP filering -- only on Linux (as far is I know) */
-
- /* In fact, there should be macros for treating icmp_filter, but I haven't found them in Linux 2.2.15.
- * So, set it manually and unportable ;-) */
- /* This filter lets ECHO_REPLY (0), DEST_UNREACH(3) and TIME_EXCEEDED(11) pass. */
- /* !(0000 1000 0000 1001) = 0xff ff f7 f6 */
- f.data=0xfffff7f6;
- if (setsockopt(isock,SOL_RAW,ICMP_FILTER,&f,sizeof(f))==-1) {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("icmp ping: setsockopt() failed: %s", strerror(errno));
- }
- return -1;
- }
-#endif
-
- for (i=0;i<rep;i++) {
- struct sockaddr_in from,to;
- struct icmphdr icmpd;
- unsigned long sum;
- uint16_t *ptr;
- long tm,tpassed;
- int j;
-
- icmpd.icmp_type=ICMP_ECHO;
- icmpd.icmp_code=0;
- icmpd.icmp_cksum=0;
- icmpd.icmp_id=htons((uint16_t)id);
- icmpd.icmp_seq=htons((uint16_t)i);
-
- /* Checksumming - Algorithm taken from nmap. Thanks... */
-
- ptr=(uint16_t *)&icmpd;
- sum=0;
-
- for (j=0;j<4;j++) {
- sum+=*ptr++;
- }
- sum = (sum >> 16) + (sum & 0xffff);
- sum += (sum >> 16);
- icmpd.icmp_cksum=~sum;
-
- memset(&to,0,sizeof(to));
- to.sin_family=AF_INET;
- to.sin_port=0;
- to.sin_addr=addr;
- SET_SOCKA_LEN4(to);
- if (sendto(isock,&icmpd,ICMP4_ECHO_LEN,0,(struct sockaddr *)&to,sizeof(to))==-1) {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("icmp ping: sendto() failed: %s.",strerror(errno));
- }
- return -1;
- }
- /* listen for reply. */
- tm=time(NULL); tpassed=0;
- do {
- int psres;
-#ifdef NO_POLL
- fd_set fds,fdse;
- struct timeval tv;
- FD_ZERO(&fds);
- PDNSD_ASSERT(isock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
- FD_SET(isock, &fds);
- fdse=fds;
- tv.tv_usec=0;
- tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that the effort
- to do this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- return -1;
- }
- psres=select(isock+1,&fds,NULL,&fdse,&tv);
-#else
- struct pollfd pfd;
- pfd.fd=isock;
- pfd.events=POLLIN;
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that the effort
- to do this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- return -1;
- }
- psres=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
-
- if (psres<0) {
- if(errno==EINTR && is_interrupted_servstat_thread()) {
- DEBUG_MSG("poll/select interrupted in server status thread.\n");
- }
- else if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("poll/select failed: %s",strerror(errno));
- }
- return -1;
- }
- if (psres==0) /* timed out */
- break;
-
-#ifdef NO_POLL
- if (FD_ISSET(isock,&fds) || FD_ISSET(isock,&fdse))
-#else
- if (pfd.revents&(POLLIN|POLLERR))
-#endif
- {
- char buf[1024];
- socklen_t sl=sizeof(from);
- int len;
-
- if ((len=recvfrom(isock,&buf,sizeof(buf),0,(struct sockaddr *)&from,&sl))!=-1) {
- if (len>sizeof(struct iphdr)) {
- struct iphdr iph;
-
- memcpy(&iph, buf, sizeof(iph));
- if (len-iph.ip_hl*4>=ICMP_BASEHDR_LEN) {
- struct icmphdr icmpp;
-
- memcpy(&icmpp, ((uint32_t *)buf)+iph.ip_hl, sizeof(icmpp));
- if (iph.ip_saddr==addr.s_addr && icmpp.icmp_type==ICMP_ECHOREPLY &&
- ntohs(icmpp.icmp_id)==id && ntohs(icmpp.icmp_seq)<=i) {
- return (i-ntohs(icmpp.icmp_seq))*timeout+(time(NULL)-tm); /* return the number of ticks */
- } else {
- /* No regular echo reply. Maybe an error? */
- if (icmp4_errcmp((char *)&icmpd, ICMP4_ECHO_LEN, &to.sin_addr, buf, len, ICMP_DEST_UNREACH) ||
- icmp4_errcmp((char *)&icmpd, ICMP4_ECHO_LEN, &to.sin_addr, buf, len, ICMP_TIME_EXCEEDED)) {
- return -1;
- }
- }
- }
- }
- } else {
- return -1; /* error */
- }
- }
- else {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_error("Unhandled poll/select event in ping4() at %s, line %d.",__FILE__,__LINE__);
- }
- return -1;
- }
- tpassed=time(NULL)-tm;
- } while (tpassed<timeout);
- }
- return -1; /* no answer */
-}
-
-
-#ifdef ENABLE_IPV6
-
-/* Takes a packet as send out and a received ICMPv6 packet and looks whether the ICMPv6 packet is
- * an error reply on the sent-out one. packet is only the packet (without IPv6 header).
- * errmsg does not include an IPv6 header. to is the address the sent packet went to.
- * This is specialized for icmpv6: It zeros out the checksum field, which is filled in
- * by the kernel, and expects that the checksum field in the sent-out packet is zeroed out too
- * We need a little magic to parse the answer, as there could be extension headers present, end
- * we don't know their length a priori.*/
-static int icmp6_errcmp(char *packet, int plen, struct in6_addr *to, char *errmsg, int elen, int errtype)
-{
- struct icmp6_hdr icmph;
- struct ip6_hdr eiph;
- struct ip6_hbh hbh;
- char *data;
- int rlen,nxt;
-
- /* XXX: lots of memcpy here to avoid unaligned access faults on alpha */
- if (elen<sizeof(icmph)+sizeof(eiph))
- return 0;
- memcpy(&icmph,errmsg,sizeof(icmph));
- memcpy(&eiph,errmsg+sizeof(icmph),sizeof(eiph));
- if (!IN6_ARE_ADDR_EQUAL(&eiph.ip6_dst, to))
- return 0;
- rlen=elen-sizeof(icmph)-sizeof(eiph);
- data=errmsg+sizeof(icmph)+sizeof(eiph);
- nxt=eiph.ip6_nxt;
- /* Now, jump over any known option header that might be present, and then
- * try to compare the packets. */
- while (nxt!=IPPROTO_ICMPV6) {
- /* Those are the headers we understand. */
- if (nxt!=IPPROTO_HOPOPTS && nxt!=IPPROTO_ROUTING && nxt!=IPPROTO_DSTOPTS)
- return 0;
- if (rlen<sizeof(hbh))
- return 0;
- memcpy(&hbh,data,sizeof(hbh));
- if (rlen<hbh.ip6h_len)
- return 0;
- rlen-=hbh.ip6h_len;
- nxt=hbh.ip6h_nxt;
- data+=hbh.ip6h_len;
- }
- if (rlen<sizeof(struct icmp6_hdr))
- return 0;
- /* Zero out the checksum of the enclosed ICMPv6 header, it is kernel-filled in the original data */
- memset(((char *)data)+offsetof(struct icmp6_hdr,icmp6_cksum),0,sizeof(icmph.icmp6_cksum));
- return icmph.icmp6_type==errtype && memcmp(data, packet, plen<rlen?plen:rlen)==0;
-}
-
-/* IPv6/ICMPv6 ping. Called from ping (see below) */
-static int ping6(struct in6_addr a, int timeout, int rep)
-{
- int i;
-/* int ck_offs=2;*/
- int isock;
- struct icmp6_filter f;
- unsigned short id=(unsigned short)(rand()&0xffff); /* randomize a ping id */
-
- isock=ping6_isocket;
-
- ICMP6_FILTER_SETBLOCKALL(&f);
- ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY,&f);
- ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH,&f);
- ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED,&f);
-
- if (setsockopt(isock,IPPROTO_ICMPV6,ICMP6_FILTER,&f,sizeof(f))==-1) {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("icmpv6 ping: setsockopt() failed: %s", strerror(errno));
- }
- return -1;
- }
-
- for (i=0;i<rep;i++) {
- struct sockaddr_in6 from;
- struct icmp6_hdr icmpd;
- long tm,tpassed;
-
- icmpd.icmp6_type=ICMP6_ECHO_REQUEST;
- icmpd.icmp6_code=0;
- icmpd.icmp6_cksum=0; /* The friendly kernel does fill that in for us. */
- icmpd.icmp6_id=htons((uint16_t)id);
- icmpd.icmp6_seq=htons((uint16_t)i);
-
- memset(&from,0,sizeof(from));
- from.sin6_family=AF_INET6;
- from.sin6_flowinfo=IPV6_FLOWINFO;
- from.sin6_port=0;
- from.sin6_addr=a;
- SET_SOCKA_LEN6(from);
- if (sendto(isock,&icmpd,sizeof(icmpd),0,(struct sockaddr *)&from,sizeof(from))==-1) {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("icmpv6 ping: sendto() failed: %s.",strerror(errno));
- }
- return -1;
- }
- /* listen for reply. */
- tm=time(NULL); tpassed=0;
- do {
- int psres;
-#ifdef NO_POLL
- fd_set fds,fdse;
- struct timeval tv;
- FD_ZERO(&fds);
- PDNSD_ASSERT(isock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
- FD_SET(isock, &fds);
- fdse=fds;
- tv.tv_usec=0;
- tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that the effort
- to do this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- return -1;
- }
- psres=select(isock+1,&fds,NULL,&fdse,&tv);
-#else
- struct pollfd pfd;
- pfd.fd=isock;
- pfd.events=POLLIN;
- /* There is a possible race condition with the arrival of a signal here,
- but it is so unlikely to be a problem in practice that the effort
- to do this properly is not worth the trouble.
- */
- if(is_interrupted_servstat_thread()) {
- DEBUG_MSG("server status thread interrupted.\n");
- return -1;
- }
- psres=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
-
- if (psres<0) {
- if(errno==EINTR && is_interrupted_servstat_thread()) {
- DEBUG_MSG("poll/select interrupted in server status thread.\n");
- }
- else if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_warn("poll/select failed: %s",strerror(errno));
- }
- return -1;
- }
- if (psres==0) /* timed out */
- break;
-
-#ifdef NO_POLL
- if (FD_ISSET(isock,&fds) || FD_ISSET(isock,&fdse))
-#else
- if (pfd.revents&(POLLIN|POLLERR))
-#endif
- {
- char buf[1024];
- socklen_t sl=sizeof(from);
- int len;
- if ((len=recvfrom(isock,&buf,sizeof(buf),0,(struct sockaddr *)&from,&sl))!=-1) {
- if (len>=sizeof(struct icmp6_hdr)) {
- /* we get packets without IPv6 header, luckily */
- struct icmp6_hdr icmpp;
-
- memcpy(&icmpp, buf, sizeof(icmpp));
- if (IN6_ARE_ADDR_EQUAL(&from.sin6_addr,&a) &&
- ntohs(icmpp.icmp6_id)==id && ntohs(icmpp.icmp6_seq)<=i) {
- return (i-ntohs(icmpp.icmp6_seq))*timeout+(time(NULL)-tm); /* return the number of ticks */
- } else {
- /* No regular echo reply. Maybe an error? */
- if (icmp6_errcmp((char *)&icmpd, sizeof(icmpd), &from.sin6_addr, buf, len, ICMP6_DST_UNREACH) ||
- icmp6_errcmp((char *)&icmpd, sizeof(icmpd), &from.sin6_addr, buf, len, ICMP6_TIME_EXCEEDED)) {
- return -1;
- }
- }
- }
- } else {
- return -1; /* error */
- }
- }
- else {
- if (++icmp_errs<=ICMP_MAX_ERRS) {
- log_error("Unhandled poll/select event in ping6() at %s, line %d.",__FILE__,__LINE__);
- }
- return -1;
- }
- tpassed=time(NULL)-tm;
- } while (tpassed<timeout);
- }
- return -1; /* no answer */
-}
-#endif /* ENABLE_IPV6*/
-
-
-/* Perform an icmp ping on a host, returning -1 on timeout or
- * "host unreachable" or the ping time in 10ths of secs
- * (but actually, we are not that accurate any more).
- * timeout in 10ths of seconds, rep is the repetition count
- */
-int ping(pdnsd_a *addr, int timeout, int rep)
-{
-
- if (SEL_IPVER(ping_isocket,ping6_isocket) == -1)
- return -1;
-
- /* We were given a timeout in 10ths of seconds,
- but ping4 and ping6 want a timeout in seconds. */
- timeout /= 10;
-
-#ifdef ENABLE_IPV4
- if (run_ipv4)
- return ping4(addr->ipv4,timeout,rep);
-#endif
-#ifdef ENABLE_IPV6
- ELSE_IPV6 {
- /* If it is a IPv4 mapped IPv6 address, we prefer ICMPv4. */
- if (ping_isocket!=-1 && IN6_IS_ADDR_V4MAPPED(&addr->ipv6)) {
- struct in_addr v4;
- v4.s_addr=((uint32_t *)&addr->ipv6)[3];
- return ping4(v4,timeout,rep);
- } else
- return ping6(addr->ipv6,timeout,rep);
- }
-#endif
- return -1;
-}
-
-#else
-# error "Huh! No OS macro defined!"
-#endif /*(TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)*/
diff --git a/jni/pdnsd/src/icmp.h b/jni/pdnsd/src/icmp.h
deleted file mode 100644
index 3fa6778..0000000
--- a/jni/pdnsd/src/icmp.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* icmp.h - Server response tests using ICMP echo requests
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2007 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef ICMP_H
-#define ICMP_H
-
-
-#include <config.h>
-#include "ipvers.h"
-
-volatile extern int ping_isocket;
-volatile extern int ping6_isocket;
-
-/* initialize a socket for pinging */
-void init_ping_socket(void);
-
-/*
- * This is a classical ping routine.
- * timeout in 10ths of seconds, rep is the repetition count.
- */
-
-int ping(pdnsd_a *addr, int timeout, int rep);
-
-#endif
diff --git a/jni/pdnsd/src/ipvers.h b/jni/pdnsd/src/ipvers.h
deleted file mode 100644
index b1d7a2c..0000000
--- a/jni/pdnsd/src/ipvers.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/* ipvers.h - definitions for IPv4 and IPv6
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2007, 2009 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef IPVERS_H
-#define IPVERS_H
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include "rr_types.h"
-
-#if defined(ENABLE_IPV4) && !defined(ENABLE_IPV6)
-# ifdef DEFAULT_IPV4
-# undef DEFAULT_IPV4
-# endif
-# define DEFAULT_IPV4 1
-#endif
-
-#if !defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-# ifdef DEFAULT_IPV4
-# undef DEFAULT_IPV4
-# endif
-# define DEFAULT_IPV4 0
-#endif
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-# define ELSE_IPV6 else
-#else
-# define ELSE_IPV6
-#endif
-
-/* From main.c */
-#ifdef ENABLE_IPV4
-# ifdef ENABLE_IPV6
-extern short int run_ipv4;
-extern short int cmdlineipv;
-# define SEL_IPVER(a4,a6) (run_ipv4? a4: a6)
-# else
-# define run_ipv4 1
-# define SEL_IPVER(a4,a6) (a4)
-# endif
-#else
-# define run_ipv4 0
-# define SEL_IPVER(a4,a6) (a6)
-#endif
-#ifdef ENABLE_IPV6
-#define DEFAULT_IPV4_6_PREFIX "::ffff:0.0.0.0"
-/* extern short int cmdlineprefix; */
-#endif
-
-#if (TARGET==TARGET_LINUX) && !defined(HAVE_STRUCT_IN_PKTINFO)
-struct in_pktinfo
-{
- int ipi_ifindex;
- struct in_addr ipi_spec_dst;
- struct in_addr ipi_addr;
-};
-#endif
-
-#if (TARGET==TARGET_LINUX)
-/* some older glibc versions seem to lack this. */
-# ifndef IP_PKTINFO
-# define IP_PKTINFO 8
-# endif
-# ifndef CMSG_LEN
-/* ---- from glibc 2.1.2 */
-
-/* Ancillary data object manipulation macros. */
-# if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
-# else
-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
-# endif
-# define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
-# define CMSG_FIRSTHDR(mhdr) \
- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
-# define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
- & ~(sizeof (size_t) - 1))
-# define CMSG_SPACE(len) (CMSG_ALIGN (len) \
- + CMSG_ALIGN (sizeof (struct cmsghdr)))
-# define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
-extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr,
- struct cmsghdr *__cmsg));
-# ifdef __USE_EXTERN_INLINES
-# ifndef _EXTERN_INLINE
-# define _EXTERN_INLINE extern __inline
-# endif
-_EXTERN_INLINE struct cmsghdr *
-__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
-{
- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
- /* The kernel header does this so there may be a reason. */
- return 0;
-
- __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
- + CMSG_ALIGN (__cmsg->cmsg_len));
- if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
- + __mhdr->msg_controllen)
- || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
- >= ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
- /* No more entries. */
- return 0;
- return __cmsg;
-}
-# endif /* Use `extern inline'. */
-/* ---- */
-# endif
-#endif
-
-#if defined(ENABLE_IPV4) && !defined(SIN_LEN) && (TARGET==TARGET_BSD)
-# define SIN_LEN
-#endif
-
-#if defined(ENABLE_IPV6) && (TARGET==TARGET_LINUX)
-
-/* Some glibc versions (I know of 2.1.2) get this wrong, so we define our own. To be exact, this is fixed
- * glibc code. */
-#ifdef IN6_ARE_ADDR_EQUAL
-# undef IN6_ARE_ADDR_EQUAL
-#endif
-#define IN6_ARE_ADDR_EQUAL(a,b) \
- ((((uint32_t *) (a))[0] == ((uint32_t *) (b))[0]) && \
- (((uint32_t *) (a))[1] == ((uint32_t *) (b))[1]) && \
- (((uint32_t *) (a))[2] == ((uint32_t *) (b))[2]) && \
- (((uint32_t *) (a))[3] == ((uint32_t *) (b))[3]))
-
-#endif
-
-/* This is the IPv6 flowid that we pass on to the IPv6 protocol stack. This value was not currently defined
- * at the time of writing. Should this change, define a appropriate flowinfo here. */
-#ifndef IPV6_FLOWINFO
-#define IPV6_FLOWINFO 0
-#endif
-
-/* There does not seem to be a function/macro to generate IPv6-mapped IPv4-Adresses. So here comes mine.
- * Pass an in_addr* and an in6_addr* */
-#define IPV6_MAPIPV4(a,b) {((uint32_t *)(b))[3]=(a)->s_addr; \
- ((uint32_t *)(b))[2]=htonl(0xffff); \
- ((uint32_t *)(b))[1]=((uint32_t *)(b))[0]=0; }
-
-/* A macro to extract the pointer to the address of a struct sockaddr (_in or _in6) */
-
-#define SOCKA_A4(a) ((pdnsd_a *)&((struct sockaddr_in *)(a))->sin_addr)
-#define SOCKA_A6(a) ((pdnsd_a *)&((struct sockaddr_in6 *)(a))->sin6_addr)
-
-#define SOCKA_A(a) SEL_IPVER(SOCKA_A4(a),SOCKA_A6(a))
-#define PDNSD_PF_INET SEL_IPVER(PF_INET,PF_INET6)
-#define PDNSD_AF_INET SEL_IPVER(AF_INET,AF_INET6)
-
-/* This is to compare two addresses. This is a macro because it may change due to the more complex IPv6 adressing architecture
- * (there are, for example, two equivalent addresses of the loopback device)
- * Pass this two addresses as in_addr or in6_addr. pdnsd_a is ok (it is a union) */
-
-#define ADDR_EQUIV4(a,b) (((struct in_addr *)(a))->s_addr==((struct in_addr *)(b))->s_addr)
-#define ADDR_EQUIV6(a,b) IN6_ARE_ADDR_EQUAL(((struct in6_addr *)(a)),((struct in6_addr *)(b)))
-
-#define ADDR_EQUIV(a,b) SEL_IPVER(ADDR_EQUIV4(a,b), ADDR_EQUIV6(a,b))
-
-/* Compare an IPv6 adress with an IPv4 one. b should have type struct in_addr*.
- Note the similarity with the IPV6_MAPIPV4 macro. */
-#define ADDR_EQUIV6_4(a,b) (((uint32_t *)(a))[3]==(b)->s_addr && \
- ((uint32_t *)(a))[2]==htonl(0xffff) && \
- ((uint32_t *)(a))[1]==0 && \
- ((uint32_t *)(a))[0]==0)
-
-/* Compare two address a and b in combination with a netmask m.
- Only the bits coresponding to those set in the netmask are matched, the rest are ignored.
- Pass in_addr* or in6_addr* arguments, respectively. */
-#define ADDR4MASK_EQUIV(a,b,m) ((((a)->s_addr^(b)->s_addr)&(m)->s_addr)==0)
-#define ADDR6MASK_EQUIV(a,b,m) (((((uint32_t *)(a))[0]^((uint32_t *)(b))[0])&((uint32_t *)(m))[0])==0 && \
- ((((uint32_t *)(a))[1]^((uint32_t *)(b))[1])&((uint32_t *)(m))[1])==0 && \
- ((((uint32_t *)(a))[2]^((uint32_t *)(b))[2])&((uint32_t *)(m))[2])==0 && \
- ((((uint32_t *)(a))[3]^((uint32_t *)(b))[3])&((uint32_t *)(m))[3])==0)
-
-/* See if we need 4.4BSD style sockaddr_* structures and define some macros that set the length field.
- * The non-4.4BSD behaviour is the only one that is POSIX-conformant.*/
-#if defined(SIN6_LEN) || defined(SIN_LEN)
-# define BSD44_SOCKA
-# define SET_SOCKA_LEN4(socka) (socka.sin_len=sizeof(struct sockaddr_in))
-# define SET_SOCKA_LEN6(socka) (socka.sin6_len=sizeof(struct sockaddr_in6))
-#else
-# define SET_SOCKA_LEN4(socka)
-# define SET_SOCKA_LEN6(socka)
-#endif
-
-#ifdef ENABLE_IPV6
-# define ADDRSTR_MAXLEN INET6_ADDRSTRLEN
-#else
-# ifdef INET_ADDRSTRLEN
-# define ADDRSTR_MAXLEN INET_ADDRSTRLEN
-# else
-# define ADDRSTR_MAXLEN 16
-# endif
-#endif
-
-#if (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-# define SOL_IPV6 IPPROTO_IPV6
-#endif
-
-#ifdef ENABLE_IPV6
-# ifndef IPV6_RECVPKTINFO
-/* This appears to be needed e.g. on Darwin (Mac OS X). */
-# define IPV6_RECVPKTINFO IPV6_PKTINFO
-# endif
-#endif
-
-typedef union {
-#ifdef ENABLE_IPV4
- struct in_addr ipv4;
-#endif
-#ifdef ENABLE_IPV6
- struct in6_addr ipv6;
-#endif
-} pdnsd_a;
-
-#ifdef ENABLE_IPV4
-#define PDNSD_A_INITIALIZER {{INADDR_ANY}}
-#else
-#define PDNSD_A_INITIALIZER {IN6ADDR_ANY_INIT}
-#endif
-
-
-/* The pdnsd_a2 type is very similar to pdnsd_a, but can hold
- both an IPv4 and an IPv6 address at the same time,
- i.e. a struct instead of a union.
-*/
-typedef struct {
-#ifdef ENABLE_IPV6
- struct in6_addr ipv6;
-#endif
- struct in_addr ipv4;
-} pdnsd_a2;
-
-/* Macros/functions for assigning/converting a pdnsd_a* to a pdnsd_a2* type,
- and vice versa.
-*/
-#ifdef ENABLE_IPV6
-inline static void SET_PDNSD_A2(pdnsd_a2 *a2, pdnsd_a *a) __attribute__((always_inline));
-inline static void SET_PDNSD_A2(pdnsd_a2 *a2, pdnsd_a *a)
-{
-#ifdef ENABLE_IPV4
- if(run_ipv4)
- a2->ipv4=a->ipv4;
- else
-#endif
- {
- a2->ipv6=a->ipv6;
- a2->ipv4.s_addr=INADDR_ANY;
- }
-}
-#else
-# define SET_PDNSD_A2(a2,a) ((a2)->ipv4=(a)->ipv4)
-#endif
-
-#define PDNSD_A2_TO_A(a2) SEL_IPVER(((pdnsd_a *)&(a2)->ipv4),((pdnsd_a *)&(a2)->ipv6))
-
-/* Do we have sufficient support in the C libraries to allow local AAAA records
- to be defined? */
-#if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_PTON)
-# define ALLOW_LOCAL_AAAA IS_CACHED_AAAA
-#else
-# define ALLOW_LOCAL_AAAA 0
-#endif
-
-/* Used to enter local records */
-typedef union {
- struct in_addr ipv4;
-#if ALLOW_LOCAL_AAAA
- struct in6_addr ipv6;
-#endif
-} pdnsd_ca;
-
-
-#endif
diff --git a/jni/pdnsd/src/list.c b/jni/pdnsd/src/list.c
deleted file mode 100644
index 0370186..0000000
--- a/jni/pdnsd/src/list.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* list.c - Dynamic array and list handling
-
- Copyright (C) 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2007, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "helpers.h"
-#include "error.h"
-#include "list.h"
-
-
-/* Grow a dynamic array to hold one extra element.
- This could be done using da_resize(), but this is such a common operation
- it is has been given its own optimized implementation.
- da_grow1() returns a pointer to the new (possibly reallocated) array if
- successful, otherwise it frees the old array (after freeing all the array
- elements if a clean-up routine is supplied) and returns NULL.
-*/
-darray da_grow1(darray a, size_t headsz, size_t elemsz, void (*cleanuproutine) (void *))
-{
- size_t k = (a?a->nel:0);
- if(!a || (k!=0 && (k&7)==0)) {
- darray tmp=(darray)realloc(a, headsz+elemsz*(k+8));
- if (!tmp && a) {
- if(cleanuproutine) {
- size_t i;
- for(i=0;i<k;++i)
- cleanuproutine(((char *)a)+headsz+elemsz*i);
- }
- free(a);
- }
- a=tmp;
- }
- if(a) a->nel=k+1;
- return a;
-}
-
-inline static size_t alloc_nel(size_t n)
-{
- return n==0 ? 8 : (n+7)&(~7);
-}
-
-/* da_resize() allows you to grow (or shrink) a dynamic array to an arbitrary length n,
- but is otherwise similar to da_grow1().
-*/
-darray da_resize(darray a, size_t headsz, size_t elemsz, size_t n, void (*cleanuproutine) (void *))
-{
- size_t ael = (a?alloc_nel(a->nel):0);
- size_t new_ael = alloc_nel(n);
- if(new_ael != ael) {
- /* adjust alloced space. */
- darray tmp=(darray)realloc(a, headsz+elemsz*new_ael);
- if (!tmp && a) {
- if(cleanuproutine) {
- size_t i,k=a->nel;
- for(i=0;i<k;++i)
- cleanuproutine(((char *)a)+headsz+elemsz*i);
- }
- free(a);
- }
- a=tmp;
- }
- if(a) a->nel=n;
- return a;
-}
-
-#ifdef ALLOC_DEBUG
-void DBGda_free(darray a, size_t headsz, size_t elemsz, char *file, int line)
-{
- if (a==NULL)
- {DEBUG_MSG("- da_free, %s:%d, not initialized\n", file, line);}
- else
- {DEBUG_MSG("- da_free, %s:%d, %lu bytes\n", file, line,
- (unsigned long)(headsz+elemsz*alloc_nel(a->nel)));}
- free(a);
-}
-#endif
-
-
-#define DLISTALIGN(len) (((len) + (sizeof(size_t)-1)) & ~(sizeof(size_t)-1))
-/* This mask corresponds to a chunk size of 1024. */
-#define DLISTCHUNKSIZEMASK ((size_t)0x3ff)
-
-/* Add space for a new item of size len to the list a.
- dlist_grow() returns a pointer to the new (possibly reallocated) list structure if
- successful, otherwise it frees the old list and returns NULL.
-*/
-dlist dlist_grow(dlist a, size_t len)
-{
- size_t sz=0, allocsz=0, szincr, newsz;
- if(a) {
- sz=a->last+a->lastsz;
- allocsz = (sz+DLISTCHUNKSIZEMASK)&(~DLISTCHUNKSIZEMASK);
- *((size_t *)&a->data[a->last])=a->lastsz;
- }
- szincr=DLISTALIGN(len+sizeof(size_t));
- newsz=sz+szincr;
- if(newsz>allocsz) {
- dlist tmp;
- allocsz = (newsz+DLISTCHUNKSIZEMASK)&(~DLISTCHUNKSIZEMASK);
- tmp=realloc(a, sizeof(struct _dynamic_list_head)+allocsz);
- if (!tmp)
- free(a);
- a=tmp;
- }
- if(a) {
- a->last=sz;
- a->lastsz=szincr;
- *((size_t *)&a->data[sz])=0;
- }
- return a;
-}
-
-
-/* Add a new node, capable of holding data of size len, at the end of a linked list.
- llist_grow() returns 1 if successful, otherwise it frees the entire linked list
- and returns 0.
- */
-int llist_grow(llist *a, size_t len)
-{
- struct llistnode_s *new= (struct llistnode_s *)malloc(sizeof(struct llistnode_s)+len);
-
- if(!new) {
- llist_free(a);
- return 0;
- }
-
- new->next=NULL;
-
- if(!a->first)
- a->first=new;
- else
- a->last->next=new;
-
- a->last=new;
-
- return 1;
-}
-
-void llist_free(llist *a)
-{
- struct llistnode_s *p= a->first;
-
- while(p) {
- struct llistnode_s *next= p->next;
- free(p);
- p=next;
- }
-
- a->first=NULL;
- a->last= NULL;
-}
diff --git a/jni/pdnsd/src/list.h b/jni/pdnsd/src/list.h
deleted file mode 100644
index c63534e..0000000
--- a/jni/pdnsd/src/list.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* list.h - Dynamic array and list handling
-
- Copyright (C) 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2007, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef LIST_H
-#define LIST_H
-
-#include <stdlib.h>
-#include <string.h>
-#include "pdnsd_assert.h"
-
-
-typedef struct {size_t nel;} *darray;
-
-/* used in type declarations */
-#define DYNAMIC_ARRAY(typ) struct {size_t nel; typ elem[0];}
-#define DA_TYP_OFFSET(atyp) ((size_t)((atyp)0)->elem)
-#define DA_OFFSET(a) DA_TYP_OFFSET(typeof (a))
-
-#define DA_CREATE(atyp,n) ((atyp)da_resize(NULL,DA_TYP_OFFSET(atyp),sizeof(((atyp)0)->elem[0]),n,NULL))
-#define DA_INDEX(a,i) ((a)->elem[i])
-/* Used often, so make special-case macro here */
-#define DA_LAST(a) ((a)->elem[(a)->nel-1])
-
-#define DA_GROW1(a) ((typeof (a))da_grow1((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),NULL))
-#define DA_GROW1_F(a,cleanup) ((typeof (a))da_grow1((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),cleanup))
-#define DA_RESIZE(a,n) ((typeof (a))da_resize((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),n,NULL))
-#define DA_NEL(a) da_nel((darray)(a))
-
-/*
- * Some or all of these should be inline.
- * They aren't macros for type safety.
- */
-
-darray da_grow1(darray a, size_t headsz, size_t elemsz, void (*cleanuproutine) (void *));
-darray da_resize(darray a, size_t headsz, size_t elemsz, size_t n, void (*cleanuproutine) (void *));
-
-inline static unsigned int da_nel(darray a)
- __attribute__((always_inline));
-inline static unsigned int da_nel(darray a)
-{
- if (a==NULL)
- return 0;
- return a->nel;
-}
-
-/* alloc/free debug code.*/
-#ifdef ALLOC_DEBUG
-void DBGda_free(darray a, size_t headsz, size_t elemsz, char *file, int line);
-#define da_free(a) DBGda_free((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]), __FILE__, __LINE__)
-#else
-#define da_free free
-#endif
-
-
-/* This dynamic "list" structure is useful if the items are not all the same size.
- The elements can only be read back in sequential order, not indexed as with the dynamic arrays.
-*/
-struct _dynamic_list_head {
- size_t last,lastsz;
- char data[0];
-};
-
-typedef struct _dynamic_list_head *dlist;
-
-inline static void *dlist_first(dlist a)
- __attribute__((always_inline));
-inline static void *dlist_first(dlist a)
-{
- return a?&a->data[sizeof(size_t)]:NULL;
-}
-
-/* dlist_next() returns a reference to the next item in the list, or NULL is there is no next item.
- ref should be properly aligned.
- If the dlist was grown with dlist_grow(), this should be OK.
-*/
-inline static void *dlist_next(void *ref)
- __attribute__((always_inline));
-inline static void *dlist_next(void *ref)
-{
- size_t incr= *(((size_t *)ref)-1);
- return incr?((char *)ref)+incr:NULL;
-}
-
-/* dlist_last() returns a reference to the last item. */
-inline static void *dlist_last(dlist a)
- __attribute__((always_inline));
-inline static void *dlist_last(dlist a)
-{
- return a?&a->data[a->last+sizeof(size_t)]:NULL;
-}
-
-dlist dlist_grow(dlist a, size_t len);
-
-#define dlist_free free
-
-
-/* linked list data type. */
-struct llistnode_s {
- struct llistnode_s *next;
- char *data[0];
-};
-
-typedef struct {
- struct llistnode_s *first, *last;
-}
- llist;
-
-inline static void llist_init(llist *a)
- __attribute__((always_inline));
-inline static void llist_init(llist *a)
-{
- a->first=NULL;
- a->last= NULL;
-}
-
-inline static int llist_isempty(llist *a)
- __attribute__((always_inline));
-inline static int llist_isempty(llist *a)
-{
- return a->first==NULL;
-}
-
-inline static void *llist_first(llist *a)
- __attribute__((always_inline));
-inline static void *llist_first(llist *a)
-{
- struct llistnode_s *p= a->first;
- return p?p->data:NULL;
-}
-
-inline static void *llist_next(void *ref)
- __attribute__((always_inline));
-inline static void *llist_next(void *ref)
-{
- struct llistnode_s *next= *(((struct llistnode_s **)ref)-1);
- return next?next->data:NULL;
-}
-
-inline static void *llist_last(llist *a)
- __attribute__((always_inline));
-inline static void *llist_last(llist *a)
-{
- struct llistnode_s *p= a->last;
- return p?p->data:NULL;
-}
-
-int llist_grow(llist *a, size_t len);
-void llist_free(llist *a);
-
-#endif /* def LIST_H */
diff --git a/jni/pdnsd/src/main.c b/jni/pdnsd/src/main.c
deleted file mode 100644
index 1190b77..0000000
--- a/jni/pdnsd/src/main.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/* main.c - Command line parsing, intialisation and server start
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-/* in order to use O_NOFOLLOW on Linux: */
-/* #define _GNU_SOURCE */
-
-#include <config.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <syslog.h>
-#include <pwd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-#include "consts.h"
-#include "cache.h"
-#include "status.h"
-#include "servers.h"
-#include "dns_answer.h"
-#include "dns_query.h"
-#include "error.h"
-#include "helpers.h"
-#include "icmp.h"
-#include "hash.h"
-
-
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int stat_pipe=0;
-
-/* int sigr=0; */
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-short int cmdlineipv=0;
-#endif
-cmdlineflags_t cmdline={0};
-pthread_t main_thrid,servstat_thrid,statsock_thrid,tcps_thrid,udps_thrid;
-uid_t init_uid;
-#if DEBUG>0
-FILE *dbg_file=NULL;
-#endif
-volatile int tcp_socket=-1;
-volatile int udp_socket=-1;
-sigset_t sigs_msk;
-char *conf_file=CONFDIR"/pdnsd.conf";
-
-
-/* version and licensing information */
-static const char info_message[] =
-
- "pdnsd - dns proxy daemon, version " VERSION "\n\n"
- "Copyright (C) 2000, 2001 Thomas Moestl\n"
- "Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Paul A. Rombouts\n\n"
- "pdnsd is free software; you can redistribute it and/or modify\n"
- "it under the terms of the GNU General Public License as published by\n"
- "the Free Software Foundation; either version 3 of the License, or\n"
- "(at your option) any later version.\n\n"
- "pdnsd is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "GNU General Public License for more details.\n\n"
- "You should have received a copy of the GNU General Public License\n"
- "along with pdsnd; see the file COPYING. If not, see\n"
- "<http://www.gnu.org/licenses/>.\n";
-
-
-/* the help page */
-static const char help_message[] =
-
- "\n\nUsage: pdnsd [-h] [-V] [-s] [-d] [-g] [-t] [-p file] [-vn] [-mxx] [-c file]"
-#ifdef ENABLE_IPV4
- " [-4]"
-#endif
-#ifdef ENABLE_IPV6
- " [-6] [-i prefix]"
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- " [-a]"
-#endif
- "\n\n"
- "Options:\n"
- "-h\t\t--or--\n"
- "--help\t\tprint this help page and exit.\n"
- "-V\t\t--or--\n"
- "--version\tprint version and license information and exit.\n"
- "--pdnsd-user\tprint the user pdnsd will run as and exit.\n"
- "-s\t\t--or--\n"
- "--status\tEnable status control socket in the cache directory.\n"
- "-d\t\t--or--\n"
- "--daemon\tStart pdnsd in daemon mode (as background process.)\n"
- "-g\t\t--or--\n"
- "--debug\t\tPrint some debug messages on the console or to the\n"
- "\t\tfile pdnsd.debug in your cache directory (in daemon mode).\n"
- "-t\t\t--or--\n"
- "--tcp\t\tEnables the TCP server thread. pdnsd will then serve\n"
- "\t\tTCP and UDP queries.\n"
- "-p\t\tWrites the pid the server runs as to a specified filename.\n"
- "\t\tWorks only in daemon mode.\n"
- "-vn\t\tsets the verbosity of pdnsd. n is a numeric argument from 0\n"
- "\t\t(normal operation) to 9 (many messages for debugging).\n"
- "\t\tUse like -v2\n"
- "-mxx\t\tsets the query method pdnsd uses. Possible values for xx are:\n"
- "\t\tuo (UDP only), to (TCP only), tu (TCP or, if the server\n"
- "\t\tdoes not support this, UDP) and ut (UDP and, if the reply was\n"
- "\t\ttruncated, TCP). Use like -muo. Preset: "
-#if M_PRESET==UDP_ONLY
- "-muo"
-#elif M_PRESET==TCP_ONLY
- "-mto"
-#elif M_PRESET==TCP_UDP
- "-mtu"
-#else
- "-mut"
-#endif
- "\n"
- "-c\t\t--or--\n"
- "--config-file\tspecifies the file the configuration is read from.\n"
- "\t\tDefault is " CONFDIR "/pdnsd.conf\n"
-#ifdef ENABLE_IPV4
- "-4\t\tswitches to IPv4 mode.\n"
- "\t\t"
-# if DEFAULT_IPV4
- "On"
-# else
- "Off"
-# endif
- " by default.\n"
-#endif
-#ifdef ENABLE_IPV6
- "-6\t\tswitches to IPv6 mode.\n"
- "\t\t"
-# if DEFAULT_IPV4
- "Off"
-# else
- "On"
-# endif
- " by default.\n"
- "-i\t\t--or--\n"
- "--ipv4_6_prefix\tspecifies the prefix pdnsd uses to map IPv4 to IPv6\n"
- "\t\taddresses. Must be a valid IPv6 address.\n"
- "\t\tDefault is " DEFAULT_IPV4_6_PREFIX "\n"
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- "-a\t\tWith this option, pdnsd will try to detect automatically if\n"
- "\t\tthe system supports IPv6, and revert to IPv4 otherwise.\n"
-#endif
- "\n\n\"no\" can be prepended to the --status, --daemon, --debug and --tcp\n"
- "options (e.g. --notcp) to reverse their effect.\n";
-
-
-/* These are some init steps we have to call before we get daemon on linux, but need
- * to call after daemonizing on other OSes.
- * Theay are also the last steps before we drop privileges. */
-int final_init()
-{
-#ifndef NO_TCP_SERVER
- if (!global.notcp)
- tcp_socket=init_tcp_socket();
-#endif
- udp_socket=init_udp_socket();
- if (tcp_socket==-1 && udp_socket==-1) {
- log_error("tcp and udp initialization failed. Exiting.");
- return 0;
- }
- if (global.strict_suid) {
- if (!run_as(global.run_as)) {
- return 0;
- }
- }
- return 1;
-}
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-/* Check if IPv6 is available.
- * With thanks to Juliusz Chroboczek.
- */
-static int check_ipv6()
-{
- int fd;
- fd = socket(PF_INET6, SOCK_STREAM, 0);
- if(fd < 0) {
- if(errno == EPROTONOSUPPORT || errno == EAFNOSUPPORT || errno == EINVAL)
- return 0;
- return -1;
- }
- close(fd);
- return 1;
-}
-#endif
-
-
-/*
- * Argument parsing, init, server startup
- */
-int main(int argc,char *argv[])
-{
- int i,sig,pfd=-1; /* Initialized to inhibit compiler warning */
-
- main_thrid=pthread_self();
- servstat_thrid=main_thrid;
- statsock_thrid=main_thrid;
- tcps_thrid=main_thrid;
- udps_thrid=main_thrid;
- init_uid=getuid();
-#ifdef ENABLE_IPV6
- {
- int err;
- if((err=inet_pton(AF_INET6,DEFAULT_IPV4_6_PREFIX,&global.ipv4_6_prefix))<=0) {
- fprintf(stderr,"Error: inet_pton() wont accept default prefix %s in %s, line %d\n",
- DEFAULT_IPV4_6_PREFIX,__FILE__,__LINE__);
- if(err)
- perror("inet_pton");
- exit(1);
- }
- }
-#endif
-
- /* Parse the command line.
- Remember which options were specified here, because the command-line options
- shall override the ones given in the config file */
- for (i=1;i<argc;i++) {
- char *arg=argv[i];
- if (strcmp(arg,"-h")==0 || strcmp(arg,"--help")==0) {
- fputs(info_message,stdout);
- fputs(help_message,stdout);
- exit(1);
- } else if (strcmp(arg,"-V")==0 || strcmp(arg,"--version")==0) {
- fputs(info_message,stdout);
- exit(1);
- } else if (strcmp(arg,"-c")==0 || strcmp(arg,"--config-file")==0) {
- if (++i<argc) {
- conf_file=argv[i];
- } else {
- fprintf(stderr,"Error: file name expected after %s option.\n",arg);
- exit(1);
- }
- } else if (strcmp(arg,"-4")==0) {
-#ifdef ENABLE_IPV4
-# ifdef ENABLE_IPV6
- run_ipv4=1; cmdlineipv=1;
-# endif
-#else
- fprintf(stderr,"Error: -4: pdnsd was compiled without IPv4 support.\n");
- exit(1);
-#endif
- } else if (strcmp(arg,"-6")==0) {
-#ifdef ENABLE_IPV6
-# ifdef ENABLE_IPV4
- run_ipv4=0; cmdlineipv=1;
-# endif
-#else
- fprintf(stderr,"Error: -6: pdnsd was compiled without IPv6 support.\n");
- exit(1);
-#endif
- } else if (strcmp(arg,"-a")==0) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
- int rv=check_ipv6();
- if(rv<0) {
- fprintf(stderr,"Error: -a: can't check availability of IPv6: %s\n"
- "Try using -4 or -6 option instead.\n",strerror(errno));
- exit(1);
- }
- if((run_ipv4= !rv))
- fprintf(stderr,"Switching to IPv4 mode.\n");
- cmdlineipv=1;
-#else
- fprintf(stderr,"Warning: -a option does nothing unless pdnsd is compiled with both IPv4 AND IPv6 support.\n");
-#endif
- } else if(strcmp(arg,"-i")==0 || strcmp(arg,"--ipv4_6_prefix")==0) {
- if (++i<argc) {
-#ifdef ENABLE_IPV6
- if(inet_pton(AF_INET6,argv[i],&global.ipv4_6_prefix)<=0) {
- fprintf(stderr,"Error: %s: argument not a valid IPv6 address.\n",arg);
- exit(1);
- }
- cmdline.prefix=1;
-#else
- fprintf(stderr,"pdnsd was compiled without IPv6 support. %s will be ignored.\n",arg);
-#endif
- } else {
- fprintf(stderr,"Error: IPv6 address expected after %s option.\n",arg);
- exit(1);
- }
- } else if (strcmp(arg,"-s")==0 || strcmp(arg,"--status")==0) {
- global.stat_pipe=1; cmdline.stat_pipe=1;
- } else if (strcmp(arg,"--nostatus")==0) {
- global.stat_pipe=0; cmdline.stat_pipe=1;
- } else if (strcmp(arg,"-d")==0 || strcmp(arg,"--daemon")==0) {
- global.daemon=1; cmdline.daemon=1;
- } else if (strcmp(arg,"--nodaemon")==0) {
- global.daemon=0; cmdline.daemon=1;
- } else if (strcmp(arg,"-t")==0 || strcmp(arg,"--tcp")==0) {
- global.notcp=0; cmdline.notcp=1;
-#ifdef NO_TCP_SERVER
- fprintf(stderr,"pdnsd was compiled without tcp server support. -t has no effect.\n");
-#endif
- } else if (strcmp(arg,"--notcp")==0) {
- global.notcp=1; cmdline.notcp=1;
- } else if (strcmp(arg,"-p")==0) {
- if (++i<argc) {
- global.pidfile=argv[i]; cmdline.pidfile=1;
- } else {
- fprintf(stderr,"Error: file name expected after -p option.\n");
- exit(1);
- }
- } else if (strncmp(arg,"-v",2)==0) {
- if (strlen(arg)!=3 || !isdigit(arg[2])) {
- fprintf(stderr,"Error: one digit expected after -v option (like -v2).\n");
- exit(1);
- }
- global.verbosity=arg[2]-'0'; cmdline.verbosity=1;
- } else if (strncmp(arg,"-m",2)==0) {
- if (strlen(arg)!=4) {
- fprintf(stderr,"Error: uo, to or tu expected after the -m option (like -muo).\n");
- exit(1);
- }
- if (strcmp(&arg[2],"uo")==0) {
-#ifdef NO_UDP_QUERIES
- fprintf(stderr,"Error: pdnsd was compiled without UDP support.\n");
- exit(1);
-#else
- global.query_method=UDP_ONLY;
-#endif
- } else if (strcmp(&arg[2],"to")==0) {
-#ifdef NO_TCP_QUERIES
- fprintf(stderr,"Error: pdnsd was compiled without TCP support.\n");
- exit(1);
-#else
- global.query_method=TCP_ONLY;
-#endif
- } else if (strcmp(&arg[2],"tu")==0) {
-#if defined(NO_UDP_QUERIES) || defined(NO_TCP_QUERIES)
- fprintf(stderr,"Error: pdnsd was not compiled with UDP and TCP support.\n");
- exit(1);
-#else
- global.query_method=TCP_UDP;
-#endif
- } else if (strcmp(&arg[2],"ut")==0) {
-#if defined(NO_UDP_QUERIES) || defined(NO_TCP_QUERIES)
- fprintf(stderr,"Error: pdnsd was not compiled with UDP and TCP support.\n");
- exit(1);
-#else
- global.query_method=UDP_TCP;
-#endif
- } else {
- fprintf(stderr,"Error: uo, to, tu or ut expected after the -m option (like -muo).\n");
- exit(1);
- }
- cmdline.query_method=1;
- } else if (strcmp(arg,"-g")==0 || strcmp(arg,"--debug")==0) {
- global.debug=1; cmdline.debug=1;
-#if !DEBUG
- fprintf(stderr,"pdnsd was compiled without debugging support. -g has no effect.\n");
-#endif
- } else if (strcmp(arg,"--nodebug")==0) {
- global.debug=0; cmdline.debug=1;
- } else if (strcmp(arg,"--pdnsd-user")==0) {
- cmdline.pdnsduser=1;
- } else {
- char *equ=strchr(arg,'=');
- if(equ) {
- int plen=equ-arg;
- char *valstr=equ+1;
-# define arg_isparam(strlit) (!strncmp(arg,strlit,strlitlen(strlit)) && plen==strlitlen(strlit))
-
- if(arg_isparam("--config-file")) {
- conf_file=valstr;
- }
- else if(arg_isparam("--ipv4_6_prefix")) {
-#ifdef ENABLE_IPV6
- if(inet_pton(AF_INET6,valstr,&global.ipv4_6_prefix)<=0) {
- fprintf(stderr,"Error: --ipv4_6_prefix: argument not a valid IPv6 address.\n");
- exit(1);
- }
- cmdline.prefix=1;
-#else
- fprintf(stderr,"pdnsd was compiled without IPv6 support. --ipv4_6_prefix will be ignored.\n");
-#endif
- }
- else {
- fprintf(stderr,"Error: unknown option: %.*s\n",plen,arg);
- exit(1);
- }
- } else {
- fprintf(stderr,"Error: unknown option: %s\n",arg);
- exit(1);
- }
- }
- }
-
- init_cache();
- {
- char *errmsg;
- if(!read_config_file(conf_file,&global,&servers,0,&errmsg)) {
- fputs(errmsg?:"Out of memory.",stderr);
- fputc('\n',stderr);
- exit(3);
- }
- }
-
- if(cmdline.pdnsduser) {
- if (global.run_as[0]) {
- printf("%s\n",global.run_as);
- } else {
- uid_t uid=getuid();
- struct passwd *pws=getpwuid(uid);
- if (pws)
- printf("%s\n",pws->pw_name);
- else
- printf("%i\n",uid);
- }
- exit(0);
- }
-
- if(!global.cache_dir) global.cache_dir = CACHEDIR;
- if(!global.scheme_file) global.scheme_file = "/var/lib/pcmcia/scheme";
- stat_pipe=global.stat_pipe;
-
- if (!(global.run_as[0] && global.strict_suid)) {
- for (i=0; i<DA_NEL(servers); i++) {
- servparm_t *sp=&DA_INDEX(servers,i);
- if (sp->uptest==C_EXEC && sp->uptest_usr[0]=='\0') {
- uid_t uid=getuid();
- struct passwd *pws=getpwuid(uid);
-
- /* No explicit uptest user given. If we run_as and strict_suid, we assume that
- * this is safe. If not - warn. */
- fprintf(stderr,"Warning: uptest command \"%s\" will implicitly be executed as user ", sp->uptest_cmd);
- if (pws)
- fprintf(stderr,"%s\n",pws->pw_name);
- else
- fprintf(stderr,"%i\n",uid);
-
- }
- }
- }
-
- if (global.daemon && global.pidfile) {
- if (unlink(global.pidfile)!=0 && errno!=ENOENT) {
- log_error("Error: could not unlink pid file %s: %s",global.pidfile, strerror(errno));
- exit(1);
- }
- if ((pfd=open(global.pidfile,O_WRONLY|O_CREAT|O_EXCL
-#ifdef O_NOFOLLOW
- |O_NOFOLLOW
-#else
- /*
- * No O_NOFOLLOW. Nevertheless, this not a hole, since the
- * directory for pidfiles should not be world writeable.
- * OS's that do not support O_NOFOLLOW are currently not
- * supported, this is just-in-case code.
- */
-#endif
- , 0600))==-1)
- {
- log_error("Error: could not open pid file %s: %s",global.pidfile, strerror(errno));
- exit(1);
- }
- }
- for (i=0;i<DA_NEL(servers);i++) {
- if (DA_INDEX(servers,i).uptest==C_PING) {
- init_ping_socket();
- break;
- }
- }
-
- if (!init_rng())
- exit(1);
-#if (TARGET==TARGET_LINUX)
- if (!final_init())
- exit(1);
-#endif
-
- {
- struct sigaction action;
- action.sa_handler = SIG_IGN;
- sigemptyset(&action.sa_mask);
- action.sa_flags = 0;
- if(sigaction(SIGPIPE, &action, NULL) != 0)
- log_error("Could not call sigaction to ignore SIGPIPE: %s",strerror(errno));
- }
-
- umask(0077); /* for security reasons */
- if (global.daemon) {
- pid_t pid;
- int fd;
-
- /* become a daemon */
- pid=fork();
- if (pid==-1) {
- log_error("Could not become a daemon: fork #1 failed: %s",strerror(errno));
- exit(1);
- }
- if (pid!=0) {
- /* This is the parent.
- The child is going to do another fork() and will exit quickly.
- Perhaps we should wait for the child and return
- its exit status? */
- exit(0); /* exit parent */
- }
- /* dissociate from controlling terminal */
- if (setsid()==-1) {
- log_error("Could not become a daemon: setsid failed: %s",strerror(errno));
- _exit(1);
- }
- pid=fork();
- if (pid==-1) {
- log_error("Could not become a daemon: fork #2 failed: %s",strerror(errno));
- _exit(1);
- }
- if (pid!=0) {
- int exitval=0;
- if (global.pidfile) {
- if(fsprintf(pfd,"%i\n",(int)pid)<0) {
- log_error("Error: could not write to pid file %s: %s",
- global.pidfile, strerror(errno));
- exitval=1;
- }
- if(close(pfd)<0) {
- log_error("Error: could not close pid file %s: %s",
- global.pidfile, strerror(errno));
- exitval=1;
- }
- }
- _exit(exitval); /* exit parent, so we are no session group leader */
- }
-
- if (global.pidfile) close(pfd);
- if(chdir("/"))
- log_warn("Cannot chdir to root directory: %s",strerror(errno));
- if ((fd=open("/dev/null",O_RDONLY))==-1) {
- log_error("Could not become a daemon: open for /dev/null failed: %s",strerror(errno));
- _exit(1);
- }
- dup2(fd,0);
- close(fd);
- if ((fd=open("/dev/null",O_WRONLY))==-1) {
- log_error("Could not become a daemon: open for /dev/null failed: %s",strerror(errno));
- _exit(1);
- }
- dup2(fd,1);
- dup2(fd,2);
- close(fd);
-#if DEBUG>0
- if (global.debug) {
- char dbgpath[strlen(global.cache_dir)+sizeof("/pdnsd.debug")];
- stpcpy(stpcpy(dbgpath,global.cache_dir),"/pdnsd.debug");
- if (!(dbg_file=fopen(dbgpath,"w")))
- log_warn("Warning: could not open debug file %s: %s",dbgpath, strerror(errno));
- }
-#endif
- } else {
-#if DEBUG>0
- dbg_file=stdout;
-#endif
- }
-
-#if DEBUG>0
- debug_p= (global.debug && dbg_file);
-#endif
- log_info(0,"pdnsd-%s starting.\n",VERSION);
- DEBUG_MSG("Debug messages activated\n");
-
-#if (TARGET!=TARGET_LINUX)
- if (!final_init())
- _exit(1);
-#endif
- DEBUG_MSG(SEL_IPVER("Using IPv4.\n", "Using IPv6.\n"));
-
- /* initialize attribute for creating detached threads */
- pthread_attr_init(&attr_detached);
- pthread_attr_setdetachstate(&attr_detached,PTHREAD_CREATE_DETACHED);
-
- read_disk_cache();
-
- /* This must be done before any other thread is started to avoid races. */
- if (stat_pipe)
- init_stat_sock();
-
-
- /* Before this point, logging and cache accesses are not locked because we are single-threaded. */
- init_log_lock();
- init_cache_lock();
-
- sigemptyset(&sigs_msk);
- sigaddset(&sigs_msk,SIGHUP);
- sigaddset(&sigs_msk,SIGINT);
-#ifndef THREADLIB_NPTL
- sigaddset(&sigs_msk,SIGILL);
-#endif
- sigaddset(&sigs_msk,SIGABRT);
- sigaddset(&sigs_msk,SIGFPE);
-#ifndef THREADLIB_NPTL
- sigaddset(&sigs_msk,SIGSEGV);
-#endif
- sigaddset(&sigs_msk,SIGTERM);
- /* if (!daemon_p) {
- sigaddset(&sigs_msk,SIGQUIT);
- } */
-#if (TARGET==TARGET_LINUX)
- pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL);
-#endif
-
-#if DEBUG>0
- {
- int err;
- /* Generate a key for storing our thread id's */
- if ((err=pthread_key_create(&thrid_key, NULL)) != 0) {
- log_error("pthread_key_create failed: %s",strerror(err));
- _exit(1);
- }
- }
-#endif
-
- {
-#if DEBUG>0
- int thrdsucc=1;
-# define thrdfail (thrdsucc=0)
-#else
-# define thrdfail
-#endif
-
- if(start_servstat_thread()) thrdfail;
-
-#if (TARGET==TARGET_LINUX)
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- _exit(1);
- }
- }
-#endif
-
- if (stat_pipe)
- if(start_stat_sock()) thrdfail;
-
- start_dns_servers();
-
-#if DEBUG>0
- if(thrdsucc) {
- DEBUG_MSG("All threads started successfully.\n");
- }
-#endif
-#undef thrdfail
- }
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
- pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL);
- waiting=1;
-#endif
- {
- int err;
- while ((err=sigwait(&sigs_msk,&sig))) {
- if (err!=EINTR) {
- log_error("sigwait failed: %s",strerror(err));
- sig=0;
- break;
- }
- }
- }
- if(sig) DEBUG_MSG("Signal %i caught.\n",sig);
- write_disk_cache();
- destroy_cache();
- if(sig) log_warn("Caught signal %i. Exiting.",sig);
- if (sig==SIGSEGV || sig==SIGILL || sig==SIGBUS)
- crash_msg("This is a fatal signal probably triggered by a bug.");
- if (ping_isocket!=-1)
- close(ping_isocket);
-#ifdef ENABLE_IPV6
- if (ping6_isocket!=-1)
- close(ping6_isocket);
-#endif
- /* Close and delete the status socket */
- if(stat_pipe) close(stat_sock);
- if (sock_path && unlink(sock_path))
- log_warn("Failed to unlink %s: %s",sock_path, strerror(errno));
-
- free_rng();
-#if DEBUG>0
- if (debug_p && global.daemon)
- if(fclose(dbg_file)<0) {
- log_warn("Could not close debug file: %s", strerror(errno));
- }
-#endif
- _exit(0);
-}
diff --git a/jni/pdnsd/src/make_rr_types_h.pl b/jni/pdnsd/src/make_rr_types_h.pl
deleted file mode 100644
index c8c0f9f..0000000
--- a/jni/pdnsd/src/make_rr_types_h.pl
+++ /dev/null
@@ -1,309 +0,0 @@
-#!/usr/bin/perl -w
-
-# This Perl script is used to generate rr_types.h, using rr_types.in as input.
-#
-# Copyright (C) 2010, 2011 Paul A. Rombouts
-#
-# This file is part of the pdnsd package.
-#
-
-use strict;
-use integer;
-
-print << "END-OF-TEXT";
-/* This file was generated by running '$0 @ARGV'.
- Modifications to this file may be lost the next time it is automatically
- regenerated.
-*/
-
-END-OF-TEXT
-
-my %valdic;
-my %namedic;
-my %classdic;
-my %muset;
-my $nrr=0;
-my $nmu=0;
-my $minval;
-my $maxval;
-#my $maxmuval;
-
-while(<>) {
- if(/\S/ && !/^\s*\#/) {
- if(/^\s*(?:([*+-])\s*)?([\w-]+)\s+(\d+)\s+(?:\((\w+)\))?/) {
- my $mu = $1; my $name=$2; my $val=$3+0; my $class=$4;
- $name =~ s/-/_/g;
- if(defined($valdic{$name})) {warn "The name \"$name\" does not have a unique value.\n"}
- if(defined($namedic{$val})) {warn "The value \"$val\" does not have a unique name.\n"}
- $valdic{$name}=$val; $namedic{$val}=$name; $classdic{$val}=$class if defined($class);
- if(defined($mu)) {
- if($mu eq '-') {next}
- $muset{$val}= 1;
- ++$nmu;
- #if(!defined($maxmuval) || $val>$maxmuval) {$maxmuval=$val}
- }
- else {$muset{$val}= 0}
- ++$nrr;
- if(!defined($minval) || $val<$minval) {$minval=$val}
- if(!defined($maxval) || $val>$maxval) {$maxval=$val}
- }
- else {die "Can't find name-value pair in following line:\n$_\n"}
- }
-}
-
-defined($minval) or die "No values defined.\n";
-if($nrr>255) {warn "Warning: total number of cache-able RR types is greater than 255.\n"}
-
-print << 'END-OF-TEXT';
-/* rr_types.h - A header file with names & descriptions of
- all rr types known to pdnsd
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2007, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _RR_TYPES_H_
-#define _RR_TYPES_H_
-
-#include <config.h>
-
-END-OF-TEXT
-
-print "#define T_MIN $minval\n";
-foreach my $name (sort {$valdic{$a} <=> $valdic{$b} } (keys %valdic)) {
- printf("#define %-12s %2d\n", "T_$name", $valdic{$name});
-}
-print "#define T_MAX $maxval\n";
-print("\n/* T_MAX - T_MIN + 1 */\n","#define T_NUM ",$maxval+1-$minval,"\n");
-#print("\n/* Largest most frequently used type value. */\n","#define T_MAXMU $maxmuval\n");
-print("\n/* Number of most frequently used rr types. */\n","#define NRRMU $nmu\n");
-print("\n/* Number of remaining rr types. */\n","#define NRREXT ",$nrr-$nmu,"\n");
-print("\n/* NRRMU + NRREXT */\n","#define NRRTOT $nrr\n");
-
-print << 'END-OF-TEXT';
-
-/* Lookup table for converting rr type values to internally used indices. */
-extern const unsigned short int rrlkuptab[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrlkuptab[T_NUM] = {
-END-OF-TEXT
-my @rrtpval=();
-for(my $val=$minval, my $i=0, my $j=$nmu, my $k=$nrr; $val<=$maxval; ++$val) {
- my $idx;
- if(defined($muset{$val})) {
- if($muset{$val}) {
- $idx = $i++;
- }
- else {
- $idx = $j++;
- }
- $rrtpval[$idx]=$val;
- }
- else {
- $idx = $k++;
- }
-
- printf('%4d', $idx);
- if(defined($namedic{$val})) {
- print " /* $namedic{$val} */";
- }
- print ',' if $val<$maxval;
- print "\n";
-}
-#print << 'END-OF-TEXT';
-#};
-##endif
-#
-#/* Table for converting internally used indices to rr type values.
-# This is more or less the inverse of the rrlkuptab[] mapping. */
-#extern const unsigned short int rrtpval[NRRTOT];
-##if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-#const unsigned short int rrtpval[NRRTOT] = {
-#END-OF-TEXT
-#for(my $i=0; $i<$nrr; ++$i) {
-# if($i ==0) {
-# print " /* Most frequently used types. */\n";
-# }
-# else {
-# print ",\n";
-# }
-# print " /* Remaining (less frequently used) types. */\n"
-# if $i == $nmu;
-# my $val= $rrtpval[$i];
-# print(" ",defined($namedic{$val})? "T_$namedic{$val}": $val);
-#}
-print << 'END-OF-TEXT';
-};
-#endif
-
-/* List of most frequently used RR types in ascending order. */
-extern const unsigned short int rrmuiterlist[NRRMU];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrmuiterlist[NRRMU] = {
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
- if(defined($muset{$val}) && $muset{$val}) {
- print ",\n" if $i++;
- print(" ",defined($namedic{$val})? "T_$namedic{$val}": $val);
- }
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-/* List of the cache-able RR types in ascending order. */
-extern const unsigned short int rrcachiterlist[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS
-const unsigned short int rrcachiterlist[NRRTOT] = {
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
- if(defined($muset{$val})) {
- print ",\n" if $i++;
- print(" ",defined($namedic{$val})? "T_$namedic{$val}": $val);
- }
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-/* Optimized getrrset macros for fixed rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0, my $j=0; $val<=$maxval; ++$val) {
- if(defined($muset{$val})) {
- my $name = $namedic{$val};
- my $mdef;
- if($muset{$val}) {
- $mdef= "GET_RRSMU(cent,$i)";
- ++$i;
- }
- else {
- $mdef= "GET_RRSEXT(cent,$j)";
- ++$j;
- }
- printf("#define %-25s %s\n", "getrrset_$name(cent)", $mdef)
- if defined($name);
- }
-}
-print << 'END-OF-TEXT';
-
-/* have_rr macros for fixed rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0, my $j=0; $val<=$maxval; ++$val) {
- my $name = $namedic{$val};
- my $mdef = '0';
- if(defined($muset{$val})) {
- if($muset{$val}) {
- $mdef= "HAVE_RRMU(cent,$i)";
- ++$i;
- }
- else {
- $mdef= "HAVE_RREXT(cent,$j)";
- ++$j;
- }
- }
- printf("#define %-25s %s\n", "have_rr_$name(cent)", $mdef)
- if defined($name);
-}
-print << 'END-OF-TEXT';
-
-/* These macros specify which RR types are cached by pdnsd. */
-END-OF-TEXT
-for(my $val=$minval; $val<=$maxval; ++$val) {
- if(defined($muset{$val})) {
- my $name = $namedic{$val};
- printf("#define IS_CACHED_%-10s 1\n", defined($name)? $name: "TYPE$val")
- }
-}
-print << 'END-OF-TEXT';
-
-/* Array indices for most frequently used rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
- if(defined($muset{$val}) && $muset{$val}) {
- printf("#define %-18s %2d\n", "RRMUINDEX_$namedic{$val}", $i)
- if defined($namedic{$val});
- ++$i;
- }
-}
-print << 'END-OF-TEXT';
-
-/* Table of rr names. */
-extern const char *const rrnames[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS
-const char *const rrnames[T_NUM] = {
-END-OF-TEXT
-for(my $val=$minval; $val<=$maxval; ++$val) {
- my $name = $namedic{$val};
- print(' "', defined($name)? $name: "TYPE$val", '"');
- print ',' if $val<$maxval;
- print "\n";
-}
-print << 'END-OF-TEXT';
-};
-#endif
-
-/* Structure for rr information */
-struct rr_infos {
- unsigned short class; /* class (values see below) */
- unsigned short excludes; /* relations to other classes.
- Mutual exclusion is marked by or'ing the
- respective RRCL value in this field.
- Exclusions should be symmetric. */
-};
-
-/* Class values */
-#define RRCL_ALIAS 1 /* for CNAMES, conflicts with RRCL_RECORD */
-#define RRCL_RECORD 2 /* normal direct record */
-#define RRCL_IDEM 4 /* types that conflict with no others (MX, CNAME, ...) */
-#define RRCL_PTR 8 /* PTR */
-
-/* Standard excludes for the classes */
-#define RRX_ALIAS (RRCL_RECORD|RRCL_PTR)
-#define RRX_RECORD (RRCL_ALIAS|RRCL_PTR)
-#define RRX_IDEM 0
-#define RRX_PTR (RRCL_ALIAS|RRCL_RECORD)
-
-/* There could be a separate table detailing the relationship of types, but this
- * is slightly more flexible, as it allows a finer granularity of exclusion. Also,
- * Membership in multiple classes could be added.
- * Index by internally used RR-set indices, not RR type values!
- */
-extern const struct rr_infos rr_info[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const struct rr_infos rr_info[NRRTOT] = {
-END-OF-TEXT
-for(my $i=0; $i<$nrr; ++$i) {
- print ",\n" if $i;
- my $val=$rrtpval[$i];
- my $class = (defined($classdic{$val})? $classdic{$val}: 'IDEM');
- printf(' %-16s %-15s %s',"{RRCL_$class,", "RRX_$class}", defined($namedic{$val})?"/* $namedic{$val} */":"");
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-int rr_tp_byname(char *name);
-const char *loc2str(const void *binary, char *ascii, size_t asclen);
-
-#endif
-END-OF-TEXT
-
-exit
diff --git a/jni/pdnsd/src/netdev.c b/jni/pdnsd/src/netdev.c
deleted file mode 100644
index bd5f8c4..0000000
--- a/jni/pdnsd/src/netdev.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* netdev.c - Test network devices for existence and status
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * Portions are under the following copyright and taken from FreeBSD
- * (clause 3 deleted as it no longer applies):
- *
- * Copyright (c) 1982, 1986, 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)if.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if.h,v 1.58.2.1 2000/05/05 13:37:04 jlemon Exp $
- */
-
-#include <config.h>
-#include "ipvers.h"
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-#include <netdb.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include "helpers.h"
-#include "netdev.h"
-#include "error.h"
-
-
-#if (TARGET==TARGET_BSD)
-/* Taken from FreeBSD net/if.h rev. 1.58.2.1 */
-#define SIZEOF_ADDR_IFREQ(ifr) \
- ((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \
- (sizeof(struct ifreq) - sizeof(struct sockaddr) + \
- (ifr).ifr_addr.sa_len) : sizeof(struct ifreq))
-#elif (TARGET==TARGET_CYGWIN)
-#define SIZEOF_ADDR_IFREQ(ifr) (sizeof(struct sockaddr))
-#endif
-
-#define MAX_SOCKETOPEN_ERRS 10
-static volatile unsigned long socketopen_errs=0;
-
-/*
- * Portions of the following code are Linux/FreeBSD specific.
- * Please write interface-detection routines for other flavours of Unix if you can and want.
- */
-
-#if (TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-# if (TARGET==TARGET_LINUX)
-
-static volatile unsigned long isdn_errs=0;
-
-# ifdef ISDN_SUPPORT
-
-/*
- * Test the status of an ippp interface. Taken from the isdn4k-utils (thanks!) and adapted
- * by me (I love free software!)
- * This will not work with older kernels.
- * If your kernel is too old or too new, just try to get the status as uptest=exec command
- * This will work, although slower.
- */
-
-# include <linux/isdn.h>
-
-int statusif(char *name)
-{
- isdn_net_ioctl_phone phone;
- int isdninfo,rc=0;
-
- if ((isdninfo = open("/dev/isdninfo", O_RDONLY))<0) {
- if (++isdn_errs<=2) {
- log_warn("Could not open /dev/isdninfo for uptest: %s",strerror(errno));
- }
- return 0;
- }
-
- strncp(phone.name, name, sizeof(phone.name));
- if (ioctl(isdninfo, IIOCNETGPN, &phone)==0)
- rc=1;
- close(isdninfo);
- return rc;
-}
-# endif
-
-/*
- * Test whether the network interface specified in ifname and its
- * associated device specified in devname have locks owned by the
- * same process.
- */
-int dev_up(char *ifname, char *devname)
-{
- FILE *fd;
- int pidi, pidd, rv;
-
- {
- char path[sizeof("/var/run/.pid")+strlen(ifname)];
- stpcpy(stpcpy(stpcpy(path,"/var/run/"),ifname),".pid");
- if ((fd=fopen(path, "r")) == NULL )
- return 0;
-
- if (fscanf(fd, "%d", &pidi) != 1 ) {
- fclose(fd) ;
- return 0;
- }
- fclose(fd);
- }
-
- {
- char path[sizeof("/var/lock/LCK..")+strlen(devname)];
- stpcpy(stpcpy(path,"/var/lock/LCK.."),devname);
- if ((fd=fopen(path, "r")) == NULL)
- return 0;
-
- if (fscanf(fd, "%d", &pidd) != 1) {
- fclose(fd);
- return 0;
- }
- fclose(fd);
- }
-
- if (pidi != pidd)
- return 0;
- /* Test whether pppd is still alive */
- rv=kill(pidi,0);
- return (rv==0 || (rv==-1 && errno!=ESRCH));
-}
-
-
-# endif /*(TARGET==TARGET_LINUX)*/
-
-/*
- * Test whether the network device specified in devname is up and
- * running (returns -1) or non-existent, down or not-running (returns 0)
- *
- * Note on IPv6-Comptability: rfc2133 requires all IPv6 implementation
- * to be backwards-compatible to IPv4 in means of permitting socket(PF_INET,...)
- * and similar. So, I don't put code here for both IPv4 and IPv6, since
- * I use that socket only for ioctls. If somebody notices incompatabilities,
- * please notify me.
- */
-int if_up(char *devname)
-{
- int sock;
- struct ifreq ifr;
-# if (TARGET==TARGET_LINUX)
- unsigned int devnamelen=strlen(devname);
- if (devnamelen>4 && devnamelen<=6 && strncmp(devname,"ippp",4)==0) {
- /* This function didn't manage the interface uptest correctly. Thanks to
- * Joachim Dorner for pointing out.
- * The new code (statusif()) was shamelessly stolen from isdnctrl.c of the
- * isdn4k-utils. */
-# ifdef ISDN_SUPPORT
- return statusif(devname);
-# else
- if (isdn_errs++==0) {
- log_warn("An ippp? device was specified for uptest, but pdnsd was compiled without ISDN support.");
- log_warn("The uptest result will be wrong.");
- }
-# endif
- /* If it doesn't match our rules for isdn devices, treat as normal if */
- }
-# endif
- if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
- if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
- log_warn("Could not open socket in if_up(): %s",strerror(errno));
- }
- return 0;
- }
- strncp(ifr.ifr_name,devname,IFNAMSIZ);
- if (ioctl(sock,SIOCGIFFLAGS,&ifr)==-1) {
- close(sock);
- return 0;
- }
- close(sock);
- return (ifr.ifr_flags&IFF_UP) && (ifr.ifr_flags&IFF_RUNNING);
-}
-
-# if (TARGET==TARGET_LINUX)
-# ifdef ENABLE_IPV6
-#define MAX_IF_INET6_OPEN_ERRS 10
-static volatile unsigned long if_inet6_open_errs=0;
-# endif
-
-int is_local_addr(pdnsd_a *a)
-{
- int res=0;
-
-# ifdef ENABLE_IPV4
- if (run_ipv4) {
- int i,sock;
- struct ifreq ifr;
- if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
- if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
- log_warn("Could not open socket in is_local_addr(): %s",strerror(errno));
- }
- return 0;
- }
- for (i=1;i<255;i++) {
- ifr.ifr_ifindex=i;
- if (ioctl(sock,SIOCGIFNAME,&ifr)==-1) {
- /* There may be gaps in the interface enumeration, so just continue */
- continue;
- }
- if (ioctl(sock,SIOCGIFADDR, &ifr)==-1) {
- continue;
- }
- if (((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr.s_addr==a->ipv4.s_addr) {
- res=1;
- break;
- }
- }
- close(sock);
- }
-
-# endif
-# ifdef ENABLE_IPV6
- ELSE_IPV6 {
- char buf[40];
- FILE *f;
- struct in6_addr b;
- /* the interface configuration and information retrieval is obiously currently done via
- * rt-netlink sockets. I think it is relatively likely to change in an incompatible way the
- * Linux kernel (there seem to be some major changes for 2.4).
- * Right now, I just analyze the /proc/net/if_inet6 entry. This may not be the fastest, but
- * should work and is easy to adapt should the format change. */
- if (!(f=fopen("/proc/net/if_inet6","r"))) {
- if(++if_inet6_open_errs<=MAX_IF_INET6_OPEN_ERRS) {
- log_warn("Could not open /proc/net/if_inet6 in is_local_addr(): %s",strerror(errno));
- }
- return 0;
- }
- /* The address is at the start of the line. We just read 32 characters and insert a ':' 7
- * times. Such, we can use inet_pton conveniently. More portable, that. */
- for(;;) {
- int i,ch; char *p=buf;
- for (i=0;i<32;i++) {
- if(i && i%4==0) *p++ = ':';
- if ((ch=fgetc(f))==EOF)
- goto fclose_return; /* we are at the end of the file and haven't found anything.*/
- if(ch=='\n') goto nextline;
- *p++ = ch;
- }
- *p=0;
- if (inet_pton(AF_INET6,buf,&b) >0) {
- if (IN6_ARE_ADDR_EQUAL(&b,&a->ipv6)) {
- res=1;
- goto fclose_return;
- }
- }
- do {
- if ((ch=fgetc(f))==EOF) goto fclose_return;
- } while(ch!='\n');
- nextline:;
- }
- fclose_return:
- fclose(f);
- }
-# endif
- return res;
-}
-
-# else /*(TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)*/
-
-
-#define MAX_SIOCGIFCONF_ERRS 4
-static volatile unsigned long siocgifconf_errs=0;
-
-int is_local_addr(pdnsd_a *a)
-{
- int retval=0, sock, cnt;
- struct ifconf ifc;
- char buf[2048];
-
-
- if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
- if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
- log_warn("Could not open socket in is_local_addr(): %s",strerror(errno));
- }
- return 0;
- }
-
- ifc.ifc_len=sizeof(buf);
- ifc.ifc_buf=buf;
- if (ioctl(sock,SIOCGIFCONF,&ifc)==-1) {
- if(++siocgifconf_errs<=MAX_SIOCGIFCONF_ERRS) {
- log_warn("ioctl() call with request SIOCGIFCONF failed in is_local_addr(): %s",strerror(errno));
- }
- goto close_sock_return;
- }
-
- cnt=0;
- while(cnt+sizeof(struct ifreq)<=ifc.ifc_len) {
- struct ifreq *ir= (struct ifreq *)(buf+cnt);
- cnt += SIZEOF_ADDR_IFREQ(*ir);
- if (cnt>ifc.ifc_len)
- break;
- if (SEL_IPVER(ir->ifr_addr.sa_family==AF_INET &&
- ((struct sockaddr_in *)&ir->ifr_addr)->sin_addr.s_addr==a->ipv4.s_addr,
- ir->ifr_addr.sa_family==AF_INET6 &&
- IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *)&ir->ifr_addr)->sin6_addr,
- &a->ipv6)))
- {
- retval=1;
- break;
- }
- }
-
- close_sock_return:
- close(sock);
-
- return retval;
-}
-
-# endif
-
-#else
-# error "Huh. No OS macro defined."
-#endif
diff --git a/jni/pdnsd/src/netdev.h b/jni/pdnsd/src/netdev.h
deleted file mode 100644
index 529b8a8..0000000
--- a/jni/pdnsd/src/netdev.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* netdev.h - Test network devices for existence and status
- Copyright (C) 2000 Thomas Moestl
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _NETDEV_H_
-#define _NETDEV_H_
-
-#include <config.h>
-#include "ipvers.h"
-
-int if_up(char *devname);
-int dev_up(char *ifname, char *devname);
-int is_local_addr(pdnsd_a *a);
-
-#endif
diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.am b/jni/pdnsd/src/pdnsd-ctl/Makefile.am
deleted file mode 100644
index bcb7327..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-
-sbin_PROGRAMS = pdnsd-ctl
-
-pdnsd_ctl_SOURCES = pdnsd-ctl.c
-pdnsd_ctl_LDADD = rr_types.o
-pdnsd_ctl_DEPENDENCIES = rr_types.o
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = rr_types.h
-
-pdnsd-ctl.o rr_types.o: ../rr_types.h
-
-../rr_types.h: ../make_rr_types_h.pl ../rr_types.in
- perl ../make_rr_types_h.pl ../rr_types.in > ../rr_types.h
-
-rr_types.o: %.o: ../%.c
- $(COMPILE) -DCLIENT_ONLY -c $<
-
diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.in b/jni/pdnsd/src/pdnsd-ctl/Makefile.in
deleted file mode 100644
index 80f3987..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/Makefile.in
+++ /dev/null
@@ -1,470 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-sbin_PROGRAMS = pdnsd-ctl$(EXEEXT)
-subdir = src/pdnsd-ctl
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am_pdnsd_ctl_OBJECTS = pdnsd-ctl.$(OBJEXT)
-pdnsd_ctl_OBJECTS = $(am_pdnsd_ctl_OBJECTS)
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(pdnsd_ctl_SOURCES)
-DIST_SOURCES = $(pdnsd_ctl_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pdnsd_ctl_SOURCES = pdnsd-ctl.c
-pdnsd_ctl_LDADD = rr_types.o
-pdnsd_ctl_DEPENDENCIES = rr_types.o
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/pdnsd-ctl/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/pdnsd-ctl/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p; \
- then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-pdnsd-ctl$(EXEEXT): $(pdnsd_ctl_OBJECTS) $(pdnsd_ctl_DEPENDENCIES)
- @rm -f pdnsd-ctl$(EXEEXT)
- $(LINK) $(pdnsd_ctl_OBJECTS) $(pdnsd_ctl_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdnsd-ctl.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
- for dir in "$(DESTDIR)$(sbindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-sbinPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-sbinPROGRAMS ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-sbinPROGRAMS install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-sbinPROGRAMS
-
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = rr_types.h
-
-pdnsd-ctl.o rr_types.o: ../rr_types.h
-
-../rr_types.h: ../make_rr_types_h.pl ../rr_types.in
- perl ../make_rr_types_h.pl ../rr_types.in > ../rr_types.h
-
-rr_types.o: %.o: ../%.c
- $(COMPILE) -DCLIENT_ONLY -c $<
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c b/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c
deleted file mode 100644
index 33a21ce..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c
+++ /dev/null
@@ -1,799 +0,0 @@
-/* pdnsd-ctl.c - Control pdnsd through a pipe
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stddef.h> /* for offsetof */
-#include "../helpers.h"
-#include "../status.h"
-#include "../conff.h"
-#include "../list.h"
-#include "../dns.h"
-#include "../rr_types.h"
-#include "../cache.h"
-
-#if !defined(HAVE_ALLOCA) && !defined(alloca)
-#define alloca malloc
-#endif
-
-
-#if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_PTON)
-# define ALLOW_AAAA IS_CACHED_AAAA
-#else
-# define ALLOW_AAAA 0
-#endif
-
-static short int verbose=1;
-
-typedef struct {
- char *name;
- int val;
-} cmd_s;
-
-#define CMD_LIST_RRTYPES (CTL_MAX+1)
-#define CMD_HELP (CTL_MAX+2)
-#define CMD_VERSION (CTL_MAX+3)
-
-static const cmd_s top_cmds[]={
- {"help",CMD_HELP},{"version",CMD_VERSION},{"list-rrtypes",CMD_LIST_RRTYPES},
- {"status",CTL_STATS},{"server",CTL_SERVER},{"record",CTL_RECORD},
- {"source",CTL_SOURCE},{"add",CTL_ADD},{"neg",CTL_NEG},
- {"config",CTL_CONFIG},{"include",CTL_INCLUDE},{"eval",CTL_EVAL},
- {"empty-cache",CTL_EMPTY}, {"dump",CTL_DUMP},
- {NULL,0}
-};
-static const cmd_s server_cmds[]= {{"up",CTL_S_UP},{"down",CTL_S_DOWN},{"retest",CTL_S_RETEST},{NULL,0}};
-static const cmd_s record_cmds[]= {{"delete",CTL_R_DELETE},{"invalidate",CTL_R_INVAL},{NULL,0}};
-static const cmd_s onoff_cmds[]= {{"off",0},{"on",1},{NULL,0}};
-static const cmd_s rectype_cmds[]= {{"a",T_A},
-#if ALLOW_AAAA
- {"aaaa",T_AAAA},
-#endif
- {"ptr",T_PTR},{"cname",T_CNAME},{"mx",T_MX},{"ns",T_NS},{NULL,0}};
-
-static const char version_message[] =
- "pdnsd-ctl, version pdnsd-" VERSION "\n\n";
-
-static const char license_statement[] =
- "Copyright (C) 2000, 2001 Thomas Moestl\n"
- "Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Paul A. Rombouts\n\n"
- "This program is part of the pdnsd package.\n\n"
- "pdnsd is free software; you can redistribute it and/or modify\n"
- "it under the terms of the GNU General Public License as published by\n"
- "the Free Software Foundation; either version 3 of the License, or\n"
- "(at your option) any later version.\n\n"
- "pdnsd is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "GNU General Public License for more details.\n\n"
- "You should have received a copy of the GNU General Public License\n"
- "along with pdsnd; see the file COPYING. If not, see\n"
- "<http://www.gnu.org/licenses/>.\n";
-
-static const char *const help_messages[] =
-{
- "Usage: pdnsd-ctl [-c cachedir] [-q] <command> [arguments]\n\n"
-
- "Command-line options:\n"
-
- "-c\tcachedir\n\tSet the cache directory to cachedir (must match pdnsd setting).\n"
- "\tThe default is '" CACHEDIR "'.\n"
- "-q\n\tBe quiet unless output is specified by command or something goes wrong.\n\n"
-
- "Commands and needed arguments are:\n"
-
- "help\t[no arguments]\n\tPrint this help.\n"
- "version\t[no arguments]\n\tPrint version and license info.\n",
-
- "status\t[no arguments]\n\tPrint pdnsd's status.\n",
-
- "server\t(index|label)\t(up|down|retest)\t[dns1[,dns2[,...]]]\n"
- "\tSet the status of the server with the given index to up or down, or\n"
- "\tforce a retest. The index is assigned in the order of definition in\n"
- "\tpdnsd.conf starting with 0. Use the status command to see the indexes.\n"
- "\tYou can specify the label of a server (that matches the label option)\n"
- "\tinstead of an index to make this easier.\n"
-
- "\tYou can specify all instead of an index to perform the action for all\n"
- "\tservers registered with pdnsd.\n"
-
- "\tAn optional third argument can be given consisting of a list of IP\n"
- "\taddresses separated by commas or spaces. This list will replace the\n"
- "\taddresses of name servers used by pdnsd for the given server section.\n"
- "\tThis feature is useful for run-time configuration of pdnsd with dynamic\n"
- "\tDNS data in scripts called by ppp or DHCP clients. The last argument\n"
- "\tmay also be an empty string, which causes existing IP addresses to be\n"
- "\tremoved and the corresponding server section to become inactive.\n",
-
- "record\tname\t(delete|invalidate)\n"
- "\tDelete or invalidate the record of the given domain if it is in the\n"
- "\tcache.\n",
-
- "source\tfn\towner\t[ttl]\t[(on|off)]\t[noauth]\n"
- "\tLoad a hosts-style file. Works like using the pdnsd source\n"
- "\tconfiguration section.\n"
- "\tOwner and ttl are used as in the source section. ttl has a default\n"
- "\tof 900 (it does not need to be specified). The next to last argument\n"
- "\tcorresponds to the serve_aliases option, and is off by default.\n"
- "\tnoauth is used to make the domains non-authoritative (please\n"
- "\tconsult the pdnsd manual for what that means).\n"
- "\tfn is the name of the file, which must be readable by pdnsd.\n",
-
- "add\ta\taddr\tname\t[ttl]\t[noauth]\n"
-#if ALLOW_AAAA
- "add\taaaa\taddr\tname\t[ttl]\t[noauth]\n"
-#endif
- "add\tptr\thost\tname\t[ttl]\t[noauth]\n"
- "add\tcname\thost\tname\t[ttl]\t[noauth]\n"
- "add\tmx\thost\tname\tpref\t[ttl]\t[noauth]\n"
- "add\tns\thost\tname\t[ttl]\t[noauth]\n"
- "\tAdd a record of the given type to the pdnsd cache, replacing existing\n"
- "\trecords for the same name and type. The 2nd argument corresponds\n"
- "\tto the value of the option in the rr section that is named like\n"
- "\tthe first argument. The addr argument may be a list of IP addresses,\n"
- "\tseparated by commas or white space. The ttl is optional, the default is\n"
- "\t900 seconds. noauth is used to make the domains non-authoritative.\n"
- "\tIf you want no other record than the newly added in the cache, do\n"
- "\tpdnsdctl record <name> delete\n"
- "\tbefore adding records.\n",
-
- "neg\tname\t[type]\t[ttl]\n"
- "\tAdd a negatively cached record to pdnsd's cache, replacing existing\n"
- "\trecords for the same name and type. If no type is given, the whole\n"
- "\tdomain is cached negatively. For negatively cached records, errors are\n"
- "\timmediately returned on a query, without querying other servers first.\n"
- "\tThe ttl is optional, the default is 900 seconds.\n",
-
- "config\t[filename]\n"
- "\tReload pdnsd's configuration file.\n"
- "\tThe config file must be owned by the uid that pdnsd had when it was\n"
- "\tstarted, and be readable by pdnsd's run_as uid. If no file name is\n"
- "\tspecified, the config file used at start up is reloaded.\n",
-
- "include\tfilename\n"
- "\tParse the given file as an include file, which may contain the same\n"
- "\ttype of sections as a config file, expect for global and server\n"
- "\tsections, which are not allowed. This command can be used to add data\n"
- "\tto the cache without reconfiguring pdnsd.\n",
-
- "eval\tstring\n"
- "\tParse string as if it were part of pdnsd's configuration file.\n"
- "\tThe string should hold one or more complete configuration sections,\n"
- "\tbut no global and server sections, which are not allowed.\n"
- "\tIf multiple strings are given, they will be joined using newline chars\n"
- "\tand parsed together.\n",
-
- "empty-cache\t[[+|-]name ...]\n"
- "\tDelete all entries in the cache matching include/exclude rules.\n"
- "\tIf no arguments are provided, the cache is completely emptied,\n"
- "\tfreeing all existing entries. This also removes \"local\" records,\n"
- "\tas defined by the config file. To restore local records, run\n"
- "\t\"pdnsd-ctl config\" or \"pdnsd-ctl include filename\" immediately\n"
- "\tafterwards.\n"
- "\tIf one or more arguments are provided, these are interpreted as \n"
- "\tinclude/exclude names. If an argument starts with a '+' the name is to\n"
- "\tbe included. If an argument starts with a '-' it is to be excluded.\n"
- "\tIf an argument does not begin with '+' or '-', a '+' is assumed.\n"
- "\tIf the domain name of a cache entry ends in one of the names in the\n"
- "\tlist, the first match will determine what happens. If the matching name\n"
- "\tis to be included, the cache entry is deleted, otherwise it remains.\n"
- "\tIf there are no matches, the default action is not to delete.\n",
-
- "dump\t[name]\n"
- "\tPrint information stored in the cache about name.\n"
- "\tIf name begins with a dot and is not the root domain, information\n"
- "\tabout the names in the cache ending in name (including name without\n"
- "\tthe leading dot) will be printed. If name is missing, information about\n"
- "\tall the names in the cache will be printed.\n",
-
- "list-rrtypes\t[no arguments]\n"
- "\tList available rr types for the neg command. Note that those are only\n"
- "\tused for the neg command, not for add!\n"
-};
-
-#define NUM_HELP_MESSAGES (sizeof(help_messages)/sizeof(char*))
-
-
-/* Open connection to control socket and send command code.
- If successful, open_sock returns a file descriptor for the new socket,
- otherwise the program is aborted.
-*/
-static int open_sock(const char *cache_dir, uint16_t cmd)
-{
- struct sockaddr_un *sa;
- unsigned int sa_len;
- int sock;
- uint16_t nc;
-
- if ((sock=socket(PF_UNIX,SOCK_STREAM,0))==-1) {
- perror("Error: could not open socket");
- exit(2);
- }
-
- sa_len = (offsetof(struct sockaddr_un, sun_path) + strlitlen("/pdnsd.status") + strlen(cache_dir));
- sa=(struct sockaddr_un *)alloca(sa_len+1);
- sa->sun_family=AF_UNIX;
- stpcpy(stpcpy(sa->sun_path,cache_dir),"/pdnsd.status");
-
- if (connect(sock,(struct sockaddr *)sa,sa_len)==-1) {
- fprintf(stderr,"Error: could not open socket %s: %s\n",sa->sun_path,strerror(errno));
- close(sock);
- exit(2);
- }
- if(verbose) printf("Opening socket %s\n",sa->sun_path);
-
- /* Send command code */
-
- nc=htons(cmd|CTL_CMDVERNR); /* Add magic number, convert to network byte order. */
-
- if (write(sock,&nc,sizeof(nc))!=sizeof(nc)) {
- perror("Error: could not write command code");
- close(sock);
- exit(2);
- }
-
- return sock;
-}
-
-static void send_long(int fd,uint32_t cmd)
-{
- uint32_t nc=htonl(cmd);
-
- if (write(fd,&nc,sizeof(nc))!=sizeof(nc)) {
- perror("Error: could not write long");
- close(fd);
- exit(2);
- }
-}
-
-static void send_short(int fd,uint16_t cmd)
-{
- uint16_t nc=htons(cmd);
-
- if (write(fd,&nc,sizeof(nc))!=sizeof(nc)) {
- perror("Error: could not write short");
- close(fd);
- exit(2);
- }
-}
-
-#define MAXSENDSTRLEN 0xfffe
-
-static void send_string(int fd, const char *s)
-{
- if(s) {
- size_t len=strlen(s);
- if(len>MAXSENDSTRLEN) {
- fprintf(stderr,"Error: send_string: string length (%lu) exceeds maximum (%u).\n",
- (unsigned long)len, MAXSENDSTRLEN);
- close(fd);
- exit(2);
- }
- send_short(fd,len);
- if (write_all(fd,s,len)!=len) {
- perror("Error: could not write string");
- close(fd);
- exit(2);
- }
- }
- else
- send_short(fd, ~0);
-}
-
-static uint16_t read_short(int fd)
-{
- ssize_t err;
- uint16_t nc;
-
- if ((err=read(fd,&nc,sizeof(nc)))!=sizeof(nc)) {
- fprintf(stderr,"Error: could not read short: %s\n",err<0?strerror(errno):"unexpected EOF");
- close(fd);
- exit(2);
- }
- return ntohs(nc);
-}
-
-/* copy data from file descriptor fd to file stream out until EOF
- or error is encountered.
-*/
-static ssize_t copymsgtofile(int fd, FILE* out)
-{
- ssize_t n,ntot=0;
- char buf[1024];
-
- while ((n=read(fd,buf,sizeof(buf)))>0)
- ntot+=fwrite(buf,1,n,out);
-
- if(n<0)
- return n;
-
- return ntot;
-}
-
-static int match_cmd(const char *cmd, const cmd_s cmds[])
-{
- int i;
- for(i=0; cmds[i].name; ++i) {
- if (strcasecmp(cmd,cmds[i].name)==0)
- return cmds[i].val;
- }
- return -1;
-}
-
-int main(int argc, char *argv[])
-{
- char *cache_dir= CACHEDIR;
- int rv=0;
- {
- int i;
- char *arg;
- for(i=1; i<argc && (arg=argv[i]) && *arg=='-'; ++i) {
- if(!strcmp(arg,"-c")) {
- if(++i<argc) {
- cache_dir= argv[i];
- }
- else {
- fprintf(stderr,"file name expected after -c option.\n");
- goto print_try_pdnsd_ctl_help;
- }
- }
- else if(!strcmp(arg,"-q")) {
- verbose=0;
- }
- else {
- fprintf(stderr,"Unknown option: %s\n",arg);
- goto print_try_pdnsd_ctl_help;
- }
- }
- argc -= i;
- argv += i;
- }
-
- if (argc<1) {
- fprintf(stderr,"No command specified.\n");
- print_try_pdnsd_ctl_help:
- fprintf(stderr,"Try 'pdnsd-ctl help' for available commands and options.\n");
- exit(2);
- } else {
- int pf,acnt=0,cmd;
-
- cmd=match_cmd(argv[0],top_cmds);
- if(cmd==-1) {
- fprintf(stderr,"Command not recognized: %s\n",argv[0]);
- goto print_try_pdnsd_ctl_help;
- }
- switch (cmd) {
- case CMD_HELP: {
- int i;
- fputs(version_message,stdout);
- for(i=0; i<NUM_HELP_MESSAGES; ++i)
- fputs(help_messages[i],stdout);
- }
- break;
-
- case CMD_VERSION:
- fputs(version_message,stdout);
- fputs(license_statement,stdout);
- break;
-
- case CMD_LIST_RRTYPES: {
- int i;
- if (argc!=1)
- goto wrong_args;
- printf("Available RR types for the neg command:\n");
- for (i=0; i<NRRTOT; ++i)
- printf("%s\n",rrnames[rrcachiterlist[i]-T_MIN]);
- }
- break;
-
- case CTL_STATS:
- if (argc!=1)
- goto wrong_args;
- pf=open_sock(cache_dir, cmd);
- goto copy_pf;
-
- case CTL_SERVER: {
- int server_cmd;
- if (argc<3 || argc>4)
- goto wrong_args;
- acnt=2;
- server_cmd=match_cmd(argv[2],server_cmds);
- if(server_cmd==-1) goto bad_arg;
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argv[1]);
- send_short(pf,server_cmd);
- send_string(pf,argc<4?NULL:argv[3]);
- }
- goto read_retval;
-
- case CTL_RECORD: {
- int record_cmd;
- if (argc!=3)
- goto wrong_args;
- acnt=2;
- record_cmd=match_cmd(argv[2],record_cmds);
- if(record_cmd==-1) goto bad_arg;
- pf=open_sock(cache_dir, cmd);
- send_short(pf,record_cmd);
- send_string(pf,argv[1]);
- }
- goto read_retval;
-
- case CTL_SOURCE: {
- long ttl;
- int servaliases,flags;
- if (argc<3 || argc>6)
- goto wrong_args;
- ttl=900;
- flags=DF_LOCAL;
- acnt=3;
- if (argc==6 || (argc>=4 && isdigit(argv[3][0]))) {
- char *endptr;
- ttl=strtol(argv[3],&endptr,0);
- if (*endptr)
- goto bad_arg;
- acnt++;
- }
- servaliases=0;
- if (acnt<argc && (argc==6 || strcasecmp(argv[acnt], "noauth"))) {
- servaliases=match_cmd(argv[acnt],onoff_cmds);
- if(servaliases==-1) goto bad_arg;
- acnt++;
- }
- if (acnt<argc) {
- if (!strcasecmp(argv[acnt], "noauth"))
- flags=0;
- else
- goto bad_arg;
- }
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argv[1]);
- send_string(pf,argv[2]);
- send_long(pf,ttl);
- send_short(pf,servaliases);
- send_short(pf,flags);
- }
- goto read_retval;
-
- case CTL_ADD: {
- long ttl;
- int tp,flags,pref;
- unsigned int nadr;
- size_t adrsz, adrbufsz;
- char *q;
-
- if (argc<2) goto wrong_args;
- acnt=1;
- tp=match_cmd(argv[1],rectype_cmds);
- if(tp==-1) goto bad_arg;
- acnt=((tp==T_MX)?5:4);
- if (argc<acnt || argc>acnt+2)
- goto wrong_args;
-
- ttl=900;
- flags=DF_LOCAL;
- pref=0;
- if(tp==T_MX) {
- char *endptr;
- pref=strtol(argv[4],&endptr,0);
- if (*endptr) {
- acnt=4;
- goto bad_arg;
- }
- }
-
- if (acnt<argc && strcasecmp(argv[acnt],"noauth")) {
- char *endptr;
- ttl=strtol(argv[acnt],&endptr,0);
- if (*endptr)
- goto bad_arg;
- acnt++;
- }
- if (acnt<argc && !strcasecmp(argv[acnt],"noauth")) {
- flags=0;
- acnt++;
- }
- if (acnt<argc)
- goto bad_arg;
-
- nadr=0; adrsz=0;
- switch (tp) {
- case T_A:
- adrsz= sizeof(struct in_addr);
-#if ALLOW_AAAA
- goto count_addresses;
- case T_AAAA:
- adrsz= sizeof(struct in6_addr);
- count_addresses:
-#endif
- /* first count the number of comma- or space-delimited address strings,
- ignoring blank strings. */
- for(q=argv[2];;) {
- for(;;++q) {
- if(!*q) goto finished_counting_addresses;
- if(*q!=',' && !isspace(*q)) break;
- }
- do {
- ++q;
- } while(*q && *q!=',' && !isspace(*q));
- ++nadr;
- }
- finished_counting_addresses:
- if (!nadr) {
- fprintf(stderr,"Empty IP list for 'add %s' command.\n", argv[1]);
- exit(2);
- }
- break;
- }
-
- adrbufsz = nadr*adrsz;
- {
- /* Variable-size array for storing IP addresses. */
- unsigned char adrbuf[adrbufsz] __attribute__((aligned));
-
- switch (tp) {
- case T_A:
-#if ALLOW_AAAA
- case T_AAAA:
-#endif
- {
- /* Convert the address strings into binary addresses and
- store them in adrbuf. */
- unsigned char *adrp = adrbuf;
- for(q=argv[2];;) {
- char *p; size_t len;
- for(;;++q) {
- if(!*q) goto finished_converting_addresses;
- if(*q!=',' && !isspace(*q)) break;
- }
- p=q;
- do {
- ++q;
- } while(*q && *q!=',' && !isspace(*q));
- len = q-p;
- {
- char tmpbuf[len+1];
- memcpy(tmpbuf,p,len);
- tmpbuf[len]=0;
-
- if(
-#if ALLOW_AAAA
- tp==T_AAAA? inet_pton(AF_INET6,tmpbuf,adrp)<=0:
-#endif
- !inet_aton(tmpbuf,(struct in_addr *)adrp))
- {
- fprintf(stderr,"Bad IP for 'add %s' command: %s\n",
- argv[1],tmpbuf);
- exit(2);
- }
- }
- adrp += adrsz;
- }
- }
- finished_converting_addresses:
- break;
- }
-
- pf=open_sock(cache_dir, cmd);
- send_short(pf,tp);
- send_string(pf,argv[3]);
- send_long(pf,ttl);
- send_short(pf,flags);
-
- switch (tp) {
- case T_A:
-#if ALLOW_AAAA
- case T_AAAA:
-#endif
- send_short(pf,nadr);
- if(write_all(pf,adrbuf,adrbufsz)!=adrbufsz) {
- perror("Error: could not send IP address(es)");
- close(pf);
- exit(2);
- }
- break;
- case T_MX:
- send_short(pf,pref);
- /* fall through */
- case T_PTR:
- case T_CNAME:
- case T_NS:
- send_string(pf,argv[2]);
- break;
- }
- }
- }
- goto read_retval;
-
- case CTL_NEG: {
- long ttl;
- int tp;
-
- if (argc<2 || argc>4)
- goto wrong_args;
- tp=255;
- ttl=900;
- acnt=2;
- if (argc==3) {
- if (isdigit(argv[2][0])) {
- char *endptr;
- ttl=strtol(argv[2],&endptr,0);
- if (*endptr)
- goto bad_arg;
- } else if ((tp=rr_tp_byname(argv[2]))==-1) {
- goto bad_type;
- }
- } else if (argc==4) {
- char *endptr;
- if ((tp=rr_tp_byname(argv[2]))==-1)
- goto bad_type;
- ttl=strtol(argv[3],&endptr,0);
- if (*endptr) {
- acnt=3;
- goto bad_arg;
- }
- }
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argv[1]);
- send_short(pf,tp);
- send_long(pf,ttl);
- }
- goto read_retval;
-
- case CTL_CONFIG:
- if (argc>2)
- goto wrong_args;
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argc<2?NULL:argv[1]);
- goto read_retval;
-
- case CTL_INCLUDE:
- if (argc!=2)
- goto wrong_args;
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argv[1]);
- goto read_retval;
-
- case CTL_EVAL: {
- int i; size_t bufsz;
-
- if (argc<2)
- goto wrong_args;
- bufsz=0;
- for(i=1; i<argc; ++i)
- bufsz += strlen(argv[i])+1;
-
- if(bufsz>MAXSENDSTRLEN) {
- fprintf(stderr,"Cannot send 'eval' command: "
- "string length (%lu) exceeds maximum (%u).\n",
- (unsigned long)bufsz, MAXSENDSTRLEN);
- exit(2);
- }
- pf=open_sock(cache_dir, cmd);
- send_short(pf,bufsz);
- {
- /* Variable-size array for storing the joined strings. */
- char buf[bufsz];
- char *p=buf;
- for(i=1; i<argc; ++i) {
- p=stpcpy(p,argv[i]);
- *p++ = '\n';
- }
- if(write_all(pf,buf,bufsz)!=bufsz) {
- perror("Error: could not write string");
- close(pf);
- exit(2);
- }
- }
- }
- goto read_retval;
-
- case CTL_EMPTY: {
- int i; size_t totsz=0;
- for(i=1; i<argc; ++i)
- totsz += strlen(argv[i])+1;
-
- if(totsz>MAXSENDSTRLEN) {
- fprintf(stderr,"Cannot send 'empty' command: "
- "string length (%lu) exceeds maximum (%u).\n",
- (unsigned long)totsz, MAXSENDSTRLEN);
- exit(2);
- }
- pf=open_sock(cache_dir, cmd);
- if(argc>1) {
- send_short(pf,totsz);
- for(i=1; i<argc; ++i) {
- size_t sz=strlen(argv[i])+1;
- if(write_all(pf,argv[i],sz)!=sz) {
- perror("Error: could not write string");
- close(pf);
- exit(2);
- }
- }
- }
- else
- send_short(pf,~0);
- }
- goto read_retval;
-
- case CTL_DUMP:
- if (argc>2)
- goto wrong_args;
- pf=open_sock(cache_dir, cmd);
- send_string(pf,argc<2?NULL:argv[1]);
- copy_pf:
- if((rv=read_short(pf)))
- goto retval_failed;
- if(copymsgtofile(pf,stdout)<0) {
- perror("Error while reading from socket");
- close(pf);
- exit(2);
- }
- goto close_pf;
-
- read_retval:
- if((rv=read_short(pf))) {
- retval_failed:
- fprintf(stderr,"Failed: ");
- if(copymsgtofile(pf,stderr)<0)
- fprintf(stderr,"(could not read error message from socket: %s)",strerror(errno));
-
- fputc('\n',stderr);
- }
- close_pf:
- if(close(pf)==-1)
- perror("Couldn't close socket");
- else if (rv==0 && verbose)
- printf("Succeeded\n");
- break;
- wrong_args:
- fprintf(stderr,"Wrong number of arguments for '%s' command.\n",argv[0]);
- goto print_cmd_usage;
- bad_arg:
- fprintf(stderr,"Bad argument for '%s' command: %s\n",argv[0],argv[acnt]);
- print_cmd_usage:
- fprintf(stderr,"Usage:\n\n%s\n"
- "Try 'pdnsd-ctl help' for a description of all available commands and options.\n",
- help_messages[cmd]);
- exit(2);
- bad_type:
- fprintf(stderr,"Bad (type) argument for '%s' command: %s\n"
- "Run 'pdnsd-ctl list-rrtypes' for a list of available rr types.\n",
- argv[0],argv[acnt]);
- exit(2);
- }
- }
-
- return rv;
-}
-
diff --git a/jni/pdnsd/src/pdnsd_assert.h b/jni/pdnsd/src/pdnsd_assert.h
deleted file mode 100644
index 0acdfc2..0000000
--- a/jni/pdnsd/src/pdnsd_assert.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This include file was added by Paul A. Rombouts.
- I had terrible difficulties with cyclic dependencies of the include files
- written by Thomas Moestl. The only way I knew how to break the cycle was to
- put some declarations in a seperate file.
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef PDNSD_ASSERT_H
-#define PDNSD_ASSERT_H
-
-/* Originally in helpers.h */
-
-/* format string checking for printf-like functions */
-#ifdef __GNUC__
-#define printfunc(fmt, firstva) __attribute__((__format__(__printf__, fmt, firstva)))
-#else
-#define printfunc(fmt, firstva)
-#endif
-
-void pdnsd_exit(void);
-
-
-/*
- * Assert macro, used in some places. For now, it should be always defined, not
- * only in the DEBUG case, to be on the safe side security-wise.
- */
-#define PDNSD_ASSERT(cond, msg) \
- { if (!(cond)) { \
- log_error("%s:%d: %s", __FILE__, __LINE__, msg); \
- pdnsd_exit(); \
- } }
-
-#endif
diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.am b/jni/pdnsd/src/rc/ArchLinux/Makefile.am
deleted file mode 100644
index 2a7b420..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-
-install-exec-local:
- if [ "$(distribution)" = "ArchLinux" ] ; then \
- $(mkinstalldirs) "$(DESTDIR)/etc/rc.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/pdnsd";\
- fi
-
diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.in b/jni/pdnsd/src/rc/ArchLinux/Makefile.in
deleted file mode 100644
index 6af6f9e..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/Makefile.in
+++ /dev/null
@@ -1,332 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc/ArchLinux
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/ArchLinux/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/ArchLinux/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am
-
-
-install-exec-local:
- if [ "$(distribution)" = "ArchLinux" ] ; then \
- $(mkinstalldirs) "$(DESTDIR)/etc/rc.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/pdnsd";\
- fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/ArchLinux/pdnsd.in b/jni/pdnsd/src/rc/ArchLinux/pdnsd.in
deleted file mode 100644
index c392750..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/pdnsd.in
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID @prefix@/sbin/pdnsd`
-
-start() {
- stat_busy "Starting PDNSD"
- [ -z "$PID" ] && @prefix@/sbin/pdnsd -d -c /etc/pdnsd.conf
- if [ $? -gt 0 ]; then
- stat_fail
- else
- add_daemon pdnsd
- stat_done
- fi
-}
-
-stop() {
- stat_busy "Stopping PDNSD"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon pdnsd
- stat_done
- fi
-}
-
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- $0 stop
- sleep 2
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
-esac
-exit 0
diff --git a/jni/pdnsd/src/rc/Debian/Makefile.am b/jni/pdnsd/src/rc/Debian/Makefile.am
deleted file mode 100644
index 61d3eb3..0000000
--- a/jni/pdnsd/src/rc/Debian/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-
-install-exec-local:
- if [ "$(distribution)" = "Debian" ] ; then \
- CURDIR=`pwd`; \
- $(mkinstalldirs) "$(DESTDIR)/etc/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/init.d"; \
- update-rc.d pdnsd defaults 19 ;\
- fi
diff --git a/jni/pdnsd/src/rc/Debian/Makefile.in b/jni/pdnsd/src/rc/Debian/Makefile.in
deleted file mode 100644
index 992a059..0000000
--- a/jni/pdnsd/src/rc/Debian/Makefile.in
+++ /dev/null
@@ -1,334 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc/Debian
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/Debian/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/Debian/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am
-
-
-install-exec-local:
- if [ "$(distribution)" = "Debian" ] ; then \
- CURDIR=`pwd`; \
- $(mkinstalldirs) "$(DESTDIR)/etc/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/init.d"; \
- update-rc.d pdnsd defaults 19 ;\
- fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/Debian/pdnsd.in b/jni/pdnsd/src/rc/Debian/pdnsd.in
deleted file mode 100644
index 068606e..0000000
--- a/jni/pdnsd/src/rc/Debian/pdnsd.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-#
-# This script was written and contributed by Markus Mohr, and
-# slightly modified by me for version 1.0.6 (which obviously
-# broke it some way). I then applied a set of corrections
-# by Markus Mohr.
-#
-# Carsten Block has patched this with some magic so that
-# the actual script is generated by configure, and that
-# the pdnsd user is determined from pdnsd.conf
-# I changed this a little to use the --pdnsd-user option
-# of pdnsd to determine the run_as user.
-#
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-
-test -x @prefix@/sbin/pdnsd || exit 0
-
-case "$1" in
- start)
- # Check if cache dir exists and recreate if neccessary
- test -d @cachedir@ || mkdir @cachedir@
- RUNAS=`@prefix@/sbin/pdnsd --pdnsd-user` || echo -n " failed"
- [ -z "$RUNAS" ] && RUNAS=nobody
- chown $RUNAS @cachedir@
- echo -n "Starting domain name service: pdnsd"
- start-stop-daemon --start --quiet --pidfile /var/run/pdnsd.pid --name pdnsd \
- --exec @prefix@/sbin/pdnsd -- --daemon -p /var/run/pdnsd.pid \
- || echo -n " failed"
- echo "."
- ;;
-
- stop)
- echo -n "Stopping domain name service: pdnsd"
- start-stop-daemon --stop --quiet --pidfile /var/run/pdnsd.pid --name pdnsd --exec @prefix@/sbin/pdnsd \
- || echo -n " failed"
- echo "."
- ;;
-
- restart)
- $0 stop
- $0 start
- ;;
-
- *)
- echo "Usage: /etc/init.d/pdnsd {start|stop|restart}" >&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/jni/pdnsd/src/rc/Makefile.am b/jni/pdnsd/src/rc/Makefile.am
deleted file mode 100644
index abf2e6d..0000000
--- a/jni/pdnsd/src/rc/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-SUBDIRS = RedHat SuSE Debian Slackware ArchLinux
-
-EXTRA_DIST = README
-
diff --git a/jni/pdnsd/src/rc/Makefile.in b/jni/pdnsd/src/rc/Makefile.in
deleted file mode 100644
index 38ee297..0000000
--- a/jni/pdnsd/src/rc/Makefile.in
+++ /dev/null
@@ -1,526 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = RedHat SuSE Debian Slackware ArchLinux
-EXTRA_DIST = README
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic ctags \
- ctags-recursive distclean distclean-generic distclean-tags \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
- tags-recursive uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/README b/jni/pdnsd/src/rc/README
deleted file mode 100644
index 4e00764..0000000
--- a/jni/pdnsd/src/rc/README
+++ /dev/null
@@ -1,104 +0,0 @@
-rc/
-===
-
-These are start scripts for different Linux distros and other things that
-do not directly belong to pdnsd.
-If you do start scripts for the distro you use, please GPL them and send
-them in, so that they can be included in this package for other users.
-Note that there is NO WARRANTY OF ANY KIND on anything in this directory;
-read the COPYING that comes with pdnsd for details.
-So far there are files in the following directories:
-
-SuSE
-----
-pdnsd - Start script for SuSE Linux. Tested for 6.? but should run on some
- versions below. You can do 'make install' as root in the SuSE
- directory to install it, or you can install manually:
- --manual installation-------------------------------------------------
- For manual installation, copy it into /sbin/init.d/, go to
- /sbin/init.d/rc2.d/ and create there the following two symlinks:
- S11pdnsd -> ../pdnsd (do "ln -s ../pdnsd S11pdnsd" in that dir)
- K34pdnsd -> ../pdnsd (do "ln -s ../pdnsd K34pdnsd" in that dir)
- The numbers dictate the order different services are started and
- might need to be modified. Then edit your /etc/rc.config file and
- add the line "START_PDNSD=yes" to start pdnsd at boot time.
- ----------------------------------------------------------------------
- If you used the 'make install' command, "START_PDNSD=yes" has been
- appended to your /etc/rc.config file, causing pdnsd to be started
- at boot time. If you don't want that, change the "yes" into "no".
- This start script was created from /sbin/init.d/skeleton by me, so the
- most is copyrighted by SuSE. They put it under the GPL, however, so
- the licence stated in COPYING also applies to this script.
- This is no official SuSE script, and SuSE naturally does NO support
- for it.
-
-Redhat
-------
-The contents of the Redhat directory and the following documentation were
-contributed by Torben Janssen. Thanks a lot!
-
-pdnsd - Start script for Redhat Linux. Tested for 6.1 but should run on 5.0+.
- You can do 'make install' as root in the Redhat directory to
- install it, or you can install manually:
-
- --manual installation-------------------------------------------------
- For manual installation, copy pdnsd into /etc/rc.d/init.d/
-
- Then go to /etc/rc.d/rc3.d and create there the following symlink:
- S78pdnsd -> ../init.d/pdnsd
- (do "ln -f -s ../init.d/pdnsd S78pdnsd" in that dir)
-
- Then go to /etc/rc.d/rc0.d and create there the following symlink:
- K78pdnsd -> ../init.d/pdnsd
- (do "ln -f -s ../init.d/pdnsd K78pdnsd" in that dir)
-
- Then go to /etc/rc.d/rc6.d and create there the following symlink:
- K78pdnsd -> ../init.d/pdnsd
- (do "ln -f -s ../init.d/pdnsd K78pdnsd" in that dir)
-
- WHY
- ---
- the rc[0-6].d dirs includes the scripts which starts/stops the
- services on entering runlevel [0-6]
- the interesting runlevels on Redhat are:
- 0 - halt
- 3 - multi user system
- 6 - reboot
- The links have an 'S' or 'K' and a number at the beginnig. All links
- with 'S' starts the script on entering the runlevel and 'K' stops
- them.
- So, there's an 'S' link in rc3 and 'K' links in rc0 and rc6.
- I choose 78 as number, because there was no script with this number on
- my system. You can choose every number you want, AFAIK .
-
- This is no offical Redhat script, and Redhat naturally does NO support
- for it.
-
-Debian
-------
-The contents of the Debian directory were contributed by Markus Mohr.
-His installation instructions are (translated):
-Install the pdnsd script to /etc/init and run
-update-rc.d pdnsd defaults 19
-as root.
-
-Slackware
----------
-A Slackware start-up script rc.pdnsd was contributed by Nikola Kotur <kotnik@xxxxxxxxxxxx>.
-His comments were:
-
-Slackware uses traditional BSD style init script layout instead of SystemV
-style startup scripts. So I adjusted the start-up script for pdnsd, and
-now it can be used with Slackware 9.1 distribution, and probably with all the
-others.
-
-Additional info:
-1) put these lines in the /etc/rc.d/rc.M:
- if [ -x /etc/rc.d/rc.pdnsd ]; then
- /etc/rc.d/rc.pdnsd start
- fi
-
-2) put these lines in the /etc/rc.d/rc.6 and /etc/rc.d/rc.K:
- if [ -x /etc/rc.d/rc.pdnsd ]; then
- /etc/rc.d/rc.pdnsd stop
- fi
diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.am b/jni/pdnsd/src/rc/RedHat/Makefile.am
deleted file mode 100644
index cb8de88..0000000
--- a/jni/pdnsd/src/rc/RedHat/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-
-# no need to create links. 'chkconfig' will take care of this.
-# In the spec case, chkconfig is called during rpm install
-install-exec-local:
- if [ "$(distribution)" = "RedHat" ] ; then \
- $(mkinstalldirs) "$(DESTDIR)/etc/rc.d/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/init.d/pdnsd"; \
- if [ "$(specbuild)" = "no" ] ; then \
- /sbin/chkconfig --add pdnsd; \
- fi \
- fi
-
diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.in b/jni/pdnsd/src/rc/RedHat/Makefile.in
deleted file mode 100644
index a88a037..0000000
--- a/jni/pdnsd/src/rc/RedHat/Makefile.in
+++ /dev/null
@@ -1,337 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc/RedHat
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/RedHat/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/RedHat/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am
-
-
-# no need to create links. 'chkconfig' will take care of this.
-# In the spec case, chkconfig is called during rpm install
-install-exec-local:
- if [ "$(distribution)" = "RedHat" ] ; then \
- $(mkinstalldirs) "$(DESTDIR)/etc/rc.d/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/init.d/pdnsd"; \
- if [ "$(specbuild)" = "no" ] ; then \
- /sbin/chkconfig --add pdnsd; \
- fi \
- fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/RedHat/pdnsd.in b/jni/pdnsd/src/rc/RedHat/pdnsd.in
deleted file mode 100644
index b6d9081..0000000
--- a/jni/pdnsd/src/rc/RedHat/pdnsd.in
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-#
-# /etc/rc.d/init.d/pdnsd
-#
-# Script for starting the Proxy DNS Daemon
-# Modified by Paul Rombouts, 2003
-#
-# chkconfig: 2345 11 89
-# description: Proxy DNS Daemon
-# processname: pdnsd
-# config: /etc/pdnsd.conf
-
-PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Source networking configuration.
-. /etc/sysconfig/network
-
-# Check that networking is up.
-if [[ $NETWORKING == [Nn][Oo] ]]; then exit 0; fi
-
-# Source sysconfig settings, if any.
-if [ -f /etc/sysconfig/pdnsd ]; then . /etc/sysconfig/pdnsd; fi
-
-start() {
- echo -n 'Starting pdnsd: '
- daemon @prefix@/sbin/pdnsd -d -s -p /var/run/pdnsd.pid "$EXTRAOPTIONS"
- local RETVAL=$?
- echo
- if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/pdnsd; fi
- return $RETVAL
-}
-
-stop() {
- echo -n 'Shutting down pdnsd: '
- killproc pdnsd
- local RETVAL=$?
- case @threadlib@ in
- [Ll]inux[Tt]hreads*|lt*)
- # Wait until all threads have terminated.
- local -i count=20
- while [[ count -gt 0 ]] && pidof pdnsd > /dev/null
- do
- usleep 200000
- let --count
- done
- ;;
- esac
- echo
- if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/pdnsd; fi
- return $RETVAL
-}
-
-restart() {
- stop
- start
-}
-
-#
-# See how we were called.
-#
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status pdnsd
- ;;
- reload)
- @prefix@/sbin/pdnsd-ctl config
- ;;
- restart)
- restart
- ;;
- condrestart)
- if [ -f /var/lock/subsys/pdnsd ]; then restart; fi
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
- exit 1
-esac
-
-exit
diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.am b/jni/pdnsd/src/rc/Slackware/Makefile.am
deleted file mode 100644
index e44b50f..0000000
--- a/jni/pdnsd/src/rc/Slackware/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-# TODO: write an install rule for the Slackware start-up script.
-
-install-exec-local:
diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.in b/jni/pdnsd/src/rc/Slackware/Makefile.in
deleted file mode 100644
index 14ebd33..0000000
--- a/jni/pdnsd/src/rc/Slackware/Makefile.in
+++ /dev/null
@@ -1,330 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# TODO: write an install rule for the Slackware start-up script.
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc/Slackware
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/rc.pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = rc.pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/Slackware/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/Slackware/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-rc.pdnsd: $(top_builddir)/config.status $(srcdir)/rc.pdnsd.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am
-
-
-install-exec-local:
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in b/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in
deleted file mode 100644
index 6e96971..0000000
--- a/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-#
-# /etc/rc.d/rc.pdnsd
-#
-# Starts the Proxy DNS Daemon
-#
-# description: Proxy DNS Daemon
-# processname: pdnsd
-# config: /etc/pdnsd.conf
-# distribution: Slackware
-# author: Nikola Kotur <kotnik@xxxxxxxxxxxx>
-#
-# Additional info:
-# 1) put these lines in the /etc/rc.d/rc.M:
-# if [ -x /etc/rc.d/rc.pdnsd ]; then
-# /etc/rc.d/rc.pdnsd start
-# fi
-#
-# 2) put these lines in the /etc/rc.d/rc.6 and /etc/rc.d/rc.K:
-# if [ -x /etc/rc.d/rc.pdnsd ]; then
-# /etc/rc.d/rc.pdnsd stop
-# fi
-
-
-test -x @prefix@/sbin/pdnsd || exit 0
-[ -f @sysconfdir@/pdnsd.conf ] || exit 1
-
-RETVAL=0
-
-start() {
- echo -n "Starting pdnsd... "
- RETVAL=$?
- @prefix@/sbin/pdnsd -d
- [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pdnsd
- echo ' OK'
-}
-
-stop() {
- echo -n "Shutting down pdnsd... "
- killall pdnsd
- RETVAL=$?
- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/pdnsd
- echo ' OK'
-}
-
-restart() {
- stop
- start
-}
-
-condrestart() {
- [ -e /var/lock/subsys/pdnsd ] && restart
- return 0
-}
-
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- reload|restart)
- restart
- ;;
- condrestart)
- condrestart
- ;;
- *)
- echo $"Usage: $0 {start|stop|restart|condrestart|reload}"
- RETVAL=1
-esac
-
-exit $RETVAL
diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.am b/jni/pdnsd/src/rc/SuSE/Makefile.am
deleted file mode 100644
index dc5f485..0000000
--- a/jni/pdnsd/src/rc/SuSE/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-install-exec-local:
- if [ "$(distribution)" = "SuSE" ] ; then \
- CURDIR=`pwd`; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/sbin/init.d/pdnsd"; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc2.d"; \
- cd "$(DESTDIR)/sbin/init.d/rc2.d"; \
- ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
- cd $$CURDIR ; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc3.d"; \
- cd "$(DESTDIR)/sbin/init.d/rc3.d"; \
- ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
- cd $$CURDIR ; \
- grep "START_PDNSD" "$(DESTDIR)/etc/rc.config" > /dev/null ; \
- if [ $$? -eq 1 ] ; then \
- echo -e "\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" >> /etc/rc.config ; \
- fi \
- fi
-
-
-
diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.in b/jni/pdnsd/src/rc/SuSE/Makefile.in
deleted file mode 100644
index df1660f..0000000
--- a/jni/pdnsd/src/rc/SuSE/Makefile.in
+++ /dev/null
@@ -1,345 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-subdir = src/rc/SuSE
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/rc/SuSE/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/rc/SuSE/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am
-
-
-install-exec-local:
- if [ "$(distribution)" = "SuSE" ] ; then \
- CURDIR=`pwd`; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d"; \
- $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/sbin/init.d/pdnsd"; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc2.d"; \
- cd "$(DESTDIR)/sbin/init.d/rc2.d"; \
- ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
- cd $$CURDIR ; \
- $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc3.d"; \
- cd "$(DESTDIR)/sbin/init.d/rc3.d"; \
- ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
- cd $$CURDIR ; \
- grep "START_PDNSD" "$(DESTDIR)/etc/rc.config" > /dev/null ; \
- if [ $$? -eq 1 ] ; then \
- echo -e "\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" >> /etc/rc.config ; \
- fi \
- fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/rc/SuSE/pdnsd.in b/jni/pdnsd/src/rc/SuSE/pdnsd.in
deleted file mode 100644
index 9711eca..0000000
--- a/jni/pdnsd/src/rc/SuSE/pdnsd.in
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /bin/sh
-# Copyright (c) 1995-1998 SuSE GmbH Nuernberg, Germany.
-#
-# Modified 2000 from SuSE Linux 6.3 /sbin/init.d/skeleton by Thomas Moestl
-#
-# /sbin/init.d/pdnsd
-#
-# and symbolic its link
-#
-# /sbin/rc?/pdnsd
-#
-
-. /etc/rc.config
-
-# Determine the base and follow a runlevel link name.
-base=${0##*/}
-link=${base#*[SK][0-9][0-9]}
-
-# Force execution if not called by a runlevel directory.
-test $link = $base && START_PDNSD=yes
-test "$START_PDNSD" = yes || exit 0
-
-# The echo return value for success (defined in /etc/rc.config).
-return=$rc_done
-case "$1" in
- start)
- echo -n "Starting pdnsd"
- ## Start daemon with startproc(8). If this fails
- ## the echo return value is set appropriate.
-
- startproc @prefix@/sbin/pdnsd -d || return=$rc_failed
-
- echo -e "$return"
- ;;
- stop)
- echo -n "Shutting down pdnsd"
- ## Stop daemon with killproc(8) and if this fails
- ## set echo the echo return value.
-
- killproc -TERM @prefix@/sbin/pdnsd || return=$rc_failed
-
- echo -e "$return"
- ;;
- restart)
- ## If first returns OK call the second, if first or
- ## second command fails, set echo return value.
- $0 stop && $0 start || return=$rc_failed
- ;;
- reload)
- $0 stop && $0 start || return=$rc_failed
- ;;
- status)
- echo -n "Checking for pdnsd: "
- ## Check status with checkproc(8), if process is running
- ## checkproc will return with exit status 0.
-
- checkproc @prefix@/sbin/pdnsd && echo OK || echo No process
- ;;
- *)
- echo "Usage: $0 {start|stop|status|restart|reload}"
- exit 1
- ;;
-esac
-
-# Inform the caller not only verbosely and set an exit status.
-test "$return" = "$rc_done" || exit 1
-exit 0
-
diff --git a/jni/pdnsd/src/rr_types.c b/jni/pdnsd/src/rr_types.c
deleted file mode 100644
index 275a90a..0000000
--- a/jni/pdnsd/src/rr_types.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* rr_types.c - Tables with information for handling
- all rr types known to pdnsd, plus
- some helper functions useful for turning
- binary RR data into text or vice versa.
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2003, 2004, 2007, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <string.h>
-#include <stdio.h>
-#define DEFINE_RR_TYPE_ARRAYS 1
-#include "helpers.h"
-#include "dns.h"
-#include "rr_types.h"
-
-
-/*
- * OK, this is inefficient. But it is used _really_ seldom (only in some cases while parsing the
- * config file or by pdnsd-ctl), so it is much more effective to sort by id.
- */
-int rr_tp_byname(char *name)
-{
- int i;
-
- for (i=0;i<T_NUM;i++) {
- if (strcmp(name, rrnames[i])==0)
- return i+T_MIN;
- }
- return -1; /* invalid */
-}
-
-/* The following is not needed by pdnsd-ctl. */
-#ifndef CLIENT_ONLY
-
-static const unsigned int poweroften[8] = {1, 10, 100, 1000, 10000, 100000,
- 1000000,10000000};
-#define NPRECSIZE (sizeof "90000000")
-/* takes an XeY precision/size value, returns a string representation.
- This is an adapted version of the function of the same name that
- can be found in the BIND 9 source.
- */
-static const char *precsize_ntoa(uint8_t prec,char *retbuf)
-{
- unsigned int mantissa, exponent;
-
- mantissa = (prec >> 4);
- exponent = (prec & 0x0f);
-
- if(mantissa>=10 || exponent>=10)
- return NULL;
- if (exponent>= 2)
- sprintf(retbuf, "%u", mantissa * poweroften[exponent-2]);
- else
- sprintf(retbuf, "0.%.2u", mantissa * poweroften[exponent]);
- return (retbuf);
-}
-
-/* takes an on-the-wire LOC RR and formats it in a human readable format.
- This is an adapted version of the loc_ntoa function that
- can be found in the BIND 9 source.
- */
-const char *loc2str(const void *binary, char *ascii, size_t asclen)
-{
- const unsigned char *cp = binary;
-
- int latdeg, latmin, latsec, latsecfrac;
- int longdeg, longmin, longsec, longsecfrac;
- char northsouth, eastwest;
- const char *altsign;
- int altmeters, altfrac;
-
- const uint32_t referencealt = 100000 * 100;
-
- int32_t latval, longval, altval;
- uint32_t templ;
- uint8_t sizeval, hpval, vpval, versionval;
-
- char sizestr[NPRECSIZE],hpstr[NPRECSIZE],vpstr[NPRECSIZE];
-
- versionval = *cp++;
-
- if (versionval) {
- /* unknown LOC RR version */
- return NULL;
- }
-
- sizeval = *cp++;
-
- hpval = *cp++;
- vpval = *cp++;
-
- GETINT32(templ, cp);
- latval = (templ - ((unsigned)1<<31));
-
- GETINT32(templ, cp);
- longval = (templ - ((unsigned)1<<31));
-
- GETINT32(templ, cp);
- if (templ < referencealt) { /* below WGS 84 spheroid */
- altval = referencealt - templ;
- altsign = "-";
- } else {
- altval = templ - referencealt;
- altsign = "";
- }
-
- if (latval < 0) {
- northsouth = 'S';
- latval = -latval;
- } else
- northsouth = 'N';
-
- latsecfrac = latval % 1000;
- latval /= 1000;
- latsec = latval % 60;
- latval /= 60;
- latmin = latval % 60;
- latval /= 60;
- latdeg = latval;
-
- if (longval < 0) {
- eastwest = 'W';
- longval = -longval;
- } else
- eastwest = 'E';
-
- longsecfrac = longval % 1000;
- longval /= 1000;
- longsec = longval % 60;
- longval /= 60;
- longmin = longval % 60;
- longval /= 60;
- longdeg = longval;
-
- altfrac = altval % 100;
- altmeters = (altval / 100);
-
- if(!precsize_ntoa(sizeval,sizestr) || !precsize_ntoa(hpval,hpstr) || !precsize_ntoa(vpval,vpstr))
- return NULL;
- {
- int n=snprintf(ascii,asclen,
- "%d %.2d %.2d.%.3d %c %d %.2d %.2d.%.3d %c %s%d.%.2dm %sm %sm %sm",
- latdeg, latmin, latsec, latsecfrac, northsouth,
- longdeg, longmin, longsec, longsecfrac, eastwest,
- altsign, altmeters, altfrac,
- sizestr, hpstr, vpstr);
- if(n<0 || n>=asclen)
- return NULL;
- }
-
- return (ascii);
-}
-
-#endif
diff --git a/jni/pdnsd/src/rr_types.h b/jni/pdnsd/src/rr_types.h
deleted file mode 100644
index 6025fae..0000000
--- a/jni/pdnsd/src/rr_types.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/* This file was generated by running 'make_rr_types_h.pl rr_types.in'.
- Modifications to this file may be lost the next time it is automatically
- regenerated.
-*/
-
-/* rr_types.h - A header file with names & descriptions of
- all rr types known to pdnsd
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2007, 2010, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _RR_TYPES_H_
-#define _RR_TYPES_H_
-
-#include <config.h>
-
-#define T_MIN 1
-#define T_A 1
-#define T_NS 2
-#define T_MD 3
-#define T_MF 4
-#define T_CNAME 5
-#define T_SOA 6
-#define T_MB 7
-#define T_MG 8
-#define T_MR 9
-#define T_NULL 10
-#define T_WKS 11
-#define T_PTR 12
-#define T_HINFO 13
-#define T_MINFO 14
-#define T_MX 15
-#define T_TXT 16
-#define T_RP 17
-#define T_AFSDB 18
-#define T_X25 19
-#define T_ISDN 20
-#define T_RT 21
-#define T_NSAP 22
-#define T_NSAP_PTR 23
-#define T_SIG 24
-#define T_KEY 25
-#define T_PX 26
-#define T_GPOS 27
-#define T_AAAA 28
-#define T_LOC 29
-#define T_NXT 30
-#define T_EID 31
-#define T_NIMLOC 32
-#define T_SRV 33
-#define T_ATMA 34
-#define T_NAPTR 35
-#define T_KX 36
-#define T_CERT 37
-#define T_A6 38
-#define T_DNAME 39
-#define T_SINK 40
-#define T_OPT 41
-#define T_APL 42
-#define T_DS 43
-#define T_SSHFP 44
-#define T_IPSECKEY 45
-#define T_RRSIG 46
-#define T_NSEC 47
-#define T_DNSKEY 48
-#define T_DHCID 49
-#define T_NSEC3 50
-#define T_NSEC3PARAM 51
-#define T_HIP 55
-#define T_NINFO 56
-#define T_RKEY 57
-#define T_TALINK 58
-#define T_SPF 99
-#define T_UINFO 100
-#define T_UID 101
-#define T_GID 102
-#define T_UNSPEC 103
-#define T_MAX 51
-
-/* T_MAX - T_MIN + 1 */
-#define T_NUM 51
-
-/* Number of most frequently used rr types. */
-#define NRRMU 8
-
-/* Number of remaining rr types. */
-#define NRREXT 39
-
-/* NRRMU + NRREXT */
-#define NRRTOT 47
-
-/* Lookup table for converting rr type values to internally used indices. */
-extern const unsigned short int rrlkuptab[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrlkuptab[T_NUM] = {
- 0 /* A */,
- 1 /* NS */,
- 8 /* MD */,
- 9 /* MF */,
- 2 /* CNAME */,
- 3 /* SOA */,
- 10 /* MB */,
- 11 /* MG */,
- 12 /* MR */,
- 13 /* NULL */,
- 14 /* WKS */,
- 4 /* PTR */,
- 15 /* HINFO */,
- 16 /* MINFO */,
- 5 /* MX */,
- 6 /* TXT */,
- 17 /* RP */,
- 18 /* AFSDB */,
- 19 /* X25 */,
- 20 /* ISDN */,
- 21 /* RT */,
- 22 /* NSAP */,
- 23 /* NSAP_PTR */,
- 24 /* SIG */,
- 25 /* KEY */,
- 26 /* PX */,
- 27 /* GPOS */,
- 7 /* AAAA */,
- 28 /* LOC */,
- 29 /* NXT */,
- 30 /* EID */,
- 31 /* NIMLOC */,
- 32 /* SRV */,
- 33 /* ATMA */,
- 34 /* NAPTR */,
- 35 /* KX */,
- 36 /* CERT */,
- 47 /* A6 */,
- 48 /* DNAME */,
- 49 /* SINK */,
- 50 /* OPT */,
- 37 /* APL */,
- 38 /* DS */,
- 39 /* SSHFP */,
- 40 /* IPSECKEY */,
- 41 /* RRSIG */,
- 42 /* NSEC */,
- 43 /* DNSKEY */,
- 44 /* DHCID */,
- 45 /* NSEC3 */,
- 46 /* NSEC3PARAM */
-};
-#endif
-
-/* List of most frequently used RR types in ascending order. */
-extern const unsigned short int rrmuiterlist[NRRMU];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrmuiterlist[NRRMU] = {
- T_A,
- T_NS,
- T_CNAME,
- T_SOA,
- T_PTR,
- T_MX,
- T_TXT,
- T_AAAA
-};
-#endif
-
-/* List of the cache-able RR types in ascending order. */
-extern const unsigned short int rrcachiterlist[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS
-const unsigned short int rrcachiterlist[NRRTOT] = {
- T_A,
- T_NS,
- T_MD,
- T_MF,
- T_CNAME,
- T_SOA,
- T_MB,
- T_MG,
- T_MR,
- T_NULL,
- T_WKS,
- T_PTR,
- T_HINFO,
- T_MINFO,
- T_MX,
- T_TXT,
- T_RP,
- T_AFSDB,
- T_X25,
- T_ISDN,
- T_RT,
- T_NSAP,
- T_NSAP_PTR,
- T_SIG,
- T_KEY,
- T_PX,
- T_GPOS,
- T_AAAA,
- T_LOC,
- T_NXT,
- T_EID,
- T_NIMLOC,
- T_SRV,
- T_ATMA,
- T_NAPTR,
- T_KX,
- T_CERT,
- T_APL,
- T_DS,
- T_SSHFP,
- T_IPSECKEY,
- T_RRSIG,
- T_NSEC,
- T_DNSKEY,
- T_DHCID,
- T_NSEC3,
- T_NSEC3PARAM
-};
-#endif
-
-/* Optimized getrrset macros for fixed rr types. */
-#define getrrset_A(cent) GET_RRSMU(cent,0)
-#define getrrset_NS(cent) GET_RRSMU(cent,1)
-#define getrrset_MD(cent) GET_RRSEXT(cent,0)
-#define getrrset_MF(cent) GET_RRSEXT(cent,1)
-#define getrrset_CNAME(cent) GET_RRSMU(cent,2)
-#define getrrset_SOA(cent) GET_RRSMU(cent,3)
-#define getrrset_MB(cent) GET_RRSEXT(cent,2)
-#define getrrset_MG(cent) GET_RRSEXT(cent,3)
-#define getrrset_MR(cent) GET_RRSEXT(cent,4)
-#define getrrset_NULL(cent) GET_RRSEXT(cent,5)
-#define getrrset_WKS(cent) GET_RRSEXT(cent,6)
-#define getrrset_PTR(cent) GET_RRSMU(cent,4)
-#define getrrset_HINFO(cent) GET_RRSEXT(cent,7)
-#define getrrset_MINFO(cent) GET_RRSEXT(cent,8)
-#define getrrset_MX(cent) GET_RRSMU(cent,5)
-#define getrrset_TXT(cent) GET_RRSMU(cent,6)
-#define getrrset_RP(cent) GET_RRSEXT(cent,9)
-#define getrrset_AFSDB(cent) GET_RRSEXT(cent,10)
-#define getrrset_X25(cent) GET_RRSEXT(cent,11)
-#define getrrset_ISDN(cent) GET_RRSEXT(cent,12)
-#define getrrset_RT(cent) GET_RRSEXT(cent,13)
-#define getrrset_NSAP(cent) GET_RRSEXT(cent,14)
-#define getrrset_NSAP_PTR(cent) GET_RRSEXT(cent,15)
-#define getrrset_SIG(cent) GET_RRSEXT(cent,16)
-#define getrrset_KEY(cent) GET_RRSEXT(cent,17)
-#define getrrset_PX(cent) GET_RRSEXT(cent,18)
-#define getrrset_GPOS(cent) GET_RRSEXT(cent,19)
-#define getrrset_AAAA(cent) GET_RRSMU(cent,7)
-#define getrrset_LOC(cent) GET_RRSEXT(cent,20)
-#define getrrset_NXT(cent) GET_RRSEXT(cent,21)
-#define getrrset_EID(cent) GET_RRSEXT(cent,22)
-#define getrrset_NIMLOC(cent) GET_RRSEXT(cent,23)
-#define getrrset_SRV(cent) GET_RRSEXT(cent,24)
-#define getrrset_ATMA(cent) GET_RRSEXT(cent,25)
-#define getrrset_NAPTR(cent) GET_RRSEXT(cent,26)
-#define getrrset_KX(cent) GET_RRSEXT(cent,27)
-#define getrrset_CERT(cent) GET_RRSEXT(cent,28)
-#define getrrset_APL(cent) GET_RRSEXT(cent,29)
-#define getrrset_DS(cent) GET_RRSEXT(cent,30)
-#define getrrset_SSHFP(cent) GET_RRSEXT(cent,31)
-#define getrrset_IPSECKEY(cent) GET_RRSEXT(cent,32)
-#define getrrset_RRSIG(cent) GET_RRSEXT(cent,33)
-#define getrrset_NSEC(cent) GET_RRSEXT(cent,34)
-#define getrrset_DNSKEY(cent) GET_RRSEXT(cent,35)
-#define getrrset_DHCID(cent) GET_RRSEXT(cent,36)
-#define getrrset_NSEC3(cent) GET_RRSEXT(cent,37)
-#define getrrset_NSEC3PARAM(cent) GET_RRSEXT(cent,38)
-
-/* have_rr macros for fixed rr types. */
-#define have_rr_A(cent) HAVE_RRMU(cent,0)
-#define have_rr_NS(cent) HAVE_RRMU(cent,1)
-#define have_rr_MD(cent) HAVE_RREXT(cent,0)
-#define have_rr_MF(cent) HAVE_RREXT(cent,1)
-#define have_rr_CNAME(cent) HAVE_RRMU(cent,2)
-#define have_rr_SOA(cent) HAVE_RRMU(cent,3)
-#define have_rr_MB(cent) HAVE_RREXT(cent,2)
-#define have_rr_MG(cent) HAVE_RREXT(cent,3)
-#define have_rr_MR(cent) HAVE_RREXT(cent,4)
-#define have_rr_NULL(cent) HAVE_RREXT(cent,5)
-#define have_rr_WKS(cent) HAVE_RREXT(cent,6)
-#define have_rr_PTR(cent) HAVE_RRMU(cent,4)
-#define have_rr_HINFO(cent) HAVE_RREXT(cent,7)
-#define have_rr_MINFO(cent) HAVE_RREXT(cent,8)
-#define have_rr_MX(cent) HAVE_RRMU(cent,5)
-#define have_rr_TXT(cent) HAVE_RRMU(cent,6)
-#define have_rr_RP(cent) HAVE_RREXT(cent,9)
-#define have_rr_AFSDB(cent) HAVE_RREXT(cent,10)
-#define have_rr_X25(cent) HAVE_RREXT(cent,11)
-#define have_rr_ISDN(cent) HAVE_RREXT(cent,12)
-#define have_rr_RT(cent) HAVE_RREXT(cent,13)
-#define have_rr_NSAP(cent) HAVE_RREXT(cent,14)
-#define have_rr_NSAP_PTR(cent) HAVE_RREXT(cent,15)
-#define have_rr_SIG(cent) HAVE_RREXT(cent,16)
-#define have_rr_KEY(cent) HAVE_RREXT(cent,17)
-#define have_rr_PX(cent) HAVE_RREXT(cent,18)
-#define have_rr_GPOS(cent) HAVE_RREXT(cent,19)
-#define have_rr_AAAA(cent) HAVE_RRMU(cent,7)
-#define have_rr_LOC(cent) HAVE_RREXT(cent,20)
-#define have_rr_NXT(cent) HAVE_RREXT(cent,21)
-#define have_rr_EID(cent) HAVE_RREXT(cent,22)
-#define have_rr_NIMLOC(cent) HAVE_RREXT(cent,23)
-#define have_rr_SRV(cent) HAVE_RREXT(cent,24)
-#define have_rr_ATMA(cent) HAVE_RREXT(cent,25)
-#define have_rr_NAPTR(cent) HAVE_RREXT(cent,26)
-#define have_rr_KX(cent) HAVE_RREXT(cent,27)
-#define have_rr_CERT(cent) HAVE_RREXT(cent,28)
-#define have_rr_A6(cent) 0
-#define have_rr_DNAME(cent) 0
-#define have_rr_SINK(cent) 0
-#define have_rr_OPT(cent) 0
-#define have_rr_APL(cent) HAVE_RREXT(cent,29)
-#define have_rr_DS(cent) HAVE_RREXT(cent,30)
-#define have_rr_SSHFP(cent) HAVE_RREXT(cent,31)
-#define have_rr_IPSECKEY(cent) HAVE_RREXT(cent,32)
-#define have_rr_RRSIG(cent) HAVE_RREXT(cent,33)
-#define have_rr_NSEC(cent) HAVE_RREXT(cent,34)
-#define have_rr_DNSKEY(cent) HAVE_RREXT(cent,35)
-#define have_rr_DHCID(cent) HAVE_RREXT(cent,36)
-#define have_rr_NSEC3(cent) HAVE_RREXT(cent,37)
-#define have_rr_NSEC3PARAM(cent) HAVE_RREXT(cent,38)
-
-/* These macros specify which RR types are cached by pdnsd. */
-#define IS_CACHED_A 1
-#define IS_CACHED_NS 1
-#define IS_CACHED_MD 1
-#define IS_CACHED_MF 1
-#define IS_CACHED_CNAME 1
-#define IS_CACHED_SOA 1
-#define IS_CACHED_MB 1
-#define IS_CACHED_MG 1
-#define IS_CACHED_MR 1
-#define IS_CACHED_NULL 1
-#define IS_CACHED_WKS 1
-#define IS_CACHED_PTR 1
-#define IS_CACHED_HINFO 1
-#define IS_CACHED_MINFO 1
-#define IS_CACHED_MX 1
-#define IS_CACHED_TXT 1
-#define IS_CACHED_RP 1
-#define IS_CACHED_AFSDB 1
-#define IS_CACHED_X25 1
-#define IS_CACHED_ISDN 1
-#define IS_CACHED_RT 1
-#define IS_CACHED_NSAP 1
-#define IS_CACHED_NSAP_PTR 1
-#define IS_CACHED_SIG 1
-#define IS_CACHED_KEY 1
-#define IS_CACHED_PX 1
-#define IS_CACHED_GPOS 1
-#define IS_CACHED_AAAA 1
-#define IS_CACHED_LOC 1
-#define IS_CACHED_NXT 1
-#define IS_CACHED_EID 1
-#define IS_CACHED_NIMLOC 1
-#define IS_CACHED_SRV 1
-#define IS_CACHED_ATMA 1
-#define IS_CACHED_NAPTR 1
-#define IS_CACHED_KX 1
-#define IS_CACHED_CERT 1
-#define IS_CACHED_APL 1
-#define IS_CACHED_DS 1
-#define IS_CACHED_SSHFP 1
-#define IS_CACHED_IPSECKEY 1
-#define IS_CACHED_RRSIG 1
-#define IS_CACHED_NSEC 1
-#define IS_CACHED_DNSKEY 1
-#define IS_CACHED_DHCID 1
-#define IS_CACHED_NSEC3 1
-#define IS_CACHED_NSEC3PARAM 1
-
-/* Array indices for most frequently used rr types. */
-#define RRMUINDEX_A 0
-#define RRMUINDEX_NS 1
-#define RRMUINDEX_CNAME 2
-#define RRMUINDEX_SOA 3
-#define RRMUINDEX_PTR 4
-#define RRMUINDEX_MX 5
-#define RRMUINDEX_TXT 6
-#define RRMUINDEX_AAAA 7
-
-/* Table of rr names. */
-extern const char *const rrnames[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS
-const char *const rrnames[T_NUM] = {
- "A",
- "NS",
- "MD",
- "MF",
- "CNAME",
- "SOA",
- "MB",
- "MG",
- "MR",
- "NULL",
- "WKS",
- "PTR",
- "HINFO",
- "MINFO",
- "MX",
- "TXT",
- "RP",
- "AFSDB",
- "X25",
- "ISDN",
- "RT",
- "NSAP",
- "NSAP_PTR",
- "SIG",
- "KEY",
- "PX",
- "GPOS",
- "AAAA",
- "LOC",
- "NXT",
- "EID",
- "NIMLOC",
- "SRV",
- "ATMA",
- "NAPTR",
- "KX",
- "CERT",
- "A6",
- "DNAME",
- "SINK",
- "OPT",
- "APL",
- "DS",
- "SSHFP",
- "IPSECKEY",
- "RRSIG",
- "NSEC",
- "DNSKEY",
- "DHCID",
- "NSEC3",
- "NSEC3PARAM"
-};
-#endif
-
-/* Structure for rr information */
-struct rr_infos {
- unsigned short class; /* class (values see below) */
- unsigned short excludes; /* relations to other classes.
- Mutual exclusion is marked by or'ing the
- respective RRCL value in this field.
- Exclusions should be symmetric. */
-};
-
-/* Class values */
-#define RRCL_ALIAS 1 /* for CNAMES, conflicts with RRCL_RECORD */
-#define RRCL_RECORD 2 /* normal direct record */
-#define RRCL_IDEM 4 /* types that conflict with no others (MX, CNAME, ...) */
-#define RRCL_PTR 8 /* PTR */
-
-/* Standard excludes for the classes */
-#define RRX_ALIAS (RRCL_RECORD|RRCL_PTR)
-#define RRX_RECORD (RRCL_ALIAS|RRCL_PTR)
-#define RRX_IDEM 0
-#define RRX_PTR (RRCL_ALIAS|RRCL_RECORD)
-
-/* There could be a separate table detailing the relationship of types, but this
- * is slightly more flexible, as it allows a finer granularity of exclusion. Also,
- * Membership in multiple classes could be added.
- * Index by internally used RR-set indices, not RR type values!
- */
-extern const struct rr_infos rr_info[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const struct rr_infos rr_info[NRRTOT] = {
- {RRCL_RECORD, RRX_RECORD} /* A */,
- {RRCL_IDEM, RRX_IDEM} /* NS */,
- {RRCL_ALIAS, RRX_ALIAS} /* CNAME */,
- {RRCL_IDEM, RRX_IDEM} /* SOA */,
- {RRCL_PTR, RRX_PTR} /* PTR */,
- {RRCL_IDEM, RRX_IDEM} /* MX */,
- {RRCL_IDEM, RRX_IDEM} /* TXT */,
- {RRCL_RECORD, RRX_RECORD} /* AAAA */,
- {RRCL_IDEM, RRX_IDEM} /* MD */,
- {RRCL_IDEM, RRX_IDEM} /* MF */,
- {RRCL_IDEM, RRX_IDEM} /* MB */,
- {RRCL_IDEM, RRX_IDEM} /* MG */,
- {RRCL_IDEM, RRX_IDEM} /* MR */,
- {RRCL_IDEM, RRX_IDEM} /* NULL */,
- {RRCL_RECORD, RRX_RECORD} /* WKS */,
- {RRCL_RECORD, RRX_RECORD} /* HINFO */,
- {RRCL_IDEM, RRX_IDEM} /* MINFO */,
- {RRCL_RECORD, RRX_RECORD} /* RP */,
- {RRCL_RECORD, RRX_RECORD} /* AFSDB */,
- {RRCL_RECORD, RRX_RECORD} /* X25 */,
- {RRCL_RECORD, RRX_RECORD} /* ISDN */,
- {RRCL_RECORD, RRX_RECORD} /* RT */,
- {RRCL_RECORD, RRX_RECORD} /* NSAP */,
- {RRCL_PTR, RRX_PTR} /* NSAP_PTR */,
- {RRCL_IDEM, RRX_IDEM} /* SIG */,
- {RRCL_IDEM, RRX_IDEM} /* KEY */,
- {RRCL_IDEM, RRX_IDEM} /* PX */,
- {RRCL_RECORD, RRX_RECORD} /* GPOS */,
- {RRCL_RECORD, RRX_RECORD} /* LOC */,
- {RRCL_IDEM, RRX_IDEM} /* NXT */,
- {RRCL_RECORD, RRX_RECORD} /* EID */,
- {RRCL_RECORD, RRX_RECORD} /* NIMLOC */,
- {RRCL_RECORD, RRX_RECORD} /* SRV */,
- {RRCL_RECORD, RRX_RECORD} /* ATMA */,
- {RRCL_RECORD, RRX_RECORD} /* NAPTR */,
- {RRCL_RECORD, RRX_RECORD} /* KX */,
- {RRCL_RECORD, RRX_RECORD} /* CERT */,
- {RRCL_IDEM, RRX_IDEM} /* APL */,
- {RRCL_IDEM, RRX_IDEM} /* DS */,
- {RRCL_IDEM, RRX_IDEM} /* SSHFP */,
- {RRCL_IDEM, RRX_IDEM} /* IPSECKEY */,
- {RRCL_IDEM, RRX_IDEM} /* RRSIG */,
- {RRCL_IDEM, RRX_IDEM} /* NSEC */,
- {RRCL_IDEM, RRX_IDEM} /* DNSKEY */,
- {RRCL_IDEM, RRX_IDEM} /* DHCID */,
- {RRCL_IDEM, RRX_IDEM} /* NSEC3 */,
- {RRCL_IDEM, RRX_IDEM} /* NSEC3PARAM */
-};
-#endif
-
-int rr_tp_byname(char *name);
-const char *loc2str(const void *binary, char *ascii, size_t asclen);
-
-#endif
diff --git a/jni/pdnsd/src/rr_types.in b/jni/pdnsd/src/rr_types.in
deleted file mode 100644
index 5ebd2f3..0000000
--- a/jni/pdnsd/src/rr_types.in
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is part of the pdnsd package.
-
-# This file contains information about the RR types implemented in pdnsd
-# and is used for generating rr_types.h.
-# It was derived from the following source: http://www.bind9.net/dns-parameters
-#
-# After making modifications to this file the file rr_types.h should be regenerated!
-#
-# Info about the format of this file:
-# Blank lines and lines starting with '#' are ignored, all other lines
-# are assumed to define an RR type. Lines starting with '+' define most
-# frequently used types. An RR type preceded by a '-' will not be cached
-# by pdnsd. The next two fields are interpreted as the name and the value
-# of the RR type, resp. A subsequent word in parenthesis will be interpreted a
-# class name (used for conflict resolution). Remaining fields are ignored.
-#
-# Adding or removing an initial '+' can be done safely without requiring
-# changes to the source code (other than regenerating rr_types.h).
-#
-# If you are sure that you will never use certain RR types you can disable
-# caching for them and make pdnsd slightly more efficient by placing a
-# '-' sign in front of the lines that define those types.
-# For a list of obsolete RR types see e.g.
-# http://en.wikipedia.org/wiki/List_of_DNS_record_types .
-# Note that some RR types are essential for pdnsd; these are currently:
-# A, NS, CNAME, SOA, PTR, MX and (if you want IPv6 support) AAAA.
-# Disabling caching for these types will cause pdnsd to fail to compile
-# or cause a fatal run-time error.
-#
-# Removing a '-' sign to enable caching can be risky if the support in
-# the pdnsd code is missing or inadequate, so only do this if you really know
-# what you are doing. SPF records are supported, however, so it should be safe
-# to enable caching for them.
-
-# RR TYPE Value (class) and meaning Reference
-# ----------- --------------------------------------------- ---------
-+ A 1 (RECORD) a host address [RFC 1035]
-+ NS 2 an authoritative name server [RFC 1035]
- MD 3 a mail destination (Obsolete - use MX) [RFC 1035]
- MF 4 a mail forwarder (Obsolete - use MX) [RFC 1035]
-+ CNAME 5 (ALIAS) the canonical name for an alias [RFC 1035]
-+ SOA 6 marks the start of a zone of authority [RFC 1035]
- MB 7 a mailbox domain name (EXPERIMENTAL) [RFC 1035]
- MG 8 a mail group member (EXPERIMENTAL) [RFC 1035]
- MR 9 a mail rename domain name (EXPERIMENTAL) [RFC 1035]
- NULL 10 a null RR (EXPERIMENTAL) [RFC 1035]
- WKS 11 (RECORD) a well known service description [RFC 1035]
-+ PTR 12 (PTR) a domain name pointer [RFC 1035]
- HINFO 13 (RECORD) host information [RFC 1035]
- MINFO 14 mailbox or mail list information [RFC 1035]
-+ MX 15 mail exchange [RFC 1035]
-+ TXT 16 text strings [RFC 1035]
- RP 17 (RECORD) for Responsible Person [RFC 1183]
- AFSDB 18 (RECORD) for AFS Data Base location [RFC 1183][RFC 5864]
- X25 19 (RECORD) for X.25 PSDN address [RFC 1183]
- ISDN 20 (RECORD) for ISDN address [RFC 1183]
- RT 21 (RECORD) for Route Through [RFC 1183]
- NSAP 22 (RECORD) for NSAP address, NSAP style A record [RFC 1706]
- NSAP-PTR 23 (PTR) for domain name pointer, NSAP style [RFC 1348]
- SIG 24 for security signature [RFC 4034][RFC 3755][RFC 2535]
- KEY 25 for security key [RFC 4034][RFC 3755][RFC 2535]
- PX 26 X.400 mail mapping information [RFC 2163]
- GPOS 27 (RECORD) Geographical Position [RFC 1712]
-+ AAAA 28 (RECORD) IP6 Address [RFC 3596]
- LOC 29 (RECORD) Location Information [RFC 1876]
- NXT 30 Next Domain - OBSOLETE [RFC 3755][RFC 2535]
- EID 31 (RECORD) Endpoint Identifier [Patton]
- NIMLOC 32 (RECORD) Nimrod Locator [Patton]
- SRV 33 (RECORD) Server Selection [RFC 2782]
- ATMA 34 (RECORD) ATM Address [ATMDOC]
- NAPTR 35 (RECORD) Naming Authority Pointer [RFC 2915][RFC 2168][RFC 3403]
- KX 36 (RECORD) Key Exchanger [RFC 2230]
- CERT 37 (RECORD) CERT [RFC 4398]
-- A6 38 A6 (Experimental) [RFC 3226][RFC 2874]
-- DNAME 39 (ALIAS) DNAME [RFC 2672]
-- SINK 40 SINK [Eastlake]
-- OPT 41 OPT [RFC 2671]
- APL 42 APL [RFC 3123]
- DS 43 Delegation Signer [RFC 4034][RFC 3658]
- SSHFP 44 SSH Key Fingerprint [RFC 4255]
- IPSECKEY 45 IPSECKEY [RFC 4025]
- RRSIG 46 RRSIG [RFC 4034][RFC 3755]
- NSEC 47 NSEC [RFC 4034][RFC 3755]
- DNSKEY 48 DNSKEY [RFC 4034][RFC 3755]
- DHCID 49 DHCID [RFC 4701]
- NSEC3 50 NSEC3 [RFC 5155]
- NSEC3PARAM 51 NSEC3PARAM [RFC 5155]
-# Unassigned 52-54
-- HIP 55 Host Identity Protocol [RFC 5205]
-- NINFO 56 NINFO [Reid]
-- RKEY 57 RKEY [Reid]
-- TALINK 58 Trust Anchor LINK [Wijngaards]
-# Unassigned 59-98
-- SPF 99 Sender Policy Framework [RFC 4408]
-- UINFO 100 [IANA-Reserved]
-- UID 101 [IANA-Reserved]
-- GID 102 [IANA-Reserved]
-- UNSPEC 103 [IANA-Reserved]
-# Unassigned 104-248
diff --git a/jni/pdnsd/src/servers.c b/jni/pdnsd/src/servers.c
deleted file mode 100644
index 8549865..0000000
--- a/jni/pdnsd/src/servers.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/* servers.c - manage a set of dns servers
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2005, 2007, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <fnmatch.h>
-#include <string.h>
-#include "thread.h"
-#include "error.h"
-#include "servers.h"
-#include "conff.h"
-#include "consts.h"
-#include "icmp.h"
-#include "netdev.h"
-#include "helpers.h"
-#include "dns_query.h"
-
-
-/*
- * We may be a little over-strict with locks here. Never mind...
- * Also, there may be some code-redundancy regarding uptests. It saves some locks, though.
- */
-
-static pthread_mutex_t servers_lock = PTHREAD_MUTEX_INITIALIZER;
-static pthread_cond_t server_data_cond = PTHREAD_COND_INITIALIZER;
-static pthread_cond_t server_test_cond = PTHREAD_COND_INITIALIZER;
-static int server_data_users = 0, server_status_ping = 0;
-/* Used to notify the server status thread that it should discontinue uptests. */
-volatile int signal_interrupt=0;
-#define statusintsig SIGHUP
-
-static short retest_flag=0;
-
-static char schm[32];
-
-static void sigint_handler(int signum);
-
-/*
- * Execute an individual uptest. Call with locks applied
- */
-static int uptest (servparm_t *serv, int j)
-{
- int ret=0, count_running_ping=0;
- pdnsd_a *s_addr= PDNSD_A2_TO_A(&DA_INDEX(serv->atup_a,j).a);
-
- DEBUG_PDNSDA_MSG("performing uptest (type=%s) for %s\n",const_name(serv->uptest),PDNSDA2STR(s_addr));
-
- /* Unlock the mutex because some of the tests may take a while. */
- ++server_data_users;
- if((serv->uptest==C_PING || serv->uptest==C_QUERY) && pthread_equal(pthread_self(),servstat_thrid)) {
- /* Inform other threads that a ping is in progress. */
- count_running_ping=1;
- ++server_status_ping;
- }
- pthread_mutex_unlock(&servers_lock);
-
- switch (serv->uptest) {
- case C_NONE:
- /* Don't change */
- ret=DA_INDEX(serv->atup_a,j).is_up;
- break;
- case C_PING:
- ret=ping(is_inaddr_any(&serv->ping_a) ? s_addr : &serv->ping_a, serv->ping_timeout,PINGREPEAT)!=-1;
- break;
- case C_IF:
- case C_DEV:
- case C_DIALD:
- ret=if_up(serv->interface);
-#if (TARGET==TARGET_LINUX)
- if (ret!=0) {
- if(serv->uptest==C_DEV)
- ret=dev_up(serv->interface,serv->device);
- else if (serv->uptest==C_DIALD)
- ret=dev_up("diald",serv->device);
- }
-#endif
- break;
- case C_EXEC: {
- pid_t pid;
-
- if ((pid=fork())==-1) {
- DEBUG_MSG("Could not fork to perform exec uptest: %s\n",strerror(errno));
- break;
- } else if (pid==0) { /* child */
- /*
- * If we ran as setuid or setgid, do not inherit this to the
- * command. This is just a last guard. Running pdnsd as setuid()
- * or setgid() is a no-no.
- */
- if (setgid(getgid()) == -1 || setuid(getuid()) == -1) {
- log_error("Could not reset uid or gid: %s",strerror(errno));
- _exit(1);
- }
- /* Try to setuid() to a different user as specified. Good when you
- don't want the test command to run as root */
- if (!run_as(serv->uptest_usr)) {
- _exit(1);
- }
- {
- struct rlimit rl; int i;
- /*
- * Mark all open fd's FD_CLOEXEC for paranoia reasons.
- */
- if (getrlimit(RLIMIT_NOFILE, &rl) == -1) {
- log_error("getrlimit() failed: %s",strerror(errno));
- _exit(1);
- }
- for (i = 0; i < rl.rlim_max; i++) {
- if (fcntl(i, F_SETFD, FD_CLOEXEC) == -1 && errno != EBADF) {
- log_error("fcntl(F_SETFD) failed: %s",strerror(errno));
- _exit(1);
- }
- }
- }
- execl("/bin/sh", "uptest_sh","-c",serv->uptest_cmd,(char *)NULL);
- _exit(1); /* failed execl */
- } else { /* parent */
- int status;
- pid_t wpid = waitpid(pid,&status,0);
- if (wpid==pid) {
- if(WIFEXITED(status)) {
- int exitstatus=WEXITSTATUS(status);
- DEBUG_MSG("uptest command \"%s\" exited with status %d\n",
- serv->uptest_cmd, exitstatus);
- ret=(exitstatus==0);
- }
-#if DEBUG>0
- else if(WIFSIGNALED(status)) {
- DEBUG_MSG("uptest command \"%s\" was terminated by signal %d\n",
- serv->uptest_cmd, WTERMSIG(status));
- }
- else {
- DEBUG_MSG("status of uptest command \"%s\" is of unkown type (0x%x)\n",
- serv->uptest_cmd, status);
- }
-#endif
- }
-#if DEBUG>0
- else if (wpid==-1) {
- DEBUG_MSG("Error while waiting for uptest command \"%s\" to terminate: "
- "waitpid for pid %d failed: %s\n",
- serv->uptest_cmd, pid, strerror(errno));
- }
- else {
- DEBUG_MSG("Error while waiting for uptest command \"%s\" to terminate: "
- "waitpid returned %d, expected pid %d\n",
- serv->uptest_cmd, wpid, pid);
- }
-#endif
- }
- }
- break;
- case C_QUERY:
- ret=query_uptest(s_addr, serv->port, serv->query_test_name,
- serv->timeout>=global.timeout?serv->timeout:global.timeout,
- PINGREPEAT);
- } /* end of switch */
-
- pthread_mutex_lock(&servers_lock);
- if(count_running_ping)
- --server_status_ping;
- PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
- if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
-
- DEBUG_PDNSDA_MSG("result of uptest for %s: %s\n",
- PDNSDA2STR(s_addr),
- ret?"OK":"failed");
- return ret;
-}
-
-static int scheme_ok(servparm_t *serv)
-{
- if (serv->scheme[0]) {
- if (!schm[0]) {
- ssize_t nschm;
- int sc = open(global.scheme_file, O_RDONLY);
- char *s;
- if (sc<0)
- return 0;
- nschm = read(sc, schm, sizeof(schm)-1);
- close(sc);
- if (nschm < 0)
- return 0;
- schm[nschm] = '\0';
- s = strchr(schm, '\n');
- if (s)
- *s='\0';
- }
- if (fnmatch(serv->scheme, schm, 0))
- return 0;
- }
- return 1;
-}
-
-/* Internal server test. Call with locks applied.
- May test a single server ip or several collectively.
- */
-static void retest(int i, int j)
-{
- time_t s_ts;
- servparm_t *srv=&DA_INDEX(servers,i);
- int nsrvs=DA_NEL(srv->atup_a);
-
- if(!nsrvs) return;
- if(j>=0) {
- if(j<nsrvs) nsrvs=j+1; /* test just one */
- }
- else {
- j=0; /* test a range of servers */
- }
-
- if(!scheme_ok(srv)) {
- s_ts=time(NULL);
-
- for(;j<nsrvs;++j) {
- atup_t *at=&DA_INDEX(srv->atup_a,j);
- at->is_up=0;
- at->i_ts=s_ts;
- }
- }
- else if(srv->uptest==C_NONE) {
- s_ts=time(NULL);
-
- for(;j<nsrvs;++j) {
- DA_INDEX(srv->atup_a,j).i_ts=s_ts;
- }
- }
- else if(srv->uptest==C_QUERY || (srv->uptest==C_PING && is_inaddr_any(&srv->ping_a))) { /* test each ip address separately */
- for(;j<nsrvs;++j) {
- atup_t *at=&DA_INDEX(srv->atup_a,j);
- s_ts=time(NULL);
- at->is_up=uptest(srv,j);
- if(signal_interrupt)
- break;
- at->i_ts=s_ts;
- }
- }
- else { /* test ip addresses collectively */
- int res;
-
- s_ts=time(NULL);
- res=uptest(srv,j);
- for(;j<nsrvs;++j) {
- atup_t *at=&DA_INDEX(srv->atup_a,j);
- at->is_up=res;
- if(signal_interrupt && srv->uptest==C_PING)
- continue;
- at->i_ts=s_ts;
- }
- }
-}
-
-
-/* This is called by the server status thread to discover the addresses of root servers.
- Call with server_lock applied.
-*/
-static addr2_array resolv_rootserver_addrs(atup_array a, int port, char edns_query, time_t timeout)
-{
- addr2_array retval=NULL;
-
- /* Unlock the mutex because this may take a while. */
- ++server_data_users;
- pthread_mutex_unlock(&servers_lock);
-
- retval= dns_rootserver_resolv(a,port,edns_query,timeout);
-
- pthread_mutex_lock(&servers_lock);
- PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
- if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
-
- return retval;
-}
-
-/*
- * Refresh the server status by pinging or testing the interface in the given interval.
- * Note that you may get inaccuracies in the dimension of the ping timeout or the runtime
- * of your uptest command if you have uptest=ping or uptest=exec for at least one server.
- * This happens when all the uptests for the first n servers take more time than the inteval
- * of n+1 (or 0 when n+1>servnum). I do not think that these delays are critical, so I did
- * not to anything about that (because that may also be costly).
- */
-void *servstat_thread(void *p)
-{
- struct sigaction action;
- int keep_testing;
-
- /* (void)p; */ /* To inhibit "unused variable" warning */
-
- THREAD_SIGINIT;
-
- pthread_mutex_lock(&servers_lock);
- /* servstat_thrid=pthread_self(); */
-
- signal_interrupt=0;
- action.sa_handler = sigint_handler;
- sigemptyset(&action.sa_mask);
- action.sa_flags = 0;
- if(sigaction(statusintsig, &action, NULL) == 0) {
- sigset_t smask;
- sigemptyset(&smask);
- sigaddset(&smask, statusintsig);
- pthread_sigmask(SIG_UNBLOCK,&smask,NULL);
- }
- else {
- log_warn("Cannot install signal handler for server status thread: %s\n",strerror(errno));
- }
-
- for(;;) {
- do {
- int i,n;
- keep_testing=0;
- retest_flag=0;
- schm[0] = '\0';
- n=DA_NEL(servers);
- for (i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- int j,m;
- if(sp->rootserver==2) {
- /* First get addresses of root servers. */
- addr2_array adrs;
- int l, one_up=0;
-
- if(!scheme_ok(sp)) {
- time_t now=time(NULL);
- m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j)
- DA_INDEX(sp->atup_a,j).i_ts=now;
- } else if(sp->uptest==C_PING || sp->uptest==C_QUERY) {
- /* Skip ping or query tests until after discovery. */
- if(sp->interval>0)
- one_up= DA_NEL(sp->atup_a);
- else {
- time_t now=time(NULL);
- m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j) {
- atup_t *at=&DA_INDEX(sp->atup_a,j);
- if(at->is_up || at->i_ts==0)
- one_up=1;
- at->i_ts=now;
- }
- }
- }
- else {
- retest(i,-1);
-
- m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j) {
- if(DA_INDEX(sp->atup_a,j).is_up) {
- one_up=1;
- break;
- }
- }
- }
-
- if(!one_up) {
- if (needs_intermittent_testing(sp)) keep_testing=1;
- continue;
- }
-
- DEBUG_MSG("Attempting to discover root servers for server section #%d.\n",i);
- adrs=resolv_rootserver_addrs(sp->atup_a,sp->port,sp->edns_query,sp->timeout);
- l= DA_NEL(adrs);
- if(l>0) {
- struct timeval now;
- struct timespec timeout;
- atup_array ata;
- DEBUG_MSG("Filling server section #%d with %d root server addresses.\n",i,l);
- gettimeofday(&now,NULL);
- timeout.tv_sec = now.tv_sec + 60; /* time out after 60 seconds */
- timeout.tv_nsec = now.tv_usec * 1000;
- while (server_data_users>0) {
- if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
- DEBUG_MSG("Timed out while waiting for exclusive access to server data"
- " to set root server addresses of server section #%d\n",i);
- da_free(adrs);
- keep_testing=1;
- continue;
- }
- }
- ata = DA_CREATE(atup_array, l);
- if(!ata) {
- log_warn("Out of memory in servstat_thread() while discovering root servers.");
- da_free(adrs);
- keep_testing=1;
- continue;
- }
- for(j=0; j<l; ++j) {
- atup_t *at = &DA_INDEX(ata,j);
- at->a = DA_INDEX(adrs,j);
- at->is_up=sp->preset;
- at->i_ts= sp->interval<0 ? time(NULL): 0;
- }
- da_free(sp->atup_a);
- sp->atup_a=ata;
- da_free(adrs);
- /* Successfully set IP addresses for this server section. */
- sp->rootserver=1;
- }
- else {
- DEBUG_MSG("Failed to discover root servers in servstat_thread() (server section #%d).\n",i);
- if(adrs) da_free(adrs);
- if(DA_NEL(sp->atup_a)) keep_testing=1;
- continue;
- }
- }
-
- if (needs_testing(sp)) keep_testing=1;
- m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j)
- if(DA_INDEX(sp->atup_a,j).i_ts)
- goto individual_tests;
- /* Test collectively */
- if(!signal_interrupt) retest(i,-1);
- continue;
-
- individual_tests:
- for(j=0; !signal_interrupt && j<m; ++j) {
- time_t ts=DA_INDEX(sp->atup_a,j).i_ts, now;
-
- if (ts==0 /* Always test servers with timestamp 0 */ ||
- (needs_intermittent_testing(sp) &&
- ((now=time(NULL))-ts>sp->interval ||
- ts>now /* kluge for clock skew */)))
- {
- retest(i,j);
- }
- }
- }
- } while(!signal_interrupt && retest_flag);
-
- signal_interrupt=0;
-
- /* Break the loop and exit the thread if it is no longer needed. */
- if(!keep_testing) break;
-
- {
- struct timeval now;
- struct timespec timeout;
- time_t minwait;
- int i,n,retval;
-
- gettimeofday(&now,NULL);
- minwait=3600; /* Check at least once every hour. */
- n=DA_NEL(servers);
- for (i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- int j,m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j) {
- time_t ts= DA_INDEX(sp->atup_a,j).i_ts;
- if(ts==0) {
- /* Test servers with timestamp 0 without delay */
- if(minwait > 0) minwait=0;
- }
- else if(needs_intermittent_testing(sp)) {
- time_t wait= ts + sp->interval - now.tv_sec;
- if(wait < minwait) minwait=wait;
- }
- }
- }
- timeout.tv_sec = now.tv_sec;
- if(minwait>0)
- timeout.tv_sec += minwait;
- timeout.tv_nsec = now.tv_usec * 1000 + 500000000; /* wait at least half a second. */
- if(timeout.tv_nsec>=1000000000) {
- timeout.tv_nsec -= 1000000000;
- ++timeout.tv_sec;
- }
- /* While we wait for a server_test_cond condition or a timeout
- the servers_lock mutex is unlocked, so other threads can access
- server data
- */
- retval=pthread_cond_timedwait(&server_test_cond, &servers_lock, &timeout);
- DEBUG_MSG("Server status thread woke up (%s signal).\n",
- retval==0?"test condition":retval==ETIMEDOUT?"timer":retval==EINTR?"interrupt":"error");
- }
- }
-
- /* server status thread no longer needed. */
- servstat_thrid=main_thrid;
- pthread_mutex_unlock(&servers_lock);
- DEBUG_MSG("Server status thread exiting.\n");
- return NULL;
-}
-
-/*
- * Start the server status thread.
- */
-int start_servstat_thread()
-{
- pthread_t stt;
-
- int rv=pthread_create(&stt,&attr_detached,servstat_thread,NULL);
- if (rv)
- log_warn("Failed to start server status thread: %s",strerror(rv));
- else {
- servstat_thrid=stt;
- log_info(2,"Server status thread started.");
- }
- return rv;
-}
-
-/*
- * This can be used to mark a server (or a list of nadr servers) up (up=1) or down (up=0),
- * or to schedule an immediate retest (up=-1).
- * We can't always use indices to identify a server, because we allow run-time
- * configuration of server addresses, so the servers are identified by their IP addresses.
- */
-void sched_server_test(pdnsd_a *sa, int nadr, int up)
-{
- int k,signal_test;
-
- pthread_mutex_lock(&servers_lock);
-
- signal_test=0;
- /* This obviously isn't very efficient, but nadr should be small
- and anything else would introduce considerable overhead */
- for(k=0;k<nadr;++k) {
- pdnsd_a *sak= &sa[k];
- int i,n=DA_NEL(servers);
- for(i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- int j,m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j) {
- atup_t *at=&DA_INDEX(sp->atup_a,j);
- if(equiv_inaddr2(sak,&at->a)) {
- if(up>=0) {
- at->is_up=up;
- at->i_ts=time(NULL);
- DEBUG_PDNSDA_MSG("Marked server %s %s.\n",PDNSDA2STR(sak),up?"up":"down");
- }
- else if(at->i_ts) {
- /* A test may take a while, and we don't want to hold
- up the calling thread.
- Instead we set the timestamp to zero and signal
- a condition which should wake up the server test thread.
- */
- at->i_ts=0;
- signal_test=1;
- }
- }
- }
- }
- }
- if(signal_test) pthread_cond_signal(&server_test_cond);
-
- pthread_mutex_unlock(&servers_lock);
-}
-
-/* Mark a set of servers up or down or schedule uptests.
- * If i>=0 only the server section with index i is scanned,
- * if i<0 all sections are scanned.
- * Only sections matching label are actually set. A NULL label matches
- * any section.
- * up=1 or up=0 means mark server up or down, up=-1 means retest.
- *
- * A non-zero return value indicates an error.
- */
-int mark_servers(int i, char *label, int up)
-{
- int retval=0,n,signal_test;
-
- pthread_mutex_lock(&servers_lock);
-
- signal_test=0;
- n=DA_NEL(servers);
- if(i>=0) {
- /* just one section */
- if(i<n) n=i+1;
- }
- else {
- i=0; /* scan all sections */
- }
- for(;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- if(!label || (sp->label && !strcmp(sp->label,label))) {
- int j,m=DA_NEL(sp->atup_a);
-
- /* If a section with undiscovered root servers is marked up, signal a test. */
- if(m && sp->rootserver>1 && up>0) signal_test=1;
-
- for(j=0;j<m;++j) {
- atup_t *at=&DA_INDEX(sp->atup_a,j);
- if(up>=0) {
- at->is_up=up;
- at->i_ts=time(NULL);
- }
- else if(at->i_ts) {
- /* A test may take a while, and we don't want to hold
- up the calling thread.
- Instead we set the timestamp to zero and signal
- a condition which should wake up the server test thread.
- */
- at->i_ts=0;
- signal_test=1;
- }
- }
- }
- }
- if(signal_test) {
- if(pthread_equal(servstat_thrid,main_thrid))
- retval=start_servstat_thread();
- else {
- retest_flag=1;
- retval=pthread_cond_signal(&server_test_cond);
- }
- }
-
- pthread_mutex_unlock(&servers_lock);
- return retval;
-}
-
-/*
- * Test called by the dns query handlers to handle interval=onquery cases.
- */
-void test_onquery()
-{
- int i,n,signal_test;
-
- pthread_mutex_lock(&servers_lock);
- schm[0] = '\0';
- signal_test=0;
- n=DA_NEL(servers);
- for (i=0;i<n;++i) {
- servparm_t *sp=&DA_INDEX(servers,i);
- if (sp->interval==-1) {
- if(sp->rootserver<=1)
- retest(i,-1);
- else {
- /* We leave root-server discovery to the server status thread */
- int j,m=DA_NEL(sp->atup_a);
- for(j=0;j<m;++j)
- DA_INDEX(sp->atup_a,j).i_ts=0;
- signal_test=1;
- }
- }
- }
-
- if(signal_test) {
- int rv;
- if(pthread_equal(servstat_thrid,main_thrid))
- start_servstat_thread();
- else {
- retest_flag=1;
- if((rv=pthread_cond_signal(&server_test_cond))) {
- DEBUG_MSG("test_onquery(): couldn't signal server status thread: %s\n",strerror(rv));
- }
- }
- }
-
- pthread_mutex_unlock(&servers_lock);
-}
-
-/* non-exclusive lock, for read only access to server data. */
-void lock_server_data()
-{
- pthread_mutex_lock(&servers_lock);
- ++server_data_users;
- pthread_mutex_unlock(&servers_lock);
-}
-
-void unlock_server_data()
-{
- pthread_mutex_lock(&servers_lock);
- PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
- if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
- pthread_mutex_unlock(&servers_lock);
-}
-
-/* Try to obtain an exclusive lock, needed for modifying server data.
- Return 1 on success, 0 on failure (time out after tm seconds).
-*/
-int exclusive_lock_server_data(int tm)
-{
- struct timeval now;
- struct timespec timeout;
-
- pthread_mutex_lock(&servers_lock);
- if(server_status_ping>0 && !pthread_equal(servstat_thrid,main_thrid)) {
- int err;
- /* Try to interrupt server status thread to prevent delays. */
- DEBUG_MSG("Sending server status thread an interrupt signal.\n");
- if((err=pthread_kill(servstat_thrid,statusintsig))) {
- DEBUG_MSG("pthread_kill failed: %s\n",strerror(err));
- }
- }
- gettimeofday(&now,NULL);
- timeout.tv_sec = now.tv_sec + tm; /* time out after tm seconds */
- timeout.tv_nsec = now.tv_usec * 1000;
- while (server_data_users>0) {
- if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
- pthread_mutex_unlock(&servers_lock);
- return 0;
- }
- }
- return 1;
-}
-/* Call this to free the lock obtained with exclusive_lock_server_data().
- If retest is nonzero, the server-status thread is reactivated to check
- which servers are up. This is useful in case the configuration has changed.
-*/
-void exclusive_unlock_server_data(int retest)
-{
- if(retest) {
- if(pthread_equal(servstat_thrid,main_thrid))
- start_servstat_thread();
- else
- pthread_cond_signal(&server_test_cond);
- }
- pthread_mutex_unlock(&servers_lock);
-}
-
-/*
- Change addresses of servers during runtime.
- i is the number of the server section to change.
- ar should point to an array of IP addresses (may be NULL).
- up=1 or up=0 means mark server up or down afterwards,
- up=-1 means retest.
-
- A non-zero return value indicates an error.
-*/
-int change_servers(int i, addr_array ar, int up)
-{
- int retval=0,j,change,signal_test;
- int n;
- servparm_t *sp;
-
- pthread_mutex_lock(&servers_lock);
-
- signal_test=0;
- change=0;
- n=DA_NEL(ar);
- sp=&DA_INDEX(servers,i);
- if(n != DA_NEL(sp->atup_a) || sp->rootserver>1)
- change=1;
- else {
- int j;
- for(j=0;j<n;++j)
- if(!same_inaddr2(&DA_INDEX(ar,j),&DA_INDEX(sp->atup_a,j).a)) {
- change=1;
- break;
- }
- }
- if(change) {
- /* we need exclusive access to the server data to make the changes */
- struct timeval now;
- struct timespec timeout;
- atup_array ata;
-
- if(server_status_ping>0 && !pthread_equal(servstat_thrid,main_thrid)) {
- int err;
- /* Try to interrupt server status thread to prevent delays. */
- DEBUG_MSG("Sending server status thread an interrupt signal.\n");
- if((err=pthread_kill(servstat_thrid,statusintsig))) {
- DEBUG_MSG("pthread_kill failed: %s\n",strerror(err));
- }
- }
-
- DEBUG_MSG("Changing IPs of server section #%d\n",i);
- gettimeofday(&now,NULL);
- timeout.tv_sec = now.tv_sec + 60; /* time out after 60 seconds */
- timeout.tv_nsec = now.tv_usec * 1000;
- while (server_data_users>0) {
- if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
- retval=ETIMEDOUT;
- goto unlock_mutex;
- }
- }
-
- ata= DA_CREATE(atup_array, n);
- if(!ata) {
- log_warn("Out of memory in change_servers().");
- retval=ENOMEM;
- goto unlock_mutex;
- }
- da_free(sp->atup_a);
- sp->atup_a=ata;
- /* Stop trying to discover rootservers
- if we set the addresses using this routine. */
- if(sp->rootserver>1) sp->rootserver=1;
- }
-
- for(j=0; j<n; ++j) {
- atup_t *at = &DA_INDEX(sp->atup_a,j);
- if(change) {
- SET_PDNSD_A2(&at->a, &DA_INDEX(ar,j));
- at->is_up=sp->preset;
- }
- if(up>=0) {
- at->is_up=up;
- at->i_ts=time(NULL);
- }
- else if(change || at->i_ts) {
- /* A test may take a while, and we don't want to hold
- up the calling thread.
- Instead we set the timestamp to zero and signal
- a condition which should wake up the server test thread.
- */
- at->i_ts=0;
- signal_test=1;
- }
- }
-
- if(signal_test) {
- if(pthread_equal(servstat_thrid,main_thrid))
- retval=start_servstat_thread();
- else {
- retest_flag=1;
- retval=pthread_cond_signal(&server_test_cond);
- }
- }
-
- unlock_mutex:
- pthread_mutex_unlock(&servers_lock);
- return retval;
-}
-
-
-/*
- The signal handler for the signal to tell the server status thread to discontinue testing.
-*/
-static void sigint_handler(int signum)
-{
- signal_interrupt=1;
-}
diff --git a/jni/pdnsd/src/servers.h b/jni/pdnsd/src/servers.h
deleted file mode 100644
index fd263c0..0000000
--- a/jni/pdnsd/src/servers.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* servers.h - manage a set of dns servers
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _SERVERS_H_
-#define _SERVERS_H_
-
-#include <config.h>
-#include "consts.h"
-
-/* Number of ping timeouts before we take a server offline. */
-#define PINGREPEAT 2
-
-extern pthread_t servstat_thrid;
-extern volatile int signal_interrupt;
-
-
-int start_servstat_thread(void);
-void sched_server_test(pdnsd_a *sa, int nadr, int up);
-int mark_servers(int i, char* label, int up);
-void test_onquery(void);
-void lock_server_data();
-void unlock_server_data();
-int exclusive_lock_server_data(int tm);
-void exclusive_unlock_server_data(int retest);
-int change_servers(int i, addr_array ar, int up);
-
-inline static int needs_testing(servparm_t *sp)
- __attribute__((always_inline));
-inline static int needs_testing(servparm_t *sp)
-{
- return ((sp->interval>0 || sp->interval==-2) && (sp->uptest!=C_NONE || sp->scheme[0]));
-}
-
-inline static int needs_intermittent_testing(servparm_t *sp)
- __attribute__((always_inline));
-inline static int needs_intermittent_testing(servparm_t *sp)
-{
- return (sp->interval>0 && (sp->uptest!=C_NONE || sp->scheme[0]));
-}
-
-inline static int is_interrupted_servstat_thread()
- __attribute__((always_inline));
-inline static int is_interrupted_servstat_thread()
-{
- return (signal_interrupt && pthread_equal(pthread_self(),servstat_thrid));
-}
-
-#endif
diff --git a/jni/pdnsd/src/sort_namevalues.pl b/jni/pdnsd/src/sort_namevalues.pl
deleted file mode 100644
index 2014f49..0000000
--- a/jni/pdnsd/src/sort_namevalues.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my %dic;
-my $maxkeylen=0;
-
-while(<>) {
- if(/"(\w+)".*?(\w+)/) {
- my $key=$1; my $val=$2;
- if($dic{$key}) {die "The key \"$key\" does not have a unique value.\n"}
- $dic{$key}=$val;
- if(length($key)>$maxkeylen) {$maxkeylen=length($key)}
- }
- else {die "Can't find key-value pair in following line:\n$_\n"}
-}
-
-my $linenr=0;
-foreach my $key (sort(keys %dic)) {
- if($linenr++) {print ",\n"}
- printf("\t{%-*s%s}",$maxkeylen+4,"\"$key\",",$dic{$key});
-}
-print "\n";
-
-exit
diff --git a/jni/pdnsd/src/status.c b/jni/pdnsd/src/status.c
deleted file mode 100644
index 4240069..0000000
--- a/jni/pdnsd/src/status.c
+++ /dev/null
@@ -1,824 +0,0 @@
-/* status.c - Allow control of a running server using a socket
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <errno.h>
-#include <pthread.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <stddef.h> /* for offsetof */
-#include "ipvers.h"
-#include "status.h"
-#include "thread.h"
-#include "cache.h"
-#include "error.h"
-#include "servers.h"
-#include "dns_answer.h"
-#include "helpers.h"
-#include "conf-parser.h"
-
-#if !defined(HAVE_ALLOCA) && !defined(alloca)
-#define alloca malloc
-#endif
-
-
-char *sock_path=NULL;
-int stat_sock;
-
-
-/* Print an error to the socket */
-static int print_serr(int rs, const char *msg)
-{
- uint16_t cmd;
-
- DEBUG_MSG("Sending error message to control socket: '%s'\n",msg);
- cmd=htons(1);
- if(write(rs,&cmd,sizeof(cmd))!=sizeof(cmd) ||
- write_all(rs,msg,strlen(msg))<0)
- {
- DEBUG_MSG("Error writing to control socket: %s\n",strerror(errno));
- return 0;
- }
- return 1;
-}
-
-/* Print a success code to the socket */
-static int print_succ(int rs)
-{
- uint16_t cmd;
-
- cmd=htons(0);
- if(write(rs,&cmd,sizeof(cmd))!=sizeof(cmd)) {
- DEBUG_MSG("Error writing to control socket: %s\n"
- "Failed to send success code.\n",strerror(errno));
- return 0;
- }
- return 1;
-}
-
-/* Read a cmd short */
-static int read_short(int fh, uint16_t *res)
-{
- uint16_t cmd;
-
- if (read(fh,&cmd,sizeof(cmd))!=sizeof(cmd)) {
- /* print_serr(fh,"Bad arg."); */
- return 0;
- }
- *res= ntohs(cmd);
- return 1;
-}
-
-/* Read a cmd long */
-static int read_long(int fh, uint32_t *res)
-{
- uint32_t cmd;
-
- if (read(fh,&cmd,sizeof(cmd))!=sizeof(cmd)) {
- /* print_serr(fh,"Bad arg."); */
- return 0;
- }
- *res= ntohl(cmd);
- return 1;
-}
-
-/* Read a string preceded by a char count.
- A buffer of the right size is allocated to hold the result.
- A return value of 1 means success,
- -1 means the result is undefined (*res is set to NULL),
- 0 means read or allocation error.
-*/
-static int read_allocstring(int fh, char **res, unsigned *len)
-{
- uint16_t count;
- char *buf;
- unsigned int nread;
-
- if(!read_short(fh,&count)) return 0;
- if(count==(uint16_t)(~0)) {*res=NULL; return -1;}
- if(!(buf=malloc(count+1))) return 0;
- nread=0;
- while(nread<count) {
- ssize_t m=read(fh,buf+nread,count-nread);
- if(m<=0) {free(buf); return 0;}
- nread+=m;
- }
- buf[count]=0;
- *res=buf;
- if(len) *len=count;
- return 1;
-}
-
-/* Read a string preceded by a char count.
- Place it in a buffer of size buflen and terminate with a null char.
- A return value of 1 means success, -1 means not defined,
- 0 means error (read error, buffer too small).
-*/
-static int read_domain(int fh, char *buf, unsigned int buflen)
-{
- uint16_t count;
- unsigned int nread;
-
- if(!read_short(fh,&count)) return 0;
- if(count==(uint16_t)(~0)) return -1;
- if(count >=buflen) return 0;
- nread=0;
- while(nread<count) {
- ssize_t m=read(fh,buf+nread,count-nread);
- if(m<=0) return 0;
- nread+=m;
- }
- buf[count]=0;
-#if 0
- if(count==0 || buf[count-1]!='.') {
- if(count+1>=buflen) return 0;
- buf[count]='.'; buf[count+1]=0;
- }
-#endif
- return 1;
-}
-
-static void *status_thread (void *p)
-{
- THREAD_SIGINIT;
- /* (void)p; */ /* To inhibit "unused variable" warning */
-
- if (!global.strict_suid) {
- if (!run_as(global.run_as)) {
- pdnsd_exit();
- }
- }
-
- if (listen(stat_sock,5)==-1) {
- log_warn("Error: could not listen on socket: %s.\nStatus readback will be impossible",strerror(errno));
- goto exit_thread;
- }
- for(;;) {
- struct sockaddr_un ra;
- socklen_t res=sizeof(ra);
- int rs;
- if ((rs=accept(stat_sock,(struct sockaddr *)&ra,&res))!=-1) {
- uint16_t cmd;
- DEBUG_MSG("Status socket query pending.\n");
- if (read_short(rs,&cmd)) {
- /* Check magic number in command */
- if((cmd & 0xff00) == CTL_CMDVERNR) {
- const char *errmsg;
- cmd &= 0xff;
- switch(cmd) {
- case CTL_STATS: {
- struct utsname nm;
- DEBUG_MSG("Received STATUS query.\n");
- if(!print_succ(rs))
- break;
- uname(&nm);
- if(fsprintf(rs,"pdnsd-%s running on %s.\n",VERSION,nm.nodename)<0 ||
- report_cache_stat(rs)<0 ||
- report_thread_stat(rs)<0 ||
- report_conf_stat(rs)<0)
- {
- DEBUG_MSG("Error writing to control socket: %s\n"
- "Failed to send status report.\n",strerror(errno));
- }
- }
- break;
- case CTL_SERVER: {
- char *label,*dnsaddr;
- int indx;
- uint16_t cmd2;
- DEBUG_MSG("Received SERVER command.\n");
- if (read_allocstring(rs,&label,NULL)<=0) {
- print_serr(rs,"Error reading server label.");
- break;
- }
- if (!read_short(rs,&cmd2)) {
- print_serr(rs,"Missing up|down|retest.");
- goto free_label_break;
- }
- if(!read_allocstring(rs, &dnsaddr,NULL)) {
- print_serr(rs,"Error reading DNS addresses.");
- goto free_label_break;
- }
- /* Note by Paul Rombouts:
- We are about to access server configuration data.
- Now that the configuration can be changed during run time,
- we should be using locks before accessing server config data, even if it
- is read-only access.
- However, as long as this is the only thread that calls reload_config_file()
- it should be OK to read the server config without locks, but it is
- something to keep in mind.
- */
- {
- char *endptr;
- indx=strtol(label,&endptr,0);
- if(!*endptr) {
- if (indx<0 || indx>=DA_NEL(servers)) {
- print_serr(rs,"Server index out of range.");
- goto free_dnsaddr_label_break;
- }
- }
- else {
- if (!strcmp(label, "all"))
- indx=-2; /* all servers */
- else
- indx=-1; /* compare names */
- }
- }
- if(cmd2==CTL_S_UP || cmd2==CTL_S_DOWN || cmd2==CTL_S_RETEST) {
- if(!dnsaddr) {
- if (indx==-1) {
- int i;
- for (i=0;i<DA_NEL(servers);++i) {
- char *servlabel=DA_INDEX(servers,i).label;
- if (servlabel && !strcmp(servlabel,label))
- goto found_label;
- }
- print_serr(rs,"Bad server label.");
- goto free_dnsaddr_label_break;
- found_label:;
- }
- if(mark_servers(indx,(indx==-1)?label:NULL,(cmd2==CTL_S_RETEST)?-1:(cmd2==CTL_S_UP))==0)
- print_succ(rs);
- else
- print_serr(rs,"Could not start up or signal server status thread.");
- }
- else { /* Change server addresses */
- if(indx==-2) {
- print_serr(rs,"Can't use label \"all\" to change server addresses.");
- goto free_dnsaddr_label_break;
- }
- if(indx==-1) {
- int i;
- for(i=0;i<DA_NEL(servers);++i) {
- char *servlabel=DA_INDEX(servers,i).label;
- if (servlabel && !strcmp(servlabel,label)) {
- if(indx!=-1) {
- print_serr(rs,"server label must be unique to change server addresses.");
- goto free_dnsaddr_label_break;
- }
- indx=i;
- }
- }
- if(indx==-1) {
- print_serr(rs,"Bad server label.");
- goto free_dnsaddr_label_break;
- }
- }
- {
- char *ipstr,*q=dnsaddr;
- addr_array ar=NULL;
- pdnsd_a addr;
- int err;
- for(;;) {
- for(;;) {
- if(!*q) goto change_servs;
- if(*q!=',' && !isspace(*q)) break;
- ++q;
- }
- ipstr=q;
- for(;;) {
- ++q;
- if(!*q) break;
- if(*q==',' || isspace(*q)) {*q++=0; break; }
- }
- if(!str2pdnsd_a(ipstr,&addr)) {
- print_serr(rs,"Bad server ip");
- goto free_ar;
- }
- if(!(ar=DA_GROW1(ar))) {
- print_serr(rs,"Out of memory.");
- goto free_dnsaddr_label_break;
- }
- DA_LAST(ar)=addr;
- }
- change_servs:
- err=change_servers(indx,ar,(cmd2==CTL_S_RETEST)?-1:(cmd2==CTL_S_UP));
- if(err==0)
- print_succ(rs);
- else
- print_serr(rs,err==ETIMEDOUT?"Timed out while trying to gain access to server data.":
- err==ENOMEM?"Out of memory.":
- "Could not start up or signal server status thread.");
- free_ar:
- da_free(ar);
- }
- }
- }
- else
- print_serr(rs,"Bad command.");
-
- free_dnsaddr_label_break:
- free(dnsaddr);
- free_label_break:
- free(label);
- }
- break;
- case CTL_RECORD: {
- uint16_t cmd2;
- unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE];
- DEBUG_MSG("Received RECORD command.\n");
- if (!read_short(rs,&cmd2))
- goto incomplete_command;
- if (read_domain(rs, charp buf, sizeof(buf))<=0)
- goto incomplete_command;
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL)
- goto bad_domain_name;
- switch (cmd2) {
- case CTL_R_DELETE:
- del_cache(name);
- print_succ(rs);
- break;
- case CTL_R_INVAL:
- invalidate_record(name);
- print_succ(rs);
- break;
- default:
- print_serr(rs,"Bad command.");
- }
- }
- break;
- case CTL_SOURCE: {
- uint32_t ttl;
- char *fn;
- uint16_t servaliases,flags;
- unsigned char buf[DNSNAMEBUFSIZE],owner[DNSNAMEBUFSIZE];
-
- DEBUG_MSG("Received SOURCE command.\n");
- if (read_allocstring(rs,&fn,NULL)<=0) {
- print_serr(rs,"Bad filename name.");
- break;
- }
- if (read_domain(rs, charp buf, sizeof(buf))<=0 ||
- !read_long(rs,&ttl) ||
- !read_short(rs,&servaliases) || /* serve aliases */
- !read_short(rs,&flags)) /* caching flags */
- {
- print_serr(rs,"Malformed or incomplete command.");
- goto free_fn;
- }
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),owner))!=NULL) {
- print_serr(rs,errmsg);
- goto free_fn;
- }
- if (ttl < 0) {
- print_serr(rs, "Bad TTL.");
- goto free_fn;
- }
- if(flags&DF_NEGATIVE) {
- print_serr(rs, "Bad cache flags.");
- goto free_fn;
- }
- {
- char *errmsg;
- if (read_hosts(fn,owner,ttl,flags,servaliases,&errmsg))
- print_succ(rs);
- else {
- print_serr(rs,errmsg?:"Out of memory.");
- free(errmsg);
- }
- }
- free_fn:
- free(fn);
- }
- break;
- case CTL_ADD: {
- uint32_t ttl;
- unsigned sz;
- uint16_t tp,flags,nadr=0;
- unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE],dbuf[2+DNSNAMEBUFSIZE];
- size_t adrbufsz=0;
- unsigned char *adrbuf=NULL;
-
- DEBUG_MSG("Received ADD command.\n");
- if (!read_short(rs,&tp))
- goto incomplete_command;
- if (read_domain(rs, charp buf, sizeof(buf))<=0)
- goto incomplete_command;
- if (!read_long(rs,&ttl))
- goto incomplete_command;
- if (!read_short(rs,&flags)) /* caching flags */
- goto incomplete_command;
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL)
- goto bad_domain_name;
- if (ttl < 0)
- goto bad_ttl;
- if(flags&DF_NEGATIVE)
- goto bad_flags;
-
- switch (tp) {
- case T_A:
- sz=sizeof(struct in_addr);
- #if ALLOW_LOCAL_AAAA
- goto read_adress_list;
- case T_AAAA:
- sz=sizeof(struct in6_addr);
- read_adress_list:
- #endif
- if (!read_short(rs,&nadr))
- goto incomplete_command;
- if (!nadr)
- goto bad_arg;
- adrbufsz= nadr * (size_t)sz;
- adrbuf= malloc(adrbufsz);
- if(!adrbuf)
- goto out_of_memory;
- {
- size_t nread=0;
- while(nread<adrbufsz) {
- ssize_t m=read(rs,adrbuf+nread,adrbufsz-nread);
- if(m<=0) {free(adrbuf); goto bad_arg;}
- nread += m;
- }
- }
- break;
- case T_CNAME:
- case T_PTR:
- case T_NS:
- if (read_domain(rs, charp buf, sizeof(buf))<=0)
- goto incomplete_command;
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),dbuf))!=NULL)
- goto bad_domain_name;
- sz=rhnlen(dbuf);
- break;
- case T_MX:
- if (read(rs,dbuf,2)!=2)
- goto bad_arg;
- if (read_domain(rs, charp buf, sizeof(buf))<=0)
- goto incomplete_command;
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),dbuf+2))!=NULL)
- goto bad_domain_name;
- sz=rhnlen(dbuf+2)+2;
- break;
- default:
- goto bad_arg;
- }
- {
- dns_cent_t cent;
-
- if (!init_cent(¢, name, 0, 0, flags DBG1)) {
- free(adrbuf);
- goto out_of_memory;
- }
- if(adrbuf) {
- unsigned char *adrp; int i;
- for(adrp=adrbuf,i=0; i<nadr; adrp += sz,++i) {
- if (!add_cent_rr(¢,tp,ttl,0,CF_LOCAL,sz,adrp DBG1)) {
- free_cent(¢ DBG1);
- free(adrbuf);
- goto out_of_memory;
- }
- }
- free(adrbuf);
- }
- else if (!add_cent_rr(¢,tp,ttl,0,CF_LOCAL,sz,dbuf DBG1)) {
- free_cent(¢ DBG1);
- goto out_of_memory;
- }
-
- if(cent.qname[0]==1 && cent.qname[1]=='*') {
- /* Wild card record.
- Set the DF_WILD flag for the name with '*.' removed. */
- if(!set_cent_flags(¢.qname[2],DF_WILD)) {
- print_serr(rs,
- "Before defining records for a name with a wildcard"
- " you must first define some records for the name"
- " with '*.' removed.");
- goto cleanup_cent;
- }
- }
-
- add_cache(¢);
- print_succ(rs);
- cleanup_cent:
- free_cent(¢ DBG1);
- }
- }
- break;
- case CTL_NEG: {
- uint32_t ttl;
- uint16_t tp;
- unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE];
-
- DEBUG_MSG("Received NEG command.\n");
- if (read_domain(rs, charp buf, sizeof(buf))<=0)
- goto incomplete_command;
- if (!read_short(rs,&tp))
- goto incomplete_command;
- if (!read_long(rs,&ttl))
- goto incomplete_command;
- if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL) {
- DEBUG_MSG("NEG: received bad domain name.\n");
- goto bad_domain_name;
- }
- if (tp!=255 && PDNSD_NOT_CACHED_TYPE(tp)) {
- DEBUG_MSG("NEG: received bad record type.\n");
- print_serr(rs,"Bad record type.");
- break;
- }
- if (ttl < 0)
- goto bad_ttl;
- {
- dns_cent_t cent;
-
- if (tp==255) {
- if (!init_cent(¢, name, ttl, 0, DF_LOCAL|DF_NEGATIVE DBG1))
- goto out_of_memory;
- } else {
- if (!init_cent(¢, name, 0, 0, 0 DBG1))
- goto out_of_memory;
- if (!add_cent_rrset_by_type(¢,tp,ttl,0,CF_LOCAL|CF_NEGATIVE DBG1)) {
- free_cent(¢ DBG1);
- goto out_of_memory;
- }
- }
- add_cache(¢);
- free_cent(¢ DBG1);
- }
- print_succ(rs);
- }
- break;
- case CTL_CONFIG: {
- char *fn,*errmsg;
- DEBUG_MSG("Received CONFIG command.\n");
- if (!read_allocstring(rs,&fn,NULL)) {
- print_serr(rs,"Bad filename name.");
- break;
- }
- if (reload_config_file(fn,&errmsg))
- print_succ(rs);
- else {
- print_serr(rs,errmsg?:"Out of memory.");
- free(errmsg);
- }
- free(fn);
- }
- break;
- case CTL_INCLUDE: {
- char *fn,*errmsg;
- DEBUG_MSG("Received INCLUDE command.\n");
- if (read_allocstring(rs,&fn,NULL)<=0) {
- print_serr(rs,"Bad filename name.");
- break;
- }
- if (read_config_file(fn,NULL,NULL,0,&errmsg))
- print_succ(rs);
- else {
- print_serr(rs,errmsg?:"Out of memory.");
- free(errmsg);
- }
- free(fn);
- }
- break;
- case CTL_EVAL: {
- char *str,*errmsg;
- DEBUG_MSG("Received EVAL command.\n");
- if (!read_allocstring(rs,&str,NULL)) {
- print_serr(rs,"Bad input string.");
- break;
- }
- if (confparse(NULL,str,NULL,NULL,0,&errmsg))
- print_succ(rs);
- else {
- print_serr(rs,errmsg?:"Out of memory.");
- free(errmsg);
- }
- free(str);
- }
- break;
- case CTL_EMPTY: {
- slist_array sla=NULL;
- char *names; unsigned len;
-
- DEBUG_MSG("Received EMPTY command.\n");
- if (!read_allocstring(rs,&names,&len)) {
- print_serr(rs,"Bad arguments.");
- break;
- }
- if(names) {
- char *p=names, *last=names+len;
-
- while(p<last) {
- int tp;
- char *q;
- slist_t *sl;
- unsigned sz;
- unsigned char rhn[DNSNAMEBUFSIZE];
-
- if(*p=='-') {
- tp=C_EXCLUDED;
- ++p;
- }
- else {
- tp=C_INCLUDED;
- if(*p=='+') ++p;
- }
- /* skip a possible leading dot. */
- if(p+1<last && *p=='.' && *(p+1)) ++p;
- q=p;
- while(q<last && *q) ++q;
- if ((errmsg=parsestr2rhn(ucharp p,q-p,rhn))!=NULL) {
- DEBUG_MSG("EMPTY: received bad domain name: %s\n",p);
- print_serr(rs,errmsg);
- goto free_sla_names_break;
- }
- sz=rhnlen(rhn);
- if (!(sla=DA_GROW1_F(sla,free_slist_domain))) {
- print_serr(rs,"Out of memory.");
- goto free_names_break;
- }
- sl=&DA_LAST(sla);
-
- if (!(sl->domain=malloc(sz))) {
- print_serr(rs,"Out of memory.");
- goto free_sla_names_break;
- }
- memcpy(sl->domain,rhn,sz);
- sl->exact=0;
- sl->rule=tp;
- p = q+1;
- }
- }
- if(empty_cache(sla))
- print_succ(rs);
- else
- print_serr(rs,"Could not lock the cache.");
- free_sla_names_break:
- free_slist_array(sla);
- free_names_break:
- free(names);
- }
- break;
- case CTL_DUMP: {
- int rv,exact=0;
- unsigned char *nm=NULL;
- char buf[DNSNAMEBUFSIZE];
- unsigned char rhn[DNSNAMEBUFSIZE];
- DEBUG_MSG("Received DUMP command.\n");
- if (!(rv=read_domain(rs,buf,sizeof(buf)))) {
- print_serr(rs,"Bad domain name.");
- break;
- }
- if(rv>0) {
- int sz;
- exact=1; nm= ucharp buf; sz=sizeof(buf);
- if(buf[0]=='.' && buf[1]) {
- exact=0; ++nm; --sz;
- }
- if ((errmsg=parsestr2rhn(nm,sz,rhn))!=NULL)
- goto bad_domain_name;
- nm=rhn;
- }
- if(!print_succ(rs))
- break;
- if((rv=dump_cache(rs,nm,exact))<0 ||
- (!rv && fsprintf(rs,"Could not find %s%s in the cache.\n",
- exact?"":nm?"any entries matching ":"any entries",
- nm?buf:"")<0))
- {
- DEBUG_MSG("Error writing to control socket: %s\n",strerror(errno));
- }
- }
- break;
- incomplete_command:
- print_serr(rs,"Malformed or incomplete command.");
- break;
- bad_arg:
- print_serr(rs,"Bad arg.");
- break;
- bad_domain_name:
- print_serr(rs,errmsg);
- break;
- bad_ttl:
- print_serr(rs, "Bad TTL.");
- break;
- bad_flags:
- print_serr(rs, "Bad cache flags.");
- break;
- out_of_memory:
- print_serr(rs,"Out of memory.");
- break;
- default:
- print_serr(rs,"Unknown command.");
- }
- }
- else {
- DEBUG_MSG("Incorrect magic number in status-socket command code: %02x\n",cmd>>8);
- print_serr(rs,"Command code contains incompatible version number.");
- }
- }
- else {
- DEBUG_MSG("short status-socket query\n");
- print_serr(rs,"Command code missing or too short.");
- }
- close(rs);
- usleep_r(100000); /* sleep some time. I do not want the query frequency to be too high. */
- }
- else if (errno!=EINTR) {
- log_warn("Failed to accept connection on status socket: %s. "
- "Status readback will be impossible",strerror(errno));
- break;
- }
- }
-
- exit_thread:
- stat_pipe=0;
- close(stat_sock);
- statsock_thrid=main_thrid;
-
- return NULL;
-}
-
-/*
- * Initialize the status socket
- */
-void init_stat_sock()
-{
- struct sockaddr_un *sa;
- /* Should I include the terminating null byte in the calculation of the length parameter
- for the socket address? The glibc info page "Details of Local Namespace" tells me I should not,
- yet it is immediately followed by an example that contradicts that.
- The SUN_LEN macro seems to be defined as
- (offsetof(struct sockaddr_un, sun_path) + strlen(sa->sun_path)),
- so I conclude it is not necessary to count the null byte, but it probably makes no
- difference if you do.
- */
- unsigned int sa_len = (offsetof(struct sockaddr_un, sun_path) + strlitlen("/pdnsd.status") + strlen(global.cache_dir));
-
- sa=(struct sockaddr_un *)alloca(sa_len+1);
- stpcpy(stpcpy(sa->sun_path,global.cache_dir),"/pdnsd.status");
-
- if (unlink(sa->sun_path)!=0 && errno!=ENOENT) { /* Delete the socket */
- log_warn("Failed to unlink %s: %s.\nStatus readback will be disabled",sa->sun_path, strerror(errno));
- stat_pipe=0;
- return;
- }
- if ((stat_sock=socket(PF_UNIX,SOCK_STREAM,0))==-1) {
- log_warn("Failed to open socket: %s. Status readback will be impossible",strerror(errno));
- stat_pipe=0;
- return;
- }
- sa->sun_family=AF_UNIX;
-#ifdef BSD44_SOCKA
- sa->sun_len=SUN_LEN(sa);
-#endif
- /* Early initialization, so that umask can be used race-free. */
- {
- mode_t old_mask = umask((S_IRWXU|S_IRWXG|S_IRWXO)&(~global.ctl_perms));
- if (bind(stat_sock,(struct sockaddr *)sa,sa_len)==-1) {
- log_warn("Error: could not bind socket: %s.\nStatus readback will be impossible",strerror(errno));
- close(stat_sock);
- stat_pipe=0;
- }
- umask(old_mask);
- }
-
- if(stat_pipe) sock_path= strdup(sa->sun_path);
-}
-
-/*
- * Start the status socket thread (see above)
- */
-int start_stat_sock()
-{
- pthread_t st;
-
- int rv=pthread_create(&st,&attr_detached,status_thread,NULL);
- if (rv)
- log_warn("Failed to start status thread. The status socket will be unuseable");
- else {
- statsock_thrid=st;
- log_info(2,"Status thread started.");
- }
- return rv;
-}
diff --git a/jni/pdnsd/src/status.h b/jni/pdnsd/src/status.h
deleted file mode 100644
index 1d249f7..0000000
--- a/jni/pdnsd/src/status.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* status.h - Make server status information accessible through a named pipe
-
- Copyright (C) 2000, 2001 Thomas Moestl
- Copyright (C) 2002, 2004, 2008, 2009 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _STATUS_H_
-#define _STATUS_H_
-
-#include <config.h>
-#include "conff.h"
-
-extern char *sock_path;
-extern int stat_sock;
-
-/* The commands for pdnsd-ctl */
-#define CTL_CMDVERNR 0x6800 /* pdnsd-ctl command version (magic number used to check compatibility) */
-
-#define CTL_MIN 1
-#define CTL_STATS 1 /* Give out stats (like the "traditional" status pipe) */
-#define CTL_SERVER 2 /* Enable or disable a server */
-#define CTL_RECORD 3 /* Delete or invalidate records */
-#define CTL_SOURCE 4 /* Read a hosts-style file */
-#define CTL_ADD 5 /* Add a record of the given type */
-#define CTL_NEG 6 /* Add a negative cached record */
-#define CTL_CONFIG 7 /* Re-read config file */
-#define CTL_INCLUDE 8 /* Read file as config file, disregarding global and server sections */
-#define CTL_EVAL 9 /* Parse string as if part of config file */
-#define CTL_EMPTY 10 /* Empty the cache */
-#define CTL_DUMP 11 /* Dump cache contents */
-#define CTL_MAX 11
-
-#define CTL_S_UP 1
-#define CTL_S_DOWN 2
-#define CTL_S_RETEST 3
-#define CTL_R_DELETE 1
-#define CTL_R_INVAL 2
-
-void init_stat_sock(void);
-int start_stat_sock(void);
-
-#endif
diff --git a/jni/pdnsd/src/test/Makefile.am b/jni/pdnsd/src/test/Makefile.am
deleted file mode 100644
index 81da088..0000000
--- a/jni/pdnsd/src/test/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-
-.PHONY: all clean distclean
-
-noinst_PROGRAMS = if_up is_local_addr tping random
-
-## Dirty trick: I demand that these objects be built; then, with the knowledge
-## that the object files will end up here, I redefine the link chain.
-
-TESTADDSRC=
-#TESTADDSRC= netdev.c error.c thread.c helpers.c icmp.c
-TESTDEPS = netdev.o error.o thread.o helpers.o icmp.o
-
-TESTOBJS = netdev.o error.o thread.o helpers.o icmp.o
-
-if_up_SOURCES = if_up.c $(TESTADDSRC)
-if_up_LDADD = $(TESTOBJS) @thread_CFLAGS@
-if_up_DEPENDENCIES = $(TESTDEPS)
-
-is_local_addr_SOURCES = is_local_addr.c $(TESTADDSRC)
-is_local_addr_LDADD = $(TESTOBJS) @thread_CFLAGS@
-is_local_addr_DEPENDENCIES = $(TESTDEPS)
-
-tping_SOURCES = tping.c $(TESTADDSRC)
-tping_LDADD = $(TESTOBJS) @thread_CFLAGS@
-tping_DEPENDENCIES = $(TESTDEPS)
-
-random_SOURCES = random.c $(TESTADDSRC)
-random_LDADD = $(TESTOBJS) @thread_CFLAGS@
-random_DEPENDENCIES = $(TESTDEPS)
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = conff.h error.h helpers.h icmp.h ipvers.h netdev.h thread.h cacheing
-
-$(TESTOBJS): %.o: ../%.c
- $(COMPILE) @thread_CFLAGS@ -c $<
diff --git a/jni/pdnsd/src/test/Makefile.in b/jni/pdnsd/src/test/Makefile.in
deleted file mode 100644
index 2ad8641..0000000
--- a/jni/pdnsd/src/test/Makefile.in
+++ /dev/null
@@ -1,464 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-noinst_PROGRAMS = if_up$(EXEEXT) is_local_addr$(EXEEXT) tping$(EXEEXT) \
- random$(EXEEXT)
-subdir = src/test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__objects_1 =
-am_if_up_OBJECTS = if_up.$(OBJEXT) $(am__objects_1)
-if_up_OBJECTS = $(am_if_up_OBJECTS)
-am_is_local_addr_OBJECTS = is_local_addr.$(OBJEXT) $(am__objects_1)
-is_local_addr_OBJECTS = $(am_is_local_addr_OBJECTS)
-am_random_OBJECTS = random.$(OBJEXT) $(am__objects_1)
-random_OBJECTS = $(am_random_OBJECTS)
-am_tping_OBJECTS = tping.$(OBJEXT) $(am__objects_1)
-tping_OBJECTS = $(am_tping_OBJECTS)
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(if_up_SOURCES) $(is_local_addr_SOURCES) $(random_SOURCES) \
- $(tping_SOURCES)
-DIST_SOURCES = $(if_up_SOURCES) $(is_local_addr_SOURCES) \
- $(random_SOURCES) $(tping_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-TESTADDSRC =
-#TESTADDSRC= netdev.c error.c thread.c helpers.c icmp.c
-TESTDEPS = netdev.o error.o thread.o helpers.o icmp.o
-TESTOBJS = netdev.o error.o thread.o helpers.o icmp.o
-if_up_SOURCES = if_up.c $(TESTADDSRC)
-if_up_LDADD = $(TESTOBJS) @thread_CFLAGS@
-if_up_DEPENDENCIES = $(TESTDEPS)
-is_local_addr_SOURCES = is_local_addr.c $(TESTADDSRC)
-is_local_addr_LDADD = $(TESTOBJS) @thread_CFLAGS@
-is_local_addr_DEPENDENCIES = $(TESTDEPS)
-tping_SOURCES = tping.c $(TESTADDSRC)
-tping_LDADD = $(TESTOBJS) @thread_CFLAGS@
-tping_DEPENDENCIES = $(TESTDEPS)
-random_SOURCES = random.c $(TESTADDSRC)
-random_LDADD = $(TESTOBJS) @thread_CFLAGS@
-random_DEPENDENCIES = $(TESTDEPS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/test/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/test/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-if_up$(EXEEXT): $(if_up_OBJECTS) $(if_up_DEPENDENCIES)
- @rm -f if_up$(EXEEXT)
- $(LINK) $(if_up_OBJECTS) $(if_up_LDADD) $(LIBS)
-is_local_addr$(EXEEXT): $(is_local_addr_OBJECTS) $(is_local_addr_DEPENDENCIES)
- @rm -f is_local_addr$(EXEEXT)
- $(LINK) $(is_local_addr_OBJECTS) $(is_local_addr_LDADD) $(LIBS)
-random$(EXEEXT): $(random_OBJECTS) $(random_DEPENDENCIES)
- @rm -f random$(EXEEXT)
- $(LINK) $(random_OBJECTS) $(random_LDADD) $(LIBS)
-tping$(EXEEXT): $(tping_OBJECTS) $(tping_DEPENDENCIES)
- @rm -f tping$(EXEEXT)
- $(LINK) $(tping_OBJECTS) $(tping_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if_up.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_local_addr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tping.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstPROGRAMS ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am
-
-
-.PHONY: all clean distclean
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = conff.h error.h helpers.h icmp.h ipvers.h netdev.h thread.h cacheing
-
-$(TESTOBJS): %.o: ../%.c
- $(COMPILE) @thread_CFLAGS@ -c $<
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/jni/pdnsd/src/test/if_up.c b/jni/pdnsd/src/test/if_up.c
deleted file mode 100644
index af6ec97..0000000
--- a/jni/pdnsd/src/test/if_up.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <config.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../netdev.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
- if (argc!=2) {
- printf("Usage: %s <interface>\n",argv[0]);
- exit(1);
- }
- printf("if_up: %s - %s\n",argv[1],if_up(argv[1])?"up":"down");
- return 0;
-}
diff --git a/jni/pdnsd/src/test/is_local_addr.c b/jni/pdnsd/src/test/is_local_addr.c
deleted file mode 100644
index fda517d..0000000
--- a/jni/pdnsd/src/test/is_local_addr.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <config.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../netdev.h"
-#include "../ipvers.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
- pdnsd_a a;
-
- if (argc!=2) {
- printf("Usage: %s <address>\n",argv[0]);
- exit(1);
- }
-#ifdef ENABLE_IPV4
- if (inet_aton(argv[1],&a.ipv4)) {
-# ifdef ENABLE_IPV6
- run_ipv4=1;
-# endif
- printf("is %s a local addr: %s\n",argv[1],is_local_addr(&a)?"yes":"no");
- return 0;
- }
-#endif
-#ifdef ENABLE_IPV6
- if (inet_pton(AF_INET6,argv[1],&a.ipv6)) {
-# ifdef ENABLE_IPV4
- run_ipv4=0;
-# endif
- printf("is %s a local addr: %s\n",argv[1],is_local_addr(&a)?"yes":"no");
- return 0;
- }
-#endif
- printf("Adress invalid.\n");
- return 0;
-}
diff --git a/jni/pdnsd/src/test/random.c b/jni/pdnsd/src/test/random.c
deleted file mode 100644
index a447e80..0000000
--- a/jni/pdnsd/src/test/random.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <config.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <string.h>
-#include "../helpers.h"
-#include "../conff.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(void)
-{
- init_rng();
- printf("%i\n",(int)get_rand16());
- free_rng();
- return 0;
-}
diff --git a/jni/pdnsd/src/test/tping.c b/jni/pdnsd/src/test/tping.c
deleted file mode 100644
index 734a25f..0000000
--- a/jni/pdnsd/src/test/tping.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <pthread.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../icmp.h"
-#include "../ipvers.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
- pdnsd_a a;
-
- if (argc!=2) {
- printf("Usage: %s <address>\n",argv[0]);
- exit(1);
- }
-#ifdef ENABLE_IPV4
- if (inet_aton(argv[1],&a.ipv4)) {
-# ifdef ENABLE_IPV6
- run_ipv4=1;
-# endif
- init_ping_socket();
- printf("ping (v4) echo from %s: %i\n",argv[1],ping(&a,100,2));
- return 0;
- }
-#endif
-#ifdef ENABLE_IPV6
- if (inet_pton(AF_INET6,argv[1],&a.ipv6)) {
-# ifdef ENABLE_IPV4
- run_ipv4=0;
-# endif
- init_ping_socket();
- printf("ping (v6) echo from %s: %i\n",argv[1],ping(&a,100,2));
- return 0;
- }
-#endif
- printf("Adress invalid.\n");
- return 0;
-}
diff --git a/jni/pdnsd/src/thread.c b/jni/pdnsd/src/thread.c
deleted file mode 100644
index 84c34f6..0000000
--- a/jni/pdnsd/src/thread.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* thread.c - Threading helpers
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2002, 2003 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include "thread.h"
-#include "error.h"
-#include "helpers.h"
-#include "conff.h"
-
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-volatile short int waiting=0; /* Has the main thread already done sigwait() ? */
-#endif
-pthread_attr_t attr_detached;
-#if DEBUG>0
-pthread_key_t thrid_key;
-#endif
-
-/* This is a handler for signals to the threads. We just hand the sigs on to the main thread.
- * Note that this may result in blocked locks. We have no means to open the locks here, because in LinuxThreads
- * the mutex functions are not async-signal safe. So, locks may still be active. We account for this by using
- * softlocks (see below) in any functions called after sigwait from main(). */
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-void thread_sig(int sig)
-{
- if (sig==SIGTSTP || sig==SIGTTOU || sig==SIGTTIN) {
- /* nonfatal signal. Ignore, because proper handling is very difficult. */
- return;
- }
- if (waiting) {
- log_warn("Caught signal %i.",sig);
- if (sig==SIGSEGV || sig==SIGILL || sig==SIGBUS)
- crash_msg("A fatal signal occured.");
- pthread_kill(main_thrid,SIGTERM);
- pthread_exit(NULL);
- } else {
- crash_msg("An error occured at startup.");
- _exit(1);
- }
-}
-#endif
-
-/* This is now defined as an inline function in thread.h */
-#if 0
-void usleep_r(unsigned long usec)
-{
-#if ((TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)) && defined(HAVE_USLEEP)
- usleep(usec);
-#else
- struct timeval tv;
-
- tv.tv_sec=usec/1000000;
- tv.tv_usec=usec%1000000;
- select(0, NULL, NULL, NULL, tv);
-#endif
-}
-#endif
-
diff --git a/jni/pdnsd/src/thread.h b/jni/pdnsd/src/thread.h
deleted file mode 100644
index 12d17dd..0000000
--- a/jni/pdnsd/src/thread.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* thread.h - Threading helpers
-
- Copyright (C) 2000 Thomas Moestl
- Copyright (C) 2002, 2003, 2005 Paul A. Rombouts
-
- This file is part of the pdnsd package.
-
- pdnsd 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.
-
- pdnsd 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 pdnsd; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _THREAD_H_
-#define _THREAD_H_
-
-#include <config.h>
-#include <pthread.h>
-#include <signal.h>
-
-/* --- from main.c */
-extern sigset_t sigs_msk;
-/* --- */
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-extern volatile short int waiting;
-void thread_sig(int sig);
-#endif
-
-/* These are macros for setting up the signal handling of a new thread. They
- * are needed because the LinuxThreads implementation obviously has some
- * problems in signal handling, which makes the recommended solution (doing
- * sigwait() in one thread and blocking the signals in all threads) impossible.
- * So, for Linux, we have to install the fatal_sig handler.
- * It seems to me that signal handlers in fact aren't shared between threads
- * under Linux. Also, sigwait() does not seem to work as indicated in the docs */
-
-/* Note added by Paul Rombouts: In the new Native POSIX Thread Library for Linux (NPTL)
- signal handling has changed from per-thread signal handling to POSIX process signal handling,
- which makes the recommended solution mentioned by Thomas Moestl possible.
- In this case I can simply define THREAD_SIGINIT to be empty.
- The signals are blocked in main() before any threads are created,
- and we simply never unblock them except by calling sigwait() in main(). */
-
-#if (TARGET==TARGET_LINUX)
-# ifdef THREADLIB_NPTL
-# define THREAD_SIGINIT
-# else
-# ifdef THREADLIB_LINUXTHREADS2
-# define THREAD_SIGINIT { \
- struct sigaction action; \
- pthread_sigmask(SIG_UNBLOCK,&sigs_msk,NULL); \
- action.sa_handler = thread_sig; \
- action.sa_mask = sigs_msk; \
- action.sa_flags = 0; \
- sigaction(SIGINT,&action,NULL); \
- sigaction(SIGILL,&action,NULL); \
- sigaction(SIGABRT,&action,NULL); \
- sigaction(SIGFPE,&action,NULL); \
- sigaction(SIGSEGV,&action,NULL); \
- sigaction(SIGTSTP,&action,NULL); \
- sigaction(SIGTTOU,&action,NULL); \
- sigaction(SIGTTIN,&action,NULL); \
- sigaction(SIGTERM,&action,NULL); \
- action.sa_handler = SIG_IGN; \
- sigemptyset(&action.sa_mask); \
- action.sa_flags = 0; \
- sigaction(SIGPIPE,&action,NULL); \
- }
-# else
-# define THREAD_SIGINIT { \
- struct sigaction action; \
- pthread_sigmask(SIG_UNBLOCK,&sigs_msk,NULL); \
- action.sa_handler = thread_sig; \
- action.sa_mask = sigs_msk; \
- action.sa_flags = 0; \
- sigaction(SIGILL,&action,NULL); \
- sigaction(SIGABRT,&action,NULL); \
- sigaction(SIGFPE,&action,NULL); \
- sigaction(SIGSEGV,&action,NULL); \
- sigaction(SIGTSTP,&action,NULL); \
- sigaction(SIGTTOU,&action,NULL); \
- sigaction(SIGTTIN,&action,NULL); \
- action.sa_handler = SIG_IGN; \
- sigemptyset(&action.sa_mask); \
- action.sa_flags = 0; \
- sigaction(SIGPIPE,&action,NULL); \
- }
-# endif
-# endif
-#elif (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-#define THREAD_SIGINIT pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL)
-#else
-# error Unsupported platform!
-#endif
-
-
-/* This is a thread-safe usleep().
- Implementation of the BSD usleep function using nanosleep.
-*/
-inline static int usleep_r(unsigned long useconds)
- __attribute__((always_inline));
-inline static int usleep_r(unsigned long useconds)
-{
- struct timespec ts = { tv_sec: (useconds / 1000000),
- tv_nsec: (useconds % 1000000) * 1000ul };
-
- return nanosleep(&ts, NULL);
-}
-
-/* This is a thread-safe sleep().
- The semantics are somewhat different from the POSIX sleep function,
- but it suits our purposes.
-*/
-inline static int sleep_r (unsigned int seconds)
- __attribute__((always_inline));
-inline static int sleep_r (unsigned int seconds)
-{
- struct timespec ts = { tv_sec: seconds, tv_nsec: 0 };
-
- return nanosleep(&ts, NULL);
-}
-
-
-/* Used for creating detached threads */
-extern pthread_attr_t attr_detached;
-
-#if DEBUG>0
-/* Key for storing private thread ID's */
-extern pthread_key_t thrid_key;
-#endif
-
-#endif
diff --git a/jni/pdnsd/version b/jni/pdnsd/version
deleted file mode 100644
index c400a37..0000000
--- a/jni/pdnsd/version
+++ /dev/null
@@ -1 +0,0 @@
-1.2.9b-par
diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar
deleted file mode 100644
index aa0b1a5..0000000
Binary files a/libs/android-support-v4.jar and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_notifyerr.png b/res/drawable-hdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index 1f97a9e..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor.png b/res/drawable-hdpi-v11/ic_stat_tor.png
deleted file mode 100644
index b4d2e33..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor_off.png b/res/drawable-hdpi-v11/ic_stat_tor_off.png
deleted file mode 100644
index 6df646e..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor_off.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor_xfer.png b/res/drawable-hdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 3d75721..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/inverse.png b/res/drawable-hdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/ic_stat_notifyerr.png b/res/drawable-hdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 58fc5ae..0000000
Binary files a/res/drawable-hdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/ic_stat_tor.png b/res/drawable-hdpi-v9/ic_stat_tor.png
deleted file mode 100644
index 1dfdc09..0000000
Binary files a/res/drawable-hdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/inverse.png b/res/drawable-hdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_action_settings.png b/res/drawable-hdpi/ic_action_settings.png
deleted file mode 100644
index d57b290..0000000
Binary files a/res/drawable-hdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index e9954eb..0000000
Binary files a/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_notifyerr.png b/res/drawable-hdpi/ic_stat_notifyerr.png
deleted file mode 100644
index b65fa64..0000000
Binary files a/res/drawable-hdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_tor.png b/res/drawable-hdpi/ic_stat_tor.png
deleted file mode 100644
index 0f3b147..0000000
Binary files a/res/drawable-hdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_tor_xfer.png b/res/drawable-hdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index d222fb6..0000000
Binary files a/res/drawable-hdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-hdpi/inverse.png b/res/drawable-hdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/ic_stat_notifyerr.png b/res/drawable-ldpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index b73292d..0000000
Binary files a/res/drawable-ldpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/ic_stat_tor.png b/res/drawable-ldpi-v11/ic_stat_tor.png
deleted file mode 100644
index 0f24ee8..0000000
Binary files a/res/drawable-ldpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/inverse.png b/res/drawable-ldpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/ic_stat_notifyerr.png b/res/drawable-ldpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 2787bbb..0000000
Binary files a/res/drawable-ldpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/ic_stat_tor.png b/res/drawable-ldpi-v9/ic_stat_tor.png
deleted file mode 100644
index 82d5446..0000000
Binary files a/res/drawable-ldpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/inverse.png b/res/drawable-ldpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_action_settings.png b/res/drawable-ldpi/ic_action_settings.png
deleted file mode 100644
index c3927fd..0000000
Binary files a/res/drawable-ldpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_launcher.png b/res/drawable-ldpi/ic_launcher.png
deleted file mode 100644
index dd665db..0000000
Binary files a/res/drawable-ldpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_stat_notifyerr.png b/res/drawable-ldpi/ic_stat_notifyerr.png
deleted file mode 100644
index 518e188..0000000
Binary files a/res/drawable-ldpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_stat_tor.png b/res/drawable-ldpi/ic_stat_tor.png
deleted file mode 100644
index 3cd399d..0000000
Binary files a/res/drawable-ldpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi/inverse.png b/res/drawable-ldpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_notifyerr.png b/res/drawable-mdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index 935e209..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_tor.png b/res/drawable-mdpi-v11/ic_stat_tor.png
deleted file mode 100644
index a34840d..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_tor_xfer.png b/res/drawable-mdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index fe291e7..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/inverse.png b/res/drawable-mdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/ic_stat_notifyerr.png b/res/drawable-mdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index b149031..0000000
Binary files a/res/drawable-mdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/ic_stat_tor.png b/res/drawable-mdpi-v9/ic_stat_tor.png
deleted file mode 100644
index c150ced..0000000
Binary files a/res/drawable-mdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/inverse.png b/res/drawable-mdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_action_settings.png b/res/drawable-mdpi/ic_action_settings.png
deleted file mode 100644
index d90f125..0000000
Binary files a/res/drawable-mdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index e45ce29..0000000
Binary files a/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_notifyerr.png b/res/drawable-mdpi/ic_stat_notifyerr.png
deleted file mode 100644
index c4b3178..0000000
Binary files a/res/drawable-mdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_tor.png b/res/drawable-mdpi/ic_stat_tor.png
deleted file mode 100644
index 6649e14..0000000
Binary files a/res/drawable-mdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_tor_xfer.png b/res/drawable-mdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 73ab233..0000000
Binary files a/res/drawable-mdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-mdpi/inverse.png b/res/drawable-mdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_notifyerr.png b/res/drawable-xhdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index bed9e21..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_tor.png b/res/drawable-xhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index e742ae7..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 27e8672..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/inverse.png b/res/drawable-xhdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/ic_stat_notifyerr.png b/res/drawable-xhdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 7d1139c..0000000
Binary files a/res/drawable-xhdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/ic_stat_tor.png b/res/drawable-xhdpi-v9/ic_stat_tor.png
deleted file mode 100644
index 9e56f4f..0000000
Binary files a/res/drawable-xhdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/inverse.png b/res/drawable-xhdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_action_settings.png b/res/drawable-xhdpi/ic_action_settings.png
deleted file mode 100644
index f2572c8..0000000
Binary files a/res/drawable-xhdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 13ee02b..0000000
Binary files a/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_notifyerr.png b/res/drawable-xhdpi/ic_stat_notifyerr.png
deleted file mode 100644
index f48e8e8..0000000
Binary files a/res/drawable-xhdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_tor.png b/res/drawable-xhdpi/ic_stat_tor.png
deleted file mode 100644
index 11254d2..0000000
Binary files a/res/drawable-xhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_tor_xfer.png b/res/drawable-xhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 522d653..0000000
Binary files a/res/drawable-xhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xhdpi/inverse.png b/res/drawable-xhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor.png b/res/drawable-xxhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index 1451c50..0000000
Binary files a/res/drawable-xxhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 59e63d4..0000000
Binary files a/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index c2f2f45..0000000
Binary files a/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_stat_tor.png b/res/drawable-xxhdpi/ic_stat_tor.png
deleted file mode 100644
index 778cc1e..0000000
Binary files a/res/drawable-xxhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_stat_tor_xfer.png b/res/drawable-xxhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index eb8809c..0000000
Binary files a/res/drawable-xxhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/inverse.png b/res/drawable-xxhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xxhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor.png b/res/drawable-xxxhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index a78d290..0000000
Binary files a/res/drawable-xxxhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 30fe589..0000000
Binary files a/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_launcher.png b/res/drawable-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 74a3130..0000000
Binary files a/res/drawable-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_stat_tor.png b/res/drawable-xxxhdpi/ic_stat_tor.png
deleted file mode 100644
index a2ff338..0000000
Binary files a/res/drawable-xxxhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_stat_tor_xfer.png b/res/drawable-xxxhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 8f96779..0000000
Binary files a/res/drawable-xxxhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/inverse.png b/res/drawable-xxxhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xxxhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable/button.xml b/res/drawable/button.xml
deleted file mode 100644
index 4bff579..0000000
--- a/res/drawable/button.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" >
- <shape>
- <solid
- android:color="@color/panel_background" />
- <stroke
- android:width="1dp"
- android:color="#ffffff" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
- <item>
- <shape>
- <gradient
- android:startColor="@color/panel_background_dark"
- android:endColor="@color/panel_background_main"
- android:angle="270" />
- <stroke
- android:width="2dp"
- android:color="#aaaaaa" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/button_off.xml b/res/drawable/button_off.xml
deleted file mode 100644
index 18da286..0000000
--- a/res/drawable/button_off.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" >
- <shape>
- <solid
- android:color="@color/panel_background" />
- <stroke
- android:width="1dp"
- android:color="#ffffff" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
- <item>
- <shape>
- <gradient
- android:startColor="@color/panel_background_dark"
- android:endColor="@color/panel_background_main"
- android:angle="270" />
- <stroke
- android:width="2dp"
- android:color="#555555" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/button_on.xml b/res/drawable/button_on.xml
deleted file mode 100644
index 348a6df..0000000
--- a/res/drawable/button_on.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" >
- <shape>
- <solid
- android:color="@color/bright_green" />
- <stroke
- android:width="1dp"
- android:color="#ffffff" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
- <item>
- <shape>
- <solid
- android:color="@color/dark_green" />
- <stroke
- android:width="1dp"
- android:color="#ffffff" />
- <corners
- android:radius="6dp" />
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape>
- </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/classyfabric.png b/res/drawable/classyfabric.png
deleted file mode 100644
index ca3d267..0000000
Binary files a/res/drawable/classyfabric.png and /dev/null differ
diff --git a/res/drawable/error.png b/res/drawable/error.png
deleted file mode 100644
index 42dc6d6..0000000
Binary files a/res/drawable/error.png and /dev/null differ
diff --git a/res/drawable/ic_chatsecure.png b/res/drawable/ic_chatsecure.png
deleted file mode 100644
index aaddd88..0000000
Binary files a/res/drawable/ic_chatsecure.png and /dev/null differ
diff --git a/res/drawable/ic_duckduckgo.png b/res/drawable/ic_duckduckgo.png
deleted file mode 100644
index 696dcd6..0000000
Binary files a/res/drawable/ic_duckduckgo.png and /dev/null differ
diff --git a/res/drawable/ic_launcher.png b/res/drawable/ic_launcher.png
deleted file mode 100644
index ea47373..0000000
Binary files a/res/drawable/ic_launcher.png and /dev/null differ
diff --git a/res/drawable/ic_menu_about.png b/res/drawable/ic_menu_about.png
deleted file mode 100644
index 866d4e0..0000000
Binary files a/res/drawable/ic_menu_about.png and /dev/null differ
diff --git a/res/drawable/ic_menu_exit.png b/res/drawable/ic_menu_exit.png
deleted file mode 100644
index d301ea6..0000000
Binary files a/res/drawable/ic_menu_exit.png and /dev/null differ
diff --git a/res/drawable/ic_menu_goto.png b/res/drawable/ic_menu_goto.png
deleted file mode 100644
index 40183eb..0000000
Binary files a/res/drawable/ic_menu_goto.png and /dev/null differ
diff --git a/res/drawable/ic_play.png b/res/drawable/ic_play.png
deleted file mode 100644
index a919794..0000000
Binary files a/res/drawable/ic_play.png and /dev/null differ
diff --git a/res/drawable/ic_stat_tor_off.png b/res/drawable/ic_stat_tor_off.png
deleted file mode 100644
index 6df646e..0000000
Binary files a/res/drawable/ic_stat_tor_off.png and /dev/null differ
diff --git a/res/drawable/ic_stat_tor_xfer.png b/res/drawable/ic_stat_tor_xfer.png
deleted file mode 100644
index 73ab233..0000000
Binary files a/res/drawable/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable/ic_twitter.png b/res/drawable/ic_twitter.png
deleted file mode 100644
index 1e61c0a..0000000
Binary files a/res/drawable/ic_twitter.png and /dev/null differ
diff --git a/res/drawable/icon_martus.png b/res/drawable/icon_martus.png
deleted file mode 100644
index e72db19..0000000
Binary files a/res/drawable/icon_martus.png and /dev/null differ
diff --git a/res/drawable/icon_orfox.png b/res/drawable/icon_orfox.png
deleted file mode 100644
index 57ed1f0..0000000
Binary files a/res/drawable/icon_orfox.png and /dev/null differ
diff --git a/res/drawable/icon_story_maker.png b/res/drawable/icon_story_maker.png
deleted file mode 100644
index 9c54ca5..0000000
Binary files a/res/drawable/icon_story_maker.png and /dev/null differ
diff --git a/res/drawable/inverse.png b/res/drawable/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable/inverse.png and /dev/null differ
diff --git a/res/drawable/n8fr8.jpg b/res/drawable/n8fr8.jpg
deleted file mode 100644
index 4939d5c..0000000
Binary files a/res/drawable/n8fr8.jpg and /dev/null differ
diff --git a/res/drawable/oldtoroff.png b/res/drawable/oldtoroff.png
deleted file mode 100644
index 4b23e0b..0000000
Binary files a/res/drawable/oldtoroff.png and /dev/null differ
diff --git a/res/drawable/oldtoron.png b/res/drawable/oldtoron.png
deleted file mode 100644
index a99bec1..0000000
Binary files a/res/drawable/oldtoron.png and /dev/null differ
diff --git a/res/drawable/oldtorstarting.png b/res/drawable/oldtorstarting.png
deleted file mode 100644
index a56844a..0000000
Binary files a/res/drawable/oldtorstarting.png and /dev/null differ
diff --git a/res/drawable/onion32.png b/res/drawable/onion32.png
deleted file mode 100644
index 7846760..0000000
Binary files a/res/drawable/onion32.png and /dev/null differ
diff --git a/res/drawable/tilebg.xml b/res/drawable/tilebg.xml
deleted file mode 100644
index 6f0d2a3..0000000
--- a/res/drawable/tilebg.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/classyfabric"
- android:tileMode="repeat" />
\ No newline at end of file
diff --git a/res/drawable/toggle.xml b/res/drawable/toggle.xml
deleted file mode 100644
index 0f9a36e..0000000
--- a/res/drawable/toggle.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_checked="false"
- android:drawable="@drawable/button_off" />
- <item
- android:state_checked="true"
- android:drawable="@drawable/button_on" />
-</selector>
\ No newline at end of file
diff --git a/res/drawable/tor.png b/res/drawable/tor.png
deleted file mode 100644
index 0d63dd9..0000000
Binary files a/res/drawable/tor.png and /dev/null differ
diff --git a/res/drawable/tor25.png b/res/drawable/tor25.png
deleted file mode 100644
index 20b7666..0000000
Binary files a/res/drawable/tor25.png and /dev/null differ
diff --git a/res/drawable/toroff.png b/res/drawable/toroff.png
deleted file mode 100644
index a72790b..0000000
Binary files a/res/drawable/toroff.png and /dev/null differ
diff --git a/res/drawable/toron.png b/res/drawable/toron.png
deleted file mode 100644
index e3592b1..0000000
Binary files a/res/drawable/toron.png and /dev/null differ
diff --git a/res/drawable/torstarting.png b/res/drawable/torstarting.png
deleted file mode 100644
index 6e84a6f..0000000
Binary files a/res/drawable/torstarting.png and /dev/null differ
diff --git a/res/layout-v21/layout_notification_expanded.xml b/res/layout-v21/layout_notification_expanded.xml
deleted file mode 100644
index 179b95e..0000000
--- a/res/layout-v21/layout_notification_expanded.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:internal="http://schemas.android.com/apk/prv/res/android"
- android:id="@+id/status_bar_latest_event_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#333333"
- >
- <ImageView android:id="@+id/icon"
- android:layout_width="@dimen/notification_large_icon_width"
- android:layout_height="@dimen/notification_large_icon_height"
- android:scaleType="center"
- />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="fill_vertical"
- android:layout_marginStart="@dimen/notification_large_icon_width"
- android:minHeight="@dimen/notification_large_icon_height"
- android:orientation="vertical"
- android:paddingEnd="8dp"
- android:paddingTop="2dp"
- android:paddingBottom="2dp"
- android:gravity="top"
- >
- <LinearLayout
- android:id="@+id/line1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="6dp"
- android:layout_marginStart="8dp"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:layout_weight="1"
- android:textStyle="bold"
- android:textAppearance="@style/NotificationTitle"
- />
-
- </LinearLayout>
- <LinearLayout
- android:id="@+id/line3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginStart="8dp"
- >
- <TextView android:id="@+id/text"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="center"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:textAppearance="@style/NotificationText"
- />
- <TextView android:id="@+id/info"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingStart="8dp"
- android:textAppearance="@style/NotificationText"
- />
- <ImageView android:id="@+id/right_icon"
- android:layout_width="16dp"
- android:layout_height="16dp"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:layout_marginStart="8dp"
- android:scaleType="centerInside"
- android:visibility="gone"
- />
- <!--
- <ImageButton
- android:id="@+id/_tor_notificationBT"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:src="@drawable/nav_refresh" />
- -->
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:orientation="horizontal"
- android:background="#999999"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
-
- />
- <TextView android:id="@+id/text2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="-2dp"
- android:layout_marginBottom="-2dp"
- android:layout_marginStart="8dp"
- android:fadingEdge="horizontal"
- />
- </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/layout_about.xml b/res/layout/layout_about.xml
deleted file mode 100644
index 82f3079..0000000
--- a/res/layout/layout_about.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <ScrollView android:id="@+id/aboutscrollview"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:text="@string/wizard_details"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text="@string/wizard_details_msg"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
-
- <TextView android:text="Version: "
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text="- Unknown -"
- android:id="@+id/versionName"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="15px"
- android:layout_gravity="center_vertical"
- android:textColor="#ffffff" />
- <TextView android:text="@string/project_home"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text="@string/project_urls"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="License: "
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text="@string/the_tor_license"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="@string/https_torproject_org"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="@string/third_party_software"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text="@string/tor_version"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="@string/libevent_version"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="@string/polipo_version"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- <TextView android:text="@string/iptables_version"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff"/>
- <TextView android:text="@string/openssl_version"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
- </LinearLayout>
- </ScrollView>
-</LinearLayout>
diff --git a/res/layout/layout_apps.xml b/res/layout/layout_apps.xml
deleted file mode 100644
index d3633a0..0000000
--- a/res/layout/layout_apps.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:duplicateParentState="true">
-
- <!--
- <TextView android:text="Select apps to use with Tor:"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textSize="16sp"
- android:padding="3px"
- android:layout_above="@+id/applistview"
- />
- -->
-
- <ListView
- android:id="@+id/applistview"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_above="@+id/layout_button_filters"
- android:layout_alignParentTop="true" >
-
- </ListView>
-
- <Button
- android:id="@+id/btnsave"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentLeft="true"
- android:text="@string/button_close" />
-
- <RelativeLayout
- android:id="@+id/layout_button_filters"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_above="@+id/btnsave"
- android:orientation="horizontal" >
-
- <Button
- android:id="@+id/button_proxy_all"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_toLeftOf="@+id/button_proxy_none"
- android:layout_toStartOf="@+id/button_proxy_none"
- android:text="@string/button_proxy_all" />
-
- <Button
- android:id="@+id/button_invert_selection"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentEnd="true"
- android:layout_alignParentTop="true"
- android:text="@string/button_invert_selection" />
-
- <Button
- android:id="@+id/button_proxy_none"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_toLeftOf="@+id/button_invert_selection"
- android:layout_toStartOf="@+id/button_invert_selection"
- android:text="@string/button_proxy_none" />
-
- </RelativeLayout>
-
-</RelativeLayout>
diff --git a/res/layout/layout_apps_item.xml b/res/layout/layout_apps_item.xml
deleted file mode 100644
index 9d16efd..0000000
--- a/res/layout/layout_apps_item.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:stretchColumns="1">
- <TableRow>
- <ImageView android:id="@+id/itemicon" android:layout_width="50dip" android:layout_height="50dip" android:padding="3dip"></ImageView>
-
-<TextView android:layout_height="wrap_content" android:id="@+id/itemtext" android:text="uid:packages" android:textSize="18sp" android:padding="3dip"></TextView>
-
-<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemcheck" ></CheckBox>
-
- </TableRow>
-
-</TableLayout>
-
diff --git a/res/layout/layout_diag.xml b/res/layout/layout_diag.xml
deleted file mode 100644
index c19a5b1..0000000
--- a/res/layout/layout_diag.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ScrollView android:id="@+id/aboutscrollview"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <TextView
- android:id="@+id/diaglog"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_margin="9dp"
- />
-</ScrollView>
\ No newline at end of file
diff --git a/res/layout/layout_help.xml b/res/layout/layout_help.xml
deleted file mode 100644
index da29a52..0000000
--- a/res/layout/layout_help.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- <ScrollView android:id="@+id/helpscrollview"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:text=""
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textColor="#ffffff" />
- </LinearLayout>
- </ScrollView>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/layout_log.xml b/res/layout/layout_log.xml
deleted file mode 100644
index b9c7623..0000000
--- a/res/layout/layout_log.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
- <RelativeLayout android:id="@+id/layoutHeaderMain"
- android:layout_width="fill_parent"
- android:layout_height="30dp"
- android:layout_gravity="center_horizontal"
- android:background="#A0909090">
- <ImageView android:id="@+id/radioModeImage"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="0px"
- android:layout_marginRight="3px"
- android:gravity="right"
- android:layout_toRightOf="@+id/radioModeLabel"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:src="@drawable/tor25"
- />
- <TextView android:id="@+id/radioModeText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/powered_by"
- android:layout_marginTop="9px"
- android:layout_marginRight="0px"
- android:gravity="right"
- android:layout_toLeftOf="@+id/radioModeImage"
- android:textColor="#333333" />
- </RelativeLayout>
-
- <ScrollView android:orientation="vertical"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent" android:id="@+id/logScrollView"
- >
-
- <TextView android:id="@+id/messageLog"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_x="2px"
- android:layout_y="2px"
- android:textSize="14px"
- android:background="#A0222222"
- />
-
- </ScrollView>
-
- </LinearLayout>
-
\ No newline at end of file
diff --git a/res/layout/layout_main.xml b/res/layout/layout_main.xml
deleted file mode 100644
index 4a041c3..0000000
--- a/res/layout/layout_main.xml
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout android:gravity="center_vertical|center_horizontal"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="match_parent"
- android:layout_height="match_parent"
-
- >
-
- <android.support.v7.widget.Toolbar
- android:id="@+id/toolbar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/actionBarSize" />
- <android.support.v4.widget.DrawerLayout
- android:id="@+id/drawer_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
-
-<LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/content_frame"
- >
-
- <LinearLayout android:gravity="center_vertical|center_horizontal"
- android:orientation="vertical" android:layout_width="match_parent"
- android:layout_height="wrap_content"
-
- >
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
-
- >
-
-
- <!--
- <TextView android:id="@+id/lblStatus"
- android:text="status status status"
- android:gravity="center_horizontal"
- android:textSize="20sp"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="10dp"
- android:layout_marginTop="10dp"
- android:layout_marginLeft="40dp"
- android:layout_marginRight="40dp"
- android:textColor="#ffffff"
- android:maxLines="1"
- android:fontFamily="sans-serif-light"
- />
- -->
-
- <RelativeLayout
- android:id="@+id/rowTrafficDown"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingLeft="3sp"
- android:paddingRight="3sp"
-
- >
- <TextView
- android:id="@+id/trafficLabelDown"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:textSize="15sp"
- android:text="@string/main_layout_download"
- android:gravity="center_vertical"
- android:fontFamily="sans-serif-light" />
- <TextView
- android:id="@+id/trafficLabelUp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:text="@string/main_layout_upload"
- android:textSize="15sp"
- android:gravity="center_vertical"
- android:fontFamily="sans-serif-light" />
-
- </RelativeLayout>
- <RelativeLayout
- android:id="@+id/rowTrafficUp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="3sp"
- android:paddingRight="3sp"
- android:paddingBottom="3sp"
-
- >
- <TextView
- android:id="@+id/trafficDown"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:textSize="15sp"
- android:gravity="center_vertical"
- android:fontFamily="sans-serif-light"
- />
-
- <TextView
- android:id="@+id/trafficUp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:textSize="15sp"
- android:gravity="center_vertical"
- android:fontFamily="sans-serif-light"
- />
- </RelativeLayout>
- </LinearLayout>
-
-
- <ProgressBar
- android:id="@+id/pbConnecting"
- style="?android:attr/progressBarStyleLarge"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="60dp"
- android:visibility="gone"
-
-android:layout_gravity="center_horizontal|center_vertical"/>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/frameMain"
- android:visibility="visible"
- android:orientation="vertical"
- android:layout_gravity="center_horizontal|center_vertical"
- >
- <org.torproject.android.ui.ImageProgressView
- android:id="@+id/imgStatus"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight=".8"
-
- android:padding="0dp"
- android:layout_margin="0dp"
- android:src="@drawable/toroff" />
-
- <TextView
- android:id="@+id/lblStatus"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textSize="14sp"
- android:gravity="center_horizontal"
- android:fontFamily="sans-serif-light"
- android:text=""
- android:lines="2"
- android:maxLines="2"
- android:layout_gravity="center_horizontal"
- android:layout_margin="0dp"
- android:layout_marginLeft="5dp"
- android:layout_marginRight="5dp"
- />
-
- <LinearLayout android:gravity="center_horizontal"
- android:orientation="horizontal" android:layout_width="match_parent"
- android:layout_height="wrap_content"
-
- android:layout_gravity="bottom"
- >
-
- <Button
- android:id="@+id/btnBrowser"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/menu_verify_browser"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
- android:ellipsize="end"
- android:singleLine="true"
- />
-
-
- <ToggleButton
- android:id="@+id/btnVPN"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textOff="@string/menu_vpn"
- android:textOn="@string/menu_vpn"
- android:layout_margin="3dp"
- android:ellipsize="end"
- android:singleLine="true"
- />
-
-
- <ToggleButton
- android:id="@+id/btnBridges"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textOff="@string/bridges"
- android:textOn="@string/bridges"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
- android:ellipsize="end"
- android:singleLine="true"
- />
-
- <Spinner
- android:id="@+id/spinnerCountry"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1" />
-
- </LinearLayout>
- </LinearLayout>
-
- </LinearLayout>
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="320dp"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/left_drawer"
- android:layout_gravity="start"
- android:background="#333333"
- >
- <TextView
- android:id="@+id/orbotLog"
- android:textSize="12sp"
- android:gravity="left"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_marginTop="10dp"
- android:textIsSelectable="true"
- android:fontFamily="monospace"
- />
- </LinearLayout>
-
- </android.support.v4.widget.DrawerLayout>
-
-</LinearLayout>
-
-
diff --git a/res/layout/layout_notification_expanded.xml b/res/layout/layout_notification_expanded.xml
deleted file mode 100644
index c2a9c9e..0000000
--- a/res/layout/layout_notification_expanded.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:internal="http://schemas.android.com/apk/prv/res/android"
- android:id="@+id/status_bar_latest_event_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- >
- <ImageView android:id="@+id/icon"
- android:layout_width="@dimen/notification_large_icon_width"
- android:layout_height="@dimen/notification_large_icon_height"
- android:scaleType="center"
- />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="fill_vertical"
- android:layout_marginStart="@dimen/notification_large_icon_width"
- android:minHeight="@dimen/notification_large_icon_height"
- android:orientation="vertical"
- android:paddingEnd="8dp"
- android:paddingTop="2dp"
- android:paddingBottom="2dp"
- android:gravity="top"
- >
- <LinearLayout
- android:id="@+id/line1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="6dp"
- android:layout_marginStart="8dp"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:layout_weight="1"
- android:textStyle="bold"
- android:textAppearance="@style/NotificationTitle"
- />
-
- </LinearLayout>
- <LinearLayout
- android:id="@+id/line3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginStart="8dp"
- >
- <TextView android:id="@+id/text"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="center"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:textAppearance="@style/NotificationText"
- />
- <TextView android:id="@+id/info"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingStart="8dp"
- android:textAppearance="@style/NotificationText"
- />
- <ImageView android:id="@+id/right_icon"
- android:layout_width="16dp"
- android:layout_height="16dp"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:layout_marginStart="8dp"
- android:scaleType="centerInside"
- android:visibility="gone"
- />
- <!--
- <ImageButton
- android:id="@+id/_tor_notificationBT"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:src="@drawable/nav_refresh" />
- -->
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:orientation="horizontal"
- android:background="#999999"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
-
- />
- <TextView android:id="@+id/text2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="-2dp"
- android:layout_marginBottom="-2dp"
- android:layout_marginStart="8dp"
- android:fadingEdge="horizontal"
- />
- </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/layout_promo_apps.xml b/res/layout/layout_promo_apps.xml
deleted file mode 100644
index 00c1f6f..0000000
--- a/res/layout/layout_promo_apps.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
-
-<TableLayout android:id="@+id/TableLayout01" android:stretchColumns="*" android:layout_height="fill_parent" android:layout_width="wrap_content">
-
-<TableRow android:layout_margin="10dip" android:id="@+id/TableRow01" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="fill_parent">
-
-
- <ScrollView android:id="@+id/helpscrollview"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_span="3">
-
-<LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#575757"
- android:orientation="vertical"
- android:paddingRight="20dip" >
-
- <TextView
- android:id="@+id/WizardTextBody1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0.31"
- android:padding="20dip"
- android:text="@string/wizard_tips_msg"
- android:textColor="#ffffff"
- android:textSize="8pt" >
- </TextView>
-
- <Button
- android:id="@+id/WizardRootButtonInstallOrweb"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_orfox"
- android:text="@string/wizard_tips_orweb" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallGibberbot"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_chatsecure"
- android:text="@string/wizard_tips_gibberbot" />
-
-
- <Button
- android:id="@+id/WizardRootButtonInstallDuckgo"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_duckduckgo"
- android:text="@string/wizard_tips_duckgo" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallTwitter"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_twitter"
- android:text="@string/wizard_tips_twitter" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallStoryMaker"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_story_maker"
- android:text="@string/wizard_tips_story_maker" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallMartus"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_martus"
- android:text="@string/wizard_tips_martus" />
-
- <Button
- android:id="@+id/WizardRootButtonGooglePlay"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_play"
- android:text="@string/wizard_tips_fdroid_org" />
-
-
-</LinearLayout>
-
- </ScrollView>
-
-</TableRow>
-<TableRow android:background="#000000" android:layout_marginTop="10dip" android:paddingTop="10dip" android:id="@+id/TableRow02" android:textColor="#00ff00" android:layout_width="fill_parent" android:layout_height="30px">
- <!-- <Button android:text="@string/btn_back" android:id="@+id/btnWizard1" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button> -->
- <Button android:text="@string/btn_okay" android:id="@+id/btnWizard2" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
-</TableRow>
-</TableLayout>
-</LinearLayout>
-
-
diff --git a/res/layout/layout_settings.xml b/res/layout/layout_settings.xml
deleted file mode 100644
index f9b6971..0000000
--- a/res/layout/layout_settings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
-
- <ScrollView android:layout_height="380px"
- android:layout_width="fill_parent">
-
- <EditText android:id="@+id/textSettings"
- android:layout_height="fill_parent"
- android:layout_width="fill_parent"
- android:layout_weight="1.0"
- android:singleLine="false"
- android:textSize="11px"
- />
-
- </ScrollView>
-
- <Button android:id="@+id/btnSettingsSave"
- android:layout_width="fill_parent"
- android:layout_height="40px"
- android:text="@string/btn_save_settings"
- android:layout_margin="0sp"
-
-
- />
-</LinearLayout>
diff --git a/res/layout/layout_vpn_setup.xml b/res/layout/layout_vpn_setup.xml
deleted file mode 100644
index 5d2c6dc..0000000
--- a/res/layout/layout_vpn_setup.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView android:id="@+id/aboutscrollview"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="fill_parent">
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:text="Apps Mode"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15px"
- android:paddingLeft="15px"
- android:textStyle="bold"
- android:textColor="#00ff00" />
- <TextView android:text=""
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:textColorLink="#ffffff"
- android:paddingLeft="15px"
- android:textColor="#ffffff" />
-
- <Button android:id="@+id/btnActivateVPN"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Activate"
- android:layout_margin="0sp"/>
-
- </LinearLayout>
- </ScrollView>
diff --git a/res/layout/notification_template_part_chronometer.xml b/res/layout/notification_template_part_chronometer.xml
deleted file mode 100644
index 14a4758..0000000
--- a/res/layout/notification_template_part_chronometer.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<Chronometer android:id="@+id/chronometer" xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingStart="8dp"
- />
diff --git a/res/layout/notification_template_part_time.xml b/res/layout/notification_template_part_time.xml
deleted file mode 100644
index e3b91fa..0000000
--- a/res/layout/notification_template_part_time.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<DateTimeView android:id="@+id/time" xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingStart="8dp"
- />
diff --git a/res/layout/scrollingtext_buttons_view.xml b/res/layout/scrollingtext_buttons_view.xml
deleted file mode 100644
index beea00a..0000000
--- a/res/layout/scrollingtext_buttons_view.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
-
-
-
-<TableLayout android:id="@+id/TableLayout01" android:stretchColumns="*" android:layout_height="fill_parent" android:layout_width="wrap_content" >
-
-<TableRow android:id="@+id/TableRow01" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dip">
-
-
- <ScrollView android:id="@+id/helpscrollview"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_span="3">
-
- <TextView android:background="#575757" android:text="this is sample text this is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample text" android:textColor="#ffffff" android:id="@+id/WizardTextBody" android:textSize="8pt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dip"></TextView>
-
- </ScrollView>
-
-</TableRow>
-<TableRow android:background="#000000" android:id="@+id/TableRow01" android:textColor="#00ff00" android:layout_width="fill_parent" android:layout_height="30px" android:layout_marginTop="10dip" android:paddingTop="10dip">
- <Button android:text="@string/btn_back" android:id="@+id/btnWizard1" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
- <Button android:text="@string/btn_next" android:id="@+id/btnWizard2" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
-</TableRow>
-</TableLayout>
-</LinearLayout>
-
-
diff --git a/res/menu/orbot_main.xml b/res/menu/orbot_main.xml
deleted file mode 100644
index 9f97a81..0000000
--- a/res/menu/orbot_main.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 Esmertec AG.
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:yourapp="http://schemas.android.com/apk/res-auto"
- >
-
- <item android:id="@+id/menu_settings"
- android:title="@string/menu_settings"
- android:icon="@drawable/ic_action_settings"
- yourapp:showAsAction="always"
- />
-
- <item
- android:title="@string/menu_qr"
- android:showAsAction="never"
- >
- <menu>
- <item android:id="@+id/menu_scan"
- android:title="@string/menu_scan"
- android:showAsAction="never"
- />
-
- <item android:id="@+id/menu_share_bridge"
- android:title="@string/menu_share_bridge"
- android:showAsAction="never"
- />
- </menu>
- </item>
-
-
-
- <item android:id="@+id/menu_promo_apps"
- android:title="@string/menu_promo_apps"
- android:icon="@drawable/ic_menu_goto"
- android:showAsAction="never"
-
- />
-
- <item android:id="@+id/menu_about"
- android:title="@string/menu_about"
- android:icon="@drawable/ic_menu_about"
- android:showAsAction="never"
-
- />
-
- <item android:id="@+id/menu_exit"
- android:title="@string/menu_exit"
- android:icon="@drawable/ic_menu_exit"
- android:showAsAction="never"
-
- />
-
-</menu>
diff --git a/res/menu/share_menu.xml b/res/menu/share_menu.xml
deleted file mode 100644
index 2352da0..0000000
--- a/res/menu/share_menu.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_item_share"
- android:showAsAction="always"
- android:title="Share Log" />
-
-</menu>
\ No newline at end of file
diff --git a/res/raw/geoip.mp3 b/res/raw/geoip.mp3
deleted file mode 100644
index 3db9c63..0000000
Binary files a/res/raw/geoip.mp3 and /dev/null differ
diff --git a/res/raw/geoip6.mp3 b/res/raw/geoip6.mp3
deleted file mode 100644
index 0e439b9..0000000
--- a/res/raw/geoip6.mp3
+++ /dev/null
@@ -1,1663 +0,0 @@
-
-
-
-
-<!DOCTYPE html>
-<html lang="en" class="">
- <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
- <meta charset='utf-8'>
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta http-equiv="Content-Language" content="en">
-
-
- <title>orbot/geoip6.mp3 at master · n8fr8/orbot</title>
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
- <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
- <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
- <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
- <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
- <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
- <meta property="fb:app_id" content="1401488693436528">
-
- <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="n8fr8/orbot" name="twitter:title" /><meta content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git" name="twitter:description" /><meta content="https://avatars1.githubusercontent.com/u/30851?v=3&s=400" name="twitter:image:src" />
-<meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars1.githubusercontent.com/u/30851?v=3&s=400" property="og:image" /><meta content="n8fr8/orbot" property="og:title" /><meta content="https://github.com/n8fr8/orbot" property="og:url" /><meta content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git" property="og:description" />
-
- <meta name="browser-stats-url" content="/_stats">
- <link rel="assets" href="https://assets-cdn.github.com/">
- <link rel="conduit-xhr" href="https://ghconduit.com:25035">
- <link rel="xhr-socket" href="/_sockets">
- <meta name="pjax-timeout" content="1000">
- <link rel="sudo-modal" href="/sessions/sudo_modal">
-
- <meta name="msapplication-TileImage" content="/windows-tile.png">
- <meta name="msapplication-TileColor" content="#ffffff">
- <meta name="selected-link" value="repo_source" data-pjax-transient>
- <meta name="google-analytics" content="UA-3769691-2">
-
- <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="D10693A5:67D1:B7ACB61:5460FBA6" name="octolytics-dimension-request_id" /><meta content="30851" name="octolytics-actor-id" /><meta content="n8fr8" name="octolytics-actor-login" /><meta content="49360e5b97233bb7342ef464ba150d5510000db2a2342cda0caf1f5b272307ea" name="octolytics-actor-hash" />
-
- <meta content="Rails, view, blob#show" name="analytics-event" />
-
-
-
- <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
-
-
- <meta content="authenticity_token" name="csrf-param" />
-<meta content="IYMVx4jhFZWjsIbaBF2PfpJkJd+JDhomrwrNBcgVWt/2AyRQihknFfGD+XTHggwxwlRUZOQOcm9F6eyHHLjfCQ==" name="csrf-token" />
-
- <link href="https://assets-cdn.github.com/assets/github-2fb9b25b51546977e75d8ae9e070af4aadc0746368d44698ea83ec6e76cb392b.css" media="all" rel="stylesheet" type="text/css" />
- <link href="https://assets-cdn.github.com/assets/github2-cbef91bb0032999dd66abd1af1d76685d497d0815df7a0c7761bf4c09c06b714.css" media="all" rel="stylesheet" type="text/css" />
-
-
-
-
- <meta http-equiv="x-pjax-version" content="f1bf8b6c4433c64f418b520942f0c02a">
-
-
- <meta name="description" content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git">
- <meta name="go-import" content="github.com/n8fr8/orbot git https://github.com/n8fr8/orbot.git">
-
- <meta content="30851" name="octolytics-dimension-user_id" /><meta content="n8fr8" name="octolytics-dimension-user_login" /><meta content="20008432" name="octolytics-dimension-repository_id" /><meta content="n8fr8/orbot" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="20008432" name="octolytics-dimension-repository_network_root_id" /><meta content="n8fr8/orbot" name="octolytics-dimension-repository_network_root_nwo" />
- <link href="https://github.com/n8fr8/orbot/commits/master.atom" rel="alternate" title="Recent Commits to orbot:master" type="application/atom+xml">
-
- </head>
-
-
- <body class="logged_in env-production linux vis-public page-blob">
- <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
- <div class="wrapper">
-
-
-
-
-
-
- <div class="header header-logged-in true" role="banner">
- <div class="container clearfix">
-
- <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" ga-data-click="Header, go to dashboard, icon:logo">
- <span class="mega-octicon octicon-mark-github"></span>
-</a>
-
-
- <div class="site-search repo-scope js-site-search" role="search">
- <form accept-charset="UTF-8" action="/n8fr8/orbot/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/n8fr8/orbot/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
- <input type="text"
- class="js-site-search-field is-clearable"
- data-hotkey="s"
- name="q"
- placeholder="Search"
- data-global-scope-placeholder="Search GitHub"
- data-repo-scope-placeholder="Search"
- tabindex="1"
- autocapitalize="off">
- <div class="scope-badge">This repository</div>
-</form>
- </div>
- <ul class="header-nav left" role="navigation">
- <li class="header-nav-item explore">
- <a class="header-nav-link" href="/explore" data-ga-click="Header, go to explore, text:explore">Explore</a>
- </li>
- <li class="header-nav-item">
- <a class="header-nav-link" href="https://gist.github.com" data-ga-click="Header, go to gist, text:gist">Gist</a>
- </li>
- <li class="header-nav-item">
- <a class="header-nav-link" href="/blog" data-ga-click="Header, go to blog, text:blog">Blog</a>
- </li>
- <li class="header-nav-item">
- <a class="header-nav-link" href="https://help.github.com" data-ga-click="Header, go to help, text:help">Help</a>
- </li>
- </ul>
-
-
-<ul class="header-nav user-nav right" id="user-links">
- <li class="header-nav-item dropdown js-menu-container">
- <a class="header-nav-link name" href="/n8fr8" data-ga-click="Header, go to profile, text:username">
- <img alt="n8fr8" class="avatar" data-user="30851" height="20" src="https://avatars3.githubusercontent.com/u/30851?v=3&s=40" width="20" />
- <span class="css-truncate">
- <span class="css-truncate-target">n8fr8</span>
- </span>
- </a>
- </li>
-
- <li class="header-nav-item dropdown js-menu-container">
- <a class="header-nav-link js-menu-target tooltipped tooltipped-s" href="#" aria-label="Create new..." data-ga-click="Header, create new, icon:add">
- <span class="octicon octicon-plus"></span>
- <span class="dropdown-caret"></span>
- </a>
-
- <div class="dropdown-menu-content js-menu-content">
-
-<ul class="dropdown-menu">
- <li>
- <a href="/new"><span class="octicon octicon-repo"></span> New repository</a>
- </li>
- <li>
- <a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
- </li>
-
-
- <li class="dropdown-divider"></li>
- <li class="dropdown-header">
- <span title="n8fr8/orbot">This repository</span>
- </li>
- <li>
- <a href="/n8fr8/orbot/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
- </li>
- <li>
- <a href="/n8fr8/orbot/settings/collaboration"><span class="octicon octicon-person"></span> New collaborator</a>
- </li>
-</ul>
-
- </div>
- </li>
-
- <li class="header-nav-item">
- <a href="/n8fr8/orbot/notifications" aria-label="You have unread notifications in this repository" class="header-nav-link notification-indicator tooltipped tooltipped-s" data-ga-click="Header, go to notifications, icon:unread" data-hotkey="g n">
- <span class="mail-status unread"></span>
- <span class="octicon octicon-inbox"></span>
-</a>
- </li>
-
- <li class="header-nav-item">
- <a class="header-nav-link tooltipped tooltipped-s" href="/settings/profile" id="account_settings" aria-label="Settings" data-ga-click="Header, go to settings, icon:settings">
- <span class="octicon octicon-gear"></span>
- </a>
- </li>
-
- <li class="header-nav-item">
- <form accept-charset="UTF-8" action="/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="HjRChgYajLZtVVXyeH257jhP2/4FAQeXIgc6YcUuMlQHE+D78qgPWo4jRvgAzSSG+HCpblQ+eZViYCWKuCy/ew==" /></div>
- <button class="header-nav-link sign-out-button tooltipped tooltipped-s" aria-label="Sign out" data-ga-click="Header, sign out, icon:logout">
- <span class="octicon octicon-sign-out"></span>
- </button>
-</form> </li>
-
-</ul>
-
-
-
- </div>
-</div>
-
-
-
-
-
-
- <div id="start-of-content" class="accessibility-aid"></div>
- <div class="site" itemscope itemtype="http://schema.org/WebPage">
- <div id="js-flash-container">
-
- </div>
- <div class="pagehead repohead instapaper_ignore readability-menu">
- <div class="container">
-
-<ul class="pagehead-actions">
-
- <li class="subscription">
- <form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="suDhnxjOgyUS/nUDuqsP5VCn+wHKXUuwX1Y2lMWD8rt2ct1innb9/LbTkKkmYnKDfIRpkwMeuLeDaAtAOKlFyA==" /></div> <input id="repository_id" name="repository_id" type="hidden" value="20008432" />
-
- <div class="select-menu js-menu-container js-select-menu">
- <a class="social-count js-social-count" href="/n8fr8/orbot/watchers">
- 1
- </a>
- <a href="/n8fr8/orbot/subscription"
- class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0" aria-haspopup="true">
- <span class="js-select-button">
- <span class="octicon octicon-eye"></span>
- Unwatch
- </span>
- </a>
-
- <div class="select-menu-modal-holder">
- <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true">
- <div class="select-menu-header">
- <span class="select-menu-title">Notifications</span>
- <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
- </div> <!-- /.select-menu-header -->
-
- <div class="select-menu-list js-navigation-container" role="menu">
-
- <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input id="do_included" name="do" type="radio" value="included" />
- <h4>Not watching</h4>
- <span class="description">Be notified when participating or @mentioned.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-eye"></span>
- Watch
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
-
- <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
- <h4>Watching</h4>
- <span class="description">Be notified of all conversations.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-eye"></span>
- Unwatch
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
-
- <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input id="do_ignore" name="do" type="radio" value="ignore" />
- <h4>Ignoring</h4>
- <span class="description">Never be notified.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-mute"></span>
- Stop ignoring
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
-
- </div> <!-- /.select-menu-list -->
-
- </div> <!-- /.select-menu-modal -->
- </div> <!-- /.select-menu-modal-holder -->
- </div> <!-- /.select-menu -->
-
-</form>
- </li>
-
- <li>
-
- <div class="js-toggler-container js-social-container starring-container ">
-
- <form accept-charset="UTF-8" action="/n8fr8/orbot/unstar" class="js-toggler-form starred js-unstar-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="kAC65QMMg5xEzDd3tUiIxGzYEzoiv1MemXsSlQYQgOFoiVJ/tTWLqnBbeFn0y7SbwFEjNfM+yLDV6vO/frw1Ew==" /></div>
- <button
- class="minibutton with-count js-toggler-target star-button"
- aria-label="Unstar this repository" title="Unstar n8fr8/orbot">
- <span class="octicon octicon-star"></span>
- Unstar
- </button>
- <a class="social-count js-social-count" href="/n8fr8/orbot/stargazers">
- 4
- </a>
-</form>
- <form accept-charset="UTF-8" action="/n8fr8/orbot/star" class="js-toggler-form unstarred js-star-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="4AA5vm/aRGfPxhwOSDd57h4X5OOdm/O6Se/MKrg2lPw07oNp5MvJk3mF6X4FkNM89OhxIC812fQUZY4KYJl35g==" /></div>
- <button
- class="minibutton with-count js-toggler-target star-button"
- aria-label="Star this repository" title="Star n8fr8/orbot">
- <span class="octicon octicon-star"></span>
- Star
- </button>
- <a class="social-count js-social-count" href="/n8fr8/orbot/stargazers">
- 4
- </a>
-</form> </div>
-
- </li>
-
-
- <li>
- <a href="/n8fr8/orbot/fork" class="minibutton with-count js-toggler-target fork-button tooltipped-n" title="Fork your own copy of n8fr8/orbot to your account" aria-label="Fork your own copy of n8fr8/orbot to your account" rel="facebox nofollow">
- <span class="octicon octicon-repo-forked"></span>
- Fork
- </a>
- <a href="/n8fr8/orbot/network" class="social-count">4</a>
- </li>
-
-</ul>
-
- <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
- <span class="mega-octicon octicon-repo"></span>
- <span class="author"><a href="/n8fr8" class="url fn" itemprop="url" rel="author"><span itemprop="title">n8fr8</span></a></span><!--
- --><span class="path-divider">/</span><!--
- --><strong><a href="/n8fr8/orbot" class="js-current-repository js-repo-home-link" data-pjax-container-selector="#js-repo-pjax-container">orbot</a></strong>
-
- <span class="page-context-loader">
- <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </span>
-
- </h1>
- </div><!-- /.container -->
- </div><!-- /.repohead -->
-
- <div class="container">
- <div class="repository-with-sidebar repo-container new-discussion-timeline ">
- <div class="repository-sidebar clearfix">
-
-<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders" role="navigation" data-issue-count-url="/n8fr8/orbot/issues/counts" data-pjax-container-selector="#js-repo-pjax-container">
- <ul class="sunken-menu-group">
- <li class="tooltipped tooltipped-w" aria-label="Code">
- <a href="/n8fr8/orbot" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /n8fr8/orbot">
- <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
-
- <li class="tooltipped tooltipped-w" aria-label="Issues">
- <a href="/n8fr8/orbot/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /n8fr8/orbot/issues">
- <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
- <span class="js-issue-replace-counter"></span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
-
- <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
- <a href="/n8fr8/orbot/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g p" data-selected-links="repo_pulls /n8fr8/orbot/pulls">
- <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
- <span class="js-pull-replace-counter"></span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
-
-
- <li class="tooltipped tooltipped-w" aria-label="Wiki">
- <a href="/n8fr8/orbot/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g w" data-selected-links="repo_wiki /n8fr8/orbot/wiki">
- <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
- </ul>
- <div class="sunken-menu-separator"></div>
- <ul class="sunken-menu-group">
-
- <li class="tooltipped tooltipped-w" aria-label="Pulse">
- <a href="/n8fr8/orbot/pulse/weekly" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /n8fr8/orbot/pulse/weekly">
- <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
-
- <li class="tooltipped tooltipped-w" aria-label="Graphs">
- <a href="/n8fr8/orbot/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /n8fr8/orbot/graphs">
- <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
- </ul>
-
-
- <div class="sunken-menu-separator"></div>
- <ul class="sunken-menu-group">
- <li class="tooltipped tooltipped-w" aria-label="Settings">
- <a href="/n8fr8/orbot/settings" aria-label="Settings" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_settings /n8fr8/orbot/settings">
- <span class="octicon octicon-tools"></span> <span class="full-word">Settings</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a> </li>
- </ul>
-</nav>
-
- <div class="only-with-full-nav">
-
-
-<div class="clone-url open"
- data-protocol-type="http"
- data-url="/users/set_protocol?protocol_selector=http&protocol_type=push">
- <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
- <div class="input-group">
- <input type="text" class="input-mini input-monospace js-url-field"
- value="https://github.com/n8fr8/orbot.git" readonly="readonly">
- <span class="input-group-button">
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/n8fr8/orbot.git" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
-</div>
-
-
-<div class="clone-url "
- data-protocol-type="ssh"
- data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=push">
- <h3><span class="text-emphasized">SSH</span> clone URL</h3>
- <div class="input-group">
- <input type="text" class="input-mini input-monospace js-url-field"
- value="git@xxxxxxxxxx:n8fr8/orbot.git" readonly="readonly">
- <span class="input-group-button">
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="git@xxxxxxxxxx:n8fr8/orbot.git" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
-</div>
-
-
-<div class="clone-url "
- data-protocol-type="subversion"
- data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=push">
- <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
- <div class="input-group">
- <input type="text" class="input-mini input-monospace js-url-field"
- value="https://github.com/n8fr8/orbot" readonly="readonly">
- <span class="input-group-button">
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/n8fr8/orbot" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
-</div>
-
-
-<p class="clone-options">You can clone with
- <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
- <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
- or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
- <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
- <span class="octicon octicon-question"></span>
- </a>
-</p>
-
-
-
- <a href="/n8fr8/orbot/archive/master.zip"
- class="minibutton sidebar-button"
- aria-label="Download the contents of n8fr8/orbot as a zip file"
- title="Download the contents of n8fr8/orbot as a zip file"
- rel="nofollow">
- <span class="octicon octicon-cloud-download"></span>
- Download ZIP
- </a>
- </div>
- </div><!-- /.repository-sidebar -->
-
- <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
-
-
-<a href="/n8fr8/orbot/blob/3c4642cc823ac5ec30993ad2eb8af2a0efcfef39/res/raw/geoip6.mp3" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
-
-<!-- blob contrib key: blob_contributors:v21:4e79b88b33c0a5c810d7088e347629bf -->
-
-<div class="file-navigation">
-
-<div class="select-menu js-menu-container js-select-menu left">
- <span class="minibutton select-menu-button js-menu-target css-truncate" data-hotkey="w"
- data-master-branch="master"
- data-ref="master"
- title="master"
- role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
- <span class="octicon octicon-git-branch"></span>
- <i>branch:</i>
- <span class="js-select-button css-truncate-target">master</span>
- </span>
-
- <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
-
- <div class="select-menu-modal">
- <div class="select-menu-header">
- <span class="select-menu-title">Switch branches/tags</span>
- <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
- </div> <!-- /.select-menu-header -->
-
- <div class="select-menu-filters">
- <div class="select-menu-text-filter">
- <input type="text" aria-label="Find or create a branchâ?¦" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branchâ?¦">
- </div>
- <div class="select-menu-tabs">
- <ul>
- <li class="select-menu-tab">
- <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
- </li>
- <li class="select-menu-tab">
- <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
- </li>
- </ul>
- </div><!-- /.select-menu-tabs -->
- </div><!-- /.select-menu-filters -->
-
- <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
-
- <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/amoghbl1-issue_3014_wizard_workflow/res/raw/geoip6.mp3"
- data-name="amoghbl1-issue_3014_wizard_workflow"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="amoghbl1-issue_3014_wizard_workflow">amoghbl1-issue_3014_wizard_workflow</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/amoghbl1-new_notification_expanded/res/raw/geoip6.mp3"
- data-name="amoghbl1-new_notification_expanded"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="amoghbl1-new_notification_expanded">amoghbl1-new_notification_expanded</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_2803_jabberdotorg/res/raw/geoip6.mp3"
- data-name="bug_2803_jabberdotorg"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_2803_jabberdotorg">bug_2803_jabberdotorg</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_build_fix_mvdan/res/raw/geoip6.mp3"
- data-name="bug_build_fix_mvdan"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_build_fix_mvdan">bug_build_fix_mvdan</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_fix_binary_install/res/raw/geoip6.mp3"
- data-name="bug_fix_binary_install"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_fix_binary_install">bug_fix_binary_install</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_transproxy_fixes/res/raw/geoip6.mp3"
- data-name="bug_transproxy_fixes"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_transproxy_fixes">bug_transproxy_fixes</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_ui_disconnect/res/raw/geoip6.mp3"
- data-name="bug_ui_disconnect"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_ui_disconnect">bug_ui_disconnect</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bug_wizard_cleanup/res/raw/geoip6.mp3"
- data-name="bug_wizard_cleanup"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bug_wizard_cleanup">bug_wizard_cleanup</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/bugs_v13_fixes/res/raw/geoip6.mp3"
- data-name="bugs_v13_fixes"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="bugs_v13_fixes">bugs_v13_fixes</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/dev_orbotvpn/res/raw/geoip6.mp3"
- data-name="dev_orbotvpn"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="dev_orbotvpn">dev_orbotvpn</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/feature_add_orchid/res/raw/geoip6.mp3"
- data-name="feature_add_orchid"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="feature_add_orchid">feature_add_orchid</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/feature_remove_abs/res/raw/geoip6.mp3"
- data-name="feature_remove_abs"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="feature_remove_abs">feature_remove_abs</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/hans_build_patches/res/raw/geoip6.mp3"
- data-name="hans_build_patches"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="hans_build_patches">hans_build_patches</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/hans_feature_desc/res/raw/geoip6.mp3"
- data-name="hans_feature_desc"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="hans_feature_desc">hans_feature_desc</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item selected">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/master/res/raw/geoip6.mp3"
- data-name="master"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="master">master</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/blob/v13_dev/res/raw/geoip6.mp3"
- data-name="v13_dev"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="v13_dev">v13_dev</a>
- </div> <!-- /.select-menu-item -->
- </div>
-
- <form accept-charset="UTF-8" action="/n8fr8/orbot/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="4z8e4vvpHHxLttekMVFIaQiGVX+Fysb6mixyner/ETQP59dBPuIXvJl6rS80FV+ueWr2OJHjj8rNg3qOFu0rww==" /></div>
- <span class="octicon octicon-git-branch select-menu-item-icon"></span>
- <div class="select-menu-item-text">
- <h4>Create branch: <span class="js-new-item-name"></span></h4>
- <span class="description">from â??masterâ??</span>
- </div>
- <input type="hidden" name="name" id="name" class="js-new-item-value">
- <input type="hidden" name="branch" id="branch" value="master">
- <input type="hidden" name="path" id="path" value="res/raw/geoip6.mp3">
- </form> <!-- /.select-menu-item -->
-
- </div> <!-- /.select-menu-list -->
-
- <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
- <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/v12-beta-tor-0.2.4.15-rc/res/raw/geoip6.mp3"
- data-name="v12-beta-tor-0.2.4.15-rc"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="v12-beta-tor-0.2.4.15-rc">v12-beta-tor-0.2.4.15-rc</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/v11-RC2/res/raw/geoip6.mp3"
- data-name="v11-RC2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="v11-RC2">v11-RC2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.7.1/res/raw/geoip6.mp3"
- data-name="14.0.7.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.7.1">14.0.7.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.7/res/raw/geoip6.mp3"
- data-name="14.0.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.7">14.0.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.6/res/raw/geoip6.mp3"
- data-name="14.0.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.6">14.0.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5-beta-2/res/raw/geoip6.mp3"
- data-name="14.0.5-beta-2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5-beta-2">14.0.5-beta-2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5-beta/res/raw/geoip6.mp3"
- data-name="14.0.5-beta"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5-beta">14.0.5-beta</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5-RC1/res/raw/geoip6.mp3"
- data-name="14.0.5-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5-RC1">14.0.5-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5.4/res/raw/geoip6.mp3"
- data-name="14.0.5.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5.4">14.0.5.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5.3/res/raw/geoip6.mp3"
- data-name="14.0.5.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5.3">14.0.5.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5.2/res/raw/geoip6.mp3"
- data-name="14.0.5.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5.2">14.0.5.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5.1/res/raw/geoip6.mp3"
- data-name="14.0.5.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5.1">14.0.5.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.5/res/raw/geoip6.mp3"
- data-name="14.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.5">14.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.4.3/res/raw/geoip6.mp3"
- data-name="14.0.4.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.4.3">14.0.4.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.4.2/res/raw/geoip6.mp3"
- data-name="14.0.4.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.4.2">14.0.4.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.4.1/res/raw/geoip6.mp3"
- data-name="14.0.4.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.4.1">14.0.4.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.4/res/raw/geoip6.mp3"
- data-name="14.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.4">14.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.3.1/res/raw/geoip6.mp3"
- data-name="14.0.3.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.3.1">14.0.3.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.3/res/raw/geoip6.mp3"
- data-name="14.0.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.3">14.0.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.2.1/res/raw/geoip6.mp3"
- data-name="14.0.2.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.2.1">14.0.2.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.2/res/raw/geoip6.mp3"
- data-name="14.0.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.2">14.0.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.1/res/raw/geoip6.mp3"
- data-name="14.0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.1">14.0.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-RC3/res/raw/geoip6.mp3"
- data-name="14.0.0-RC3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-RC3">14.0.0-RC3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-RC-1/res/raw/geoip6.mp3"
- data-name="14.0.0-RC-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-RC-1">14.0.0-RC-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-BETA-2/res/raw/geoip6.mp3"
- data-name="14.0.0-BETA-2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-BETA-2">14.0.0-BETA-2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-BETA-1/res/raw/geoip6.mp3"
- data-name="14.0.0-BETA-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-BETA-1">14.0.0-BETA-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-4/res/raw/geoip6.mp3"
- data-name="14.0.0-ALPHA-4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-ALPHA-4">14.0.0-ALPHA-4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-3/res/raw/geoip6.mp3"
- data-name="14.0.0-ALPHA-3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-ALPHA-3">14.0.0-ALPHA-3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-2b/res/raw/geoip6.mp3"
- data-name="14.0.0-ALPHA-2b"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-ALPHA-2b">14.0.0-ALPHA-2b</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-2/res/raw/geoip6.mp3"
- data-name="14.0.0-ALPHA-2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0-ALPHA-2">14.0.0-ALPHA-2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/14.0.0/res/raw/geoip6.mp3"
- data-name="14.0.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="14.0.0">14.0.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.7-BETA-1/res/raw/geoip6.mp3"
- data-name="13.0.7-BETA-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.7-BETA-1">13.0.7-BETA-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.7/res/raw/geoip6.mp3"
- data-name="13.0.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.7">13.0.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-RC-4a/res/raw/geoip6.mp3"
- data-name="13.0.6-RC-4a"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-RC-4a">13.0.6-RC-4a</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-RC-4/res/raw/geoip6.mp3"
- data-name="13.0.6-RC-4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-RC-4">13.0.6-RC-4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-RC-3/res/raw/geoip6.mp3"
- data-name="13.0.6-RC-3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-RC-3">13.0.6-RC-3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-RC-2/res/raw/geoip6.mp3"
- data-name="13.0.6-RC-2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-RC-2">13.0.6-RC-2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-RC-1/res/raw/geoip6.mp3"
- data-name="13.0.6-RC-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-RC-1">13.0.6-RC-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-8/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-8"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-8">13.0.6-BETA-8</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-7/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-7">13.0.6-BETA-7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-6/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-6">13.0.6-BETA-6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-5/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-5">13.0.6-BETA-5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-4/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-4">13.0.6-BETA-4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-3/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-3">13.0.6-BETA-3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-2/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-2">13.0.6-BETA-2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.6-BETA-1/res/raw/geoip6.mp3"
- data-name="13.0.6-BETA-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.6-BETA-1">13.0.6-BETA-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.5/res/raw/geoip6.mp3"
- data-name="13.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.5">13.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.4a/res/raw/geoip6.mp3"
- data-name="13.0.4a"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.4a">13.0.4a</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.4/res/raw/geoip6.mp3"
- data-name="13.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.4">13.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.3/res/raw/geoip6.mp3"
- data-name="13.0.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.3">13.0.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.2/res/raw/geoip6.mp3"
- data-name="13.0.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.2">13.0.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.1/res/raw/geoip6.mp3"
- data-name="13.0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.1">13.0.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.0-alpha-1/res/raw/geoip6.mp3"
- data-name="13.0.0-alpha-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.0-alpha-1">13.0.0-alpha-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/13.0.0/res/raw/geoip6.mp3"
- data-name="13.0.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="13.0.0">13.0.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/12.0.5/res/raw/geoip6.mp3"
- data-name="12.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="12.0.5">12.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/12.0.4/res/raw/geoip6.mp3"
- data-name="12.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="12.0.4">12.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/12.0.2/res/raw/geoip6.mp3"
- data-name="12.0.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="12.0.2">12.0.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/12.0.1/res/raw/geoip6.mp3"
- data-name="12.0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="12.0.1">12.0.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.4.4-alpha-1.0.11-RC4/res/raw/geoip6.mp3"
- data-name="0.2.4.4-alpha-1.0.11-RC4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.4.4-alpha-1.0.11-RC4">0.2.4.4-alpha-1.0.11-RC4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.4.3-alpha-1.0.11-RC3/res/raw/geoip6.mp3"
- data-name="0.2.4.3-alpha-1.0.11-RC3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.4.3-alpha-1.0.11-RC3">0.2.4.3-alpha-1.0.11-RC3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.4.3-alpha-1.0.11-RC1/res/raw/geoip6.mp3"
- data-name="0.2.4.3-alpha-1.0.11-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.4.3-alpha-1.0.11-RC1">0.2.4.3-alpha-1.0.11-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.23-rc-1.0.11-RC6/res/raw/geoip6.mp3"
- data-name="0.2.3.23-rc-1.0.11-RC6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.23-rc-1.0.11-RC6">0.2.3.23-rc-1.0.11-RC6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc5a/res/raw/geoip6.mp3"
- data-name="0.2.3.17-beta-1.0.9-rc5a"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.17-beta-1.0.9-rc5a">0.2.3.17-beta-1.0.9-rc5a</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc4/res/raw/geoip6.mp3"
- data-name="0.2.3.17-beta-1.0.9-rc4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.17-beta-1.0.9-rc4">0.2.3.17-beta-1.0.9-rc4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc3/res/raw/geoip6.mp3"
- data-name="0.2.3.17-beta-1.0.9-rc3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.17-beta-1.0.9-rc3">0.2.3.17-beta-1.0.9-rc3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-RC2/res/raw/geoip6.mp3"
- data-name="0.2.3.17-beta-1.0.9-RC2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.17-beta-1.0.9-RC2">0.2.3.17-beta-1.0.9-RC2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-RC1/res/raw/geoip6.mp3"
- data-name="0.2.3.17-beta-1.0.9-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.17-beta-1.0.9-RC1">0.2.3.17-beta-1.0.9-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.15-alpha-orbot-1.0.8-RC1/res/raw/geoip6.mp3"
- data-name="0.2.3.15-alpha-orbot-1.0.8-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.15-alpha-orbot-1.0.8-RC1">0.2.3.15-alpha-orbot-1.0.8-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.11-alpha-1.0.7.2-OBFS-FINAL/res/raw/geoip6.mp3"
- data-name="0.2.3.11-alpha-1.0.7.2-OBFS-FINAL"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.11-alpha-1.0.7.2-OBFS-FINAL">0.2.3.11-alpha-1.0.7.2-OBFS-FINAL</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-orbot-1.0.7-RC6/res/raw/geoip6.mp3"
- data-name="0.2.3.10-orbot-1.0.7-RC6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-orbot-1.0.7-RC6">0.2.3.10-orbot-1.0.7-RC6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC7/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-orbot-1.0.7-RC7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-orbot-1.0.7-RC7">0.2.3.10-alpha-orbot-1.0.7-RC7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC4/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-orbot-1.0.7-RC4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-orbot-1.0.7-RC4">0.2.3.10-alpha-orbot-1.0.7-RC4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC3/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-orbot-1.0.7-RC3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-orbot-1.0.7-RC3">0.2.3.10-alpha-orbot-1.0.7-RC3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC2/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-orbot-1.0.7-RC2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-orbot-1.0.7-RC2">0.2.3.10-alpha-orbot-1.0.7-RC2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC1/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-orbot-1.0.7-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-orbot-1.0.7-RC1">0.2.3.10-alpha-orbot-1.0.7-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-1.0.7-FINAL/res/raw/geoip6.mp3"
- data-name="0.2.3.10-alpha-1.0.7-FINAL"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.10-alpha-1.0.7-FINAL">0.2.3.10-alpha-1.0.7-FINAL</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.7-alpha-orbot-1.0.6-RC4/res/raw/geoip6.mp3"
- data-name="0.2.3.7-alpha-orbot-1.0.6-RC4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.7-alpha-orbot-1.0.6-RC4">0.2.3.7-alpha-orbot-1.0.6-RC4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.7-alpha-orbot-1.0.6-FINAL/res/raw/geoip6.mp3"
- data-name="0.2.3.7-alpha-orbot-1.0.6-FINAL"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.7-alpha-orbot-1.0.6-FINAL">0.2.3.7-alpha-orbot-1.0.6-FINAL</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.3.6-alpha-orbot-1.0.6/res/raw/geoip6.mp3"
- data-name="0.2.3.6-alpha-orbot-1.0.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.3.6-alpha-orbot-1.0.6">0.2.3.6-alpha-orbot-1.0.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5-RC1%4024716/res/raw/geoip6.mp3"
- data-name="0.2.2.25-alpha-orbot-1.0.5-RC1@24716"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.25-alpha-orbot-1.0.5-RC1@24716">0.2.2.25-alpha-orbot-1.0.5-RC1@24716</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5-RC1/res/raw/geoip6.mp3"
- data-name="0.2.2.25-alpha-orbot-1.0.5-RC1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.25-alpha-orbot-1.0.5-RC1">0.2.2.25-alpha-orbot-1.0.5-RC1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5.1/res/raw/geoip6.mp3"
- data-name="0.2.2.25-alpha-orbot-1.0.5.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.25-alpha-orbot-1.0.5.1">0.2.2.25-alpha-orbot-1.0.5.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5/res/raw/geoip6.mp3"
- data-name="0.2.2.25-alpha-orbot-1.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.25-alpha-orbot-1.0.5">0.2.2.25-alpha-orbot-1.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.4/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-1.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-1.0.4">0.2.2.14-alpha-orbot-1.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.2/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-1.0.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-1.0.2">0.2.2.14-alpha-orbot-1.0.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.1/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-1.0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-1.0.1">0.2.2.14-alpha-orbot-1.0.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.0/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-1.0.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-1.0.0">0.2.2.14-alpha-orbot-1.0.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-0.0.10/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-0.0.10"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-0.0.10">0.2.2.14-alpha-orbot-0.0.10</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-0.0.9/res/raw/geoip6.mp3"
- data-name="0.2.2.14-alpha-orbot-0.0.9"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.14-alpha-orbot-0.0.9">0.2.2.14-alpha-orbot-0.0.9</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.8/res/raw/geoip6.mp3"
- data-name="0.2.2.13-alpha-orbot-0.0.8"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.13-alpha-orbot-0.0.8">0.2.2.13-alpha-orbot-0.0.8</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.7/res/raw/geoip6.mp3"
- data-name="0.2.2.13-alpha-orbot-0.0.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.13-alpha-orbot-0.0.7">0.2.2.13-alpha-orbot-0.0.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.6/res/raw/geoip6.mp3"
- data-name="0.2.2.13-alpha-orbot-0.0.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.13-alpha-orbot-0.0.6">0.2.2.13-alpha-orbot-0.0.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.5/res/raw/geoip6.mp3"
- data-name="0.2.2.9-alpha-orbot-0.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.9-alpha-orbot-0.0.5">0.2.2.9-alpha-orbot-0.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.4/res/raw/geoip6.mp3"
- data-name="0.2.2.9-alpha-orbot-0.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.9-alpha-orbot-0.0.4">0.2.2.9-alpha-orbot-0.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.3/res/raw/geoip6.mp3"
- data-name="0.2.2.9-alpha-orbot-0.0.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text css-truncate-target"
- title="0.2.2.9-alpha-orbot-0.0.3">0.2.2.9-alpha-orbot-0.0.3</a>
- </div> <!-- /.select-menu-item -->
- </div>
-
- <div class="select-menu-no-results">Nothing to show</div>
- </div> <!-- /.select-menu-list -->
-
- </div> <!-- /.select-menu-modal -->
- </div> <!-- /.select-menu-modal-holder -->
-</div> <!-- /.select-menu -->
-
- <div class="button-group right">
- <a href="/n8fr8/orbot/find/master"
- class="js-show-file-finder minibutton empty-icon tooltipped tooltipped-s"
- data-pjax
- data-hotkey="t"
- aria-label="Quickly jump between files">
- <span class="octicon octicon-list-unordered"></span>
- </a>
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="res/raw/geoip6.mp3" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </div>
-
- <div class="breadcrumb">
- <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">orbot</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot/tree/master/res" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">res</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot/tree/master/res/raw" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">raw</span></a></span><span class="separator"> / </span><strong class="final-path">geoip6.mp3</strong>
- </div>
-</div>
-
-<include-fragment class="commit commit-loader file-history-tease" src="/n8fr8/orbot/contributors/master/res/raw/geoip6.mp3">
- <div class="file-history-tease-header">
- Fetching contributors…
- </div>
-
- <div class="participation">
- <p class="loader-loading"><img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" /></p>
- <p class="loader-error">Cannot retrieve contributors at this time</p>
- </div>
-</include-fragment>
-<div class="file-box">
- <div class="file">
- <div class="meta clearfix">
- <div class="info file-name">
- <span>81.42 kb</span>
- </div>
- <div class="actions">
- <div class="button-group">
- <a href="/n8fr8/orbot/raw/master/res/raw/geoip6.mp3" class="minibutton " id="raw-url">Raw</a>
- <a href="/n8fr8/orbot/commits/master/res/raw/geoip6.mp3" class="minibutton " rel="nofollow">History</a>
- </div><!-- /.button-group -->
-
-
-
- <a class="octicon-button danger"
- href="/n8fr8/orbot/delete/master/res/raw/geoip6.mp3"
- aria-label="Delete this file"
- data-method="post" data-test-id="delete-blob-file" rel="nofollow">
- <span class="octicon octicon-trashcan"></span>
- </a>
- </div><!-- /.actions -->
- </div>
-
-
- <div class="blob-wrapper data type-text">
- <div class="image">
- <a href="/n8fr8/orbot/blob/master/res/raw/geoip6.mp3?raw=true">View Raw</a>
- </div>
- </div>
-
- </div>
-</div>
-
-<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" style="display:none">Jump to Line</a>
-<div id="jump-to-line" style="display:none">
- <form accept-charset="UTF-8" class="js-jump-to-line-form">
- <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" autofocus>
- <button type="submit" class="button">Go</button>
- </form>
-</div>
-
- </div>
-
- </div><!-- /.repo-container -->
- <div class="modal-backdrop"></div>
- </div><!-- /.container -->
- </div><!-- /.site -->
-
-
- </div><!-- /.wrapper -->
-
- <div class="container">
- <div class="site-footer" role="contentinfo">
- <ul class="site-footer-links right">
- <li><a href="https://status.github.com/">Status</a></li>
- <li><a href="https://developer.github.com">API</a></li>
- <li><a href="http://training.github.com">Training</a></li>
- <li><a href="http://shop.github.com">Shop</a></li>
- <li><a href="/blog">Blog</a></li>
- <li><a href="/about">About</a></li>
-
- </ul>
-
- <a href="/" aria-label="Homepage">
- <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
- </a>
-
- <ul class="site-footer-links">
- <li>© 2014 <span title="0.08933s from github-fe127-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
- <li><a href="/site/terms">Terms</a></li>
- <li><a href="/site/privacy">Privacy</a></li>
- <li><a href="/security">Security</a></li>
- <li><a href="/contact">Contact</a></li>
- </ul>
- </div><!-- /.site-footer -->
-</div><!-- /.container -->
-
-
- <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
- <div class="fullscreen-container js-suggester-container">
- <div class="textarea-wrap">
- <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents js-suggester-field" placeholder=""></textarea>
- </div>
- </div>
- <div class="fullscreen-sidebar">
- <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
- <span class="mega-octicon octicon-screen-normal"></span>
- </a>
- <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
- aria-label="Switch themes">
- <span class="octicon octicon-color-mode"></span>
- </a>
- </div>
-</div>
-
-
-
- <div id="ajax-error-message" class="flash flash-error">
- <span class="octicon octicon-alert"></span>
- <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
- Something went wrong with that request. Please try again.
- </div>
-
-
- <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-fe1dc1d9b25d6a0cda010576a3c4be01906c9fd2ac07462042e5fceda326d50c.js" type="text/javascript"></script>
- <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-aba45b8411f81a17de91f1837c70a8cb5d105fa6d6db2134e5b19f082a8049ce.js" type="text/javascript"></script>
-
-
- </body>
-</html>
-
diff --git a/res/raw/pluto.properties b/res/raw/pluto.properties
deleted file mode 100644
index 74c0307..0000000
--- a/res/raw/pluto.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-obfs2=obfsclient
-obfs3=obfsclient
-scramblesuit=obfsclient
diff --git a/res/raw/torpolipo.conf b/res/raw/torpolipo.conf
deleted file mode 100644
index 0aeaf63..0000000
--- a/res/raw/torpolipo.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-proxyAddress = "127.0.0.1"
-proxyPort = 8118
-allowedClients = 127.0.0.1
-allowedPorts = 1-65535
-proxyName = "127.0.0.1"
-cacheIsShared = false
-socksParentProxy = "127.0.0.1:9050"
-socksProxyType = socks5
-diskCacheRoot = ""
-localDocumentRoot = ""
-disableLocalInterface = true
-disableConfiguration = true
-dnsUseGethostbyname = yes
-disableVia = true
-censoredHeaders = from,accept-language,x-pad,link
-censorReferer = maybe
-maxConnectionAge = 5m
-maxConnectionRequests = 120
-serverMaxSlots = 8
-serverSlots = 2
-tunnelAllowedPorts = 1-65535
-chunkHighMark = 512000
-objectHighMark = 128
\ No newline at end of file
diff --git a/res/raw/torrc b/res/raw/torrc
deleted file mode 100644
index fd0223e..0000000
--- a/res/raw/torrc
+++ /dev/null
@@ -1,8 +0,0 @@
-RunAsDaemon 1
-AvoidDiskWrites 1
-ControlPort auto
-SOCKSPort 0
-DNSPort 0
-TransPort 0
-CookieAuthentication 1
-DisableNetwork 1
\ No newline at end of file
diff --git a/res/values-ach/strings.xml b/res/values-ach/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ach/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
deleted file mode 100644
index d4a224f..0000000
--- a/res/values-ar/strings.xml
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">اÙ?ربÙ?ت</string>
- <string name="app_description">اÙ?ربÙ?ت Ù?Ù? تطبÙ?Ù? اÙ?Ù?Ù?Ù?Ù?-اÙ?برÙ?Ù?سÙ? اÙ?Øر اÙ?Ø°Ù? Ù?Ù?Ù?Ù?Ù? تطبÙ?Ù?ات أخرÙ? Ù?استخداÙ? اÙ?Ø¥Ù?ترÙ?ت بأÙ?اÙ? Ø£Ù?ثر . Ù?Ù?ستخدÙ? اÙ?ربÙ?ت تÙ?ر Ù?تشÙ?Ù?ر تØرÙ?ات Ù?رÙ?رÙ? عÙ?Ù? اÙ?Ø¥Ù?ترÙ?ت Ø? Ø«Ù? Ù?Ø®Ù?Ù?Ù? Ù?Ù?جعÙ?Ù? Ù?Ù?Ù?Ù? Ù?Ù? Ø®Ù?اÙ? سÙ?سÙ?Ø© Ù?Ù? أجÙ?زة اÙ?Ù?Ù?بÙ?Ù?تر Ù?Ù? جÙ?Ù?ع Ø£Ù?Øاء اÙ?عاÙ?Ù? . تÙ?ر Ù?Ù? تطبÙ?Ù? Øر Ù?شبÙ?Ø© Ù?Ù?تÙ?ØØ© Ù?اÙ?تÙ? تساعدÙ? عÙ?Ù? ØÙ?اÙ?Ø© Ù?Ù?سÙ? Ù?Ù? Ù?راÙ?بة اÙ?شبÙ?ات اÙ?تÙ? تÙ?دد اÙ?ØرÙ?Ø© اÙ?شخصÙ?Ø© Ù?اÙ?خصÙ?صÙ?Ø© Ø? Ù?اÙ?Ø£Ù?شطة اÙ?تجارÙ?Ø© اÙ?سرÙ?Ø© Ù?اÙ?عÙ?اÙ?ات Ø? Ù?Ø£Ù?Ù? اÙ?دÙ?Ù?Ø© Ù?اÙ?ØÙ?Ù?Ù?ات اÙ?Ù?Ù?عÙ?Ù?Ø© Ù?اÙ?تÙ? تستخدÙ? Ù?اÙ?عرÙ? باسÙ? تØÙ?Ù?Ù? ØرÙ?Ø© Ù?رÙ?ر اÙ?بÙ?اÙ?ات .</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Ù?عÙ? Ù? اÙ?Ù?Ù? تÙ?ر</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">جارÙ? تشغÙ?Ù? اÙ?ربÙ?ت...</string>
- <string name="status_activated">Ù?تصÙ? بشبÙ?Ø© تÙ?ر</string>
- <string name="status_disabled">تÙ? Ø¥Ù?Ù?اÙ? اÙ?ربÙ?ت</string>
- <string name="status_shutting_down">جارÙ? اÙ?Ù?اÙ? خدÙ?Ø© تÙ?ر</string>
- <string name="tor_process_starting">جارÙ? تشغÙ?Ù? تÙ?ر...</string>
- <string name="tor_process_complete">Ù?اÙ?Ù?.</string>
- <string name="tor_process_waiting">اÙ?تظار.</string>
- <string name="not_anonymous_yet">تØØ°Ù?ر: ØرÙ?Ø© Ù?رÙ?رÙ? Ù?Ù?ست Ø®Ù?Ù?Ø© ØتÙ? اÙ?Ø¢Ù?! Ù?Ù? Ù?ضÙ?Ù? Ù?Ù? بتÙ?Ù?Ù?Ù? اÙ?تطبÙ?Ù?ات اÙ?خاصة بÙ? Ù?إستخداÙ? برÙ?Ù?سÙ? HTTP 127.0.0.1:8118 Ø£Ù? SOCK4A Ø£Ù? SOKS5 127.0.0.1:9050</string>
- <string name="menu_home">اÙ?Ù?ائÙ?Ø© اÙ?رئÙ?سÙ?Ø©</string>
- <string name="menu_browse">تصÙ?Ù?Ø</string>
- <string name="menu_settings">إعدادات</string>
- <string name="menu_log">اÙ?سجÙ?</string>
- <string name="menu_info">Ù?ساعدة</string>
- <string name="menu_apps">Ù?Ù? بÙ? اÙ? شبÙ?Ø© Ù?Ù?Ù?Ù?Ø© خاصة</string>
- <string name="menu_start">بدء</string>
- <string name="menu_stop">تÙ?Ù?Ù?</string>
- <string name="menu_about">ØÙ?Ù?</string>
- <string name="menu_promo_apps">ØÙ?Ù? اÙ?تطبÙ?Ù? ...</string>
- <string name="main_layout_download">تØÙ?Ù?Ù?</string>
- <string name="main_layout_upload">رÙ?ع</string>
- <string name="button_help">Ù?ساعدة</string>
- <string name="button_close">إغÙ?اÙ?</string>
- <string name="button_about">ØÙ?Ù?</string>
- <string name="button_clear_log">Ù?Ø³Ø Ø§Ù?سجÙ?</string>
- <string name="menu_verify">تØÙ?Ù?</string>
- <string name="menu_exit">خرÙ?ج</string>
- <string name="menu_scan">Ù?Øص QR اÙ?جسر</string>
- <string name="menu_share_bridge">Ù?شارÙ?Ø© QR اÙ?جسر</string>
- <string name="press_to_start">- اضغط Ù?Ù?ترة Ø·Ù?Ù?Ù?Ø© Ù?Ù?بدء -</string>
- <string name="pref_trans_proxy_group">برÙ?Ù?سÙ? ضÙ?Ù?Ù? (Ù?تطÙ?ب اذÙ? Øساب رÙ?Ù?ت)</string>
- <string name="pref_trans_proxy_title">برÙ?Ù?سÙ? ضÙ?Ù?Ù?</string>
- <string name="pref_trans_proxy_summary">عÙ?Ù?Ù?Ø© تÙ?رÙ?Ù?اÙ? Ø£Ù?تÙ?Ù?اتÙ?Ù?Ù?Ø© Ù?Ù?تطبÙ?Ù?ات</string>
- <string name="pref_transparent_all_title">استخدÙ? تÙ?ر Ù?ع جÙ?Ù?ع اÙ?تطبÙ?Ù?ات</string>
- <string name="pref_transparent_all_summary">Ù?رر Ù?Ù? بÙ?اÙ?ات اÙ?Ù?رÙ?ر اÙ?خاصة باÙ?تطبÙ?Ù?ات عبر تÙ?ر</string>
- <string name="pref_transparent_port_fallback_title">تراجع Ù?Ù?Ù?Ø° اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_transparent_port_fallback_summary">تØØ°Ù?ر: تتØاÙ?Ù? عÙ?Ù? اÙ?Ù?Ù?اÙ?Ø° اÙ?شائعة (80, 443, Ø¥Ù?Ù? آخرÙ?) *استخدÙ? Ù?Ù?Ø·* إذا Ù?اÙ? Ù?ضع \'Ù?Ù?\' Ø£Ù? \'اÙ?تطبÙ?Ù?\' Ù?ا Ù?عÙ?Ù?.</string>
- <string name="pref_transparent_port_title">Ù?ائÙ?Ø© اÙ?Ù?Ù?اÙ?Ø°</string>
- <string name="pref_transparent_port_summary">Ù?ائÙ?Ø© بجÙ?Ù?ع اÙ?Ù?Ù?اÙ?Ø° Ø¥Ù?Ù? اÙ?برÙ?Ù?سÙ?. *استخدÙ? Ù?Ù?Ø·* إذا Ù?اÙ? Ù?ضع \'Ù?Ù?\' Ø£Ù? \'اÙ?تطبÙ?Ù?\' Ù?ا Ù?عÙ?Ù?.</string>
- <string name="pref_transparent_port_dialog">ادخÙ? اÙ?Ù?Ù?اÙ?Ø° Ù?Ù?برÙ?Ù?سÙ?</string>
- <string name="pref_has_root">اطÙ?ب إذÙ? رÙ?Ù?ت</string>
- <string name="pref_has_root_summary">اطÙ?ب إذÙ? رÙ?Ù?ت Ù?تÙ?عÙ?Ù? اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù?</string>
- <string name="status_install_success">تÙ? تثبÙ?ت تÙ?ر بÙ?جاØ!</string>
- <string name="status_install_fail">غÙ?ر Ù?ادر عÙ?Ù? تثبÙ?ت Ù?Ù?Ù?ات تÙ?ر. Ù?رجÙ? Ù?راجعة اÙ?سجÙ? Ù?إعÙ?اÙ?Ù?ا عÙ?Ù? اÙ?برÙ?د اÙ?Ø¥Ù?Ù?ترÙ?Ù?Ù? tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">خطأ Ù?Ù? اÙ?تطبÙ?Ù?</string>
- <string name="wizard_title">اÙ?ربÙ?ت</string>
- <string name="wizard_btn_tell_me_more">عÙ? اÙ?ربÙ?ت</string>
- <string name="btn_next">اÙ?تاÙ?Ù?</string>
- <string name="btn_back">رجÙ?ع</string>
- <string name="btn_finish">Ø¥Ù?Ù?اء</string>
- <string name="btn_okay">Ù?Ù?اÙ?Ù?</string>
- <string name="btn_cancel">Ø¥Ù?غاء</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">بعض اÙ?تÙ?اصÙ?Ù? عÙ? اÙ?ربÙ?ت</string>
- <string name="wizard_details_msg">اÙ?ربÙ?ت تطبÙ?Ù? Ù?Ù?تÙ?Ø Ø§Ù?Ù?صدر Ù?ØتÙ?Ù?Ù? تÙ?رØ? \"Ù?Ù?ب اÙ?Ù?ت\" Ù? \"بÙ?Ù?Ù?بÙ?\".
-Ù?Ù?Ù? Ù?Ù?Ù?ر اÙ?Ù?Ù?Ù?Ù?-اÙ?برÙ?Ù?سÙ? اÙ?Ù?ØÙ?Ù? HTTP (8118) Ù?Ù?Ù?Ù?Ù? SOCKS (9050) Ù?Ù? شبÙ?Ø© تÙ?ر.
- اÙ?ربÙ?ت Ø£Ù?ضا Ù?ادر عÙ?Ù? اÙ?Ù?صÙ?Ù? Ù?جذÙ?ر اÙ?جÙ?از Ø? Ù?إرساÙ? Ù?Ù? تØرÙ?ات اÙ?Ø¥Ù?ترÙ?ت Ù?Ù? Ø®Ù?اÙ?Ù?.</string>
- <string name="wizard_permissions_root">تÙ? Ù?Ù?Ø Ø§Ù?إذÙ?</string>
- <string name="wizard_permissions_stock">أذÙ?Ù?ات اÙ?ربÙ?ت</string>
- <string name="wizard_premissions_msg_root">Ù?Ù?تاز! Ù?Ù?د Ù?جدÙ?ا بأÙ?Ù? Ù?دÙ?Ù? صÙ?اØÙ?Ø© Øساب رÙ?Ù?ت Ù?تÙ?Ù?Ù?Ù? اÙ?ربÙ?ت. سÙ?Ù? Ù?ستخدÙ? Ù?Ø°Ù? اÙ?سÙ?طة بØÙ?Ù?Ø©.</string>
- <string name="wizard_permissions_msg_stock">رغÙ? Ø£Ù?Ù? Ù?Ù?س ضرÙ?رÙ?اØ? Ù?Ù?Ù?Ù? اÙ? Ù?ØµØ¨Ø Ø£Ù?ربÙ?ت أداة Ù?Ù?Ù?Ø© إذا Ù?اÙ? Ù?دÙ? جÙ?ازÙ? صÙ?اØÙ?Ø© Øساب رÙ?Ù?ت. استخدÙ? اÙ?زر باÙ?أسÙ?Ù? Ù?Ù?Ù?Ø Ø§Ù?ربÙ?ت Ù?Ù?Ø© Ø£Ù?بر!</string>
- <string name="wizard_permissions_no_root">إذا Ù?Ù? Ù?Ù?Ù? Ù?دÙ?Ù? صÙ?اØÙ?Ø© Øساب رÙ?Ù?ت Ø£Ù? Ù?Ù?ست Ù?دÙ?Ù? أدÙ?Ù? Ù?Ù?رة عÙ?ا Ù?تØدث عÙ?Ù?Ø? تأÙ?د Ù?Ù?Ø· Ù?Ù? استخداÙ? تطبÙ?Ù?ات تعÙ?Ù? Ù?ع اÙ?ربÙ?ت.</string>
- <string name="wizard_permissions_consent">Ø£Ù?Ù?Ù? Ø°Ù?Ù? Ù?Ø£Ù?د Ø£Ù? أستÙ?ر بدÙ?Ù? صÙ?اØÙ?ات Øساب رÙ?Ù?ت</string>
- <string name="wizard_permission_enable_root">اÙ?Ù?Ø Ø§Ù?ربÙ?ت صÙ?اØÙ?Ø© Øساب رÙ?Ù?ت</string>
- <string name="wizard_configure">تÙ?Ù?Ù?Ù? تÙ?رÙ?Ù?اÙ?</string>
- <string name="wizard_configure_msg">اÙ?ربÙ?ت Ù?عطÙ?Ù? اÙ?Ø®Ù?ار Ù?تÙ?جÙ?Ù? جÙ?Ù?ع ØرÙ?ات Ù?رÙ?ر اÙ?تطبÙ?Ù?ات عبر تÙ?ر اÙ? Ù?إختÙ?ار اÙ?تطبÙ?Ù?ات بشÙ?Ù? Ù?ردÙ?.</string>
- <string name="wizard_configure_all">Ù?رر جÙ?Ù?ع اÙ?تطبÙ?Ù?ات عبر تÙ?ر</string>
- <string name="wizard_configure_select_apps">اختر اÙ?تطبÙ?Ù?ات اÙ?Ù?ردÙ?Ø© Ù?تÙ?ر</string>
- <string name="wizard_tips_tricks">تطبÙ?Ù?ات Ù?Ù?Ù?ئة Ù?اÙ?ربÙ?ت</string>
- <string name="wizard_tips_msg">اÙ?تطبÙ?Ù?ات اÙ?تاÙ?Ù?Ø© تÙ? تطÙ?Ù?رÙ?ا ØتÙ? تعÙ?Ù? Ù?ع اÙ?ربÙ?ت. اضغط عÙ?Ù? Ù?ا ترÙ?د تثبÙ?تة عÙ?Ù? جÙ?ازÙ? اÙ?Ø£Ù?, Ø£Ù? Ù?Ù?Ù?Ù?Ù? اÙ? تجدÙ?Ù? Ù?اØÙ?اÙ? عÙ?Ù? جÙ?جÙ? بÙ?اÙ?, Ø£Ù? عÙ?Ù? Ù?Ù?Ù?عÙ?ا GuardianProject.info Ø£Ù? Ù?Ù? Ø®Ù?اÙ? F-Droid.org.</string>
- <string name="wizard_tips_otrchat">اÙ?دردشة اÙ?Ø¢Ù?Ù?Ø© - تأÙ?Ù?Ù? اÙ?رسائÙ? اÙ?Ù?Ù?رÙ?Ø© Ù?Ù?ستخدÙ?Ù? اÙ?اÙ?درÙ?Ù?د</string>
- <string name="wizard_tips_proxy">إعدادات اÙ?برÙ?Ù?سÙ? - تعÙ?Ù? Ù?Ù?Ù?Ù?Ø© تÙ?Ù?Ù?Ù? اÙ?تطبÙ?Ù?ات Ù?تعÙ?Ù? Ù?ع اÙ?ربÙ?ت</string>
- <string name="wizard_tips_duckgo">تطبÙ?Ù? Ù?ØرÙ? اÙ?بØØ« DuckDuckGo</string>
- <string name="wizard_tips_twitter">اضبط اÙ?برÙ?Ù?سÙ? اÙ?خاص بتÙ?Ù?تر Ø¥Ù?Ù? Ù?ستضÙ?Ù? \"localhost\" Ù? اÙ?Ù?Ù?Ù?Ø° Ø¥Ù?Ù? 8118</string>
- <string name="wizard_tips_story_maker">صاÙ?ع اÙ?Ù?صة - اصÙ?ع Ù?صة Ù?اترÙ?Ù?ا Ù?Ø£Ù?اÙ? تÙ?ر !</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">إعدادات اÙ?برÙ?Ù?سÙ?</string>
- <string name="wizard_proxy_help_msg">إذا Ù?اÙ? تطبÙ?Ù? اÙ?اÙ?درÙ?Ù?د اÙ?Ø°Ù? تستخدÙ?Ù? Ù?دعÙ? استخداÙ? Ù?Ù?Ù?Ù? - برÙ?Ù?سÙ?HTTP Ø£Ù? SOCKS إذاÙ? Ù?Ù?Ù?Ù?Ù? تÙ?Ù?Ù?Ù?Ù? Ù?Ù?اتصاÙ? باÙ?ربÙ?ت Ù?استخداÙ? تÙ?ر. إعدادات اÙ?Ù?ضÙ?Ù? 127.0.0.1 Ø£Ù? \"Ù?ضÙ?Ù?\". Ù? HTTPØ? إعداد اÙ?Ù?Ù?Ù?Ø° Ù?Ù? 8118. Ù?SOCKSØ? اÙ?Ù?Ù?Ù?Ù? Ù?Ù? 9050. Ù?جب عÙ?Ù?Ù? استخداÙ? SOCKS4A Ø£Ù? SOCKS5 إذا Ø£Ù?Ù?Ù? \ N \ N \ N \ N Ù?Ù?Ù?Ù?Ù? Ù?عرÙ?Ø© اÙ?Ù?زÙ?د ØÙ?Ù? Ø¥Ù?شاء اÙ?Ù?Ù?Ù?اء عÙ?Ù? اÙ?رÙ?بÙ?ت Ù?Ù? Ø®Ù?اÙ? اÙ?تعÙ?Ù?Ù?ات عÙ?Ù?:
-HTTP: / /tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">اÙ?ربÙ?ت جاÙ?ز Ù?Ù?استخداÙ?!</string>
- <string name="wizard_final_msg">اÙ?Ù?Ù?اÙ?Ù?Ù? Ù?Ù? اÙ?Ù?اس Ù?Ù? جÙ?Ù?ع Ø£Ù?Øاء اÙ?عاÙ?Ù? تستخدÙ? تÙ?ر Ù?Ù?جÙ?Ù?عة Ù?اسعة Ù?Ù? اÙ?أسباب . اÙ?صØÙ?Ù?Ù?Ù? Ù?اÙ?Ù?دÙ?Ù?Ù?Ù? , اÙ?Ù?داÙ?عÙ?Ù? عÙ? ØÙ?Ù?Ù? اÙ?Ø¥Ù?ساÙ? Ø? Ù?ضباط تÙ?Ù?Ù?Ø° اÙ?Ù?اÙ?Ù?Ù? Ø? Ù?اÙ?جÙ?Ù?د Ø? Ù?اÙ?شرÙ?ات Ù?اÙ?Ù?Ù?اطÙ?Ù?Ù? Ù?Ù? اÙ?Ø£Ù?ظÙ?Ø© اÙ?Ù?Ù?عÙ?Ø© Ø? Ù?اÙ?ضاÙ? اÙ?Ù?Ù?اطÙ?Ù?Ù? اÙ?عادÙ?Ù?Ù? ... Ù?اÙ?Ø¢Ù? Ù?Ù? Ø£Ù?ت جاÙ?ز Ø? Ù?Ù?ا بÙ?ا !</string>
- <string name="wizard_exit_at_first_screen_toast">Ù?رجÙ? تÙ?Ù?Ù?Ù? اÙ?ربÙ?ت Ù?اعدادÙ? Ù?تستطÙ?ع اÙ?بدء بإستخداÙ?Ù? !</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Ù?دÙ?Ù? اتصاÙ? Ù?Ø§Ø¬Ø Ø¨Ø´Ø¨Ù?Ø© تÙ?ر - Ù?Ù?Ù?Ù? Ù?ذا Ù?ا Ù?عÙ?Ù? Ø£Ù? جÙ?ازÙ? Ø¢Ù?Ù? . Ù?Ù?Ù?Ù?Ù? استخداÙ? زر \"Ù?تصÙ?Ø\" Ù?اختبار اتصاÙ?Ù? .
- زرÙ?ا عÙ?Ù? https://guardianproject.info/apps/orbot Ø£Ù? ارسÙ? برÙ?د اÙ?Ù?ترÙ?Ù?Ù? اÙ?Ù? help@xxxxxxxxxxxxxxxxxxxx Ù?Ù?عرÙ?Ø© اÙ?Ù?زÙ?د.</string>
- <string name="tor_check">سÙ?ؤدÙ? Ù?ذا Ø¥Ù?Ù? Ù?ØªØ Ø§Ù?Ù?تصÙ?Ø Ø§Ù?خاص بÙ? Ù?زÙ?ارة عÙ?Ù?اÙ? https://check.torproject.org Ù?Ù? اجÙ? اÙ?تØÙ?Ù? إذا Ù?اÙ? تÙ?Ù?Ù?Ù? اÙ?ربÙ?ت Ù?عÙ?Ù? بشÙ?Ù? صØÙ?Ø Ø§Ù? Ù?ا Ù?بأÙ?Ù? Ù?تصÙ? بتÙ?ر.</string>
- <string name="pref_hs_group">استضاÙ?Ø© اÙ?خدÙ?Ø© اÙ?Ù?Ø®Ù?Ù?Ø©</string>
- <string name="pref_general_group">عاÙ?</string>
- <string name="pref_start_boot_title">شغÙ? اÙ?ربÙ?ت عÙ?د Ù?ØªØ Ø§Ù?جÙ?از</string>
- <string name="pref_start_boot_summary">Ù?عÙ? اÙ?ربÙ?ت Ù? اتصÙ? بتÙ?ر تÙ?Ù?ائÙ?اÙ? عÙ?دÙ?ا Ù?بدء جÙ?از اÙ?Ø£Ù?درÙ?Ù?د اÙ?خاص بÙ? باÙ?عÙ?Ù?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">اÙ?ربت Ù?جعÙ? تÙ?ر Ù?Ù?Ù?Ù?اÙ? عÙ?Ù? Ù?ظاÙ? اÙ?Ø£Ù?درÙ?Ù?د. Ù?ساعدÙ? تÙ?ر Ù?Ù? اÙ?دÙ?اع ضد عÙ?Ù?Ù?Ø© ترشÙ?Ø Ø§Ù?Ù?ØتÙ?Ù?ات, تØÙ?Ù?Ù? Ù?سارات اÙ?Ù?رÙ?ر, Ù?Ù?راÙ?بة اÙ?شبÙ?Ø© Ù?اÙ?تÙ? تÙ?دد خصÙ?صÙ?تÙ?, اÙ?Ù?عÙ?Ù?Ù?ات اÙ?سرÙ?Ø© Ù?اÙ?عÙ?اÙ?ات اÙ?شخصÙ?Ø©. Ù?Ø°Ù? اÙ?أداة ستساعدÙ? Ù?Ù? تÙ?Ù?ئة اÙ?ربت Ù?ع تÙ?ر عÙ?Ù? جÙ?ازÙ?</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">تØØ°Ù?ر</string>
- <string name="wizard_warning_msg">Ù?Ù? Ù?Ù?Ù?Ù? اÙ?ربت بأخÙ?اء Ù?Ù?Ù?Ø© Ù?سارÙ? بشÙ?Ù? اÙ?تÙ?Ù?اتÙ?Ù?Ù? اÙ? Ø¢Ù?Ù? بÙ?جرد تÙ?صÙ?بÙ?. بÙ? Ù?جب عÙ?Ù?Ù? اÙ? تÙ?Ù?Ù? بتÙ?Ù?ئتÙ? Ù?ع جÙ?ازÙ? باÙ?أضاÙ?Ø© اÙ?Ù? تÙ?Ù?ئة تطبÙ?Ù?ات اخرÙ? Ù?تستطÙ?ع استخداÙ? تÙ?ر بÙ?جاØ.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">اÙ?صÙ?اØÙ?ات</string>
- <string name="wizard_permissions_root_msg1">Ù?Ù?Ù?Ù?Ù? اعطاء اÙ?ربÙ?ت صÙ?اØÙ?ات Øساب رÙ?Ù?ت Ù?تشغÙ?Ù? اÙ?Ù?Ù?Ù?زات اÙ?Ù?تÙ?دÙ?Ø© Ù?Ø«Ù? اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù?.</string>
- <string name="wizard_permissions_root_msg2">إذا Ù?Ù?ت Ù?ا ترÙ?د Ø£Ù? تÙ?عÙ? Ù?ذا, اÙ?رجاء إستخداÙ? براÙ?ج Ù?عدة Ù?Ù?عÙ?Ù? Ù?ع اÙ?ربÙ?ت</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title"> براÙ?ج Ù?عدة Ù?Ù?عÙ?Ù? Ù?ع اÙ?ربÙ?ت</string>
- <string name="wizard_tips_gibberbot">جات سÙ?Ù?Ù?ر: Ù?Ù? تطبÙ?Ù? Ù?Ù?دردشة بشÙ?Ù? Ø¢Ù?Ù? Ù?ع تشÙ?Ù?ر عاÙ?Ù? جداÙ?</string>
- <string name="wizard_tips_orweb">اÙ?رÙ?Ù?Ù?س: Ù?تصÙ?Ø Ø°Ù? خصÙ?صÙ?Ø© Ù?تÙ?دÙ?Ø© Ù?عÙ?Ù? ظÙ?Ù? اÙ? Ù?Ù? Ø®Ù?اÙ? تÙ?ر</string>
- <string name="wizard_tips_play">Ù?Ù?Ù?Ù?Ù? اÙ?ØصÙ?Ù? عÙ?Ù? جÙ?Ù?ع تطبÙ?Ù?ات Ù?شرÙ?ع اÙ?جاردÙ?Ù? عÙ?Ù? جÙ?جÙ? بÙ?اÙ?</string>
- <string name="wizard_tips_fdroid">اÙ?تشÙ? Ù?Ù? تطبÙ?Ù?ات Ù?شرÙ?ع اÙ?جاردÙ?اÙ? عÙ?Ù? اÙ?-درÙ?Ù?د</string>
- <string name="wizard_tips_fdroid_org">اÙ?تشÙ? Ù?Ù? تطبÙ?Ù?ات Ù?شرÙ?ع اÙ?جاردÙ?اÙ? عÙ?Ù? https://f-droid.org </string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">برÙ?Ù?سÙ? ضÙ?Ù?Ù?</string>
- <string name="wizard_transproxy_msg">Ù?Ø°Ù? ستسÙ?Ø Ù?Ù?براÙ?ج باÙ?اتصاÙ? بشبÙ?Ø© تÙ?ر تÙ?Ù?ائÙ?اÙ? دÙ?Ù? اعداد Ù?سبÙ?.</string>
- <string name="wizard_transproxy_hint">(اختر Ù?ذا اÙ?Ù?ربع إذا Ù?Ù?ت Ù?ا تعÙ?Ù? عÙ?ا Ù?تØدث)</string>
- <string name="wizard_transproxy_none">Ù?ا Ø´Ù?Ø¡</string>
- <string name="pref_transparent_tethering_title">اÙ?ربط بتÙ?ر</string>
- <string name="pref_transparent_tethering_summary">اسÙ?Ø Ø¨Ø§Ù?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù? Ù?Ù?Ù?اÙ? Ù?اÙ? Ù? اجÙ?زة اÙ?Ù?Ù? اس بÙ? (تØتاج Ù?إعادة تشغÙ?Ù? اÙ?جÙ?از)</string>
- <string name="button_grant_superuser">اطÙ?ب صÙ?اØÙ?ات Øساب رÙ?Ù?ت</string>
- <string name="pref_select_apps">Øدد اÙ?براÙ?ج</string>
- <string name="pref_select_apps_summary">اختر اÙ?براÙ?Ø Ø§Ù?تÙ? ترÙ?د تÙ?رÙ?رÙ?ا Ø¥Ù?Ù? شبÙ?Ø© تÙ?ر</string>
- <string name="pref_node_configuration">تÙ?Ù?Ù?Ù? Ù?Ù?طة اÙ?اتصاÙ?</string>
- <string name="pref_node_configuration_summary">Ù?Ø°Ù? اÙ?إعدادات Ù?تÙ?دÙ?Ø© Ù? Ù?د تÙ?Ù?Ù? Ù?Ù? ØÙ?اÙ?Ø© Ù?Ù?Ù?تÙ?</string>
- <string name="pref_entrance_node">Ù?Ù?اط اÙ?دخÙ?Ù?</string>
- <string name="pref_entrance_node_summary">بصÙ?اتØ? اسÙ?اء Ù?ستعارةØ? اÙ?بÙ?داÙ? Ù? اÙ?عÙ?اÙ?Ù?Ù? Ù?Ø£Ù?Ù? Ù?Ù?طة اتصاÙ?</string>
- <string name="pref_entrance_node_dialog">أدخÙ? Ù?Ù?اط اÙ?دخÙ?Ù?</string>
- <string name="pref_allow_background_starts_title">إسÙ?Ø Ù?Ù?Ø®Ù?Ù?Ù?Ø© بأÙ?بدأ</string>
- <string name="pref_allow_background_starts_summary">إسÙ?Ø Ù?Ø£Ù? تطبÙ?Ù? بأÙ? Ù?Ù?خبÙ?ر اÙ?ربت بأÙ? Ù?Ù?عÙ? تÙ?ر Ù?ع اÙ?خدÙ?ات اÙ?Ù?رتبطة بÙ?</string>
- <string name="button_proxy_all">اÙ?Ø®Ù?Ù?Ù?Ù? اÙ?Ù?Ù?</string>
- <string name="button_proxy_none">بدÙ?Ù? تخÙ?Ù?Ù?</string>
- <string name="button_invert_selection">اعÙ?س اÙ?Ù?Ù?Øدد</string>
- <string name="pref_proxy_title">برÙ?Ù?سÙ? اÙ?شبÙ?Ø© اÙ?صادرة (اختÙ?ارÙ?)</string>
- <string name="pref_proxy_type_title">Ù?Ù?ع اÙ?برÙ?Ù?سÙ? اÙ?صادر</string>
- <string name="pref_proxy_type_summary">اÙ?برÙ?تÙ?Ù?Ù?Ù? اÙ?Ù?ستخدÙ? Ù?خادÙ? اÙ?برÙ?Ù?سÙ?: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">أدخÙ? Ù?Ù?ع اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_host_title">عÙ?Ù?اÙ? اÙ?برÙ?Ù?سÙ? اÙ?صادر</string>
- <string name="pref_proxy_host_summary">اسÙ? Ù?ضÙ?Ù? خادÙ? اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_host_dialog">أدخÙ? Ù?ضÙ?Ù? اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_port_title">Ù?Ù?Ù?Ø° اÙ?برÙ?Ù?سÙ? اÙ?صادر</string>
- <string name="pref_proxy_port_summary">Ù?Ù?Ù?Ø° خادÙ? اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_port_dialog">أدخÙ? Ù?Ù?Ù?Ø° اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_username_title">اسÙ? Ù?ستخدÙ? اÙ?برÙ?Ù?سÙ? اÙ?صادر</string>
- <string name="pref_proxy_username_summary">اسÙ? Ù?ستخدÙ? اÙ?برÙ?Ù?سÙ? (اختÙ?ارÙ?)</string>
- <string name="pref_proxy_username_dialog">ادخÙ? اسÙ? Ù?ستخدÙ? اÙ?برÙ?Ù?سÙ?</string>
- <string name="pref_proxy_password_title">Ù?Ù?Ù?Ø© Ù?رÙ?ر برÙ?Ù?سÙ? اÙ?شبÙ?Ø© اÙ?صادرة</string>
- <string name="pref_proxy_password_summary">Ù?Ù?Ù?Ø© Ù?رÙ?ر اÙ?برÙ?Ù?سÙ? (اختÙ?ارÙ?)</string>
- <string name="pref_proxy_password_dialog">ادخÙ? Ù?Ù?Ù?Ø© Ù?رÙ?ر اÙ?برÙ?Ù?سÙ?</string>
- <string name="status">اÙ?ØاÙ?Ø©</string>
- <string name="setting_up_full_transparent_proxying_">Ù?تÙ? إعداد برÙ?Ù?سÙ? ضÙ?Ù?Ù? Ù?اÙ?Ù?...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ù?تÙ? إعداد اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù? Øسب اÙ?براÙ?ج...</string>
- <string name="transparent_proxying_enabled">اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù? Ù?Ù?Ù?عÙ?</string>
- <string name="transproxy_enabled_for_tethering_">اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù? جاÙ?ز Ù?Ù?ربط!</string>
- <string name="warning_error_starting_transparent_proxying_">تØØ°Ù?ر: ØصÙ? خطأ بتشغÙ?Ù? اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù?!</string>
- <string name="transproxy_rules_cleared">تÙ? Ù?Ø³Ø Ù?Ù?اعد اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù?</string>
- <string name="couldn_t_start_tor_process_">Ù?Ù?د تعذر بدء تشغÙ?Ù? تÙ?ر:</string>
- <string name="privoxy_is_running_on_port_">بÙ?Ù?Ù?بÙ? Ù?عÙ?Ù? عÙ?Ù? اÙ?Ù?ØÙ?Ù?Ù? </string>
- <string name="setting_up_port_based_transparent_proxying_">Ù?تÙ? إعداد اÙ?برÙ?Ù?سÙ? اÙ?ضÙ?Ù?Ù? Øسب اÙ?Ù?Ù?Ù?Ø°...</string>
- <string name="bridge_error">خطأ باÙ?جسر</string>
- <string name="bridge_requires_ip">ØتÙ? تستطÙ?ع إستخدÙ? Ù?Ù?زة اÙ?جسÙ?رØ? Ù?جب عÙ?Ù?Ù? ادخاÙ? عÙ?Ù?اÙ? اÙ?ترÙ?ت Ù?جسر Ù?اØد عÙ?Ù? اÙ?Ø£Ù?Ù?.</string>
- <string name="send_email_for_bridges">أرسÙ? برÙ?د Ø¥Ù?Ù?ترÙ?Ù?Ù? Ø¥Ù?Ù? bridges@xxxxxxxxxxxxxx Ù?ع عبارة \"get bridges\" بداخÙ? اÙ?رساÙ?Ø© Ù?Ù? Øساب برÙ?د gmail.</string>
- <string name="error">خطأ</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">إعدادات اÙ?عÙ?Ù?اÙ? اÙ?Ù?ابÙ? Ù?Ù?اتصاÙ? Ù?دÙ?Ù? تسببت بخطأ!</string>
- <string name="your_relay_settings_caused_an_exception_">إعدادات اÙ?Ù?رØÙ?ات Ù?دÙ?Ù? تسببت بخطأ!</string>
- <string name="exit_nodes">Ù?Ù?اط اÙ?خرÙ?ج</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">اÙ?بصÙ?اتØ? اÙ?اسÙ?اء اÙ?Ù?ستعارةØ? اÙ?بÙ?داÙ? Ù? اÙ?عÙ?اÙ?Ù?Ù? Ù?آخر Ù?Ù?طة اتصاÙ?</string>
- <string name="enter_exit_nodes">أدخÙ? Ù?Ù?اط اÙ?خرÙ?ج</string>
- <string name="exclude_nodes">استثÙ?Ù? اÙ?Ù?Ù?اط</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">بصÙ?اتØ? اÙ?أسÙ?اء اÙ?Ù?ستعارةØ? اÙ?بÙ?داÙ? Ù? اÙ?عÙ?اÙ?Ù?Ù? Ù?Ù?تÙ? استثÙ?ائÙ?ا</string>
- <string name="enter_exclude_nodes">أدخÙ? اÙ?Ù?Ù?اط اÙ?Ù?ستثÙ?اÙ?</string>
- <string name="strict_nodes">اÙ?Ù?Ù?اط اÙ?Ù?شددة</string>
- <string name="use_only_these_specified_nodes">استخدÙ? Ù?Ù?Ø· تÙ?Ù? اÙ?Ù?Ù?اط اÙ?Ù?Øددة</string>
- <string name="bridges">اÙ?جسÙ?ر</string>
- <string name="use_bridges">استخدÙ? اÙ?جسÙ?ر</string>
- <string name="bridges_obfuscated">اÙ?جسÙ?ر اÙ?غاÙ?ضة</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">اسÙ?Ø Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù? Ù?Ù?اط دخÙ?Ù? بدÙ?Ù?Ø© Ø¥Ù?Ù? شبÙ?Ø© تÙ?ر</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ù?عÙ? Ù?ذا اÙ?Ø®Ù?ار إذا Ù?اÙ?ت اÙ?جسÙ?ر اÙ?Ù?Øددة جسÙ?ر غاÙ?ضة</string>
- <string name="ip_address_and_port_of_bridges">عÙ?Ù?اÙ? اÙ?اÙ?ترÙ?ت Ù? اÙ?Ù?Ù?Ù?Ø° Ù?Ù?جسÙ?ر</string>
- <string name="enter_bridge_addresses">أدخÙ? عÙ?اÙ?Ù?Ù? اÙ?جسÙ?ر</string>
- <string name="relays">اÙ?Ù?رØÙ?ات</string>
- <string name="relaying">Ù?رØÙ?</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">اسÙ?Ø Ù?جÙ?ازÙ? Ù?Ù?Ù?Ù?Ù? Ù?رØÙ? غÙ?ر Ù?Ù?ائÙ?</string>
- <string name="relay_port">Ù?Ù?Ù?Ø° اÙ?Ù?رØÙ?</string>
- <string name="listening_port_for_your_tor_relay">اÙ?Ù?Ù?Ù?Ø° اÙ?Ù?صغÙ? Ù?Ù?Ù?رØÙ? تÙ?ر اÙ?خاص بÙ?</string>
- <string name="enter_or_port">أدخÙ? Ù?Ù?Ù?Ø° OR</string>
- <string name="relay_nickname">اÙ?اسÙ? اÙ?Ù?ستعار Ù?Ù?Ù?Ù?رØÙ?</string>
- <string name="the_nickname_for_your_tor_relay">اÙ?اسÙ? اÙ?Ù?ستعار Ù?Ù?Ù?رØÙ? تÙ?ر اÙ?خاص بÙ?</string>
- <string name="enter_a_custom_relay_nickname">أدخÙ? اسÙ? Ù?ستعار Ù?Ù?Ù?Ù?رØÙ?</string>
- <string name="reachable_addresses">اÙ?عÙ?اÙ?Ù?Ù? اÙ?تÙ? Ù?Ù?Ù?Ù? اÙ?Ù?صÙ?Ù? Ø¥Ù?Ù?Ù?ا</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">اÙ?عÙ?Ù? Ù?خدÙ?Ø© Ù?Ù? Ù?راء جدار Ù?ارÙ? بسÙ?اسات تÙ?Ù?دÙ?Ø©</string>
- <string name="reachable_ports">اÙ?Ù?Ù?اÙ?Ø° اÙ?تÙ? Ù?Ù?Ù?Ù? اÙ?Ù?صÙ?Ù? Ø¥Ù?Ù?Ù?ا</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ù?Ù?اÙ?Ø° Ù?Ù?تÙ?ØØ© عبر جدار Ù?ارÙ? تÙ?Ù?دÙ?</string>
- <string name="enter_ports">أدخÙ? اÙ?Ù?Ù?اÙ?Ø°</string>
- <string name="enable_hidden_services">استضاÙ?Ø© اÙ?خدÙ?Ø© اÙ?Ù?Ø®Ù?Ù?Ø©</string>
- <string name="run_servers_accessible_via_the_tor_network">اÙ?سÙ?Ø§Ø Ù?Ù?خادÙ? اÙ?Ø°Ù? عÙ?Ù? جÙ?ازÙ? بأÙ?Ù?اÙ?Ù?Ø© اÙ?Ù?صÙ?Ù? Ø¥Ù?Ù?Ù? Ù?Ù? Ø®Ù?اÙ? شبÙ?Ø© تÙ?ر</string>
- <string name="enter_localhost_ports_for_hidden_services">أدخÙ? اÙ?Ù?Ù?اÙ?Ø° اÙ?Ù?ØÙ?Ù?Ø© Ù?Ù?خدÙ?ات اÙ?Ù?Ø®Ù?Ù?Ø©</string>
- <string name="hidden_service_ports">Ù?Ù?اÙ?Ø° اÙ?خدÙ?ات اÙ?Ù?Ø®Ù?Ù?Ø©</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">اسÙ? اÙ?عÙ?Ù?اÙ? Ù?خدÙ?تÙ? اÙ?Ù?Ø®Ù?Ù?Ø© (Ù?تÙ? اÙ?شائÙ? تÙ?Ù?ائÙ?اÙ?)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">شغÙ? سجÙ? اÙ?Ù?debug ( Ù?Ù?Ù?راجعة Ù?جب استخداÙ? adb Ø£Ù? LogCat)</string>
- <string name="project_home">اÙ?Ù?Ù?Ù?ع اÙ?رسÙ?Ù? Ù?Ù?Ù?شرÙ?ع (اÙ?Ù?شارÙ?ع):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">رخصة استخداÙ? تÙ?ر</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">براÙ?ج Ù?Ù? اÙ?طرÙ? اÙ?ثاÙ?Ø«:</string>
- <string name="tor_version">تÙ?ر: https://www.torproject.org</string>
- <string name="libevent_version">Ù?ب Ø¥Ù?Ù?Ù?Ù?ت اÙ?Ù?سخة http://www.monkey.org/~provos/libevent/ :v2.0.21</string>
- <string name="polipo_version">بÙ?Ù?Ù?بÙ? اÙ?Ù?سخة 1.1.9 : https://github.com/jech/polipo</string>
- <string name="iptables_version">Ø¢Ù? بÙ? تاÙ?بÙ?ز اÙ?Ù?سخة 1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">اÙ?بÙ? اس اس اÙ? اÙ?Ù?سخة: http://www.openssl.org 1.0.1q</string>
- <string name="hidden_service_request">Ù?Ù?اÙ? برÙ?اÙ?ج Ù?ØاÙ?Ù? Ù?ØªØ Ù?Ù?Ù?Ø° Ù?خادÙ? Ù?Ø®Ù?Ù? %S Ø¥Ù?Ù? شبÙ?Ø© تÙ?ر. Ù?ذا اÙ?سÙ?Ù?Ù? Ø¢Ù?Ù? إذا Ù?Ù?ت تثÙ? بÙ?ذا اÙ?برÙ?اÙ?ج.</string>
- <string name="found_existing_tor_process">عÙ?ثر عÙ?Ù? عÙ?Ù?Ù?Ø© تÙ?ر سابÙ?Ø© تعÙ?Ù?...</string>
- <string name="something_bad_happened">ØصÙ? خطأ Ù?ا. اÙ?Øص اÙ?سجÙ?</string>
- <string name="hidden_service_on">اÙ?خدÙ?ات اÙ?Ù?Ø®Ù?Ù?Ø© اÙ?تÙ? تعÙ?Ù? ØاÙ?Ù?اÙ?:</string>
- <string name="unable_to_read_hidden_service_name">غÙ?ر Ù?ادر عÙ?Ù? Ù?راءة اسÙ? اÙ?خدÙ?Ø© اÙ?Ù?Ø®Ù?Ù?Ø©</string>
- <string name="unable_to_start_tor">غÙ?ر Ù?ادر عÙ?Ù? بدء تÙ?ر:</string>
- <string name="unable_to_reset_tor">أعÙ?د تشغÙ?Ù? جÙ?ازÙ?, غÙ?ر Ù?ادر عÙ?Ù? اعادة تشغÙ?Ù? تÙ?ر</string>
- <string name="pref_use_sys_iptables_title">استخدÙ? اÙ?Ù?iptables اÙ?تÙ?Ù?ائÙ?Ø©</string>
- <string name="pref_use_sys_iptables_summary">استخدÙ? Ù?Ù?Ù?Ù?ات اÙ?Ù?iptables اÙ?Ù?Ù?جÙ?دة ضÙ?Ù?اÙ? باÙ?جÙ?از بدÙ? اÙ?Ù?سخة اÙ?Ù?رÙ?Ù?Ø© Ù?ع اÙ?ربÙ?ت</string>
- <string name="error_installing_binares">غÙ?ر Ù?ادرة عÙ?Ù? تثبÙ?ت Ø£Ù? تØدÙ?Ø« تÙ?ر</string>
- <string name="pref_use_persistent_notifications">دائÙ?ا ضع اÙ?Ø£Ù?Ù?Ù?Ù?Ø© Ù?Ù? شرÙ?Ø· اÙ?أدÙ?ات عÙ?دÙ?ا Ù?Ù?Ù?Ù? اÙ?ربÙ?ت Ù?تصÙ?اÙ?</string>
- <string name="pref_use_persistent_notifications_title">تÙ?بÙ?Ù?ات دائÙ?Ø©</string>
- <string name="pref_use_expanded_notifications">Ù?Ù? بأظÙ?ار اÙ?تÙ?بÙ?Ù? بشÙ?Ù? Ù?Ù?سع بأستخداÙ? تÙ?ر. أخرج Ù?Ù? اÙ?بÙ?د Ù?رÙ?Ù? اÙ?Ø¢Ù? بÙ? رÙ?Ù? اÙ?عÙ?Ù?اÙ? عÙ?Ù? اÙ?شبÙ?Ø©</string>
- <string name="pref_use_expanded_notifications_title">تÙ?بÙ?Ù? Ù?Ù?سÙ?ع</string>
- <string name="notification_using_bridges">تÙ? تÙ?عÙ?Ù? اÙ?جسÙ?ر!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">اÙ?Ù?غة</string>
- <string name="set_locale_summary">اختار اÙ?إعدادات اÙ?Ù?ØÙ?Ù?Ø© Ù? اÙ?Ù?غة Ù?اÙ?ربÙ?ت</string>
- <string name="wizard_locale_title">اختار اÙ?Ù?غة</string>
- <string name="wizard_locale_msg">Ø¥Ù?ا اÙ? تترÙ? اÙ?Ù?غة اÙ?اÙ?تراضÙ?Ø© اÙ? Ø¥Ù?ا اÙ? تغÙ?ر اÙ?Ù?غة</string>
- <string name="powered_by">Ù?دعÙ?Ù?Ø© Ù?Ù? Ù?بÙ? تÙ?ر</string>
- <string name="btn_save_settings">ØÙ?ظ اÙ?إعدادات</string>
- <string name="no_internet_connection_tor">Ù?ا Ù?Ù?جد ارتباط بأÙ?اÙ?ترÙ?Ù?ت: تÙ?ر Ù?Ù? Ù?ضع اÙ?Ù?Ù?Ù? اÙ?Ù?ؤÙ?ت</string>
- <string name="bandwidth_">عرض اÙ?Ù?طاÙ?</string>
- <string name="down">اسÙ?Ù?</string>
- <string name="up">أعÙ?Ù?</string>
- <string name="pref_disable_network_title">Ù?اتÙ?جد شبÙ?Ø© Ù?Ù?Ù?-Ø¢Ù?Ù?</string>
- <string name="pref_disable_network_summary">ضع تÙ?ر Ù?Ù? Ù?ضع اÙ?Ù?Ù?Ù? عÙ?د عدÙ? Ù?جÙ?د اÙ?Ø£Ù?ترÙ?Ù?ت</string>
- <string name="newnym">Ù?Ù?د تØÙ?Ù?ت اÙ?Ù? Ù?Ù?Ù?Ø© تÙ?ر جدÙ?دة</string>
- <string name="menu_verify_browser">Ù?تصÙ?Ø</string>
- <string name="menu_use_chatsecure">استخدÙ? جات سÙ?Ù?Ù?ر </string>
- <string name="permission_manage_tor_label">أدارة تÙ?ر</string>
- <string name="permission_manage_tor_description">Ù?Ù? بتÙ?Ù?Ù?Ù? Ù?ذا اÙ?تطبÙ?Ù? Ù?Ù? اÙ?تØÙ?Ù? بخدÙ?ات تÙ?ر</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Ù?ا Ù?بدÙ? بأÙ? Ù?دÙ?Ù? اÙ?رÙ?Ù?Ù?س Ù?Ù?صباÙ?. Ù?Ù? ترÙ?د Ù?ساعدتاÙ? Ù?Ù? Ø°Ù?Ù? اÙ? Ù?Ù?Ù?Ù? Ù?Ù?Ø· بتشغÙ?Ù? اÙ?Ù?تصÙ?ØØ?</string>
- <string name="install_apps_">Ù?Ù? ترغب بتÙ?صÙ?ب اÙ?تطبÙ?Ù?اتØ?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ù?ا Ù?Ù?جد اتصاÙ? بأÙ?شبÙ?Ø©. سÙ?دخÙ? تÙ?ر اÙ?Ù? Ù?ضع اÙ?Ù?Ù?Ù?</string>
- <string name="network_connectivity_is_good_waking_tor_up_">اÙ?اتصاÙ? بأÙ?شبÙ?Ø© جÙ?د. تÙ?بÙ?Ù? تÙ?ر Ù?Ù? اÙ?Ù?Ù?Ù?</string>
- <string name="updating_settings_in_tor_service">تØدÙ?Ø« اÙ?اعدادات Ù?Ù? خدÙ?ات تÙ?ر</string>
- <string name="pref_socks_title">تÙ?ر سÙ?Ù?س</string>
- <string name="pref_socks_summary">Ù?Ù?Ù?Ø° اÙ?شبÙ?ات اÙ?ØاسÙ?بÙ?Ø© اÙ? بÙ?رت اÙ?Ø°Ù? Ù?Ù?دÙ?Ù? تÙ?ر اÙ?Ù? Ù?Øدة اÙ?خدÙ?Ø© اÙ?Ù?ائبة اÙ?برÙ?Ù?سÙ? Ù?Ù? سÙ?Ù?س. (اÙ?تÙ?صÙ?ر 9050 اÙ? 0 عدÙ? اÙ?Ù?درة)</string>
- <string name="pref_socks_dialog">تÙ?Ù?ئة Ù?Ù?Ù?Ø° اÙ?شبÙ?ات اÙ?ØاسÙ?بÙ?Ø© بÙ?رت Ù?Ù? سÙ?Ù?س</string>
- <string name="pref_transport_title">Ù?Ù?Ù?Ø° اÙ?شبÙ?ات اÙ?ØاسÙ?بÙ?Ø© Ù?Ù? Ù?Øدة اÙ?خدÙ?Ø© اÙ?Ù?ائبة اÙ?برÙ?Ù?سÙ? Ù?Ù? تÙ?ر</string>
- <string name="pref_transport_summary">Ù?Ù?Ù?Ø° اÙ?شبÙ?ات اÙ?ØاسÙ?بÙ?Ø© اÙ? بÙ?رت اÙ?Ø°Ù? Ù?Ù?دÙ?Ù? تÙ?ر اÙ?Ù? اÙ?برÙ?Ù?سÙ? اÙ?Ø´Ù?اÙ? (اÙ?تÙ?صÙ?ر 9040 اÙ? 0 عدÙ? اÙ?Ù?درة)</string>
- <string name="pref_transport_dialog">تÙ?Ù?ئة بÙ?رت اÙ?برÙ?Ù?سÙ? اÙ?Ø´Ù?اÙ?</string>
- <string name="pref_dnsport_title">تÙ?ر, Ù?ظاÙ? اسÙ?اء اÙ?Ù?طاÙ?ات, بÙ?رت</string>
- <string name="pref_dnsport_summary">Ù?Ù?Ù?Ø° اÙ?شبÙ?ات اÙ?ØاسÙ?بÙ?Ø© اÙ? بÙ?رت اÙ?Ø°Ù? Ù?Ù?دÙ?Ù? تÙ?ر اÙ?Ù? خدÙ?Ø© اسÙ?اء اÙ?Ù?طاÙ? دÙ? اÙ? اس. (اÙ?تÙ?صÙ?ر 5400 اÙ? 0 Ù?عدÙ? اÙ?Ù?درة)</string>
- <string name="pref_dnsport_dialog">إعدادات بÙ?رت خادÙ? اسÙ?اء اÙ?Ù?طاÙ?</string>
- <string name="menu_vpn">Ù?Ù? بÙ? اÙ? شبÙ?Ø© Ù?Ù?Ù?Ù?Ø© خاصة</string>
-</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
deleted file mode 100644
index d93f8d2..0000000
--- a/res/values-az/strings.xml
+++ /dev/null
@@ -1,297 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Pulsuz proksi tÉ?tbiqetmÉ?si olan Orbot baÅ?qa tÉ?tbiqetmÉ?lÉ?rÉ? internetdÉ?n daha tÉ?hlükÉ?siz istifadÉ? etmÉ?k imkanı verir. Orbot sizin internet trafikinizi Å?ifrÉ?lÉ?mÉ?k üçün Tordan istifadÉ? edir vÉ? dünyanın hÉ?r yerindÉ? kompüterlÉ?rin birindÉ?n o birinÉ? sıçramaqla bunu gizlÉ?dir. Tor pulsuz proqram tÉ?minatıdır, eyni zamanda sizin Å?É?xsi azadlıÄ?ınız vÉ? tÉ?hlükÉ?sizliyinizÉ?, gizli biznes fÉ?aliyyÉ?ti vÉ? É?laqÉ?lÉ?rÉ?, o cümlÉ?dÉ?n trafik analiz adlanan dövlÉ?t tÉ?hlükÉ?sizliyinÉ? xÉ?lÉ?l gÉ?tirÉ? bilÉ?cÉ?k Å?É?bÉ?kÉ? nÉ?zarÉ?ti formalarından müdafiÉ? olunmaÄ?a yardım edÉ?n açıq Å?É?bÉ?kÉ?dir.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Toru baÅ?lat vÉ? dayandır
-</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot baÅ?layır...</string>
- <string name="status_activated">Tor Å?É?bÉ?kÉ?sinÉ? baÄ?landı</string>
- <string name="status_disabled">Orbot deaktivasiya edildi</string>
- <string name="status_shutting_down">Tor xidmÉ?ti iÅ?ini baÅ?a vurur</string>
- <string name="tor_process_starting">Tor xidmÉ?ti baÅ?layır...</string>
- <string name="tor_process_complete">tamamla.</string>
- <string name="tor_process_waiting">gözlÉ?yirik.</string>
- <string name="not_anonymous_yet">TÆ?HLÃ?KÆ?: SÉ?nin trafikin hÉ?lÉ? anonim deyil! LütfÉ?n, aplikasiyanı ya HTTP proksi 127.0.0.1:8118, ya SOCKS4A, ya da SOCKS5 proksi 127.0.0.1:9050 istifadÉ? etmÉ?k üçün quraÅ?dır.</string>
- <string name="menu_home">Ev</string>
- <string name="menu_browse">Bax</string>
- <string name="menu_settings">QuraÅ?dırmalar</string>
- <string name="menu_log">Jurnal</string>
- <string name="menu_info">KömÉ?k</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">BaÅ?la</string>
- <string name="menu_stop">Dur</string>
- <string name="menu_about">Haqqında</string>
- <string name="menu_promo_apps">TÉ?tbiqetmÉ?lÉ?ri É?ldÉ? edin...</string>
- <string name="main_layout_download">Endir</string>
- <string name="main_layout_upload">YüklÉ?</string>
- <string name="button_help">KömÉ?k</string>
- <string name="button_close">BaÄ?la</string>
- <string name="button_about">Haqqında</string>
- <string name="button_clear_log">Jurnalı TÉ?mizlÉ?</string>
- <string name="menu_verify">Yoxla</string>
- <string name="menu_exit">�ıx</string>
- <string name="menu_scan">KörpüQR kodu skan edin</string>
- <string name="menu_share_bridge">KörpüQR kodu paylaÅ?ın</string>
- <string name="press_to_start">- baÅ?lamaq üçün uzun klik -</string>
- <string name="pref_trans_proxy_group">Å?É?ffaf ProksilÉ?mÉ? (Root TÉ?lÉ?b Edir)</string>
- <string name="pref_trans_proxy_title">Å?É?ffaf ProksilÉ?mÉ?</string>
- <string name="pref_trans_proxy_summary">Aplikasiyaların Avtomatik Torlanması</string>
- <string name="pref_transparent_all_title">HÉ?r Å?eyi Torla</string>
- <string name="pref_transparent_all_summary">Tor vasitÉ?silÉ? bütün aplikasiyaların proksi trafiki</string>
- <string name="pref_transparent_port_fallback_title">Port Proksi Ehtiyatı</string>
- <string name="pref_transparent_port_fallback_summary">TÆ?HLÃ?KÆ?: Ã?mumi alt portlar (80, 443 vÉ? s.). \'Hamısı\' vÉ? ya \'TÉ?tbiqetmÉ?\' iÅ?lÉ?mirsÉ?, *YALNIZ Ä°STÄ°FADÆ? ET*.</string>
- <string name="pref_transparent_port_title">Port Siyahısı</string>
- <string name="pref_transparent_port_summary">ProksiyÉ? port siyahısı. \'Hamısı\' vÉ? ya \'TÉ?tbiqetmÉ?\' iÅ?lÉ?mirsÉ?, *YALNIZ Ä°STÄ°FADÆ? ET*.</string>
- <string name="pref_transparent_port_dialog">ProksiyÉ? port daxil et</string>
- <string name="pref_has_root">Root GiriÅ? TÉ?lÉ?b Et</string>
- <string name="pref_has_root_summary">Å?É?ffaf proksilÉ?mÉ? üçün mÉ?nbÉ? tÉ?lÉ?b et</string>
- <string name="status_install_success">Tor ikilisi müvÉ?ffÉ?qiyyÉ?tlÉ? yüklÉ?ndi!</string>
- <string name="status_install_fail">Tor ikili fayllarının quraÅ?dırılması mümkün olmadı. LütfÉ?n giriÅ?i yoxla vÉ? assistants@xxxxxxxxxxxxxx-a xÉ?bÉ?r ver.</string>
- <string name="title_error">TÉ?tbiq SÉ?hvi</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orbot Haqqında</string>
- <string name="btn_next">Sonrakı</string>
- <string name="btn_back">Geri</string>
- <string name="btn_finish">Bitir</string>
- <string name="btn_okay">Okey</string>
- <string name="btn_cancel">LÉ?Ä?v et</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">BÉ?zi Orbot Detalları</string>
- <string name="wizard_details_msg">Orbot Tor, LibEvent vÉ? Polipodan ibarÉ?t olan açıq mÉ?nbÉ?li tÉ?tbiqetmÉ?dir. O, Tor Å?É?bÉ?kÉ?sini yerli HTTP proksi (8118) vÉ? SOCKS proksi (9050) ilÉ? tÉ?min edir. Orbot hÉ?m dÉ? bütün internet trafiklÉ?ri köklü mexanizm É?sasında Tor vasitÉ?siylÉ? göndÉ?rmÉ?k qabiliyyÉ?tinÉ? malikdir. </string>
- <string name="wizard_permissions_root">Ä°cazÉ? Verilir</string>
- <string name="wizard_permissions_stock">Orbot Ä°cazÉ?lÉ?ri</string>
- <string name="wizard_premissions_msg_root">Æ?la! SÉ?nin Orbot üçün mÉ?nbÉ? icazÉ?lÉ?rinÉ? malik olmanı müÉ?yyÉ?n etmiÅ?ik. Biz bu gücü aÄ?ılla istifadÉ? edÉ?cÉ?yik.</string>
- <string name="wizard_permissions_msg_stock">Bu tÉ?lÉ?b edilmÉ?diyi halda sÉ?nin qurÄ?unun mÉ?nbÉ? giriÅ?i varsa, Orbot daha güclü iÅ?lÉ?yÉ?cÉ?k. Orbota super gücü vermÉ?k üçün aÅ?aÄ?ıdakı düymÉ?ni istifadÉ? et!</string>
- <string name="wizard_permissions_no_root">Æ?gÉ?r sÉ?nin mÉ?nbÉ? giriÅ?inÉ? icazÉ?n yoxdursa, ya da nÉ? haqqında danıÅ?dıÄ?ımızı anlamırsansa, É?min ol ki, istifadÉ? etdiyin aplikasiyalar Orbotla iÅ?lÉ?yÉ? bilÉ?ndirlÉ?r.</string>
- <string name="wizard_permissions_consent">SuperistifadÉ?çisiz davam etmÉ?yi anlayır vÉ? istÉ?yirÉ?m</string>
- <string name="wizard_permission_enable_root">Orbot üçün MÉ?nbÉ? Ver</string>
- <string name="wizard_configure">Torifikasiyanı QuraÅ?dır</string>
- <string name="wizard_configure_msg">Orbot sÉ?nÉ? bütün vÉ? ya seçilmiÅ? aplikasiyalarını Tor vasitÉ?silÉ? istifadÉ? etmÉ?yÉ? imkan yaradır.</string>
- <string name="wizard_configure_all">Bütün Aplikasiyaları Tor VasitÉ?silÉ? Proksi Et</string>
- <string name="wizard_configure_select_apps">Tor üçün MüÉ?yyÉ?n Aplikasiyaları Seç</string>
- <string name="wizard_tips_tricks">Orbota-açıq Aplikasiyalar</string>
- <string name="wizard_tips_msg">AÅ?aÄ?ıdakı aplikasiyalar Orbotla iÅ?lÉ?mÉ?k üçün quraÅ?dırılmıÅ?dır. Ä°ndi quraÅ?dırmaq üçün hÉ?r düymÉ?ni kliklÉ?, ya da baÅ?qa vaxt onları Google Play, GuardianProject.info saytı vÉ? ya F-Doid.org-da tap.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Android üçün tÉ?hlükÉ?siz mesajlaÅ?ma müÅ?tÉ?risi</string>
- <string name="wizard_tips_proxy">Proksi SeçimlÉ?ri - Aplikasiyaların Orbotla necÉ? iÅ?lÉ?yÉ?cÉ?yini öyrÉ?n</string>
- <string name="wizard_tips_duckgo">DuckDuckGO AxtarıÅ? QurÄ?u aplikasiyası</string>
- <string name="wizard_tips_twitter">\"Yerlihost\" vÉ? 8118 portuna sahiblik üçün Twitter proksini quraÅ?dır</string>
- <string name="wizard_tips_story_maker">StoryMaker--Yazı yaz, tÉ?hlükÉ?sizlik mÉ?sÉ?lÉ?sini torun öhdÉ?sinÉ? burax!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proksi qurÄ?uları</string>
- <string name="wizard_proxy_help_msg">Ä°stifadÉ? etdiyiniz Android tÉ?tbiqetmÉ?si HTTP vÉ? SOCKS proksinin istifadÉ?sini dÉ?stÉ?klÉ?yÉ? bilirsÉ?, siz onu Orbotla birlÉ?Å?dirmÉ?k üçün tÉ?nzimlÉ?yÉ? vÉ? Tor.\n\n\n-dÉ?n istifadÉ? edÉ? bilÉ?rsiniz. Host quraÅ?dırmaları 127.0.0.1-dir, yaxud \"yerlihost\"dur. HTTP üçün port quraÅ?dırması 8118-dir. SOCKS üçün proksi 9050-dir. Siz SOCKS4A, yaxud mümkünsÉ?, SOCKS5-dÉ?n istifadÉ? etmÉ?lisiniz.\n \n\n\n FAQ vasitÉ?siylÉ? siz AndroiddÉ? proksilÉ?mÉ? haqda daha çox mÉ?lumat ala bilÉ?rsiniz: http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Orbot hazırdır!</string>
- <string name="wizard_final_msg">Dünyanın müxtÉ?lif yerlÉ?rindÉ? milyonlarla insan Tordan müxtÉ?lif mÉ?qsÉ?dlÉ?rlÉ? istifadÉ? edir. \n\n JurnalistlÉ?r, blogerlÉ?r, insan haqları müdafiÉ?çilÉ?ri, hüquq-mühafizÉ? orqanlarının iÅ?çilÉ?ri, É?sgÉ?rlÉ?r, korporasiyalar, repressiv rejimlÉ?rin vÉ?tÉ?ndaÅ?ları, ya da adi vÉ?tÉ?ndaÅ?lar...Ä°ndi buna siz dÉ? hazırsınız!</string>
- <string name="wizard_exit_at_first_screen_toast">ZÉ?hmÉ?t olmasa, istifadÉ?yÉ? baÅ?lamazdan É?vvÉ?l Orbotu tÉ?nzimlÉ?yin!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Siz Tor Å?É?bÉ?kÉ?sinÉ? uÄ?urla qoÅ?uldunuz. Ancaq bu o demÉ?k deyil ki, sizin cihazınız tÉ?hlükÉ?sizdir. Æ?lqÉ?ni yoxlamaq üçün \'Browser\' düymÉ?sindÉ?n istifadÉ? edÉ? bilÉ?rsiniz. \n\n BizÉ? https://guardianproject.info/apps/orbot sÉ?hifÉ?sindÉ? qonaq ola bilÉ?rsiniz. Daha çox mÉ?lumat É?ldÉ? etmÉ?k üçün help@xxxxxxxxxxxxxxxxxxxx ünvanına mÉ?ktub yazmaq olar. </string>
- <string name="tor_check">Orbotun konfiqurasiya edilmÉ?sini vÉ? sÉ?nin Tor-a qoÅ?ulduÄ?unu dÉ?qiqlÉ?Å?dirmÉ?k üçün bu sÉ?nin brauzerini https://check.torproject.org saytı ilÉ? açacaq.</string>
- <string name="pref_hs_group">Gizli XidmÉ?t Hostinqi</string>
- <string name="pref_general_group">Æ?sas</string>
- <string name="pref_start_boot_title">Android Açıldıqda Orbotu BaÅ?lat</string>
- <string name="pref_start_boot_summary">Android cihazın iÅ?É? baÅ?ladıqda avtomatik olaraq Orbot baÅ?lansın vÉ? Tor-a qoÅ?ulsun</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot Toru AndroidÉ? gÉ?tirir!\n\nTor mÉ?xfiliyÉ?, gizli informasiya vÉ? Å?É?xsi münasibÉ?tlÉ?rÉ? xÉ?lÉ?l gÉ?tirÉ? bilÉ?cÉ?k Å?É?bÉ?kÉ? nÉ?zarÉ?ti, mÉ?zmunun süzgÉ?cdÉ?n keçirilmÉ?si vÉ? trafik analizindÉ?n müdafiÉ? olunmaqda sizÉ? yardım edir.\n\nBu sehrbaz Orbot vÉ? Toru sizin cihazınıza quraÅ?dırmaÄ?a kömÉ?k edÉ?cÉ?k. </string>
- <!--Warning screen-->
- <string name="wizard_warning_title">XÉ?bÉ?rdarlıq</string>
- <string name="wizard_warning_msg">SadÉ?cÉ? Orbotun quraÅ?dırılması mobil trafikinizi avtomatik olaraq anonimlÉ?Å?dirÉ? bilmÉ?z.\n\nTordan uÄ?urla istifadÉ? etmÉ?k üçün siz Orbotu, cihazınızı vÉ? baÅ?qa tÉ?tbiqetmÉ?lÉ?ri bir-birinÉ? uyÄ?unlaÅ?dırmalısınız. </string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ä°cazÉ?</string>
- <string name="wizard_permissions_root_msg1">SÉ?n istÉ?sÉ?n Orbot-un \'SuperistifadÉ?çi\' giriÅ?ini É?ldÉ? edib Å?É?ffaf ProksilÉ?mÉ? kimi É?lavÉ? seçimlÉ?r qazana bilÉ?rsÉ?n.</string>
- <string name="wizard_permissions_root_msg2">Bunu etmÉ?k istÉ?mirsÉ?nsÉ?, yalnız Orbot-la iÅ?lÉ?mÉ?si mümkün aplikasiyalara sahib olduÄ?una É?min ol</string>
- <string name="wizard_permissions_no_root_msg">Sizin cihazınız yÉ?qin ki, rout olunmayıb, ya da rout vÉ? ya \"SuperistifadÉ?çi\" keçidi ilÉ? tÉ?min etmir.\n\nXahiÅ? edirik, bunun É?vÉ?zinÉ? É?sas ekranda \'TÉ?tbiqetmÉ?lÉ?r\' rejimindÉ?n istifadÉ? etmÉ?yÉ? çalıÅ?ın. </string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-a Açıq Aplikasiyalar</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Ã?at aplikasiyasını Qeydsiz Å?ifrlÉ?mÉ? ilÉ? tÉ?hlükÉ?sizlÉ?Å?dir</string>
- <string name="wizard_tips_orweb">Orfox: Tor vasitÉ?siylÉ? iÅ?lÉ?yÉ?n vÉ? mÉ?xfiliyi artıran brauzer</string>
- <string name="wizard_tips_play">Google Play-dÉ? bütün Guardian LayihÉ? aplikasiyaları tap</string>
- <string name="wizard_tips_fdroid">F-DroiddÉ?ki bütün Guardian Project tÉ?tbiqetmÉ?lÉ?rini tapın </string>
- <string name="wizard_tips_fdroid_org">https://f-droid.org-dÉ;? bütün Guardian Project tÉ?tbiqetmÉ?lÉ?rini tapın</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Å?É?ffaf ProksilÉ?mÉ?</string>
- <string name="wizard_transproxy_msg">Bu heç bir konfiqurasiyaya ehtiyac olmadan aplikasiyalarının avtomatik olaraq Tor Å?É?bÉ?kÉ?si vasitÉ?silÉ? iÅ?lÉ?mÉ?sini tÉ?min edir.</string>
- <string name="wizard_transproxy_hint">(DediklÉ?rimizdÉ?n heç biri haqqında xÉ?bÉ?rin yoxdursa, qutunu iÅ?arÉ?lÉ?)</string>
- <string name="wizard_transproxy_none">Heç biri</string>
- <string name="pref_transparent_tethering_title">Tor-un Son HÉ?ddi</string>
- <string name="pref_transparent_tethering_summary">Wifi vÉ? USB ilÉ? BaÄ?lanan Cihazlar üçün Tor Å?É?ffaf ProksilÉ?mÉ?ni AktivlÉ?Å?dir (cihazın yenidÉ?n yüklÉ?nmÉ?sini tÉ?lÉ?b edir)</string>
- <string name="button_grant_superuser">SuperistifadÉ?çi GiriÅ? TÉ?lÉ?bi</string>
- <string name="pref_select_apps">Aplikasiya Seç</string>
- <string name="pref_select_apps_summary">Tor vasitÉ?silÉ? açılması üçün Aplikasiya seç</string>
- <string name="pref_node_configuration">KÉ?siÅ?mÉ? Konfiqurasiyası</string>
- <string name="pref_node_configuration_summary">Bunlar sÉ?nin anonimliyini azalda bilÉ?cÉ?k É?traflı seçimlÉ?rdir</string>
- <string name="pref_entrance_node">GiriÅ? KÉ?siÅ?mÉ?lÉ?ri</string>
- <string name="pref_entrance_node_summary">Birinci sıçrayıÅ? üçün barmaq izlÉ?ri, niÅ?anlar, ölkÉ?lÉ?r vÉ? ünvanlar</string>
- <string name="pref_entrance_node_dialog">GiriÅ? KÉ?siÅ?mÉ?lÉ?rini Æ?lavÉ? et</string>
- <string name="pref_allow_background_starts_title">Arxa fonun iÅ?É? baÅ?lamasına icazÉ? verin</string>
- <string name="pref_allow_background_starts_summary">Qoy hÉ?r-hansı tÉ?tbiqetmÉ? Orbota Tor vÉ? É?laqÉ?li xidmÉ?tlÉ?ri iÅ?É? salmalı olduÄ?unu desin</string>
- <string name="button_proxy_all">HÉ?r Å?eyi proksilÉ?
-</string>
- <string name="button_proxy_none">Heç nÉ?yi proksilÉ?mÉ?</string>
- <string name="button_invert_selection">Seçiminin yerini dÉ?yiÅ?</string>
- <string name="pref_proxy_title">Ä°xrac EdilÉ?n Å?É?bÉ?kÉ? Proksisi (istÉ?yÉ? baÄ?lı)</string>
- <string name="pref_proxy_type_title">Ä°xrac EdilÉ?n Proksi Növü</string>
- <string name="pref_proxy_type_summary">Proksi serveri istifadÉ? etmÉ?k üçün protokol: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Proksi Növünü Daxil Et</string>
- <string name="pref_proxy_host_title">Ä°xrac EdilÉ?n Proksi Hostu</string>
- <string name="pref_proxy_host_summary">Proksi Server host adı</string>
- <string name="pref_proxy_host_dialog">Proksi Hostu Daxil Et</string>
- <string name="pref_proxy_port_title">Ä°xrac EdilÉ?n Proksi Port</string>
- <string name="pref_proxy_port_summary">Proksi Server portu</string>
- <string name="pref_proxy_port_dialog">Proksi portu daxil et</string>
- <string name="pref_proxy_username_title">Ä°xrac EdilÉ?n Proxy Ä°stifadÉ?çi Adı</string>
- <string name="pref_proxy_username_summary">Proksi Ä°stifadÉ?çi Adı (istÉ?yÉ? baÄ?lı)</string>
- <string name="pref_proxy_username_dialog">Proksi Ä°stifadÉ?çi Adı Daxil Et</string>
- <string name="pref_proxy_password_title">Ä°xrac EdilÉ?n Proksi Å?ifrÉ?</string>
- <string name="pref_proxy_password_summary">Proksi Å?ifrÉ? (istÉ?yÉ? baÄ?lı)</string>
- <string name="pref_proxy_password_dialog">Proksi Å?ifrÉ? Daxil et</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Tam Å?É?ffaf proksilÉ?mÉ?nin quraÅ?dırılması...</string>
- <string name="setting_up_app_based_transparent_proxying_">Aplikasiya É?saslı Å?É?ffaf proksilÉ?mÉ?nin quraÅ?dırılması...</string>
- <string name="transparent_proxying_enabled">Å?É?ffaf proksilÉ?mÉ? AKTÄ°VLÆ?Å?DÄ°RÄ°LDÄ°</string>
- <string name="transproxy_enabled_for_tethering_">BaÄ?lanma üçün TransProksi aktivlÉ?Å?dirildi!</string>
- <string name="warning_error_starting_transparent_proxying_">TÆ?HLÃ?KÆ?: Å?É?ffaf proksilÉ?mÉ?nin baÅ?lanmasında xÉ?ta!</string>
- <string name="transproxy_rules_cleared">TransProksi qaydalar tÉ?mizlÉ?ndi</string>
- <string name="couldn_t_start_tor_process_">Tor prosesi baÅ?lana bilmÉ?di:</string>
- <string name="privoxy_is_running_on_port_">Polipo portda iÅ?lÉ?yir</string>
- <string name="setting_up_port_based_transparent_proxying_">Porta É?saslanmıÅ? proksilÉ?mÉ?nin quraÅ?dırılması...</string>
- <string name="bridge_error">Körpü XÉ?tası</string>
- <string name="bridge_requires_ip">Körpü funksiyasını istifadÉ? etmÉ?k üçün É?n azı bir körpü IP ünvanı É?lavÉ? etmÉ?lisÉ?n.</string>
- <string name="send_email_for_bridges">Gmail hesabından bridges@xxxxxxxxxxxxxx ünvanına mÉ?tn hissÉ?sindÉ? \"körpü É?ldÉ? et\" sözlÉ?ri yazılmaqla mÉ?ktub göndÉ?r.</string>
- <string name="error">XÉ?ta</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">SÉ?nin Æ?lçatanÃ?nvanlar seçimin istisnaya sÉ?bÉ?b oldu!</string>
- <string name="your_relay_settings_caused_an_exception_">SÉ?nin keçid seçimlÉ?rin istisnaya sÉ?bÉ?b oldu!</string>
- <string name="exit_nodes">KÉ?siÅ?mÉ?lÉ?ri Xaric Et</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Son sıçrayıÅ? üçün barmaq izlÉ?ri, niÅ?anlar, ölkÉ?lÉ?r vÉ? ünvanlar</string>
- <string name="enter_exit_nodes">Ã?ıxıÅ? KÉ?siÅ?mÉ?lÉ?rini Daxil Et</string>
- <string name="exclude_nodes">KÉ?siÅ?mÉ?lÉ?ri Xaric Et</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ä°xrac üçün barmaq izlÉ?ri, niÅ?anlar, ölkÉ?lÉ?r vÉ? ünvanlar</string>
- <string name="enter_exclude_nodes">Ä°xrac KÉ?siÅ?mÉ?lÉ?rini Daxil Et</string>
- <string name="strict_nodes">KÉ?skin KÉ?siÅ?mÉ?lÉ?r</string>
- <string name="use_only_these_specified_nodes">*Yalnız* bu xüsusi kÉ?siÅ?mÉ?lÉ?ri istifadÉ? et</string>
- <string name="bridges">KörpülÉ?r</string>
- <string name="use_bridges">Körpü Ä°stifadÉ? Et</string>
- <string name="bridges_obfuscated">Ã?aÅ?dırıcı KörpülÉ?r</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor Å?É?bÉ?kÉ?sinÉ? alternativ giriÅ? kÉ?siÅ?mÉ?lÉ?rini aktivlÉ?Å?dir</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">QuraÅ?dırılmıÅ? körpülÉ?r çaÅ?dırıcı körpülÉ?r olsa, aktivlÉ?Å?dir</string>
- <string name="ip_address_and_port_of_bridges">KörpülÉ?rin IP ünvanı vÉ? portu</string>
- <string name="enter_bridge_addresses">Körpü �nvanlarını Daxil et</string>
- <string name="relays">KeçidlÉ?r</string>
- <string name="relaying">KeçidlÉ?mÉ?</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Cihazının son-keçid funksiyasını aktivlÉ?Å?dir</string>
- <string name="relay_port">Keçid Portu</string>
- <string name="listening_port_for_your_tor_relay">Tor keçidin üçün portun dinlÉ?nmÉ?si</string>
- <string name="enter_or_port">OR port daxil et</string>
- <string name="relay_nickname">Keçid adı</string>
- <string name="the_nickname_for_your_tor_relay">Tor keçidin üçün ad</string>
- <string name="enter_a_custom_relay_nickname">Ä°lkin keçidÉ? ad daxil et</string>
- <string name="reachable_addresses">Æ?lçatan Ã?nvanlar</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">MÉ?hdudlaÅ?mıÅ? siyasÉ?tlÉ? qoruyucu divar arxasındakı müÅ?tÉ?ri kimi iÅ?lÉ?t</string>
- <string name="reachable_ports">Æ?lçatan portlar</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">MÉ?hdudlaÅ?dırılmıÅ? qoruyucu divar arxasında É?lçatan portlar</string>
- <string name="enter_ports">Port daxil et</string>
- <string name="enable_hidden_services">Gizli XidmÉ?t Hostinqi</string>
- <string name="run_servers_accessible_via_the_tor_network">cihaz serverinin Tor Å?É?bÉ?kÉ?si tÉ?rÉ?findÉ?nÉ?ldÉ? edilÉ?n olmasına icazÉ? ver</string>
- <string name="enter_localhost_ports_for_hidden_services">gizli xidmÉ?tlÉ?r üçün yerlihost portlarını daxil et</string>
- <string name="hidden_service_ports">Gizli XidmÉ?t Portları</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">gizli xidmÉ?tin üçün ünvanlanan ad (avtomatik hazırlanmıÅ?)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">mÉ?hsul üçün sazlama giriÅ?i daxil et (baxmaq üçün adb vÉ? ya aLogCat istifadÉ? etmÉ?lisÉ?n)</string>
- <string name="project_home">LayihÉ? Evi(lÉ?ri):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor Lisenziyası</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">XidmÉ?ti QuraÅ?dırma:</string>
- <string name="tor_version">
-Tor: https://www.torproject.org</string>
- <string name="libevent_version">
-LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">SSL-i aç v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Aplikasiya Tor Å?É?bÉ?kÉ?sinÉ? %S gizli server portu açmaq istÉ?yir. Aplikasiyaya inandıÄ?ın halda bu tÉ?hlükÉ?sizdir.</string>
- <string name="found_existing_tor_process">mövcud Tor prosesi tapıldı...</string>
- <string name="something_bad_happened">NÉ? isÉ? pis bir Å?ey oldu. GiriÅ?i yoxla</string>
- <string name="hidden_service_on">burada gizli xidmÉ?ti:</string>
- <string name="unable_to_read_hidden_service_name">gizli xidmÉ?t adını oxumaÄ?ı deaktivlÉ?Å?dir</string>
- <string name="unable_to_start_tor">Tor-un baÅ?lanmasını dayandır:</string>
- <string name="unable_to_reset_tor">Cihazınızı yenidÉ?n yüklÉ?yin, Toru bÉ?rpa etmÉ?k olmur!</string>
- <string name="pref_use_sys_iptables_title">Mövcud Ipstol Ä°stifadÉ? Et</string>
- <string name="pref_use_sys_iptables_summary">Orbotla baÄ?lanmıÅ? ipstol É?vÉ?zinÉ? daxili cüt ipstol istifadÉ? et</string>
- <string name="error_installing_binares">Tor cütlüklÉ?ri quraÅ?dırıla vÉ? ya tÉ?kmillÉ?Å?dirilÉ? bilmÉ?di.</string>
- <string name="pref_use_persistent_notifications">HÉ?miÅ?É? Orbot qoÅ?ulduÄ?u hallarda niÅ?anı alÉ?tlÉ?t panelindÉ? saxla</string>
- <string name="pref_use_persistent_notifications_title">HÉ?miÅ?É? Açıq XÉ?bÉ?rdarlıqlar</string>
- <string name="pref_use_expanded_notifications">Torla birlikdÉ? É?traflı bildiriÅ?i göstÉ?rib ölkÉ? vÉ? IP-dÉ?n çıxın. </string>
- <string name="pref_use_expanded_notifications_title">Æ?traflı bildiriÅ?lÉ?r</string>
- <string name="notification_using_bridges">KörpülÉ?r aktivlÉ?Å?dirildi!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Dil</string>
- <string name="set_locale_summary">Orbot üçün dil standartlarını vÉ? dili seç</string>
- <string name="wizard_locale_title">Dil Seç</string>
- <string name="wizard_locale_msg">OlduÄ?u kimi saxla, ya da mövcud dilÉ? keç</string>
- <string name="powered_by">Tor tÉ?rÉ?findÉ?n yaradılmıÅ?</string>
- <string name="btn_save_settings">SeçimlÉ?ri Saxla</string>
- <string name="no_internet_connection_tor">Ä°nternet yoxdur; Tor gözlÉ?yir</string>
- <string name="bandwidth_">Ã?türmÉ? qabiliyyÉ?ti:</string>
- <string name="down">aÅ?aÄ?ı</string>
- <string name="up">yuxarı</string>
- <string name="pref_disable_network_title">Avto-Yuxu Å?É?bÉ?kÉ?si Yoxdur</string>
- <string name="pref_disable_network_summary">Ä°nternet olmadıqda icazÉ? ver Tor yatsın</string>
- <string name="newnym">Yeni Tor oxÅ?arına qoÅ?uldun!</string>
- <string name="menu_verify_browser">Bax</string>
- <string name="menu_use_chatsecure">ChatSecure istifadÉ? et</string>
- <string name="permission_manage_tor_label">Toru Ä°darÉ? Et</string>
- <string name="permission_manage_tor_description">Tor xidmÉ?tini idarÉ? etmÉ?si üçün aplikasiyanı aktivlÉ?Å?dir</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">DeyÉ?sÉ?n Orfoxu quraÅ?dırmamısınız. Yardıma ehtiyacınız var, yoxsa yalnız brauzeri açmalıyıq?</string>
- <string name="install_apps_">Aplikasiya quraÅ?dırılsın?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ä°nternetlÉ? É?laqÉ? yoxdur. Tor gözlÉ?mÉ? rejiminÉ? keçir...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Ä°nternetlÉ? É?laqÉ? yaxÅ?ıdır. Tor iÅ? rejiminÉ? keçir...</string>
- <string name="updating_settings_in_tor_service">Tor xidmÉ?tindÉ? quraÅ?dırmalar yüklÉ?nir</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Torun tÉ?klif etdiyi Port SOCKS proksi iÅ?lÉ?yir (standart: 9050, yaxud söndürmÉ?k üçün 0) </string>
- <string name="pref_socks_dialog">SOCKS Port Config</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Torun tÉ?klif etdiyi Port Transparent proksi iÅ?lÉ?yir (standart: 9040, yaxud söndürmÉ?k üçün 0) </string>
- <string name="pref_transport_dialog">TransProxy Port Config</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Torun tÉ?klif etdiyi Port DNS iÅ?lÉ?yir (standart: 5400, yaxud söndürmÉ?k üçün 0)</string>
- <string name="pref_dnsport_dialog">DNS Port Config</string>
- <string name="pref_torrc_title">Torrc Custom Config</string>
- <string name="pref_torrc_summary">YALNIZ EKSPERTLÆ?R: birbaÅ?a torrc config xÉ?tlÉ?rini daxil edin</string>
- <string name="pref_torrc_dialog">Custom Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Ä°nsan haqları SÉ?nÉ?dlÉ?ri tÉ?tbiqetmÉ?si</string>
- <string name="your_tor_public_ips_">Sizin ictimai Tor Ä°P-lÉ?riniz</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Orbotla baÄ?lı probleminiz varsa, lütfÉ?n, Android->Settings->Apps-dÉ? bu tÉ?tbiqetmÉ?ni söndürün;</string>
- <string name="app_conflict">TÉ?tbiqetmÉ? konflikti</string>
- <string name="pref_transproxy_refresh_title">Transproxy avtomatik yenilÉ?mÉ?</string>
- <string name="pref_transproxy_refresh_summary">Å?É?bÉ?kÉ? vÉ?ziyyÉ?ti dÉ?yiÅ?É?ndÉ? Transproxy qaydalarını yenidÉ?n tÉ?tbiq edin</string>
- <string name="pref_transproxy_flush_title">Transproxy MÆ?CBURÄ° POZMA</string>
- <string name="pref_transproxy_flush_summary">Bütün transproxy Å?É?bÉ?kÉ? qaydalarını elÉ? Ä°NDÄ° lÉ?Ä?v etmÉ?k üçün bura kliklÉ?yin</string>
- <string name="transparent_proxy_rules_flushed_">Transparent proksi qaydaları lÉ?Ä?v edildi</string>
- <string name="you_do_not_have_root_access_enabled">Root giriÅ?iniz yoxdur</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">QuraÅ?dırma dÉ?yiÅ?ikliklÉ?rinin tÉ?tbiq edilmÉ?si üçün Orbota baÅ?lamaÄ?a vÉ? ya onu dayandırmaÄ?a ehtiyacınız ola bilÉ?r. </string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">KörpülÉ?r yenilÉ?ndi</string>
- <string name="restart_orbot_to_use_this_bridge_">LütfÉ?n, Orbotu söndürün vÉ? yenidÉ?n yandırın ki, dÉ?yiÅ?ikliklÉ?r tÉ?tbiq edilsin.</string>
- <string name="menu_qr">QR kodlar</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">SÉ?nin mobil Å?É?bÉ?kÉ?n Toru aktiv Å?É?kildÉ? É?ngÉ?llÉ?yirsÉ?, Å?É?bÉ?kÉ?yÉ? daxil olmaq üçün KörpüdÉ?n istifadÉ? edÉ? bilÉ?rsÉ?n. KörpülÉ?ri aktivlÉ?Å?dirmÉ?k üçün yuxarıdakı körpü növlÉ?rindÉ?n birini SEÃ?.</string>
- <string name="bridge_mode">Körpü rejimi</string>
- <string name="get_bridges_email">Emeyl</string>
- <string name="get_bridges_web">Veb</string>
- <string name="activate">AktivlÉ?Å?dir</string>
- <string name="apps_mode">TÉ?tbiqetmÉ?lÉ?r VPN Rejimi</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Tor Å?É?bÉ?kÉ?si vasitÉ?siylÉ? qoÅ?ulmaq üçün Android.\n\n*WARNING*-in VPN funksiyasından istifadÉ? edÉ?rÉ?k öz qurÄ?unda bütün tÉ?tbiqetmÉ?lÉ?ri aktivlÉ?Å?dirÉ? bilÉ?rsÉ?n. Bu, yeni, eksperimental funksiyadır vÉ? bÉ?zÉ?n avtomatik olaraq baÅ?lamaya, yaxud dayana bilÉ?r. Bundan anonimlik mÉ?qsÉ?diylÉ? istifadÉ? etmÉ?k OLMAZ, bundan YALNIZ süzgÉ?c vÉ? qoruma divarlarından keçmÉ?k üçün istifadÉ? etmÉ?k lazımdır. </string>
- <string name="send_email">Emeyl göndÉ?rin</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Körpü ünvanını siz emeyl vÉ? veb vasitÉ?siylÉ?, ya da körpünün QR kodunu skan etmÉ?klÉ? É?ldÉ? edÉ? bilÉ?rsiniz. Körpü ünvanı haqda sorÄ?unun altında \'Email\'i, yaxud \'Web\'i seçin.\n\nÃ?nvanı É?ldÉ? edÉ?ndÉ?n sonra &amp-i nüsxÉ?lÉ?yin vÉ? onu Orbot quraÅ?dırmasındakı \"Bridges\" parametrinÉ? qoyun vÉ? cihazı yenidÉ?n yüklÉ?yin.</string>
- <string name="install_orweb">Orfoxu quraÅ?dırın</string>
- <string name="standard_browser">Standart Brauzer</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">QEYD: Intel X86/ATOM cihazlarında yalnız standart Tor körpülÉ?r iÅ?lÉ?yir.</string>
- <string name="vpn_default_world">Dünya</string>
-</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
deleted file mode 100644
index ed881a2..0000000
--- a/res/values-bg/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Ð?Ñ?боÑ?</string>
- <string name="app_description">Orbot е безплаÑ?на пÑ?окÑ?и пÑ?огÑ?ама, коÑ?Ñ?о дава вÑ?зможноÑ?Ñ?а на дÑ?Ñ?ги пÑ?огÑ?ами да използваÑ? инÑ?еÑ?енÑ? по-Ñ?игÑ?Ñ?но. Orbot използва Tor, за да кÑ?ипÑ?иÑ?а Ð?нÑ?еÑ?неÑ? Ñ?Ñ?аÑ?ика и Ñ?лед Ñ?ова го Ñ?кÑ?ива каÑ?о пÑ?епÑ?аÑ?а пÑ?ез нÑ?колко компÑ?Ñ?Ñ?Ñ?а по Ñ?елиÑ? Ñ?вÑ?Ñ?. Tor е безплаÑ?ен Ñ?оÑ?Ñ?Ñ?еÑ? и оÑ?воÑ?ена мÑ?ежа, коÑ?Ñ?о Ñ?и помага да Ñ?е пÑ?едпазиÑ? оÑ? Ñ?пиониÑ?ане по мÑ?ежаÑ?а, коеÑ?о заплаÑ?ва Ñ?воÑ?Ñ?а Ñ?вобода и лиÑ?но пÑ?оÑ?Ñ?Ñ?анÑ?Ñ?во, конÑ?иденÑ?иални бизнеÑ? оÑ?ноÑ?ение и вÑ?Ñ?зки, и оÑ? вид пÑ?авиÑ?елÑ?Ñ?вено Ñ?ледене наÑ?еÑ?ено Ñ?Ñ?аÑ?ик анализ.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Ñ?Ñ?аÑ?Ñ?иÑ?ай и Ñ?Ñ?опиÑ?ай ТоÑ?</string>
- <string name="tor_proxy_service_process">Tor пÑ?окÑ?и</string>
- <string name="status_starting_up">Ð?Ñ?боÑ? Ñ?Ñ?аÑ?Ñ?иÑ?а...</string>
- <string name="status_activated">СвÑ?Ñ?зан кÑ?м ТоÑ? мÑ?ежаÑ?а</string>
- <string name="status_disabled">Ð?Ñ?боÑ? е деакÑ?ивиÑ?ан</string>
- <string name="status_shutting_down">TorService Ñ?пиÑ?а</string>
- <string name="tor_process_starting">СÑ?аÑ?Ñ?иÑ?ане на ТоÑ? клиенÑ?...</string>
- <string name="tor_process_complete">завÑ?Ñ?Ñ?ено.</string>
- <string name="tor_process_waiting">изÑ?акване.</string>
- <string name="not_anonymous_yet">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: ТÑ?аÑ?икÑ?Ñ? Ð?и не е анонимен! Ð?олÑ? конÑ?игÑ?Ñ?иÑ?айÑ?е пÑ?иложениÑ?Ñ?а Ñ?и да използваÑ? HTTP proxy 127.0.0.1:8118 или SOCKS4A или SOCKS5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Ð?аÑ?ало</string>
- <string name="menu_browse">Ð?Ñ?елиÑ?Ñ?и</string>
- <string name="menu_settings">Ð?аÑ?Ñ?Ñ?ойки</string>
- <string name="menu_log">Ð?ог</string>
- <string name="menu_info">Ð?омоÑ?</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">СÑ?аÑ?Ñ?</string>
- <string name="menu_stop">СÑ?оп</string>
- <string name="menu_about">Ð?Ñ?ноÑ?но</string>
- <string name="menu_promo_apps">Ð?зÑ?егли пÑ?иложениÑ?...</string>
- <string name="main_layout_download">Ð?зÑ?егли</string>
- <string name="main_layout_upload">Ð?аÑ?и</string>
- <string name="button_help">Ð?омоÑ?</string>
- <string name="button_close">Ð?аÑ?воÑ?и</string>
- <string name="button_about">Ð?Ñ?ноÑ?но</string>
- <string name="button_clear_log">Ð?зÑ?иÑ?Ñ?и лог</string>
- <string name="menu_verify">Check</string>
- <string name="menu_exit">Ð?зÑ?од</string>
- <string name="menu_scan">СканиÑ?ай BridgeQR</string>
- <string name="menu_share_bridge">Сподели BridgeQR</string>
- <string name="press_to_start">- за Ñ?Ñ?аÑ?Ñ? наÑ?иÑ?ни и задÑ?Ñ?ж -</string>
- <string name="pref_trans_proxy_group">Ð?Ñ?озÑ?аÑ?но пÑ?окÑ?и (Ð?зиÑ?ква Root)</string>
- <string name="pref_trans_proxy_title">Ð?Ñ?озÑ?аÑ?но пÑ?окÑ?и</string>
- <string name="pref_trans_proxy_summary">Ð?вÑ?омаÑ?иÑ?но пÑ?екаÑ?ване на пÑ?иложениÑ?Ñ?а пÑ?ез ТоÑ?</string>
- <string name="pref_transparent_all_title">Ð?Ñ?иÑ?ко пÑ?ез ТоÑ?</string>
- <string name="pref_transparent_all_summary">Ð?Ñ?еÑ?вÑ?Ñ?лÑ?й пÑ?ез ТоÑ? Ñ?Ñ?аÑ?ика на вÑ?иÑ?ки пÑ?иложениÑ?</string>
- <string name="pref_transparent_port_fallback_title">ТоÑ? пÑ?окÑ?и Ñ?Ñ?лÑ?гаÑ?а Ñ?мени поÑ?Ñ?а</string>
- <string name="pref_transparent_port_fallback_summary">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: Ð?аобикалÑ? Ñ?Ñ?андаÑ?Ñ?ниÑ?е поÑ?Ñ?ове(80, 443, Ñ?.н.). *Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð? СÐ?Ð?Ð?* ако Ñ?ежимиеÑ?е \'Ð?Ñ?иÑ?ки\' или \'Ð?Ñ?огÑ?ама\' не Ñ?абоÑ?Ñ?Ñ?.</string>
- <string name="pref_transparent_port_title">СпиÑ?Ñ?к поÑ?Ñ?ове</string>
- <string name="pref_transparent_port_summary">СпиÑ?Ñ?к Ñ? поÑ?Ñ?овеÑ?е, на коиÑ?о да Ñ?е ползва пÑ?окÑ?и. *Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð? СÐ?Ð?Ð?* ако Ñ?ежимиеÑ?е \'Ð?Ñ?иÑ?ки\' или \'Ð?Ñ?огÑ?ама\' не Ñ?абоÑ?Ñ?Ñ?.</string>
- <string name="pref_transparent_port_dialog">Ð?Ñ?веди поÑ?Ñ?ове на пÑ?окÑ?и</string>
- <string name="pref_has_root">Ð?зиÑ?квай Root доÑ?Ñ?Ñ?п</string>
- <string name="pref_has_root_summary">Ð?зиÑ?квай root доÑ?Ñ?Ñ?п за пÑ?озÑ?аÑ?но пÑ?окÑ?и</string>
- <string name="status_install_success">ТоÑ? е Ñ?Ñ?пеÑ?но инÑ?Ñ?алиÑ?ан!</string>
- <string name="status_install_fail">Ð?вÑ?иÑ?ниÑ?е Ñ?айлове на ТоÑ? не Ñ?а инÑ?Ñ?алиÑ?ани. Ð?олÑ? пÑ?овеÑ?еÑ?е лога и Ñ?ведомеÑ?е tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ð?Ñ?еÑ?ка в пÑ?иложениеÑ?о</string>
- <string name="wizard_title">Ð?Ñ?боÑ?</string>
- <string name="wizard_btn_tell_me_more">Ð?Ñ?ноÑ?но Ð?Ñ?боÑ?</string>
- <string name="btn_next">СледваÑ?</string>
- <string name="btn_back">Ð?бÑ?аÑ?но</string>
- <string name="btn_finish">Ð?Ñ?ай</string>
- <string name="btn_okay">Ð?Ð?</string>
- <string name="btn_cancel">Ð?Ñ?кажи</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ð?Ñ?кои Ð?Ñ?боÑ? деÑ?айли</string>
- <string name="wizard_details_msg">Orbot е пÑ?иложение Ñ? оÑ?воÑ?ен код, коеÑ?о Ñ?Ñ?дÑ?Ñ?жа Tor, LibEvent и Polipo. То пÑ?едлага локално HTTP пÑ?окÑ?и (8118) и SOCKS пÑ?окÑ?и (9050) кÑ?м Tor мÑ?ежаÑ?а. Orbot Ñ?Ñ?Ñ?о Ñ?ака има вÑ?зможноÑ?Ñ?а, на Ñ?Ñ?Ñ?ойÑ?Ñ?ва Ñ? root доÑ?Ñ?Ñ?п, да пÑ?епÑ?аÑ?а Ñ?елиÑ?Ñ? инÑ?еÑ?неÑ? Ñ?Ñ?аÑ?ик пÑ?ез Tor.</string>
- <string name="wizard_permissions_root">Ð?Ñ?аваÑ?а дадени</string>
- <string name="wizard_permissions_stock">Orbot Permissions</string>
- <string name="wizard_premissions_msg_root">Ð?Ñ?лиÑ?но! Ð?аÑ?Ñ?коÑ?ме, Ñ?е имаÑ?е root пÑ?ава доÑ?Ñ?Ñ?пни за Ð?Ñ?боÑ?. Ще използваме Ñ?ази Ñ?ила Ñ?азÑ?мно.</string>
- <string name="wizard_permissions_msg_stock"> Ð?Ñ?пÑ?еки Ñ?е не е задÑ?лжиÑ?елно, Ð?Ñ?боÑ? може да Ñ?Ñ?ане по-моÑ?но пÑ?иложение ако има root доÑ?Ñ?Ñ?п. Ð?зползвайÑ?е бÑ?Ñ?она долÑ? за да дадеÑ?е на Ð?Ñ?боÑ? Ñ?Ñ?пеÑ?Ñ?или!</string>
- <string name="wizard_permissions_no_root">Ð?ко нÑ?маÑ?е root доÑ?Ñ?Ñ?п или не знаеÑ?е за какво Ñ?Ñ?ава вÑ?пÑ?оÑ?, пÑ?оÑ?Ñ?о използвайÑ?е пÑ?иложениÑ? напÑ?авени да Ñ?абоÑ?Ñ?Ñ? Ñ? Ð?Ñ?боÑ?.</string>
- <string name="wizard_permissions_consent">РазбиÑ?ам и иÑ?кам да пÑ?одÑ?лжа без СÑ?пеÑ?поÑ?Ñ?ебиÑ?ел</string>
- <string name="wizard_permission_enable_root">РазÑ?еÑ?и Root за Ð?Ñ?боÑ?</string>
- <string name="wizard_configure">Ð?аÑ?Ñ?Ñ?ой ТоÑ?иÑ?икаÑ?иÑ?Ñ?а</string>
- <string name="wizard_configure_msg">Ð?Ñ?боÑ? Ð?и дава вÑ?зможноÑ?Ñ? да пÑ?екаÑ?аÑ?е вÑ?иÑ?киÑ? Ñ?Ñ?аÑ?ик пÑ?ез ТоÑ? или да избеÑ?еÑ?е пÑ?иложениÑ? по оÑ?делно.</string>
- <string name="wizard_configure_all">Ð?Ñ?екаÑ?ай вÑ?иÑ?ки пÑ?иложениÑ? пÑ?ез ТоÑ?</string>
- <string name="wizard_configure_select_apps">Ð?збеÑ?и оÑ?делни пÑ?иложениÑ? за ТоÑ?</string>
- <string name="wizard_tips_tricks">Ð?оддÑ?Ñ?жани оÑ? Ð?Ñ?боÑ? пÑ?иложениÑ?</string>
- <string name="wizard_tips_msg">Ð?Ñ?иложениÑ?Ñ?а по-долÑ? Ñ?а Ñ?Ñ?здадени Ñ?ака, Ñ?е да Ñ?абоÑ?Ñ?Ñ? Ñ? Ð?Ñ?боÑ?. ЦÑ?кни на вÑ?еки бÑ?Ñ?он, за да инÑ?Ñ?алиÑ?аÑ? Ñ?ега или може да ги намеÑ?иÑ? по-кÑ?Ñ?но в Ð?ндÑ?оид маÑ?кеÑ?.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Ð?Ñ?ипÑ?иÑ?ан Ñ?аÑ? пÑ?огÑ?ама за Ð?ндÑ?оид</string>
- <string name="wizard_tips_proxy">Proxy Settings - Ð?аÑ?Ñ?еÑ?е как да конÑ?игÑ?Ñ?иÑ?аÑ?е пÑ?иложениÑ? да Ñ?абоÑ?Ñ?Ñ? пÑ?ез Ð?Ñ?боÑ?</string>
- <string name="wizard_tips_duckgo">DuckDuckGo ТÑ?Ñ?Ñ?аÑ?ка</string>
- <string name="wizard_tips_twitter">Ð?аглаÑ?еÑ?е пÑ?окÑ?иÑ?о на Twitter на \"localhost\" и поÑ?Ñ? 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - СÑ?здай иÑ?Ñ?оÑ?иÑ? и оÑ?Ñ?ави Ñ?игÑ?Ñ?ноÑ?Ñ?а на tor!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ð?Ñ?окÑ?и наÑ?Ñ?Ñ?ойки</string>
- <string name="wizard_proxy_help_msg">Ð?ко Ð?ндÑ?оид пÑ?иложениеÑ?о, коеÑ?о използваÑ? поддÑ?Ñ?жа HTTP или SOCKS пÑ?окÑ?и, Ñ?огава мжоеÑ? да го конÑ?игÑ?Ñ?иÑ?аÑ? да Ñ?е Ñ?вÑ?Ñ?зва Ñ? Orbot и да използва Tor.\n\n\nÐ?аÑ?Ñ?ойкиÑ?е Ñ?а host 127.0.0.1 или \"localhost\". Ð?а HTTP, поÑ?Ñ?Ñ?Ñ? е 8118. Ð?а SOCKS пÑ?окÑ?иÑ?о е 9050. Ð?ай-добÑ?е е по вÑ?зможноÑ?Ñ? да Ñ?е използва SOCKS4A или SOCKS5.\n\n\n\nÐ?ожеÑ? да наÑ?Ñ?иÑ? повеÑ?е за пÑ?окÑ?иÑ?аÑ?а в Ð?ндÑ?оид пÑ?ез Ñ?Ñ?Ñ?анÑ?иÑ?а Ñ? вÑ?пÑ?оÑ?и и оÑ?говоÑ?и: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Ð?Ñ?боÑ? е гоÑ?ов!</string>
- <string name="wizard_final_msg">Ð?илиони Ñ?оÑ?а по Ñ?веÑ?а използваÑ? Tor по голÑ?м бÑ?ой пÑ?иÑ?ини.\n\nÐ?Ñ?Ñ?налиÑ?Ñ?и и блогÑ?Ñ?и, заÑ?иÑ?ниÑ?и на Ñ?овеÑ?киÑ?е пÑ?ава, оÑ?ганиÑ?е на Ñ?еда, войниÑ?и, коÑ?поÑ?аÑ?ии, гÑ?аждани на дÑ?Ñ?жави Ñ? Ñ?епÑ?еÑ?ивни Ñ?ежими, и най-обикновени гÑ?аждани... а Ñ?ега и Ñ?и!</string>
- <string name="wizard_exit_at_first_screen_toast">Ð?олÑ?, наÑ?Ñ?Ñ?ой Orbot пÑ?еди да поÑ?неÑ? да го използваÑ?!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">УÑ?пеÑ?н Ñ?е Ñ?вÑ?Ñ?заÑ?Ñ?е Ñ? Tor мÑ?ежаÑ?а - Ñ?ова Ð?Ð? знаÑ?и, Ñ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ð?и е пÑ?едпазено. Ð?оже да използваÑ?е \'Ð?Ñ?аÑ?зÑ?Ñ?\' бÑ?Ñ?она да Ñ?еÑ?Ñ?ваÑ?е вÑ?Ñ?зкаÑ?а. \n\nÐ?Ñ?идеÑ?е на https://guardianproject.info/apps/orbot или изпÑ?аÑ?еÑ?е имейл на help@xxxxxxxxxxxxxxxxxxxx, за да наÑ?Ñ?иÑ?е повеÑ?е.</string>
- <string name="tor_check">Това Ñ?е Ñ?е заведе на https://check.torproject.org, за да пÑ?овеÑ?и дали Orbot е пÑ?авилно наÑ?Ñ?Ñ?оен и дали Ñ?и Ñ?вÑ?Ñ?зан Ñ? TоÑ?.</string>
- <string name="pref_hs_group">СкÑ?иÑ?и Ñ?Ñ?лÑ?ги</string>
- <string name="pref_general_group">Ð?лавни</string>
- <string name="pref_start_boot_title">СÑ?аÑ?Ñ?иÑ?ай Ð?Ñ?боÑ? пÑ?и Ñ?Ñ?аÑ?Ñ?иÑ?ане на Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о</string>
- <string name="pref_start_boot_summary">Ð?вÑ?омаÑ?иÑ?но Ñ?Ñ?аÑ?Ñ?иÑ?ай Ð?Ñ?боÑ? и Ñ?е Ñ?вÑ?Ñ?жи кÑ?м ТоÑ? когаÑ?о Ñ?воеÑ?о Ð?ндÑ?оид Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во Ñ?Ñ?аÑ?Ñ?иÑ?а</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Ð?Ñ?боÑ? дава доÑ?Ñ?Ñ?п до Tor пÑ?ез Android!\n\nTor Ñ?и помага да Ñ?е пÑ?едпазиÑ? оÑ? Ñ?илÑ?Ñ?иÑ?ане на инÑ?еÑ?неÑ?Ñ?Ñ?, анализ на Ñ?Ñ?аÑ?ика и подÑ?лÑ?Ñ?ване по инÑ?еÑ?неÑ? вÑ?иÑ?ки, оÑ? коиÑ?о заплаÑ?ваÑ? лиÑ?ноÑ?о Ñ?и пÑ?оÑ?Ñ?Ñ?анÑ?Ñ?во, конÑ?иденÑ?иалнаÑ?а Ñ?и инÑ?оÑ?маÑ?иÑ? и лиÑ?ниÑ?е Ñ?и вÑ?Ñ?зки.\n\nТози Ñ?Ñ?Ñ?пка по Ñ?Ñ?Ñ?пка наÑ?Ñ?Ñ?ни Ñ?е Ñ?и помогне да наÑ?Ñ?Ñ?оиÑ? Orbot и Tor на Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ñ?и.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ð?нимание</string>
- <string name="wizard_warning_msg">СамоÑ?о инÑ?Ñ?алиÑ?ане на Orbot нÑ?ма авÑ?омаÑ?иÑ?но да анонимизиÑ?а мобилниÑ? Ñ?и Ñ?Ñ?аÑ?ик.\n\nТÑ?Ñ?бва да наÑ?Ñ?Ñ?оиÑ? Orbot, Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ñ?и и дÑ?Ñ?ги пÑ?иложениÑ?, за да ползваÑ? Tor Ñ?Ñ?пеÑ?но.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ð?Ñ?ава</string>
- <string name="wizard_permissions_root_msg1">Ð?ко желаеÑ? може да Ñ?азÑ?еÑ?иÑ? на Orbot \'Superuser\' пÑ?ава, за да вклÑ?Ñ?иÑ? допÑ?лниÑ?елни Ñ?Ñ?нкиÑ?ии, каÑ?о Ð?Ñ?озÑ?аÑ?но Ð?Ñ?окÑ?иÑ?иÑ?иÑ?ане.</string>
- <string name="wizard_permissions_root_msg2">Ð?ко не желаеÑ? Ñ?ова Ñ?е Ñ?веÑ?и, Ñ?е пÑ?огÑ?амиÑ?е, коиÑ?о Ñ?е използваÑ? Ñ?а Ñ?Ñ?вмеÑ?Ñ?ими Ñ? Orbot </string>
- <string name="wizard_permissions_no_root_msg">УÑ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ñ?и не изглежда да има или пÑ?едлага root или Ñ?ака наÑ?еÑ?ениÑ? \'СÑ?пеÑ?поÑ?Ñ?ебиÑ?елÑ?ки\' доÑ?Ñ?Ñ?п.\n\nÐ?олÑ?, използвай Ñ?ежидÑ?мÑ?Ñ? \'Ð?Ñ?иложениÑ?\' на главниÑ? екÑ?ан.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Ð?Ñ?иложениÑ? пÑ?ез Ð?Ñ?боÑ?</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Ð?Ñ?ипÑ?иÑ?ана Ñ?аÑ? пÑ?огÑ?ама Ñ? подÑ?Ñ?жка на Off-the-Record енкÑ?ипÑ?иÑ?.</string>
- <string name="wizard_tips_orweb">Orfox: Ð?Ñ?аÑ?зÑ?Ñ? Ñ? наÑ?оÑ?еноÑ?Ñ? кÑ?м оÑ?игÑ?Ñ?Ñ?ване на лиÑ?ноÑ?о пÑ?оÑ?Ñ?Ñ?анÑ?Ñ?во, койÑ?о Ñ?абоÑ?и пÑ?ез Tor</string>
- <string name="wizard_tips_play">Ð?амеÑ?и вÑ?ики Guardin Project пÑ?огÑ?ами в Google Play</string>
- <string name="wizard_tips_fdroid">Ð?амеÑ?и вÑ?иÑ?ки пÑ?иложениÑ? на Guardian Project в F-Droid</string>
- <string name="wizard_tips_fdroid_org">Ð?амеÑ?и вÑ?иÑ?ки Guardian Project пÑ?иложениÑ? на https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Ð?Ñ?озÑ?аÑ?но пÑ?окÑ?и</string>
- <string name="wizard_transproxy_msg">Това позволÑ?ва на пÑ?иложениÑ?Ñ?а Ð?и авÑ?омаÑ?иÑ?но да използваÑ? мÑ?ежаÑ?а на ТоÑ? без никаква конÑ?игÑ?Ñ?аÑ?иÑ?.</string>
- <string name="wizard_transproxy_hint">(Ð?збеÑ?и Ñ?ази опÑ?иÑ? ако нÑ?маÑ? пÑ?едÑ?Ñ?ава за какво Ñ?Ñ?ава вÑ?пÑ?оÑ?)</string>
- <string name="wizard_transproxy_none">Ð?иÑ?о</string>
- <string name="pref_transparent_tethering_title">ТеÑ?Ñ?Ñ?инг пÑ?ез ТоÑ?</string>
- <string name="pref_transparent_tethering_summary">Ð?клÑ?Ñ?и Ð?Ñ?озÑ?аÑ?но ТоÑ? Ð?Ñ?окÑ?иÑ?иÑ?иÑ?ане пÑ?ез Wifi и USB (изиÑ?ква Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?ване)</string>
- <string name="button_grant_superuser">Ð?зиÑ?кай доÑ?Ñ?Ñ?п на СÑ?пеÑ?поÑ?Ñ?ебиÑ?ел</string>
- <string name="pref_select_apps">Ð?збеÑ?и пÑ?иложениÑ?</string>
- <string name="pref_select_apps_summary">Ð?збÑ?еÑ?и пÑ?иложениÑ? за използване пÑ?ез ТоÑ?</string>
- <string name="pref_node_configuration">Ð?аÑ?Ñ?Ñ?ойки на node-а</string>
- <string name="pref_node_configuration_summary">Това Ñ?а допÑ?лниÑ?елни наÑ?Ñ?Ñ?ойки, коиÑ?о могаÑ? да намалÑ?Ñ? Ð?аÑ?аÑ?а анонимноÑ?Ñ?</string>
- <string name="pref_entrance_node">Ð?Ñ?одÑ?Ñ?и Ñ?оÑ?ки</string>
- <string name="pref_entrance_node_summary">Ð?Ñ?пеÑ?аÑ?Ñ?Ñ?и, никÑ?ове, дÑ?Ñ?жави и адÑ?еÑ?и за пÑ?Ñ?виÑ? Ñ?кок</string>
- <string name="pref_entrance_node_dialog">Ð?Ñ?веди вÑ?одÑ?Ñ?и Ñ?оÑ?ки</string>
- <string name="pref_allow_background_starts_title">РазÑ?еÑ?и Ñ?иÑ?о Ñ?Ñ?аÑ?Ñ?иÑ?ане</string>
- <string name="pref_allow_background_starts_summary">РазÑ?еÑ?и на вÑ?Ñ?ко пÑ?иложение да иÑ?ка оÑ? Orbot да Ñ?Ñ?аÑ?Ñ?иÑ?а Tor Ñ?Ñ?лÑ?ги</string>
- <string name="button_proxy_all">Ð?Ñ?окÑ?и за вÑ?иÑ?ки</string>
- <string name="button_proxy_none">Ð?Ñ?окÑ?и за ниÑ?о една</string>
- <string name="button_invert_selection">Ð?бÑ?Ñ?ни Ñ?елекÑ?иÑ?Ñ?а</string>
- <string name="pref_proxy_title">Ð?зÑ?одÑ?Ñ?о Ð?Ñ?ежово Ð?Ñ?окÑ?и (Ð?езадÑ?лжиÑ?елно)</string>
- <string name="pref_proxy_type_title">Тип пÑ?окÑ?и</string>
- <string name="pref_proxy_type_summary">Ð?Ñ?оÑ?окол за пÑ?окÑ?и Ñ?Ñ?Ñ?вÑ?Ñ?: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Тип на вÑ?одÑ?Ñ?о пÑ?окÑ?и</string>
- <string name="pref_proxy_host_title">Ð?Ñ?окÑ?и Ñ?оÑ?Ñ?</string>
- <string name="pref_proxy_host_summary">Ð?дÑ?еÑ?а на Ð?Ñ?окÑ?и СÑ?Ñ?вÑ?Ñ?Ñ?Ñ?</string>
- <string name="pref_proxy_host_dialog">Ð?Ñ?веди пÑ?окÑ?и Ñ?оÑ?Ñ?</string>
- <string name="pref_proxy_port_title">Ð?оÑ?Ñ? на пÑ?окÑ?и</string>
- <string name="pref_proxy_port_summary">Ð?оÑ?Ñ?а на Ð?Ñ?окÑ?и СÑ?Ñ?вÑ?Ñ?Ñ?Ñ?</string>
- <string name="pref_proxy_port_dialog">Ð?Ñ?веди пÑ?окÑ?и поÑ?Ñ?</string>
- <string name="pref_proxy_username_title">Ð?зÑ?одÑ?Ñ? Ð?Ñ?окÑ?и Ð?оÑ?Ñ?ебиÑ?елÑ?ко Ð?ме</string>
- <string name="pref_proxy_username_summary">Ð?Ñ?окÑ?и Ð?оÑ?Ñ?ебиÑ?елÑ?ко Ð?ме (Ð?езадÑ?лжиÑ?елно)</string>
- <string name="pref_proxy_username_dialog">Ð?Ñ?веди Ð?Ñ?окÑ?и Ð?оÑ?Ñ?ебиÑ?елÑ?ко Ð?ме</string>
- <string name="pref_proxy_password_title">Ð?зÑ?одÑ?Ñ?а Ð?Ñ?окÑ?и Ð?аÑ?ола</string>
- <string name="pref_proxy_password_summary">Ð?Ñ?окÑ?и Ð?аÑ?ола (Ð?езадÑ?лжиÑ?елно)</string>
- <string name="pref_proxy_password_dialog">Ð?Ñ?веди Ð?Ñ?окÑ?и Ð?аÑ?ола</string>
- <string name="status">СÑ?аÑ?Ñ?Ñ?</string>
- <string name="setting_up_full_transparent_proxying_">Ð?онÑ?игÑ?Ñ?иÑ?ане на напÑ?лно пÑ?озÑ?аÑ?но пÑ?окÑ?и...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ð?онÑ?игÑ?Ñ?иÑ?ане на пÑ?озÑ?аÑ?но пÑ?окÑ?и на база пÑ?иложение...</string>
- <string name="transparent_proxying_enabled">Ð?Ñ?озÑ?аÑ?но пÑ?окÑ?и Ð?Ð?ТÐ?Ð?Ð?Ð?</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy е вклÑ?Ñ?ен за ТеÑ?Ñ?Ñ?инг!</string>
- <string name="warning_error_starting_transparent_proxying_">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: гÑ?еÑ?ка пÑ?и Ñ?Ñ?аÑ?Ñ?иÑ?ане на пÑ?озÑ?аÑ?но пÑ?оÑ?ки!</string>
- <string name="transproxy_rules_cleared">TransProxy пÑ?авила изÑ?иÑ?Ñ?ени</string>
- <string name="couldn_t_start_tor_process_">Ð?еÑ?Ñ?пеÑ?но Ñ?Ñ?аÑ?Ñ?иÑ?ане на ТоÑ? пÑ?оÑ?еÑ?: </string>
- <string name="privoxy_is_running_on_port_">Polipo Ñ?абоÑ?и на поÑ?Ñ?:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ð?онÑ?игÑ?Ñ?иÑ?ане на пÑ?озÑ?аÑ?но пÑ?окÑ?и на база поÑ?Ñ?...</string>
- <string name="bridge_error">Ð?Ñ?идж гÑ?еÑ?ка</string>
- <string name="bridge_requires_ip">Ð?а да използваÑ?е бÑ?идж Ñ?Ñ?нкÑ?ионалноÑ?Ñ?Ñ?а Ñ?Ñ?Ñ?бва да вÑ?ведеÑ?е поне един IP адÑ?еÑ? на бÑ?идж.</string>
- <string name="send_email_for_bridges">Ð?зпÑ?аÑ?и и-мейл до bridges@xxxxxxxxxxxxxx Ñ?Ñ?Ñ? Ñ?Ñ?дÑ?Ñ?жание \"get bridges\" в и-мейл оÑ? акаÑ?нÑ? в gmail.</string>
- <string name="error">Ð?Ñ?еÑ?ка</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">ТвоÑ?Ñ?а ReachableAddresses наÑ?Ñ?Ñ?ойка пÑ?едизвика гÑ?еÑ?ка!</string>
- <string name="your_relay_settings_caused_an_exception_">ТвоиÑ?е наÑ?Ñ?Ñ?ойки за пÑ?епÑ?аÑ?ане пÑ?едизвикаÑ?а изклÑ?Ñ?ение!</string>
- <string name="exit_nodes">Ð?зÑ?одни Ñ?оÑ?ки</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ð?Ñ?пеÑ?аÑ?Ñ?Ñ?и, никÑ?ове, дÑ?Ñ?жави и адÑ?еÑ?и за поÑ?ледниÑ? Ñ?кок</string>
- <string name="enter_exit_nodes">Ð?Ñ?веди изÑ?одни Ñ?оÑ?ки</string>
- <string name="exclude_nodes">Ð?е ползвай Node-ве</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ð?Ñ?пеÑ?аÑ?Ñ?Ñ?и, никÑ?ове, дÑ?Ñ?жави и адÑ?еÑ?и, коиÑ?о да не бÑ?даÑ? ползвани</string>
- <string name="enter_exclude_nodes">Ð?Ñ?ай</string>
- <string name="strict_nodes">Ð?адÑ?лжиÑ?елни Node-we</string>
- <string name="use_only_these_specified_nodes">Ð?зползвай *Ñ?амо* избÑ?оениÑ?е node-ве</string>
- <string name="bridges">Ð?Ñ?иджове</string>
- <string name="use_bridges">Ð?зползвай Ð?Ñ?иджове</string>
- <string name="bridges_obfuscated">СкÑ?иÑ?и Ð?оÑ?Ñ?ове</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ð?клÑ?Ñ?и алÑ?еÑ?наÑ?ивени вÑ?одÑ?Ñ?и node-ве в Tor Ð?Ñ?ежаÑ?а</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ð?клÑ?Ñ?и ако наÑ?Ñ?Ñ?оениÑ?е моÑ?Ñ?ове Ñ?а Ñ?кÑ?иÑ?и моÑ?Ñ?ове</string>
- <string name="ip_address_and_port_of_bridges">IP адÑ?еÑ? и поÑ?Ñ? на бÑ?иджове</string>
- <string name="enter_bridge_addresses">Ð?Ñ?веди адÑ?еÑ?и на бÑ?иджове</string>
- <string name="relays">Ð?Ñ?епÑ?аÑ?аÑ?и(Relays)</string>
- <string name="relaying">Ð?Ñ?епÑ?аÑ?ане</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">РазÑ?еÑ?и Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ñ?и да бÑ?де не изÑ?оден пÑ?епÑ?аÑ?аÑ?</string>
- <string name="relay_port">Ð?оÑ?Ñ? за Ð?Ñ?епÑ?аÑ?ане</string>
- <string name="listening_port_for_your_tor_relay">Ð?оÑ?Ñ? за Ñ?лÑ?Ñ?ане на Ñ?воÑ? ТоÑ? пÑ?епÑ?аÑ?аÑ?</string>
- <string name="enter_or_port">Ð?Ñ?веди OR поÑ?Ñ?</string>
- <string name="relay_nickname">Ð?Ñ?Ñ?коÑ? на пÑ?епÑ?аÑ?аÑ?а</string>
- <string name="the_nickname_for_your_tor_relay">Ð?Ñ?Ñ?коÑ? за Ñ?воÑ? Tor пÑ?епÑ?аÑ?аÑ?</string>
- <string name="enter_a_custom_relay_nickname">Ð?Ñ?веди пÑ?Ñ?коÑ? за пÑ?епÑ?аÑ?аÑ?а</string>
- <string name="reachable_addresses">Ð?оÑ?Ñ?ижими адÑ?еÑ?и</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">СÑ?аÑ?Ñ?иÑ?ай каÑ?о клиенÑ? зад firewall Ñ? Ñ?еÑ?Ñ?Ñ?икÑ?ивни полиÑ?ики</string>
- <string name="reachable_ports">Ð?оÑ?Ñ?Ñ?пни поÑ?Ñ?ове</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ð?оÑ?Ñ?ове доÑ?Ñ?Ñ?пни зад firewall Ñ? Ñ?еÑ?Ñ?Ñ?икÑ?ивни полиÑ?ики</string>
- <string name="enter_ports">Ð?Ñ?веди поÑ?Ñ?ове</string>
- <string name="enable_hidden_services">Ð?клÑ?Ñ?и Ñ?кÑ?иÑ?и Ñ?Ñ?лÑ?ги</string>
- <string name="run_servers_accessible_via_the_tor_network">Ñ?Ñ?аÑ?Ñ?иÑ?ай Ñ?Ñ?Ñ?вÑ?Ñ?и доÑ?Ñ?Ñ?пни пÑ?ез ТоÑ? мÑ?ежаÑ?а</string>
- <string name="enter_localhost_ports_for_hidden_services">вÑ?веди локални поÑ?Ñ?ове за Ñ?кÑ?иÑ?и Ñ?Ñ?лÑ?ги</string>
- <string name="hidden_service_ports">Ð?оÑ?Ñ?ове на Ñ?кÑ?иÑ?и Ñ?Ñ?лÑ?ги</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ð?вÑ?омаÑ?иÑ?но генеÑ?иÑ?ан адÑ?еÑ? за Ñ?воÑ?Ñ?а Ñ?кÑ?иÑ?а Ñ?Ñ?лÑ?га(hidden service)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">вклÑ?Ñ?и запиÑ? на дебÑ?г доклади (Ñ?Ñ?Ñ?бва да ползваÑ?е aLogCat или adb, за да ги Ñ?азглеждаÑ?)</string>
- <string name="project_home">Ð?аÑ?ални СÑ?аниÑ?и на Ð?Ñ?оекÑ?иÑ?е:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">ТоÑ? лиÑ?енз</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">СоÑ?Ñ?Ñ?еÑ? на Ñ?Ñ?еÑ?и Ñ?Ñ?Ñ?ани: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Ð?Ñ?иложение иÑ?ка да оÑ?воÑ?и поÑ?Ñ? на Ñ?кÑ?иÑ? Ñ?Ñ?Ñ?вÑ?Ñ? %S кÑ?м ТоÑ? мÑ?ежаÑ?а. Ð?езопаÑ?но е да Ñ?е довеÑ?иÑ?е на пÑ?иложениеÑ?о.</string>
- <string name="found_existing_tor_process">намеÑ?ил Ñ?и Ñ?Ñ?вмеÑ?Ñ?им Tor пÑ?оекÑ?...</string>
- <string name="something_bad_happened">Ð?еÑ?о лоÑ?о Ñ?е Ñ?лÑ?Ñ?и. Ð?Ñ?овеÑ?еÑ?е лога</string>
- <string name="hidden_service_on">СкÑ?иÑ?а Ñ?Ñ?лÑ?га вклÑ?Ñ?ена:</string>
- <string name="unable_to_read_hidden_service_name">не може да пÑ?оÑ?еÑ?е име на Ñ?кÑ?иÑ?а Ñ?Ñ?лÑ?га</string>
- <string name="unable_to_start_tor">Ð?е може да Ñ?Ñ?аÑ?Ñ?иÑ?а ТоÑ?:</string>
- <string name="unable_to_reset_tor">РеÑ?Ñ?аÑ?Ñ?иÑ?ай Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о Ñ?и, неÑ?Ñ?пеÑ?но Ñ?еÑ?Ñ?аÑ?иване на Tor!</string>
- <string name="pref_use_sys_iptables_title">Ð?зползвай Iptables по подÑ?азбиÑ?ане</string>
- <string name="pref_use_sys_iptables_summary">използвай вгÑ?адениÑ?е двÑ?иÑ?ни iptables вмеÑ?Ñ?о Ñ?ези идваÑ?и Ñ? Orbot</string>
- <string name="error_installing_binares">Ð?вÑ?иÑ?ниÑ?е Ñ?айлове на ТоÑ? не бÑ?Ñ?а инÑ?Ñ?алиÑ?ани или обновени.</string>
- <string name="pref_use_persistent_notifications">Ð?инаги показвай икона в Ñ?Ñ?лбаÑ?а когаÑ?о Ð?Ñ?боÑ? е Ñ?вÑ?Ñ?зан</string>
- <string name="pref_use_persistent_notifications_title">УведомлениÑ? винаги вклÑ?Ñ?ени</string>
- <string name="pref_use_expanded_notifications">Ð?окажи Ñ?азÑ?иÑ?ена инÑ?оÑ?маÑ?иÑ? за Tor изÑ?однаÑ?а дÑ?Ñ?жава и IP в ленÑ?аÑ?а за извеÑ?Ñ?иÑ?</string>
- <string name="pref_use_expanded_notifications_title">РазÑ?иÑ?ени извеÑ?Ñ?иÑ?</string>
- <string name="notification_using_bridges">Ð?оÑ?Ñ?ове вклÑ?Ñ?ени!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Ð?зик</string>
- <string name="set_locale_summary">Ð?збеÑ?и меÑ?Ñ?оположение и език за Ð?Ñ?боÑ?</string>
- <string name="wizard_locale_title">Ð?збеÑ?и език</string>
- <string name="wizard_locale_msg">Ð?Ñ?Ñ?ави по подÑ?азбиÑ?ане или Ñ?мени налиÑ?ниÑ? език</string>
- <string name="powered_by">базиÑ?ан на Tor</string>
- <string name="btn_save_settings">Ð?апази наÑ?Ñ?Ñ?ойки</string>
- <string name="no_internet_connection_tor">Ð?Ñ?ма инÑ?еÑ?неÑ? вÑ?Ñ?зка; Tor е в Ñ?ежим на изÑ?акване...</string>
- <string name="bandwidth_">СкоÑ?оÑ?Ñ?:</string>
- <string name="down">Ñ?еглене</string>
- <string name="up">изпÑ?аÑ?ане</string>
- <string name="pref_disable_network_title">Ð?иÑ?пва Ð?вÑ?омаÑ?иÑ?ен Режим на Ð?зÑ?акване</string>
- <string name="pref_disable_network_summary">Сложи Tor в Ñ?ежим на изÑ?акване, когаÑ?о нÑ?ма инÑ?еÑ?неÑ?</string>
- <string name="newnym">СмениÑ?Ñ?е Ñ?воÑ?Ñ?а ТоÑ? иденÑ?иÑ?ноÑ?Ñ?!</string>
- <string name="menu_verify_browser">Ð?Ñ?аÑ?зÑ?Ñ?</string>
- <string name="menu_use_chatsecure">Ð?зползвай ChatSecure</string>
- <string name="permission_manage_tor_label">Ð?аÑ?Ñ?Ñ?ой Tor</string>
- <string name="permission_manage_tor_description">РазÑ?еÑ?и Ñ?ази пÑ?огÑ?ама да конÑ?Ñ?олиÑ?а Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Ð?е изглежда да имаÑ?е Orfox инÑ?Ñ?алиÑ?ан. Ð?елаеÑ?е ли помоÑ? Ñ? Ñ?ова, или пÑ?оÑ?Ñ?о да оÑ?воÑ?им бÑ?аÑ?зÑ?Ñ?а?</string>
- <string name="install_apps_">Ð?нÑ?Ñ?алиÑ?ай пÑ?огÑ?ами?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ð?Ñ?ма инÑ?еÑ?неÑ? вÑ?Ñ?зка. Ð?Ñ?еминаване в Ñ?ежим на изÑ?каване...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Ð?обÑ?а инÑ?еÑ?неÑ? вÑ?Ñ?зка. СÑ?бÑ?ждане на Tor...</string>
- <string name="updating_settings_in_tor_service">обновÑ?ване на наÑ?Ñ?Ñ?ойкиÑ?е в Tor Ñ?Ñ?лÑ?гаÑ?а</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ð?оÑ?Ñ?, на койÑ?о Tor пÑ?едлага Ñ?воеÑ?о SOCKS пÑ?окÑ?и(подÑ?азбиÑ?ане: 9050 или 0, за да забÑ?аниÑ?)</string>
- <string name="pref_socks_dialog">SOCKS Port Config</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Ð?оÑ?Ñ?, на койÑ?о Tor пÑ?едлага Ñ?воеÑ?о Transparent пÑ?окÑ?и пÑ?окÑ?и(подÑ?азбиÑ?ане: 9040 или 0, за да забÑ?аниÑ?)</string>
- <string name="pref_transport_dialog">TransProxy Port Config</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Ð?оÑ?Ñ?, на койÑ?о Tor пÑ?едлага Ñ?воÑ?Ñ? DNS (подÑ?азбиÑ?ане: 5400 или 0, за да забÑ?аниÑ?)</string>
- <string name="pref_dnsport_dialog">DNS Port Config</string>
- <string name="pref_torrc_title">Torrc Custom Config</string>
- <string name="pref_torrc_summary">СÐ?Ð?Ð? Ð?Ð? Ð?Ð?СÐ?Ð?РТÐ?: вÑ?веди диÑ?екÑ?но torrc конÑ?игÑ?Ñ?аÑ?ионниÑ?Ñ? код</string>
- <string name="pref_torrc_dialog">Ð Ñ?Ñ?но наÑ?Ñ?Ñ?оен Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
- <string name="your_tor_public_ips_">ТвоиÑ?е пÑ?блиÑ?ни Tor IP-Ñ?а:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ð?олÑ?, забÑ?ани Ñ?ази пÑ?огÑ?ама в Android->Ð?аÑ?Ñ?Ñ?ойки->Ð?Ñ?иложениÑ? ако имаÑ? пÑ?облеми Ñ? Orbot:</string>
- <string name="app_conflict">Ð?онÑ?ликÑ? Ñ? дÑ?Ñ?го пÑ?иложение</string>
- <string name="pref_transproxy_refresh_title">ТÑ?анÑ?пÑ?окÑ?и авÑ?омаÑ?иÑ?но оÑ?вежаване</string>
- <string name="pref_transproxy_refresh_summary">Ð?Ñ?иложи повÑ?оÑ?но Ñ?Ñ?анÑ?пÑ?окÑ?и пÑ?авилаÑ?а пÑ?и пÑ?омÑ?на на Ñ?Ñ?Ñ?Ñ?оÑ?ниеÑ?о на мÑ?ежаÑ?а</string>
- <string name="pref_transproxy_flush_title">ТÑ?анÑ?пÑ?оÑ?ки Ð?Ð Ð?Ð?УÐ?Ð?ТÐ?Ð?Ð?Ð? Ð?Ð Ð?Ð?Ð?Ð¥Ð?Ð?Ð?Ð?</string>
- <string name="pref_transproxy_flush_summary">Ð?аÑ?иÑ?ни Ñ?Ñ?к, за да изÑ?Ñ?иеÑ? вÑ?иÑ?ки Ñ?Ñ?анÑ?пÑ?кÑ?и мÑ?ежови пÑ?авила Ð?Ð?Ð?Ð?Ð?Ð?Ð?</string>
- <string name="transparent_proxy_rules_flushed_">ТÑ?анÑ?пÑ?окÑ?и пÑ?авилаÑ?а изÑ?Ñ?иÑ?и!</string>
- <string name="you_do_not_have_root_access_enabled">Ð?Ñ?маÑ? ROOT доÑ?Ñ?Ñ?п до Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?воÑ?о</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ð?оже да Ñ?е наложи да Ñ?пÑ?еÑ? и Ñ?Ñ?аÑ?Ñ?иÑ?аÑ? Orbot, за да могаÑ? нÑ?кои наÑ?Ñ?Ñ?ойки да влÑ?заÑ? в дейÑ?Ñ?вие.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Ð?оÑ?Ñ?ове вклÑ?Ñ?ени!</string>
- <string name="restart_orbot_to_use_this_bridge_">Ð?олÑ?, Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?ай Orbot, за да влÑ?заÑ? в дейÑ?Ñ?вие пÑ?омениÑ?е</string>
- <string name="menu_qr">QR Ð?одове</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ð?ко ваÑ?аÑ?а мÑ?ежа Ñ?еленаÑ?оÑ?ено блиÑ?ва Tor, може да използваÑ?е Ð?оÑ?Ñ?, за да Ñ?е Ñ?вÑ?Ñ?жеÑ?е. Ð?Ð?Ð?Ð?Ð Ð?ТÐ? един оÑ? видовеÑ?е моÑ?Ñ?ове избÑ?оени по-гоÑ?е, за да вклÑ?Ñ?иÑ?е Ñ?ази Ñ?Ñ?нкÑ?ионалноÑ?Ñ?.</string>
- <string name="bridge_mode">Режим моÑ?Ñ?</string>
- <string name="get_bridges_email">Ð?мейл</string>
- <string name="get_bridges_web">Уеб</string>
- <string name="activate">Ð?кÑ?ивиÑ?ай</string>
- <string name="apps_mode">Ð?Ñ?иложениÑ? вÑ?в VPN Ñ?ежим</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ð?ожеÑ? да наÑ?Ñ?Ñ?оиÑ? вÑ?иÑ?ки пÑ?иложениÑ? да минаваÑ? пÑ?ез Tor мÑ?ежаÑ?а използвайки VPN Ñ?Ñ?нкÑ?иÑ?Ñ?а на Ð?ндÑ?оид.\n\n*Ð?Ð Ð?Ð?УÐ?Ð Ð?Ð?Ð?Ð?Ð?Ð?Ð?* Това е нова, екÑ?пеÑ?именÑ?ална Ñ?Ñ?нкÑ?иÑ? и в нÑ?кои Ñ?лÑ?Ñ?аи може да не Ñ?Ñ?аÑ?Ñ?иÑ?а авÑ?омаÑ?иÑ?но, или да Ñ?пÑ?е. Ð?Ð? бива да Ñ?е използва за анонимноÑ?Ñ?, а СÐ?Ð?Ð? за пÑ?еминаване пÑ?ез Ñ?айÑ?Ñ?Ñ?оли и Ñ?илÑ?Ñ?и.</string>
- <string name="send_email">Ð?зпÑ?аÑ?и имейл</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ð?ожеÑ? да полÑ?Ñ?иÑ? адÑ?еÑ?а на моÑ?Ñ? по имейл, инÑ?еÑ?неÑ? или каÑ?о Ñ?каниÑ?аÑ? QR kod. Ð?збеÑ?и \'Ð?мейл\' или \'Ð?нÑ?еÑ?неÑ?\' по-долÑ?, за да поиÑ?каÑ? адÑ?еÑ? на моÑ?Ñ?.\n\nÐ?еднÑ?ж Ñ?ом полÑ?Ñ?иÑ? адÑ?еÑ?а го копиÑ?ай в \"Ð?оÑ?Ñ?ове\", в наÑ?Ñ?Ñ?ойкиÑ?е на Orbot и Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?ай пÑ?иложениеÑ?о.</string>
- <string name="install_orweb">Ð?нÑ?Ñ?алиÑ?ай Orfox</string>
- <string name="standard_browser">Ð?оÑ?мален Ð?Ñ?аÑ?зÑ?Ñ?</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Ð?Ð?Ð?Ð?Ð?Ð?Ð?: Само Ñ?Ñ?андаÑ?Ñ?ни Tor моÑ?Ñ?ове Ñ?абоÑ?Ñ? на Intel X86/ATOM Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ва</string>
- <string name="vpn_default_world">СвÑ?Ñ?</string>
-</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
deleted file mode 100644
index dc265b9..0000000
--- a/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">�রব�</string>
- <string name="app_description">Orbot à¦?à¦?à¦?ি ফà§?রি পà§?রà¦?à§?সি à¦?à§?যাপà§?লিà¦?à§?শন যা à¦?নà§?যানà§?য Apps à¦?à§? à¦?রà¦? নিরাপদà¦à¦¾à¦¬à§? à¦?নà§?à¦?ারনà§?à¦? বà§?যবহার à¦?রার à¦?à§?ষমতাপà§?রদান à¦?রà§?। Orbot à¦?পনার à¦?নà§?à¦?ারনà§?à¦? à¦?à§?রাফিà¦? à¦?নà¦?à§?রিপà§?à¦? à¦?রতà§? à¦?র বà§?যবহার à¦?বà¦? তারপর সারা বিশà§?বà§?র à¦?মà§?পিà¦?à¦?ারà§?র সিরিà¦?à§?র moddho diye porichalito kore gopon kore. à¦?র ফà§?রি সফà¦?à¦?য়à§?যার à¦?বà¦? à¦?পনি à¦?à§?রাফিà¦? বিশà§?লà§?ষণ হিসà§?বà§? পরিà¦?িত বà§?যà¦?à§?তিà¦?ত সà§?বাধà§?নতা à¦? à¦?à§?পনà§?য়তা, à¦?à§?পনà§?য় বাণিà¦?à§?যিà¦? à¦?ারà§?যà¦?à§?রম à¦?বà¦? সমà§?পরà§?à¦?, à¦?বà¦? রà¦
¾à¦·à§?à¦?à§?রà§?য় নিরাপতà§?তা হà§?মà¦?ির মà§?à¦?à§? পড়à§? নà§?à¦?à¦?য়ারà§?à¦? নà¦?রদারি à¦?à¦?à¦?ি ফরà§?ম বিরà§?দà§?ধà§? রà¦?à§?ষা à¦?রতà§? সাহাযà§?য à¦?রà§? যà§? à¦?à¦?à¦?ি à¦?à§?লা নà§?à¦?à¦?য়ারà§?à¦?.</string>
- <string name="tor_proxy_service_process">à¦?র পà§?রà¦?à§?সি সারà§?à¦à¦¿à¦¸</string>
- <string name="status_starting_up">�রব� �াল� হ���� . . . </string>
- <string name="status_activated">�র ন����ার���র সাথ� স�য���ত হ����</string>
- <string name="status_disabled">�রব� নিষ���রি� �রা হ����</string>
- <string name="tor_process_starting">�র ��লা��ন�� �াল� �রা হ����</string>
- <string name="tor_process_complete">সম�প�র�ণ</string>
- <string name="tor_process_waiting">�প���ষা �রা হ����</string>
- <string name="menu_home">হ�ম</string>
- <string name="menu_settings">নি�ম বিন�যাস</string>
- <string name="menu_info">সাহায�য</string>
- <string name="menu_start">শ�র�</string>
- <string name="menu_stop">শ�ষ</string>
- <string name="button_help">সাহায�য</string>
- <string name="button_close">বন�ধ</string>
- <string name="press_to_start">�াল� �রার �ন�য ধর� থা��ন</string>
- <string name="pref_transparent_all_title">সব �ি�� �র�র মাধ�যম� �র�ন </string>
- <string name="wizard_title">�রব�</string>
- <string name="btn_next">পরবর�ত�</string>
- <string name="btn_back">প��ন�</string>
- <string name="btn_finish">শ�ষ</string>
- <string name="btn_okay">ঠি� ���</string>
- <string name="btn_cancel">বাদ</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_permissions_stock">�রব� �র �ন�মতিসম�হ </string>
- <string name="wizard_permissions_consent">�মি ব��ত� প�র��ি �ব� ��িয়� য�ত� �া� Superuser �া�া।</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">সাধারণ</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <string name="wizard_permissions_title">�ন�মতিসম�হ</string>
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bn-rIN/strings.xml b/res/values-bn-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-bn-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-bn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-brx/strings.xml b/res/values-brx/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-brx/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
deleted file mode 100644
index 31d4475..0000000
--- a/res/values-bs/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_info">PomoÄ?</string>
- <string name="button_help">PomoÄ?</string>
- <string name="button_close">Zatvori</string>
- <string name="btn_back">Nazad</string>
- <string name="btn_cancel">Otkaži</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Proksi postavke</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
deleted file mode 100644
index 715c6fa..0000000
--- a/res/values-ca/strings.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">https://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Inicia i atura Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">L\'Orbot s\'està iniciant...</string>
- <string name="status_activated">Esteu connectat a la xarxa Tor</string>
- <string name="status_disabled">L\'Orbot està desactivat</string>
- <string name="tor_process_starting">S\'està iniciant el client Tor...</string>
- <string name="tor_process_complete">fet.</string>
- <string name="tor_process_waiting">s\'està esperant.</string>
- <string name="not_anonymous_yet">ATENCI�: El trà nsit de la vostra connexió encara no és anònim! Heu de configurar les vostres aplicacions per utilitzar un proxy HTTP a 127.0.0.1:8118, o un proxy SOCKS4A o SOCKS5 a 127.0.0.1:9050</string>
- <string name="menu_home">Inici</string>
- <string name="menu_browse">Navega</string>
- <string name="menu_settings">Preferències</string>
- <string name="menu_log">Registre</string>
- <string name="menu_info">Ajuda</string>
- <string name="menu_start">Inicia</string>
- <string name="menu_stop">Atura</string>
- <string name="menu_about">Quant a...</string>
- <string name="main_layout_download">Baixada</string>
- <string name="main_layout_upload">Pujada</string>
- <string name="button_help">Ajuda</string>
- <string name="button_close">Tanca</string>
- <string name="button_about">Quant a...</string>
- <string name="button_clear_log">Esborra el registre</string>
- <string name="menu_verify">Prova</string>
- <string name="menu_exit">Surt</string>
- <string name="press_to_start">- mantén-lo premut per iniciar -</string>
- <string name="pref_trans_proxy_group">Proxy transparent (requereix Root)</string>
- <string name="pref_trans_proxy_title">Utilitza un proxy transparent</string>
- <string name="pref_trans_proxy_summary">Torificació automà tica de les apps</string>
- <string name="pref_transparent_all_title">Tor per a tot</string>
- <string name="pref_transparent_all_summary">Canalitza el trà nsit de totes les aplicacions a través de Tor</string>
- <string name="pref_transparent_port_fallback_title">Port alternatiu per al proxy </string>
- <string name="pref_transparent_port_fallback_summary">ATENCI�: Això trampeja els ports habituals (80, 443, etc.) *UTILITZEU-HO NOM�S* si el mode «Totes» o «App» no funcionen.</string>
- <string name="pref_transparent_port_title">Llista de ports</string>
- <string name="pref_transparent_port_summary">Llista de ports a canalitzar per proxy. *UTILITZEU-HO NOM�S* si el mode «Totes» o «App» no funcionen.</string>
- <string name="pref_transparent_port_dialog">Introduïu els ports a canalitzar per proxy</string>
- <string name="pref_has_root">Demana l\'accés root</string>
- <string name="pref_has_root_summary">Demana l\'accés root per a la canalització a través de proxy transparent</string>
- <string name="status_install_success">Els binaris de Tor s\'han instal·lat correctament.</string>
- <string name="status_install_fail">Els fitxers binaris de Tor no s\'han pogut instal·lar. Comproveu el registre i notifiqueu-ho a tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Error de l\'aplicació</string>
- <string name="wizard_title">Us donem la benvinguda a l\'Orbot</string>
- <string name="wizard_btn_tell_me_more">Quant a Orbot...</string>
- <string name="btn_next">Següent</string>
- <string name="btn_back">Enrere</string>
- <string name="btn_finish">Fi</string>
- <string name="btn_okay">D\'acord</string>
- <string name="btn_cancel">Cancel·la</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Alguns detalls de l\'Orbot...</string>
- <string name="wizard_permissions_root">PermÃs concedit</string>
- <string name="wizard_permissions_stock">Permisos de l\'Orbot</string>
- <string name="wizard_premissions_msg_root">Perfecte! Hem detectat que teniu els permisos root activats per a l\'Orbot. Utilitzarem aquesta capacitat amb sensatesa.</string>
- <string name="wizard_permissions_msg_stock">Encara que no és imprescindible, l\'Orbot pot esdevenir una eina molt més potent si el vostre terminal té accés root. Utilitzeu el botó d\'aquà sota per concedir superpoders a l\'Orbot!</string>
- <string name="wizard_permissions_no_root">Si no teniu accés root, o no teniu ni idea del què us estem parlant, simplement assegureu-vos d\'utilitzar aplicacions dissenyades per funcionar amb l\'Orbot.</string>
- <string name="wizard_permissions_consent">Ho entenc i vull continuar sense accés de superusuari</string>
- <string name="wizard_permission_enable_root">Concedeix accés root a l\'Orbot</string>
- <string name="wizard_configure">Configura la connexió a Tor</string>
- <string name="wizard_configure_msg">L\'Orbot us ofereix l\'opció de canalitzar el trà nsit de totes les aplicacions a través de Tor o bé escollir quines aplicacions voleu que utilitzin Tor.</string>
- <string name="wizard_configure_all">Canalitza totes les aplicacions a través de Tor.</string>
- <string name="wizard_configure_select_apps">Selecciona les aplicacions individualment</string>
- <string name="wizard_tips_tricks">Aplicacions per utilitzar amb l\'Orbot</string>
- <string name="wizard_tips_msg">Les aplicacions d\'aquà sota s\'han dissenyat per funcionar amb l\'Orbot. Feu clic a cada botó per instalar-les ara, o busqueu-les després a Google Play Store, al lloc web de GuardianProject.info o a F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Client de missatgeria instantà nia segura per a Android</string>
- <string name="wizard_tips_proxy">Proxy Settings - Aprèn a configurar aplicacions per a què funcionin amb l\'Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo - Aplicació de cerca al web</string>
- <string name="wizard_tips_twitter">Estableix el proxy de Twitter a l\'amfitrió «localhost» i port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ajustaments del proxy</string>
- <string name="wizard_final">L\'Orbot és a punt!</string>
- <string name="wizard_exit_at_first_screen_toast">Configureu l\'Orbot abans d\'utilitzar-lo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">S\'obrirà el vostre navegador web a https://check.torproject.org per tal de comprovar si l\'Orbot està ben configurat i estàs connectat a Tor.</string>
- <string name="pref_hs_group">Serveis ocults</string>
- <string name="pref_general_group">General</string>
- <string name="pref_start_boot_title">Inicia l\'Obot a l\'arrencada</string>
- <string name="pref_start_boot_summary">Inicia l\'Orbot i connecta a Tor automà ticament quan el vostre dispositiu Android arrenca.</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Advertència</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permisos</string>
- <string name="wizard_permissions_root_msg1">Opcionalment podeu concedir accés «superusuari» a l\'Orbot per activar funcions avançades, com el servidor intermediari transparent.</string>
- <string name="wizard_permissions_root_msg2">Si no voleu fer això assegureu-vos de fer servir aplicacions dissenyades per funcionar amb l\'Orbot.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplicacions dissenyades per a l\'Orbot</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Aplicació de xat segur amb encriptació confidencial.</string>
- <string name="wizard_tips_play">Trobareu totes les aplicacions de Guardian Project a Google Play Store</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Servidor intermediari transparent</string>
- <string name="wizard_transproxy_msg">Això permet que les vostres aplicacions es connectin a través de la xarxa Tor sense haver de configurar res.</string>
- <string name="wizard_transproxy_hint">(Marqueu aquesta casella si no teniu ni idea del que estem parlant)</string>
- <string name="wizard_transproxy_none">Cap</string>
- <string name="pref_transparent_tethering_title">Compartició de xarxa amb Tor</string>
- <string name="pref_transparent_tethering_summary">Activa el servidor intermediari transparent de Tor pels dispositius connectats a través de la compartició de xarxa via Wifi o USB (cal reiniciar)</string>
- <string name="button_grant_superuser">Petició d\'accés de superusuari</string>
- <string name="pref_select_apps">Selecciona les apps</string>
- <string name="pref_select_apps_summary">Trieu quines apps s\'han de canalitzar a través de Tor</string>
- <string name="pref_node_configuration">Configuració de node</string>
- <string name="pref_node_configuration_summary">Aquests són parà metres avançats que poden reduir el vostre anonimat</string>
- <string name="pref_entrance_node">Node d\'entrada</string>
- <string name="pref_entrance_node_summary">Empremtes, à lies, països i adreces pel primer salt</string>
- <string name="pref_entrance_node_dialog">Introduïu els nodes d\'entrada</string>
- <string name="button_proxy_all">Totes via proxy</string>
- <string name="button_proxy_none">Cap via proxy</string>
- <string name="button_invert_selection">Inverteix selecció</string>
- <string name="pref_proxy_title">Servidor intermediari de sortida a la xarxa (opcional)</string>
- <string name="pref_proxy_type_title">Tipus de servidor intermediari de sortida</string>
- <string name="pref_proxy_type_summary">Protocol a utilitzar pel servidor intermediari: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Introduïu el tipus de servidor intermediari</string>
- <string name="pref_proxy_host_title">Amfitrió del servidor intermediari de sortida</string>
- <string name="pref_proxy_host_summary">Nom de l\'amfitrió del servidor intermediari</string>
- <string name="pref_proxy_host_dialog">Introduïu l\'amfitrió del servidor intermediari</string>
- <string name="pref_proxy_port_title">Port del servidor intermediari de sortida</string>
- <string name="pref_proxy_port_summary">Port del servidor intermediari</string>
- <string name="pref_proxy_port_dialog">Introduïu el port del servidor intermediari</string>
- <string name="pref_proxy_username_title">Nom d\'usuari del servidor intermediari de sortida</string>
- <string name="pref_proxy_username_summary">Nom d\'usuari del servidor intermediari (opcional)</string>
- <string name="pref_proxy_username_dialog">Introduïu el nom d\'usuari del servidor intermediari</string>
- <string name="pref_proxy_password_title">Contrasenya del servidor intermediari de sortida</string>
- <string name="pref_proxy_password_summary">Contrasenya del servidor intermediari (opcional)</string>
- <string name="pref_proxy_password_dialog">Introduïu la contrasenya del servidor intermediari</string>
- <string name="status">Estat</string>
- <string name="setting_up_full_transparent_proxying_">S\'està configurant el servidor intermediari transparent complet...</string>
- <string name="setting_up_app_based_transparent_proxying_">S\'està configurant el servidor intermediari transparent per apps...</string>
- <string name="transparent_proxying_enabled">S\'ha ACTIVAT el servidor intermediari transparent</string>
- <string name="transproxy_enabled_for_tethering_">S\'ha activat el servidor intermediari per la compartició de xarxa</string>
- <string name="warning_error_starting_transparent_proxying_">ATENCIÃ?: hi ha hagut un error en iniciar el servidor intermediari transparent</string>
- <string name="transproxy_rules_cleared">S\'han esborrat les regles del servidor intermediari transparent</string>
- <string name="couldn_t_start_tor_process_">No s\'ha pogut iniciar el procés Tor:</string>
- <string name="setting_up_port_based_transparent_proxying_">S\'està configurant el servidor intermediari transparent per ports...</string>
- <string name="bridge_error">Hi ha hagut un error de pont</string>
- <string name="bridge_requires_ip">Per poder utilitzar la funcionalitat de pont, cal que introduïu almenys una adreça IP de pont.</string>
- <string name="send_email_for_bridges">Envieu un correu a bridges@xxxxxxxxxxxxxx amb la lÃnia «get bridges» sola al cos del missatge des d\'un compte de gmail.</string>
- <string name="error">Error</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Els parà metres d\'adreces accessibles han provocat una excepció.</string>
- <string name="your_relay_settings_caused_an_exception_">Els parà metres de reemissió han causat una excepció.</string>
- <string name="exit_nodes">Nodes de sortida</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Empremtes, à lies, països i adreces per l\'últim salt</string>
- <string name="enter_exit_nodes">Introduïu els nodes de sortida</string>
- <string name="exclude_nodes">Nodes per excloure</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Empremtes, à lies, països i adreces per excloure</string>
- <string name="enter_exclude_nodes">Introduïu nodes per excloure</string>
- <string name="strict_nodes">Nodes estrictes</string>
- <string name="use_only_these_specified_nodes">Utilitza *només* aquests nodes especificats</string>
- <string name="bridges">Ponts</string>
- <string name="use_bridges">Utilitza ponts</string>
- <string name="bridges_obfuscated">Ponts ofuscats</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activa nodes alternatius d\'entrada a la xarxa Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activeu-ho si els ponts configurats són ponts ofuscats</string>
- <string name="ip_address_and_port_of_bridges">Adreça IP i port dels ponts</string>
- <string name="enter_bridge_addresses">Introduïu les adreces del pont</string>
- <string name="relays">Reemissors</string>
- <string name="relaying">Reemissió</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Activa el vostre dispositiu per ser un reemissor sense sortida</string>
- <string name="relay_port">Port de reemissió</string>
- <string name="listening_port_for_your_tor_relay">Port d\'escolta per la vostra reemissió de Tor</string>
- <string name="enter_or_port">Introduïu el port OR</string>
- <string name="relay_nickname">Ã?lies del reemissor</string>
- <string name="the_nickname_for_your_tor_relay">L\'Ã lies pel vostre reemissor de Tor</string>
- <string name="enter_a_custom_relay_nickname">Introduïu un à lies personalitzat pel vostre reemissor</string>
- <string name="reachable_addresses">Adreces accessibles</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">S\'executa com a client darrera d\'un tallafocs amb normes restrictives</string>
- <string name="reachable_ports">Ports accessibles</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ports que es poden accedir darrera d\'un tallafocs restrictiu</string>
- <string name="enter_ports">Introduïu els ports</string>
- <string name="enable_hidden_services">Allotjament de servei ocult</string>
- <string name="run_servers_accessible_via_the_tor_network">Permet que un servidor al dispositiu sigui accessible des de la xarxa Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">introduïu els ports de l\'amfitrió local pels serveis ocults</string>
- <string name="hidden_service_ports">Ports del servei coult</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">el nom adreçable pel vostre servei ocult (generat automà ticament)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activa la sortida del registre de depuració (cal utilitzar l\'adb o l\'aLogCat per veure\'l)</string>
- <string name="project_home">Lloc(s) web del projecte:</string>
- <string name="the_tor_license">La llicència Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Programari de terceres parts:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Una aplicació vol obrir el port %S de servei ocult a la xarxa Tor. Això és segur si confieu en l\'aplicació.</string>
- <string name="found_existing_tor_process">s\'ha trobat un procés Tor existent...</string>
- <string name="something_bad_happened">Ha fallat alguna cosa. Comproveu el registre</string>
- <string name="hidden_service_on">servei ocult a:</string>
- <string name="unable_to_read_hidden_service_name">ha estat impossible llegir el nom del servei ocult</string>
- <string name="unable_to_start_tor">Ha estat impossible iniciar Tor:</string>
- <string name="pref_use_sys_iptables_title">Utilitza les Iptables per defecte</string>
- <string name="pref_use_sys_iptables_summary">utilitza el binari incorporat amb l\'Iptables enlloc del que porta l\'Orbot</string>
- <string name="error_installing_binares">Els binaris de Tor no s\'han pogut instal·lar o actualitzar.</string>
- <string name="pref_use_persistent_notifications">Manté la icona sempre a la barra d\'eines mentre l\'Orbot està connectat</string>
- <string name="pref_use_persistent_notifications_title">Notificacions sempre activades</string>
- <string name="notification_using_bridges">Ponts activats.</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Trieu la localització i la llengua per l\'Orbot</string>
- <string name="wizard_locale_title">Tria la llengua</string>
- <string name="wizard_locale_msg">Deixa-ho per defecte o canvia la llengua actual</string>
- <string name="powered_by">funciona amb Tor</string>
- <string name="btn_save_settings">Desa els parà metres</string>
- <string name="bandwidth_">Ample de banda:</string>
- <string name="down">baixada</string>
- <string name="up">pujada</string>
- <string name="pref_disable_network_title">No hi ha autodesconnexió de xarxa</string>
- <string name="pref_disable_network_summary">Posa el Tor en pausa mentre no hi ha connexió a internet</string>
- <string name="newnym">Heu canviat a una nova identitat Tor.</string>
- <string name="menu_use_chatsecure">Utilitza ChatSecure</string>
- <string name="permission_manage_tor_label">Gestiona Tor</string>
- <string name="permission_manage_tor_description">Activa aquesta app per controlar el servei Tor</string>
- <string name="install_apps_">Voleu instal·lar les apps?</string>
- <string name="your_tor_public_ips_">Les vostres IP públiques de Tor:</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="get_bridges_email">Correu-e</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Activa</string>
- <string name="standard_browser">Navegador està ndard</string>
-</resources>
diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml
deleted file mode 100644
index a77614e..0000000
--- a/res/values-cs-rCZ/strings.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">spustit a vypnout Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot se spouÅ¡tÃ...</string>
- <string name="status_activated">PÅ?ipojen k sÃti Tor</string>
- <string name="status_disabled">Orbot je deaktivován</string>
- <string name="tor_process_starting">Startuji Tor klienta...</string>
- <string name="tor_process_complete">hotovo.</string>
- <string name="tor_process_waiting">Ä?ekám.</string>
- <string name="not_anonymous_yet">VAROVÃ?NÃ?: VaÅ¡e komunikace jeÅ¡tÄ? nenà anonymnÃ! ProsÃm nastavte vaÅ¡im aplikacÃm HTTP proxy 127.0.0.1:8118 nebo SOCKS4A Ä?i SOCKS5 proxy 172.0.0.1:9050</string>
- <string name="menu_home">Domů</string>
- <string name="menu_browse">ProhlÞet</string>
- <string name="menu_settings">NastavenÃ</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Pomoc</string>
- <string name="menu_start">Zapnout</string>
- <string name="menu_stop">Vypnout</string>
- <string name="menu_about">O aplikaci</string>
- <string name="main_layout_download">Stáhnout</string>
- <string name="main_layout_upload">Nahrát</string>
- <string name="button_help">NápovÄ?da</string>
- <string name="button_close">ZavÅ?Ãt</string>
- <string name="button_about">O aplikaci</string>
- <string name="button_clear_log">VyÄ?istit log</string>
- <string name="menu_verify">OvÄ?Å?it</string>
- <string name="menu_exit">Konec</string>
- <string name="press_to_start">- podržte pro spuÅ¡tÄ?nà -</string>
- <string name="pref_trans_proxy_group">Transparentnà proxy (vyžaduje roota)</string>
- <string name="pref_trans_proxy_title">Transparentnà proxy</string>
- <string name="pref_trans_proxy_summary">Automatické Torovánà aplikacÃ</string>
- <string name="pref_transparent_all_title">Torovat všechno</string>
- <string name="pref_transparent_all_summary">Proxynovat všechny aplikace skrz Tor</string>
- <string name="pref_transparent_port_fallback_title">Záložnà port pro proxy</string>
- <string name="pref_transparent_port_fallback_summary">VAROVÃ?NÃ?: Obcházà bÄ?žné porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungujÃ.</string>
- <string name="pref_transparent_port_title">Seznam portů</string>
- <string name="pref_transparent_port_summary">Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungujÃ</string>
- <string name="pref_transparent_port_dialog">Zadejte porty pro proxynovánÃ</string>
- <string name="pref_has_root">Vyžaduje root pÅ?Ãstup</string>
- <string name="pref_has_root_summary">Požádat o práva roota kvůli transparentnÃmu proxy</string>
- <string name="status_install_success">Binárky toru byly úspÄ?Å¡nÄ? nainstalovány!</string>
- <string name="status_install_fail">Nebylo možno nainstalovat binárky Toru. ProsÃm zkontrolujte log a upozornÄ?te tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Chyba aplikace</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">O Orbotovi</string>
- <string name="btn_next">DalÅ¡Ã</string>
- <string name="btn_back">ZpÄ?t</string>
- <string name="btn_finish">DokonÄ?it</string>
- <string name="btn_okay">Budiž</string>
- <string name="btn_cancel">Zrušit</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Pár detailů o Orbot</string>
- <string name="wizard_permissions_root">Práva udÄ?lena</string>
- <string name="wizard_permissions_stock">OprávnÄ?nà Orbota</string>
- <string name="wizard_premissions_msg_root">VýbornÄ?! Bylo detekováno, že root oprávnÄ?nà bylo Orbotu udÄ?leno. Budeme tuto sÃlu užÃvat moudÅ?e.</string>
- <string name="wizard_permissions_msg_stock">I když to nenà nutné, Orbot může pracovat lépe, pokud má vaÅ¡e zaÅ?Ãzenà root. Použijte tlaÄ?Ãtko dole pro udÄ?lenà supersÃly Orbotovi. </string>
- <string name="wizard_permissions_no_root">Pokud nemáte pÅ?Ãstup roota, nebo nevÃte, o co se jedná, ujistÄ?te se, že použÃváte aplikace, které s Orbotem spolupracujÃ.</string>
- <string name="wizard_permissions_consent">RozumÃn a pÅ?eji si pokraÄ?ovat bez roota (superuživatelských oprávnÄ?nÃ)</string>
- <string name="wizard_permission_enable_root">UdÄ?lit Orbotovi root oprávnÄ?nÃ</string>
- <string name="wizard_configure">Nastavenà TorovánÃ</string>
- <string name="wizard_configure_msg">Orbot umožÅ?uje smÄ?rovat datový provoz vÅ¡ech aplikacà pÅ?es Tor NEBO zvolit aplikace individuálnÄ?.</string>
- <string name="wizard_configure_all">Tor Proxy pro všechny aplikace</string>
- <string name="wizard_configure_select_apps">Zvolit aplikace pro Tor individuálnÄ?</string>
- <string name="wizard_tips_tricks">Aplikace povolené pro Orbota</string>
- <string name="wizard_tips_msg">Aplikace nÞe byly vyvinuty tak, aby spolupracovaly s Orbotem. KliknÄ?te na každé tlaÄ?Ãtko pro instalaci, aplikace můžete najÃt i v Obchodu Play nebo na webu GuardianProject.info Ä?i F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - BezpeÄ?ný instant messaging klient pro Android</string>
- <string name="wizard_tips_proxy">Proxy Nastavenà - NauÄ?te se, jak nastavit aplikace, aby pracovaly s Orbotem</string>
- <string name="wizard_tips_duckgo">Aplikace DuckDuckGo pro vyhledávacà engine</string>
- <string name="wizard_tips_twitter">Nastavit Twitter proxy na host \"localhost\" a port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Nastavenà Proxy</string>
- <string name="wizard_final">Orbot je pÅ?ipraven!</string>
- <string name="wizard_exit_at_first_screen_toast">Orbot musÃte nejdÅ?Ãve nastavit, než ho zaÄ?nete použÃvat!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Tato volba otevÅ?e ve webovém prohlÞeÄ?i stránku https://check.torproject.org pro kontrolu, jestli je Orbot správnÄ? nastaven a jste pÅ?ipojen k Tor.</string>
- <string name="pref_hs_group">Skrytý hosting služby</string>
- <string name="pref_general_group">Obecné</string>
- <string name="pref_start_boot_title">Spustit Orbot pÅ?i startu systému</string>
- <string name="pref_start_boot_summary">Automaticky spustit Orbot a pÅ?ipojit se k Tor po startu zaÅ?ÃzenÃ</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">VarovánÃ</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">OprávnÄ?nÃ</string>
- <string name="wizard_permissions_root_msg1">VolitelnÄ? můžete Orbotu udÄ?lit \'siperuýivatelský\' (root) pÅ?Ãstup pto povolenà rozÅ¡ÃÅ?ených funkcÃ, napÅ?Ãklad transparentnà proxy.</string>
- <string name="wizard_permissions_root_msg2">Pokud si to nepÅ?ejete, použÃvejte prosÃm aplikace napsané tak, aby spolupracovaly s Orbotem</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-povolené aplikace</string>
- <string name="wizard_tips_gibberbot">ChatSecure: BezpeÄ?ná chatovacà aplikace s technologià Off-the-Record Encryption</string>
- <string name="wizard_tips_play">NajdÄ?te vÅ¡echny aplikace Guardian Projektu na Obchodu Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparentnà proxy</string>
- <string name="wizard_transproxy_msg">Toto povolà aplikacÃm automaticky bÄ?žet pÅ?es Tor sÃÅ¥ bez jakéhokoliv nastavovánÃ.</string>
- <string name="wizard_transproxy_hint">(Povolte tuto volbu, pokud nemáte ponÄ?tÃ, o co se jedná)</string>
- <string name="wizard_transproxy_none">Žádné</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Povolit Tor transparentnà proxy pro zaÅ?Ãzenà pÅ?ipojená pÅ?es Wifi a USB tethering (vyžaduje restart)</string>
- <string name="button_grant_superuser">Požadavek na Superuživatelský pÅ?Ãstup</string>
- <string name="pref_select_apps">Vybrat aplikace</string>
- <string name="pref_select_apps_summary">Zvolte aplikace použÃvajÃcà smÄ?rováni pÅ?es Tor</string>
- <string name="pref_node_configuration">Konfigurace uzlu (nodu)</string>
- <string name="pref_node_configuration_summary">Tato rozÅ¡ÃÅ?ená nastavenà mohou snÞit vaÅ¡i anonymitu</string>
- <string name="pref_entrance_node">Vstupnà nody</string>
- <string name="pref_entrance_node_summary">Otisky (fingerprints), pÅ?ezdÃvky serveru (nicks), státy a adresy pro prvnà skok (hop)</string>
- <string name="pref_entrance_node_dialog">Zadejte vstupnà nody</string>
- <string name="button_invert_selection">PÅ?evrátit výbÄ?r</string>
- <string name="pref_proxy_title">Odchozà sÃÅ¥ová proxy (volitelné)</string>
- <string name="pref_proxy_type_title">Typ odchozà proxy</string>
- <string name="pref_proxy_type_summary">Protokol pro proxy server: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Zadejte typ proxy</string>
- <string name="pref_proxy_host_title">Hostitel odchozà proxy</string>
- <string name="pref_proxy_host_summary">Jméno hostitele proxy serveru</string>
- <string name="pref_proxy_host_dialog">Zadejte hostitele proxy</string>
- <string name="pref_proxy_port_title">Port odchozà proxy</string>
- <string name="pref_proxy_port_summary">Port proxy serveru</string>
- <string name="pref_proxy_port_dialog">Zadejte proxy port</string>
- <string name="pref_proxy_username_title">Uživatelské jméno odchozà proxy</string>
- <string name="pref_proxy_username_summary">Proxy uživatelské jméno (volitelné)</string>
- <string name="pref_proxy_username_dialog">Zadejte Proxy uživatelské jméno</string>
- <string name="pref_proxy_password_title">Heslo odchozà proxy</string>
- <string name="pref_proxy_password_summary">Proxy heslo (volitelné)</string>
- <string name="pref_proxy_password_dialog">Zadejte Proxy heslo</string>
- <string name="status">Stav</string>
- <string name="setting_up_full_transparent_proxying_">Nastavuji transparentnà proxy�</string>
- <string name="setting_up_app_based_transparent_proxying_">Nastavenà na aplikacÃch založené transparentnà proxy...</string>
- <string name="transparent_proxying_enabled">Transparentnà proxy POVOLENA</string>
- <string name="transproxy_enabled_for_tethering_">Transparentnà proxy povolena pro Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">VAROVÃ?NÃ?: chyba pÅ?i startu transparentnà proxy!</string>
- <string name="transproxy_rules_cleared">Pravidla TransProxy vymazána</string>
- <string name="couldn_t_start_tor_process_">Nelze spustit Tor proces:</string>
- <string name="setting_up_port_based_transparent_proxying_">Nastavenà na portu založené transparentnà proxy...</string>
- <string name="bridge_error">Chyba bridge</string>
- <string name="bridge_requires_ip">Pro použità bridge musÃte zadat minimálné jednu IP adresu bridge.</string>
- <string name="send_email_for_bridges">ZaÅ¡lete email pouze s Å?ádkem \"get bridges\" v obsahu zprávy z vaÅ¡eho gmail úÄ?tu na adresu bridges@xxxxxxxxxxxxxx</string>
- <string name="error">Chyba</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Vaše nastavenà dostupných adres (ReachableAddresses) způsobilo chybu!</string>
- <string name="your_relay_settings_caused_an_exception_">Vaše nastavenà relace způsobilo výjimku!</string>
- <string name="exit_nodes">Výstupnà nody</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Otisky (fingerprints), pÅ?ezdÃvky serveru (nicks), státy a adresy pro poslednà skok (hop)</string>
- <string name="enter_exit_nodes">Zadejte výstupnà nody</string>
- <string name="exclude_nodes">VylouÄ?ené nody</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Otisky (fingerprints), pÅ?ezdÃvky serveru (nicks), státy a adresy pro vylouÄ?ené nody</string>
- <string name="enter_exclude_nodes">Zadejte nody k vylouÄ?enÃ</string>
- <string name="strict_nodes">Striktnà nody</string>
- <string name="use_only_these_specified_nodes">PoužÃt *pouze* tyto specifické nody</string>
- <string name="bridges">Bridge</string>
- <string name="use_bridges">PoužÃt bridge</string>
- <string name="bridges_obfuscated">Matoucà bridge (Obfuscated Bridges)</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Povolit alternativnà vstupnà nody do sÃtÄ? Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Povolte, pokud jsou nastavené bridge matoucà bridge</string>
- <string name="ip_address_and_port_of_bridges">IP adresy a porty bridgů</string>
- <string name="enter_bridge_addresses">Zadejte adresy bridgů</string>
- <string name="relays">Relé</string>
- <string name="relaying">PoužÃvánà relé</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">SpuÅ¡tÄ?nà zaÅ?Ãzenà jako neodchozÃho relé</string>
- <string name="relay_port">Port relé</string>
- <string name="listening_port_for_your_tor_relay">Naslouchánà Vašeho Tor relé</string>
- <string name="enter_or_port">Zadejte OR port</string>
- <string name="relay_nickname">PÅ?ezdÃvka relé</string>
- <string name="the_nickname_for_your_tor_relay">PÅ?ezdÃvka VaÅ¡eho Tor relé</string>
- <string name="enter_a_custom_relay_nickname">Zadejte klientskou pÅ?ezdÃvku relé</string>
- <string name="reachable_addresses">Dostupné adresy</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">BÄ?žet jako klient za firewallem s restriktivnà politikou</string>
- <string name="reachable_ports">Dostupné porty</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porty dostupné za restriktivnÃm firewallem</string>
- <string name="enter_ports">Zadejte porty</string>
- <string name="enable_hidden_services">Skrytý hosting služby</string>
- <string name="run_servers_accessible_via_the_tor_network">umožnit serveru na zaÅ?Ãzenà být pÅ?Ãstupné skrze sÃÅ¥ Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">vložte porty localhostu pro skryté služby</string>
- <string name="hidden_service_ports">Skryté porty služby</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresovatelné jméno pro vaši skrytou službu (generováno automaticky)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">umožnit ladicà informace na výstup (musà použÃvat adb nebo aLogCat k prohlÞenÃ)</string>
- <string name="project_home">Domovské(á) umÃstÄ?nà projektu</string>
- <string name="the_tor_license">Tor Licence</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software tÅ?etÃch stran:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Aplikace požaduje otevÅ?enà skrytého portu serveru %S k sÃti Tor. Toto je bezpeÄ?nÄ?, pokud aplikaci důvÄ?Å?ujete.</string>
- <string name="found_existing_tor_process">nalezev existujÃcà Tor procesâ?¦</string>
- <string name="something_bad_happened">Stalo se nÄ?co Å¡patného. Zkontrolujte log</string>
- <string name="hidden_service_on">skrytá služba na:</string>
- <string name="unable_to_read_hidden_service_name">nelze Ä?Ãst název skryté služby</string>
- <string name="unable_to_start_tor">Nelze spustit Tor:</string>
- <string name="unable_to_reset_tor">Restartujte vaÅ¡e zaÅ?ÃzenÃ, nejsme schopni resetovat Tor!</string>
- <string name="pref_use_sys_iptables_title">PoužÃt defaultnà Iptables</string>
- <string name="pref_use_sys_iptables_summary">použÃt vestavÄ?né iptables binárky mÃsto tÄ?ch dodávaných s Orbotem</string>
- <string name="error_installing_binares">Nelze nainstalovat nebo aktualizovat Tor binárky.</string>
- <string name="pref_use_persistent_notifications">Vždy zobrazit ikonu ve stavovém Å?ádku, pokud je Orbot pÅ?ipojen.</string>
- <string name="pref_use_persistent_notifications_title">Notifikace vždy zapnuté</string>
- <string name="notification_using_bridges">Bridge povoleny!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Jazyk</string>
- <string name="set_locale_summary">Zvolte jazyk pro Orbot</string>
- <string name="wizard_locale_title">Zvolte jazyk</string>
- <string name="wizard_locale_msg">Ponechat standartnÃ, nebo pÅ?epnout stávajÃcà jazyk</string>
- <string name="btn_save_settings">Uložit nastavenÃ</string>
- <string name="bandwidth_">Å ÃÅ?ka pásma:</string>
- <string name="down">stahovánÃ</string>
- <string name="up">nahrávánÃ</string>
- <string name="pref_disable_network_title">Vypnout uspávánà sÃtÄ?</string>
- <string name="pref_disable_network_summary">Uspat Tor když nenà k dispozici pÅ?Ãstup k Internetu</string>
- <string name="newnym">VaÅ¡e identita na Toru byla zmÄ?nÄ?na!</string>
- <string name="menu_use_chatsecure">PoužÃt ChatSecure</string>
- <string name="permission_manage_tor_label">Spravovat Tor</string>
- <string name="permission_manage_tor_description">Umožnit této aplikaci ovládat službu Tor</string>
- <string name="install_apps_">Nainstalovat aplikace?</string>
- <string name="restart_orbot_to_use_this_bridge_">Pro projevenà zmÄ?n restartujte Orbot</string>
- <string name="menu_qr">QR kódy</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Aktivovat</string>
- <string name="send_email">Pošli email</string>
- <string name="standard_browser">Standartnà prohlÞeÄ?</string>
-</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
deleted file mode 100644
index db4fc92..0000000
--- a/res/values-cs/strings.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">spustit a vypnout Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot se spouÅ¡tÃâ?¦</string>
- <string name="status_activated">PÅ?ipojen k sÃti Tor</string>
- <string name="status_disabled">\"Orbot je deaktivován</string>
- <string name="status_shutting_down">Orbot se vypÃná</string>
- <string name="tor_process_starting">Startuji Tor klientaâ?¦</string>
- <string name="tor_process_complete">hotovo.</string>
- <string name="tor_process_waiting">Ä?ekám.</string>
- <string name="not_anonymous_yet">VAROVÃ?NÃ?: VaÅ¡e komunikace jeÅ¡tÄ? nenà anonymnÃ! ProsÃm nastavte vaÅ¡im aplikacÃm HTTP proxy 127.0.0.1:8118 nebo SOCKS4A Ä?i SOCKS5 proxy 172.0.0.1:9050</string>
- <string name="menu_home">Domů</string>
- <string name="menu_browse">ProhlÞet</string>
- <string name="menu_settings">NastavenÃ</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Pomoc</string>
- <string name="menu_apps">Aplikace</string>
- <string name="menu_start">Zapnout</string>
- <string name="menu_stop">Vypnout</string>
- <string name="menu_about">O aplikaci</string>
- <string name="button_help">Pomoc</string>
- <string name="button_close">ZavÅ?Ãt</string>
- <string name="button_about">O aplikaci</string>
- <string name="button_clear_log">VyÄ?istit log</string>
- <string name="menu_verify">OvÄ?Å?it</string>
- <string name="menu_exit">Konec</string>
- <string name="press_to_start">- podržte pro spuÅ¡tÄ?nà -</string>
- <string name="pref_trans_proxy_group">Transparentnà proxy (vyžaduje roota)</string>
- <string name="pref_trans_proxy_title">Transparentnà proxy</string>
- <string name="pref_trans_proxy_summary">Automatické Torovánà aplikacÃ</string>
- <string name="pref_transparent_all_title">Torovat všechno</string>
- <string name="pref_transparent_all_summary">Proxynovat všechny aplikace skrz Tor</string>
- <string name="pref_transparent_port_fallback_title">Záložnà port pro proxy</string>
- <string name="pref_transparent_port_fallback_summary">VAROVÃ?NÃ?: Obcházà Ä?asté porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungujÃ.</string>
- <string name="pref_transparent_port_title">Seznam portů</string>
- <string name="pref_transparent_port_summary">Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungujÃ</string>
- <string name="pref_transparent_port_dialog">Zadejte porty pro proxynovánÃ</string>
- <string name="pref_has_root">Vyžaduje root pÅ?Ãstup</string>
- <string name="pref_has_root_summary">Požádat o práva roota kvůli transparentnÃmu proxy</string>
- <string name="status_install_success">Binárky toru byly úspÄ?Å¡nÄ? nainstalovány!</string>
- <string name="title_error">Chyba aplikace</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">O Orbotovi</string>
- <string name="btn_next">DalÅ¡Ã</string>
- <string name="btn_back">ZpÄ?t</string>
- <string name="btn_finish">DokonÄ?it</string>
- <string name="btn_cancel">Zrušit</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_permissions_root">Práva udÄ?lena</string>
- <string name="wizard_proxy_help_info">Nastavenà Proxy</string>
- <string name="wizard_final">Orbot je pÅ?ipraven!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">HlavnÃ</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">VarovánÃ</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparentnà proxy</string>
- <string name="wizard_transproxy_none">NenÃ</string>
- <string name="status">Status</string>
- <string name="error">Chyba</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Uloz nastaveni</string>
- <string name="menu_vpn">Aplikace</string>
-</resources>
diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml
deleted file mode 100644
index f0d9acd..0000000
--- a/res/values-cy/strings.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">cychwyn a stopio Tor</string>
- <string name="tor_proxy_service_process">gwasanaethdirpwrytor</string>
- <string name="status_starting_up">Mae Orbot yn cychwyn...</string>
- <string name="status_activated">Wedi cysylltu â rhwydwaith Tor</string>
- <string name="tor_process_starting">Yn cychwyn cleient Tor</string>
- <string name="tor_process_complete">Wedi ei gwblhau.</string>
- <string name="tor_process_waiting">yn aros.</string>
- <string name="not_anonymous_yet">RHYBUDD: Nid yw eich traffig yn ddienw eto! Os gwelwch yn dda ffurfweddu eich ceisiadau at arfer HTTP proxy 127.0.0.1:8118 neu SOCKS4A neu ddirprwy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Hafan</string>
- <string name="menu_browse">Pori</string>
- <string name="menu_settings">Gosodiadau</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Help</string>
- <string name="menu_start">Cychwyn</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">Amdanom ni</string>
- <string name="main_layout_download">Llwytho i lawr</string>
- <string name="main_layout_upload">Llwytho i fyny</string>
- <string name="button_help">Help</string>
- <string name="button_close">Cau</string>
- <string name="button_about">Amdanom ni</string>
- <string name="button_clear_log">Clirio log</string>
- <string name="menu_verify">Gwirio</string>
- <string name="menu_exit">Gadael</string>
- <string name="press_to_start">- pwyswch yn hir i gychwyn -</string>
- <string name="pref_trans_proxy_group">Dirprwyo tryloyw (angen Gwreiddyn)</string>
- <string name="pref_trans_proxy_title">Dirprwyo tryloyw</string>
- <string name="pref_trans_proxy_summary">\'Torifying\' o Apps yn awtomatig</string>
- <string name="pref_transparent_all_title">Popeth Tor</string>
- <string name="pref_transparent_all_summary">Traffig dirprwy i\'r holl apps drwy Tor</string>
- <string name="pref_transparent_port_title">Rhestr Porthau</string>
- <string name="pref_transparent_port_summary">Rhestr o borthau i\'w dirprwyo. *DEFNYDDIER YN UNIG* os nad yw modd \'Popeth\' neu \'App\' yn gweithio</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Am Orbot</string>
- <string name="btn_next">Nesaf</string>
- <string name="btn_back">Yn ôl</string>
- <string name="btn_finish">Gorffen</string>
- <string name="btn_okay">Iawn</string>
- <string name="btn_cancel">Diddymu</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Rhai manylion am Orbot</string>
- <string name="wizard_permissions_root">Caniatâd wedi\'i roi</string>
- <string name="wizard_proxy_help_info">Gosodiadau Dirprwy</string>
- <string name="wizard_final">Mae Orbot yn barod!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Cyffredinol</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Rhybudd</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Dirprwyo\'n dryloyw</string>
- <string name="wizard_transproxy_none">Dim</string>
- <string name="pref_select_apps">Dewiswch Apps</string>
- <string name="pref_select_apps_summary">Dewiswch Apps i\'w llwybro drwy Tor</string>
- <string name="pref_node_configuration">Ffurfweddiad nod</string>
- <string name="pref_entrance_node">Nodau mynediad</string>
- <string name="pref_entrance_node_dialog">I mewn i nodau mynediad</string>
- <string name="pref_proxy_password_summary">Cyfrinair y Dirprwy (Dewisol)</string>
- <string name="status">Statws</string>
- <string name="error">Gwall</string>
- <string name="exit_nodes">Nodau Gadael</string>
- <string name="enter_exit_nodes">I mewn i Nodau Gadael</string>
- <string name="exclude_nodes">Yn eithrio Nodau</string>
- <string name="enter_exclude_nodes">I mewn i Nodau Eithrio</string>
- <string name="the_tor_license">Trwydded Tor</string>
- <string name="third_party_software">Meddalwedd 3ydd-parti</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Dewiswch locale ac iaith i Orbot</string>
- <string name="wizard_locale_title">Dewiswch iaith</string>
- <string name="btn_save_settings">Cadw\'r gosodiadau</string>
-</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
deleted file mode 100644
index 0ddf38a..0000000
--- a/res/values-da/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot er en gratis og åben proxy-applikation, der gør det muligt at anvende internettet mere sikkert fra andre programmer. Orbot bruger Tor til at kryptere internettrafikken, og skjuler den ved at sende den gennem serverere, lokaliseret i hele verden. Tor er gratis og åben software, der kan hjælpe dig mod netværksovervågning kaldet trafikanalyse, der kan true din personlige frihed, dit privatliv, handelsaktivitet og forhold.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">start og stop Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot starter op ...</string>
- <string name="status_activated">Der er forbindelse til Tor-netværket</string>
- <string name="status_disabled">Orbot er slået fra</string>
- <string name="tor_process_starting">Starter Tor klienten...</string>
- <string name="tor_process_complete">udført.</string>
- <string name="tor_process_waiting">afventer.</string>
- <string name="not_anonymous_yet">ADVARSEL: Din trafik er ikke endnu ikke anonym! Konfigurér venligst dine programmer, så de bruger HTTP proxy 127.0.0.1:8118 eller SOCKS4A eller SOCKS5-proxy 127.0.0.1:9050</string>
- <string name="menu_home">Hjem</string>
- <string name="menu_browse">Brows</string>
- <string name="menu_settings">Indstillinger</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Hjælp</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">Om</string>
- <string name="main_layout_download">Henter</string>
- <string name="main_layout_upload">Sender</string>
- <string name="button_help">Hjælp</string>
- <string name="button_close">Luk</string>
- <string name="button_about">Om</string>
- <string name="button_clear_log">Ryd log</string>
- <string name="menu_verify">Tjek</string>
- <string name="menu_exit">Afslut</string>
- <string name="press_to_start">- hold nede for start -</string>
- <string name="pref_trans_proxy_group">Transparent proxy (kræver Root)</string>
- <string name="pref_trans_proxy_title">Transparent proxy</string>
- <string name="pref_trans_proxy_summary">Anvend automatisk Tor på programmer</string>
- <string name="pref_transparent_all_title">Brug Tor til alt</string>
- <string name="pref_transparent_all_summary">Proxy-trafik for alle programmer gennem Tor</string>
- <string name="pref_transparent_port_fallback_title">Tilbagefaldsport for proxy</string>
- <string name="pref_transparent_port_fallback_summary">ADVARSEL: Omgår almindelige porte (80, 443, osv). Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker.</string>
- <string name="pref_transparent_port_title">Portliste</string>
- <string name="pref_transparent_port_summary">Liste af porte der skal filtreres gennem proxyen. Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker.</string>
- <string name="pref_transparent_port_dialog">Indtast porte der skal filtreres gennem proxyen.</string>
- <string name="pref_has_root">Forespørg om Root-adgang</string>
- <string name="pref_has_root_summary">Kræver root privilegier for gennemsigtig proxy.</string>
- <string name="status_install_success">Tor\'s binære filer succesfuldt installeret!</string>
- <string name="status_install_fail">Tor\'s binære filer kunne ikke installeres. Læs venligst loggen og underret tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Programfejl</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Om Orbot</string>
- <string name="btn_next">Næste</string>
- <string name="btn_back">Tilbage</string>
- <string name="btn_finish">Afslut</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Fortryd</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Nogle Orbot detaljer</string>
- <string name="wizard_permissions_root">Tilladelse givet</string>
- <string name="wizard_permissions_stock">Orbot tilladelser</string>
- <string name="wizard_premissions_msg_root">Fremragende! Vi kan se at du har givet root tilladelser til Orbot . Vi vil bruge denne magt med omtanke.</string>
- <string name="wizard_permissions_msg_stock">Selvom det ikke er påkrævet, kan Orbot blive et mere nyttigt værktøj, hvis din enhed har root adgang. Benyt knappen herunder for at tildele Orbot superkræfter!</string>
- <string name="wizard_permissions_no_root">Hvis du ikke har root adgang eller ikke aner hvad vi snakker om, skal du være sikker på at du benytter dig af apps som kan fungere med Orbot.</string>
- <string name="wizard_permissions_consent">Jeg forstår og vil gerne fortsætte uden Superuser</string>
- <string name="wizard_permission_enable_root">Tillad root for Orbot</string>
- <string name="wizard_configure">Indstil Torifikation</string>
- <string name="wizard_configure_msg">Orbot giver dig mulighed for at føre al app-trafik igennem Tor ELLER vælge individuelt imellem apps.</string>
- <string name="wizard_configure_all">Kør alle programmers trafik gennem Tor proxyen</string>
- <string name="wizard_configure_select_apps">Vælg individuelle apps for Tor</string>
- <string name="wizard_tips_tricks">Orbot-aktiverede apps</string>
- <string name="wizard_tips_msg">De nedenstående programmer er udviklet for at fungere med Orbot. Klik hver knap for at installere nu. Ellers kan de senere findes på Google play, på hjemmesiden GuardianProject.info eller via F-Droid.org.</string>
- <string name="wizard_tips_proxy">Proxy indstillinger - Lær hvordan du konfigurerer apps til at fungere med Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo søgemaskine-programmet</string>
- <string name="wizard_tips_twitter">Indstil Twitter proxyen til værten \"localhost\" og port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy-indstillinger</string>
- <string name="wizard_final">Orbot er klar!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Dette vil åbne din browser på https://check.torproject.org for at se om Orbot er korrekt konfigureret og at du er forbundet til Tor.</string>
- <string name="pref_hs_group">Udbyd en skjult service</string>
- <string name="pref_general_group">Generelt</string>
- <string name="pref_start_boot_title">Start Orbot ved opstart</string>
- <string name="pref_start_boot_summary">Start automatisk Orbot og forbind til Tor når din android enhed starter</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Advarsel</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Tilladelser</string>
- <string name="wizard_permissions_root_msg1">Du kan eventuelt give Orbot \'Superuser\' adgang for at aktivere funktioner som f.eks. Transparent Proxying.</string>
- <string name="wizard_permissions_root_msg2">Hvis du ikke vil dette, så vær sikker på at du bruger apps som fungerer med Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-aktiverede apps</string>
- <string name="wizard_tips_play">Find alle Guardian Project programmer på Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transperant Proxying</string>
- <string name="wizard_transproxy_msg">Dette tillader at dine apps automatisk kører gennem Tor netværket uden nogen konfiguration.</string>
- <string name="wizard_transproxy_hint">(Check denne boks hvis du ikke aner hvad vi snakker om)</string>
- <string name="wizard_transproxy_none">Ingen</string>
- <string name="pref_transparent_tethering_title">Tor internet-hotspot</string>
- <string name="pref_transparent_tethering_summary">Start Tor gennemsigtig proxy for Wifi og internetdeling over USB (kræver genstart)</string>
- <string name="button_grant_superuser">Anmod om Superuser adgang</string>
- <string name="pref_select_apps">Vælg apps</string>
- <string name="pref_select_apps_summary">Vælg apps som føres gennem Tor</string>
- <string name="pref_node_configuration">Konfiguration af Tor node</string>
- <string name="pref_node_configuration_summary">Avancerede indstillinger, der kan reducere anonymiteten</string>
- <string name="pref_entrance_node">Indgangspunkter til Tor netværket</string>
- <string name="pref_entrance_node_summary">Fingeraftryk, servernavne, lande og adresser for første hop</string>
- <string name="pref_entrance_node_dialog">Indtast indgangspunkter</string>
- <string name="pref_proxy_title">Udgående netværksproxy (Valgfri)</string>
- <string name="pref_proxy_type_title">Udgående proxy-type</string>
- <string name="pref_proxy_type_summary">Protokol til proxy serveren: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Indtast proxy type</string>
- <string name="pref_proxy_host_title">Udgående proxy-vært</string>
- <string name="pref_proxy_host_summary">Værtsnavn for proxyserver</string>
- <string name="pref_proxy_host_dialog">Indtast proxy vært</string>
- <string name="pref_proxy_port_title">Udgående proxy-port</string>
- <string name="pref_proxy_port_summary">Proxyserverens port</string>
- <string name="pref_proxy_port_dialog">Indtast proxy port</string>
- <string name="pref_proxy_username_title">Brugernavn for udgående proxy</string>
- <string name="pref_proxy_username_summary">Proxy brugernavn (Valgfri)</string>
- <string name="pref_proxy_username_dialog">Indtast proxy-brugernavnet</string>
- <string name="pref_proxy_password_title">Kodeord for udgående proxy</string>
- <string name="pref_proxy_password_summary">Adgangskode for udgående proxy (Valgfri)</string>
- <string name="pref_proxy_password_dialog">Indtast proxy-kodeordet</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Opsætter total, gennemsigtig proxy...</string>
- <string name="setting_up_app_based_transparent_proxying_">Opsætter program-afhængig transparent proxy...</string>
- <string name="transparent_proxying_enabled">Transparent proxying AKTIVERET</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy slået til for internetdeling!</string>
- <string name="warning_error_starting_transparent_proxying_">ADVARSEL: fejl under start af den gennemsigtige proxy!</string>
- <string name="transproxy_rules_cleared">Indstillinger for TransProxy er nulstillet</string>
- <string name="couldn_t_start_tor_process_">Kunne ikke starte Tor processen:</string>
- <string name="setting_up_port_based_transparent_proxying_">Opsætter port-baseret gennemsigtig proxy...</string>
- <string name="bridge_error">Fejl ved Bro</string>
- <string name="bridge_requires_ip">For at kunne bruge bro-komponenten, skal du indaste mindst én IP-adresse på en bro.</string>
- <string name="send_email_for_bridges">Send en e-mail til bridges@xxxxxxxxxxxxxx med teksten \"get bridges\" alene i mailens tekstfelt fra en gmail-konto.</string>
- <string name="error">Fejl</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Din ReachableAdresses indstilling forudsagede en fejl!</string>
- <string name="your_relay_settings_caused_an_exception_">Dine relæindstillinger forårsagede en fejl!</string>
- <string name="exit_nodes">Udgangspunkter</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeraftryk, servernavne, lande og adresser for det sidste hop</string>
- <string name="enter_exit_nodes">Indtast udgangspunkter</string>
- <string name="exclude_nodes">Ekskluder punkter</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingeraftryk, servernavne, lande og adresser der skal ekskluderes</string>
- <string name="enter_exclude_nodes">Indtast noder at ekskludere</string>
- <string name="strict_nodes">Strikte punkter</string>
- <string name="use_only_these_specified_nodes">Brug *kun* disse specificerede punkter</string>
- <string name="bridges">Broer</string>
- <string name="use_bridges">Brug broer</string>
- <string name="bridges_obfuscated">Skjulte broer</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Slå alternative indgangspunkter til Tor netværket til</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktiver hvis de indstillede broer er skjulte broer</string>
- <string name="ip_address_and_port_of_bridges">IP adresser og porte på broer</string>
- <string name="enter_bridge_addresses">Indtast bro-adresser</string>
- <string name="relays">Relæer</string>
- <string name="relaying">Relæfunktion</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Lad denne enhed være et ikke-udgangs relæ</string>
- <string name="relay_port">Relæets port</string>
- <string name="listening_port_for_your_tor_relay">Port at dette Tor relæ lytter på</string>
- <string name="enter_or_port">Indtast OR port</string>
- <string name="relay_nickname">Relænavn</string>
- <string name="the_nickname_for_your_tor_relay">Kaldenavnet for dit Tor-relæ</string>
- <string name="enter_a_custom_relay_nickname">Indtast et valgfrit navn for relæet</string>
- <string name="reachable_addresses">Opnåelige adresser</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kør som en klient bag en firewall med restrektive regler</string>
- <string name="reachable_ports">Porte hvor forbindelse kan dannes</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porte bag en restriktiv firewall hvor en forbindelse kan oprettes</string>
- <string name="enter_ports">Indtast porte</string>
- <string name="enable_hidden_services">Udbyd en service</string>
- <string name="run_servers_accessible_via_the_tor_network">tillad at en server på enheden er tilgængelig via Tor-netværket</string>
- <string name="enter_localhost_ports_for_hidden_services">indtast lokale adresser for skjulte services</string>
- <string name="hidden_service_ports">Skjulte service porte</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">den absolutte sti til din skjulte service (genereres automatisk)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">aktiver fejlfindings-log til output (der skal anvendes adb eller aLogCat for at se dette)</string>
- <string name="project_home">Projekt hjemmeside(r):</string>
- <string name="the_tor_license">Tor licensen</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Tredjeparts-software:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="hidden_service_request">Et program vil åbne den skjulte server-port %S til Tor netværket. Dette er sikkert hvis du stoler på programmet.</string>
- <string name="found_existing_tor_process">fandt eksisterende Tor process...</string>
- <string name="something_bad_happened">Noget slemt er sket. Check loggen</string>
- <string name="hidden_service_on">skjult service på:</string>
- <string name="unable_to_read_hidden_service_name">ikke i stand til at læse navnet på den skjulte service</string>
- <string name="unable_to_start_tor">Kunne ikke starte Tor:</string>
- <string name="unable_to_reset_tor">Genstart din enhed. Ude af stand til at nulstille tor!</string>
- <string name="pref_use_sys_iptables_title">Anvend standardindstillinger for Iptables</string>
- <string name="pref_use_sys_iptables_summary">anvend det indbyggede iptables-program i stedet for versionen der følger med Orbot</string>
- <string name="error_installing_binares">Kunne ikke installere eller opgradere Tor programmerne.</string>
- <string name="pref_use_persistent_notifications">Vis altid ikonet i statuslinien når Orbot er forbundet til netværket</string>
- <string name="pref_use_persistent_notifications_title">Vis altid notifikationer</string>
- <string name="notification_using_bridges">Broer er aktiverede!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Sprog</string>
- <string name="set_locale_summary">Vælg sproginstillinger og sprog for Orbot</string>
- <string name="wizard_locale_title">Vælg sprog</string>
- <string name="wizard_locale_msg">Behold standardindstilling eller skift det nuværende sprog</string>
- <string name="powered_by">drevet af Tor</string>
- <string name="btn_save_settings">Gem Indstillinger</string>
- <string name="no_internet_connection_tor">Ingen internetforbindelse; Tor er på standby...</string>
- <string name="bandwidth_">BÃ¥ndbredde:</string>
-</resources>
diff --git a/res/values-de-rAT/strings.xml b/res/values-de-rAT/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-de-rAT/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
deleted file mode 100644
index 4e667c7..0000000
--- a/res/values-de/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot ist eine kostenlose Proxy-Anwendung, mit deren Hilfe andere Anwendungen das Internet sicherer nutzen können. Orbot verwendet Tor, um Ihren Internetverkehr zu verschlüsseln und ihn dann zu verbergen, indem er über eine Reihe weltweit verteilter Computer geleitet wird. Tor ist ein freies Programm und ein offenes Netzwerk, das Ihnen hilft, sich gegen Angriffe auf die persönliche Freiheit und die Privatsphäre oder auf vertrauliche Geschäftsbeziehungen sowie gegen die Datenüberwachung aus Staatssicherheitsgründen zu wehren.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Tor starten und beenden</string>
- <string name="tor_proxy_service_process">Tor-Vermittlungsdienst</string>
- <string name="status_starting_up">Orbot startet â?¦</string>
- <string name="status_activated">Verbunden mit dem Tor-Netzwerk</string>
- <string name="status_disabled">Orbot ist deaktiviert</string>
- <string name="status_shutting_down">TorService wird heruntergefahren</string>
- <string name="tor_process_starting">Tor-Programm wird gestartet â?¦</string>
- <string name="tor_process_complete">abgeschlossen.</string>
- <string name="tor_process_waiting">warten.</string>
- <string name="not_anonymous_yet">WARNUNG: Ihr Datenverkehr ist noch nicht anonymisiert! Bitte stellen Sie Ihre Programme so ein, dass Sie entweder den HTTP-Proxy 127.0.0.1:8118 oder den SOCKS4A bzw. SOCKS5-Proxy 127.0.0.1:9050 verwenden.</string>
- <string name="menu_home">Start</string>
- <string name="menu_browse">Durchsuchen</string>
- <string name="menu_settings">Einstellungen</string>
- <string name="menu_log">Protokoll</string>
- <string name="menu_info">Hilfe</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stopp</string>
- <string name="menu_about">Ã?ber</string>
- <string name="menu_promo_apps">Weitere Apps â?¦</string>
- <string name="main_layout_download">Heruntergeladen</string>
- <string name="main_layout_upload">Hochgeladen</string>
- <string name="button_help">Hilfe</string>
- <string name="button_close">SchlieÃ?en</string>
- <string name="button_about">Ã?ber</string>
- <string name="button_clear_log">Protokoll löschen</string>
- <string name="menu_verify">�berprüfen</string>
- <string name="menu_exit">Beenden</string>
- <string name="menu_scan">BrückenQR scannen</string>
- <string name="menu_share_bridge">BrückenQR teilen</string>
- <string name="press_to_start">- Zum Starten gedrückt halten -</string>
- <string name="pref_trans_proxy_group">Transparente Vermittlung (benötigt Root-Rechte)</string>
- <string name="pref_trans_proxy_title">Transparente Vermittlung</string>
- <string name="pref_trans_proxy_summary">Anwendungen automatisch durch Tor leiten</string>
- <string name="pref_transparent_all_title">Alles durch Tor leiten</string>
- <string name="pref_transparent_all_summary">Verbindungen aller Anwendungen durch Tor leiten</string>
- <string name="pref_transparent_port_fallback_title">Rückfallportvermittlung</string>
- <string name="pref_transparent_port_fallback_summary">WARNUNG: Umgeht öffentliche Ports (80, 443, usw.). *NUR BENUTZEN*, wenn »All« oder »App«-Modus nicht funktioniert.</string>
- <string name="pref_transparent_port_title">Portliste</string>
- <string name="pref_transparent_port_summary">Liste von Anschlüssen zur Vermittlung. *NUR BENUTZEN* wenn »All« oder »App«-Modus nicht funktioniert</string>
- <string name="pref_transparent_port_dialog">Ports zur Vermittlung eingeben</string>
- <string name="pref_has_root">Anfrage auf Root-Zugriff</string>
- <string name="pref_has_root_summary">Anfrage auf Root-Zugriff für transparente Vermittlung</string>
- <string name="status_install_success">Die Tor-Programmdateien wurden erfolgreich installiert!</string>
- <string name="status_install_fail">Die Tor-Programmdateien konnten nicht erfolgreich installiert werden. Bitte prüfen Sie das Protokoll und wenden Sie sich an tor-assistants@xxxxxxxxxxxxxx.</string>
- <string name="title_error">Anwendungsfehler</string>
- <string name="wizard_title">Willkommen bei Orbot</string>
- <string name="wizard_btn_tell_me_more">Ã?ber Orbot</string>
- <string name="btn_next">Weiter</string>
- <string name="btn_back">Zurück</string>
- <string name="btn_finish">Fertigstellen</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Abbrechen</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Nähere Informationen zu Orbot</string>
- <string name="wizard_details_msg">Orbot ist eine quelloffene Anwendung, die Tor, LibEvent und Polipo enthält. Sie stellt einen lokalen HTTP-Proxy (Port: 8118) und einen SOCKS-Proxy (Port: 9050) in das Tor-Netzwerk bereit. Auf gerooteten Geräten kann Orbot auch sämtliche Internetverbindungen durch Tor leiten.</string>
- <string name="wizard_permissions_root">Berechtigung erteilt</string>
- <string name="wizard_permissions_stock">Orbot-Berechtigungen</string>
- <string name="wizard_premissions_msg_root">Ausgezeichnet! Sie haben Orbot Root-Rechte eingeräumt. Orbot wird diese Berechtigung sinnvoll verwenden.</string>
- <string name="wizard_permissions_msg_stock">Es ist nicht zwingend erforderlich, aber Orbot kann ein leistungsfähigeres Werkzeug werden, wenn Ihr Gerät gerootet ist. Drücken Sie unten auf den Schalter, um Orbot Superuser-Rechte zu gewähren.</string>
- <string name="wizard_permissions_no_root">Falls Sie keinen Root-Zugriff haben oder nicht wissen, was das ist, achten Sie darauf, dass Sie Anwendungen verwenden, die Orbot nutzen können.</string>
- <string name="wizard_permissions_consent">Ich habe verstanden und möchte ohne Systemverwalterzugriff weitermachen</string>
- <string name="wizard_permission_enable_root">Orbot Root-Rechte einräumen</string>
- <string name="wizard_configure">Torification konfigurieren</string>
- <string name="wizard_configure_msg">Orbot lässt Ihnen die Wahl, den Datenverkehr aller Anwendungen durch Tor zu leiten ODER einzelne Anwendungen auszuwählen.</string>
- <string name="wizard_configure_all">Den Verkehr aller Anwendungen durch Tor leiten</string>
- <string name="wizard_configure_select_apps">Anwendungen einzeln für Tor auswählen</string>
- <string name="wizard_tips_tricks">Orbot aktivierte Anwendungen</string>
- <string name="wizard_tips_msg">Die unten aufgeführten Anwendungen wurden für die Zusammenarbeit mit Orbot entwickelt. Wählen Sie diese durch anklicken zum Installieren aus oder laden Sie diese später bei Google Play, GuardianProject.info oder F-Droid.org herunter.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Ein sicheres Sofortnachrichtenprogramm für Android</string>
- <string name="wizard_tips_proxy">Vermittlungseinstellungen - Lernen, wie Sie Anwendungen so konfigurieren, dass sie mit Orbot zusammenarbeiten.</string>
- <string name="wizard_tips_duckgo">DuckDuckGo-Suchmaschinen-App</string>
- <string name="wizard_tips_twitter">Twitter-Proxy auf den Rechner »localhost« und Port 8118 einstellen</string>
- <string name="wizard_tips_story_maker">StoryMaker - Schreiben Sie eine Geschichte und überlassen Sie Tor das Sicherheitsmanagement!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Vermittlungseinstellungen</string>
- <string name="wizard_proxy_help_msg">Wenn die verwendete Android-App die Nutzung eines HTTP- oder SOCKS-Proxys unterstützt, kann sie mit Orbot verknüpft werden und Tor nutzen.\n\n\nDie Einstellung für \'Host\' ist 127.0.0.1 oder \'localhost\'. Für HTTP wird der Port 8118 eingetragen. Für SOCKS der Port 9050. Sie sollten möglichst SOCKS4A oder SOCKS5 verwenden.\n\n\n\n Mehr Informationen zur Verwendung von Proxys unter Android finden Sie in den FAQ auf http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Orbot ist bereit!</string>
- <string name="wizard_final_msg">Millionen Menschen auf der ganzen Welt nutzen Tor aus einer Vielzahl von Gründen..\n\nJournalisten und Blogger, Verteidiger für Menschenrechte, Polizeibeamte, Soldaten, Firmen, Bürger repressiver Regime und ganz normale Menschen � und jetzt können Sie das auch!</string>
- <string name="wizard_exit_at_first_screen_toast">Bitte konfigurieren Sie Orbot, bevor Sie es verwenden können!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Sie haben sich erfolgreich mit dem Tor-Netzwerk verbunden - was aber NICHT bedeutet, dass Ihr Gerät sicher ist. Sie können den Knopf »Browser« verwenden, um Ihre Verbindung zu überprüfen. \n\nBesuchen Sie uns auf https://guardianproject.info/apps/orbot oder senden Sie uns eine E-Mail an help@xxxxxxxxxxxxxxxxxxxx, um mehr zu erfahren.</string>
- <string name="tor_check">Durch das Bestätigen mit »OK« wird die Seite https://check.torproject.org in Ihrem Webbrowser geöffnet, sodass Sie überprüfen können, ob Orbot richtig konfiguriert ist und Sie mit Tor verbunden sind.</string>
- <string name="pref_hs_group">Versteckte Dienste</string>
- <string name="pref_general_group">Allgemein</string>
- <string name="pref_start_boot_title">Orbot beim Systemstart ausführen</string>
- <string name="pref_start_boot_summary">Automatisches Starten von Orbot und Verbinden mit Tor beim Start des Android-Gerätes</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot bringt Tor zu Android!\n\nTor unterstützt Sie, sich gegen Zensur, Datenrückverfolgung und die �berwachung des Netzes zu wehren, die Ihre Privatsphäre, vertraulichen Informationen und persönlichen Beziehungen bedrohen.\n\nDieser Assistent hilft Ihnen dabei, Orbot und Tor einzurichten.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Warnung</string>
- <string name="wizard_warning_msg">Orbot nur zu installieren, anonymisiert nicht automatisch den mobilen Netzwerkverkehr.\n\nSie müssen Orbot, das Gerät und die Apps konfigurieren, um Tor erfolgreich zu verwenden.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Zugriffsrechte</string>
- <string name="wizard_permissions_root_msg1">Sie können Orbot wahlweise Systemverwalterzugriff geben, um erweiterte Funktionen zu aktivieren, wie z.B. transparente Vermittlung.</string>
- <string name="wizard_permissions_root_msg2">Wenn Sie dies nicht möchten, stellen Sie bitte sicher, Anwendungen zu verwenden, die für die Zusammenarbeit mit Orbot geschrieben wurden.</string>
- <string name="wizard_permissions_no_root_msg">Ihr Gerät scheint nicht gerootet zu sein oder stellt keinen Root oder \'Systemverwalterzugriff bereit.\n\nBitte nutzen Sie den \'Apps\' Modus auf dem Hauptbildschirm.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot aktivierte Anwendungen</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Sichere Unterhaltungsanwendung mit vertraulicher Verschlüsselung</string>
- <string name="wizard_tips_orweb">Orfox: Datenschutz optimierter Browser der Tor verwendet</string>
- <string name="wizard_tips_play">Alle Guardian Project-Anwendungen im Google Play Store finden</string>
- <string name="wizard_tips_fdroid">Alle Guardian Project-Anwendungen bei F-Droid finden</string>
- <string name="wizard_tips_fdroid_org">Alle Guardian Project-Anwendungen unter https://f-droid.org finden</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparente Vermittlung</string>
- <string name="wizard_transproxy_msg">Dies ermöglicht Ihren Anwendungen automatisch das Tor-Netzwerk zu verwenden, ohne dieses konfigurieren zu müssen.</string>
- <string name="wizard_transproxy_hint">(Dieses Feld auswählen, wenn Sie nicht wissen wovon wir reden)</string>
- <string name="wizard_transproxy_none">Nichts</string>
- <string name="pref_transparent_tethering_title">Tor-Anbindung</string>
- <string name="pref_transparent_tethering_summary">Transparente Tor-Vermittlung für WLAN und angebundene USB-Geräte aktivieren (benötigt einen Neustart)</string>
- <string name="button_grant_superuser">Systemverwalterzugriff anfordern</string>
- <string name="pref_select_apps">Anwendungen auswählen</string>
- <string name="pref_select_apps_summary">Die Anwendungen auswählen, welche durch Tor geleitet werden sollen</string>
- <string name="pref_node_configuration">Netzknotenkonfiguration</string>
- <string name="pref_node_configuration_summary">Dies sind erweiterte Einstellungen, die Ihre Anonymität beeinträchtigen können</string>
- <string name="pref_entrance_node">Eingangsnetzknoten</string>
- <string name="pref_entrance_node_summary">Fingerabdrücke, Spitznamen, Länder und Adressen für den ersten Knotenpunkt</string>
- <string name="pref_entrance_node_dialog">Eingangsnetzknoten eingeben</string>
- <string name="pref_allow_background_starts_title">Hintergrundstatistiken erlauben</string>
- <string name="pref_allow_background_starts_summary">Erlauben Sie jeder Anwendung, Orbot zu beauftragen, Tor und zugehörige Dienste zu starten</string>
- <string name="button_proxy_all">Alles über Proxy</string>
- <string name="button_proxy_none">Nichts über Proxy</string>
- <string name="button_invert_selection">Auswahl umkehren</string>
- <string name="pref_proxy_title">Ausgehender Netzwerk-Proxy (optional)</string>
- <string name="pref_proxy_type_title">Ausgehender Vermittlungstyp</string>
- <string name="pref_proxy_type_summary">Protokoll zur Verwendung des Proxy Servers: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Vermittlungstyp eingeben</string>
- <string name="pref_proxy_host_title">Ausgehender Vermittlungsrechner</string>
- <string name="pref_proxy_host_summary">Rechnername des Vermittlungsservers</string>
- <string name="pref_proxy_host_dialog">Vermittlungsrechner eingeben</string>
- <string name="pref_proxy_port_title">Ausgehender Proxy-Anschluss</string>
- <string name="pref_proxy_port_summary">Anschluss des Vermittlungsservers</string>
- <string name="pref_proxy_port_dialog">Vermittlungsanschluss eingeben</string>
- <string name="pref_proxy_username_title">Ausgehender Proxy-Benutzername</string>
- <string name="pref_proxy_username_summary">Proxy-Benutzername (optional)</string>
- <string name="pref_proxy_username_dialog">Proxy-Benutzernamen eingeben</string>
- <string name="pref_proxy_password_title">Ausgehendes Proxy-Passwort</string>
- <string name="pref_proxy_password_summary">Proxy-Passwort (optional)</string>
- <string name="pref_proxy_password_dialog">Proxy-Passwort eingeben</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Voll transparente Vermittlung wird eingestellt â?¦</string>
- <string name="setting_up_app_based_transparent_proxying_">Anwendungsbasierte transparente Vermittlung wird eingestellt â?¦</string>
- <string name="transparent_proxying_enabled">Transparente Vermittlung AKTIVIERT</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy für Anbindung aktiviert!</string>
- <string name="warning_error_starting_transparent_proxying_">WARNUNG: Fehler beim Starten der transparenten Vermittlung!</string>
- <string name="transproxy_rules_cleared">TransProxy-Regeln gelöscht</string>
- <string name="couldn_t_start_tor_process_">Tor-Prozess konnte nicht gestartet werden:</string>
- <string name="privoxy_is_running_on_port_">Polipo läuft auf Port: </string>
- <string name="setting_up_port_based_transparent_proxying_">Anschlussbasierte transparente Vermittlung wird eingestellt â?¦</string>
- <string name="bridge_error">Brückenfehler</string>
- <string name="bridge_requires_ip">Um die Brückenfunktion nutzen zu können, müssen Sie mindestens eine Brücken-IP-Adresse eingeben.</string>
- <string name="send_email_for_bridges">Von Ihrem Gmail-Konto eine E-Mail an bridges@xxxxxxxxxxxxxx mit dem Text »get bridges« im Nachrichtenfeld senden.</string>
- <string name="error">Fehler</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ihre eingestellten erreichbaren Adressen haben einen Ausnahmefehler verursacht!</string>
- <string name="your_relay_settings_caused_an_exception_">Ihre Relaiseinstellungen haben einen Ausnahmefehler verursacht!</string>
- <string name="exit_nodes">Ausgangsnetzknoten</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerabdrücke, Spitznamen, Länder und Adressen für den letzten Knotenpunkt.</string>
- <string name="enter_exit_nodes">Ausgangsnetzknoten eingeben</string>
- <string name="exclude_nodes">Netzknoten ausschlieÃ?en</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerabdrücke, Spitznamen, Länder und Adressen, die ausgeschlossen werden sollen</string>
- <string name="enter_exclude_nodes">AuszuschlieÃ?ende Netzknoten eingeben</string>
- <string name="strict_nodes">Absolute Netzknoten</string>
- <string name="use_only_these_specified_nodes">*AusschlieÃ?lich* diese angegebenen Netzknoten verwenden</string>
- <string name="bridges">Brücken</string>
- <string name="use_bridges">Brücken benutzen</string>
- <string name="bridges_obfuscated">Verschleierte Brücken</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternative Eingangsnetzknoten in das Tor-Netzwerk aktivieren</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktivieren, falls Brücken verschleierte Brücken sind</string>
- <string name="ip_address_and_port_of_bridges">IP-Adresse und Port der Brücken</string>
- <string name="enter_bridge_addresses">Brückenadressen eingeben</string>
- <string name="relays">Relais</string>
- <string name="relaying">Weiterleitung</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Ihr Gerät als Nichtausgangsrelais aktivieren</string>
- <string name="relay_port">Relaisanschluss</string>
- <string name="listening_port_for_your_tor_relay">Anschluss, auf dem bei Ihrem Tor-Relais gehört werden soll</string>
- <string name="enter_or_port">OR-Port eingeben</string>
- <string name="relay_nickname">Relaisspitzname</string>
- <string name="the_nickname_for_your_tor_relay">Der Spitzname für Ihr Tor-Relais</string>
- <string name="enter_a_custom_relay_nickname">Einen selbsterstellten Relaisspitznamen eingeben</string>
- <string name="reachable_addresses">Erreichbare Adressen</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Als Programm hinter einer Firewall mit restriktiven Regeln betreiben</string>
- <string name="reachable_ports">Erreichbare Ports</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Die Anschlüsse sind hinter einer restriktiven Firewall erreichbar</string>
- <string name="enter_ports">Ports eingeben</string>
- <string name="enable_hidden_services">Versteckte Dienste</string>
- <string name="run_servers_accessible_via_the_tor_network">Auf dem Gerät einen Server betreiben, auf den das Tor-Netzwerk zugreifen kann</string>
- <string name="enter_localhost_ports_for_hidden_services">Lokale Ports für versteckte Dienste eingeben</string>
- <string name="hidden_service_ports">Ports der versteckten Dienste</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Der adressierbare Name für Ihren versteckten Dienst (wird automatisch generiert)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ausgabe des Fehlerdiagnoseprotokolls aktivieren (benötigt adb oder aLogCat zur Ansicht)</string>
- <string name="project_home">Internetseite(n) des Projektes:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Die Tor-Lizenz</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Drittanbieteranwendungen:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Eine Anwendung möchte den versteckten Server-Anschluss %S öffnen. Das ist sicher, wenn Sie der Anwendung vertrauen.</string>
- <string name="found_existing_tor_process">bestehender Tor-Prozess gefunden â?¦</string>
- <string name="something_bad_happened">Etwas ist schief gelaufen. Bitte Protokoll prüfen</string>
- <string name="hidden_service_on">Versteckte Dienste auf:</string>
- <string name="unable_to_read_hidden_service_name">Name des versteckten Dienstes kann nicht gelesen werden</string>
- <string name="unable_to_start_tor">Tor kann nicht gestartet werden:</string>
- <string name="unable_to_reset_tor">Starten Sie Ihr Gerät neu, Tor konnte nicht zurückgesetzt werden!</string>
- <string name="pref_use_sys_iptables_title">Vorgegebene IPtables verwenden</string>
- <string name="pref_use_sys_iptables_summary">Die vorhandene IPtables-Datei verwenden, anstatt der von Orbot mitgelieferten.</string>
- <string name="error_installing_binares">Die Tor-Programmdateien konnten nicht installiert oder aktualisiert werden.</string>
- <string name="pref_use_persistent_notifications">Wenn Orbot verbunden ist immer das Orbot-Symbol in der Statusleiste anzeigen</string>
- <string name="pref_use_persistent_notifications_title">Aktivitätsanzeige</string>
- <string name="pref_use_expanded_notifications">Erweiterte Benachrichtigung mit Tor-Austrittsland und IP anzeigen</string>
- <string name="pref_use_expanded_notifications_title">Erweiterte Benachrichtigungen</string>
- <string name="notification_using_bridges">Brücken aktiviert!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Sprache</string>
- <string name="set_locale_summary">Gebietsschema und Sprache für Orbot auswählen</string>
- <string name="wizard_locale_title">Sprache auswählen</string>
- <string name="wizard_locale_msg">Voreinstellung beibehalten oder Sprache ändern</string>
- <string name="powered_by">betrieben mit Tor</string>
- <string name="btn_save_settings">Einstellungen speichern</string>
- <string name="no_internet_connection_tor">Keine Internetverbindung; Tor ist in Bereitschaft â?¦</string>
- <string name="bandwidth_">Bandbreite:</string>
- <string name="down">runter</string>
- <string name="up">hoch</string>
- <string name="pref_disable_network_title">Bereitschaft wenn kein Netz</string>
- <string name="pref_disable_network_summary">Tor in Bereitschaft versetzen, wenn kein Internet verfügbar ist</string>
- <string name="newnym">Sie haben zu einer neuen Tor-Identität gewechselt!</string>
- <string name="menu_verify_browser">Browser</string>
- <string name="menu_use_chatsecure">ChatSecure benutzen</string>
- <string name="permission_manage_tor_label">Tor verwalten</string>
- <string name="permission_manage_tor_description">Diese Anwendung aktivieren, um den Tor-Dienst zu kontrollieren</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Es sieht nicht so aus, dass Sie Orfox installiert haben. Wollen Sie dabei Hilfe oder sollen wir einfach den Browser öffnen?</string>
- <string name="install_apps_">Anwendungen installieren?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Keine Netzwerkverbindung. Tor wird in Bereitschaft versetzt â?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Netzwerkverbindung ist vorhanden. Tor wird aktiviert â?¦</string>
- <string name="updating_settings_in_tor_service">Einstellungen im Tor-Dienst werden aktualisiert</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port auf dem der SOCKS-Proxy bereitgestellt wird (Standard: 9050 oder 0 zum deaktivieren)</string>
- <string name="pref_socks_dialog">SOCKS-Portkonfiguration</string>
- <string name="pref_transport_title">Tor TransProxy-Port</string>
- <string name="pref_transport_summary">Port auf dem der Transparente Proxy bereitgestellt wird (Standard: 9040 oder 0 zum deaktivieren)</string>
- <string name="pref_transport_dialog">TransProxy-Portkonfiguration</string>
- <string name="pref_dnsport_title">Tor DNS-Port</string>
- <string name="pref_dnsport_summary">Port auf dem DNS bereitgestellt wird (Standard: 5400 oder 0 zum deaktivieren)</string>
- <string name="pref_dnsport_dialog">DNS-Portkonfiguration</string>
- <string name="pref_torrc_title">Benutzerdefinierte Torrc-Konfiguration</string>
- <string name="pref_torrc_summary">NUR FÃ?R EXPERTEN: torrc-Konfigurationszeilen direkt eingeben</string>
- <string name="pref_torrc_dialog">Benutzerdefinierte Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech-Anwendung zur Menschenrechtsdokumentierung</string>
- <string name="your_tor_public_ips_">Ihre öffentlichen IPs für Tor:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Bitte deaktivieren Sie diese Anwendung unter Android->Einstellungen->Anwendungen, falls Sie Probleme mit Orbot haben:</string>
- <string name="app_conflict">Anwendungskonflikt</string>
- <string name="pref_transproxy_refresh_title">Automatische Transproxy-Aktualisierung</string>
- <string name="pref_transproxy_refresh_summary">Transproxy-Regeln erneut anwenden, wenn sich der Netzwerkstatus ändert</string>
- <string name="pref_transproxy_flush_title">Transproxy ENTFERNEN ERZWINGEN</string>
- <string name="pref_transproxy_flush_summary">Hier Tippen, um JETZT alle Transparent-Proxy Netzwerkregeln zu löschen</string>
- <string name="transparent_proxy_rules_flushed_">Transparente Proxy-Regeln geleert!</string>
- <string name="you_do_not_have_root_access_enabled">Sie haben keinen aktivierten Root-Zugang</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Sie müssen Tor stoppen und wieder Starten, um die neuen Einstellungen zu übernehmen.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbit/s</string>
- <string name="mbps">Mbit/s</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Brücken aktualisiert</string>
- <string name="restart_orbot_to_use_this_bridge_">Bitte Orbot zum Aktivieren der Ã?nderungen neustarten</string>
- <string name="menu_qr">QR-Codes</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Wenn Ihr mobiles Netzwerk aktiv Tor sperrt, können Sie mit einer Brücke auf das Netzwerk zugreifen. Wählen Sie einen der oben genannten Brückentypen aus, um Brücken zu aktivieren.</string>
- <string name="bridge_mode">Brückemodus</string>
- <string name="get_bridges_email">E-Mail</string>
- <string name="get_bridges_web">Netz</string>
- <string name="activate">Aktivieren</string>
- <string name="apps_mode">VPN-Modus der Anwendungen</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Mit Hilfe von VPN kann man alle Anwendungen über Tor umleiten.\n\n*WARNUNG* Das ist eine neue, experimentelle Funktion und sie startet in einigen fällen nicht automatisch oder stoppt einfach. Die Funktion sollte NICHT für das anonyme Surfen genutzt werden, sondern NUR um Firewalls und Filter zu umgehen.</string>
- <string name="send_email">E-Mail senden</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Sie können eine Brücken-Adresse per E-Mail, im Web oder per Scan eines BrückenQR-Codes erhalten. Wählen Sie unten \'E-Mail\' oder \'Web\', um eine Brückenadresse anzufordern.\n\nSobald Sie eine Adresse haben, fügen Sie diese bei den Einstellungen für Brücken ein und starten Sie Orbot neu.</string>
- <string name="install_orweb">Orfox installieren</string>
- <string name="standard_browser">Standard-Browser</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">HINWEIS: Nur die Standard Tor-Brücken funktionieren mit Intel X86/Atom Geräten</string>
- <string name="vpn_default_world">Welt</string>
-</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
deleted file mode 100644
index aa3bb55..0000000
--- a/res/values-el/strings.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">εκκίνηÏ?η και διακοÏ?ή Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Το Orbot ξεκινά</string>
- <string name="status_activated">ΣÏ?νδÎθηκε Ï?Ï?ο δίκÏ?Ï?ο Tor</string>
- <string name="status_disabled">\"Το Orbot είναι Î?Ï?ενεÏ?γοÏ?οιημÎνο</string>
- <string name="tor_process_starting">Î?κκίνηÏ?η Ï?οÏ? Ï?ελάÏ?η Tor...</string>
- <string name="tor_process_complete">ολοκληÏ?Ï?θηκε...</string>
- <string name="tor_process_waiting">αναμονή</string>
- <string name="not_anonymous_yet">ΠΡÎ?Î?Î?Î?Î?Î Î?Î?Î?ΣÎ?: Î? κÏ?κλοÏ?οÏ?ία Ï?αÏ? δεν είναι ακÏ?μη ανÏ?νÏ?μη! ΡÏ?θμίÏ?Ï?ε Ï?ιÏ? εÏ?αÏ?μογÎÏ? Ï?αÏ? Ï?Ï?Ï?ε να Ï?Ï?ηÏ?ιμοÏ?οιοÏ?ν Ï?Ï? Ï?ληÏ?εξοÏ?Ï?ιο HTTP 127.0.0.1:8118 ή SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Î?Ï?Ï?ική</string>
- <string name="menu_browse">ΠεÏ?ιήγηÏ?η</string>
- <string name="menu_settings">ΡÏ?θμίÏ?ειÏ?</string>
- <string name="menu_log">Î?αÏ?αγÏ?αÏ?ή</string>
- <string name="menu_info">Î?οήθεια</string>
- <string name="menu_start">Î?κκίνηÏ?η</string>
- <string name="menu_stop">Î?ιακοÏ?ή</string>
- <string name="menu_about">ΣÏ?εÏ?ικά</string>
- <string name="main_layout_download">Î?ήÏ?η (Ï?αÏ?Ï?Ï?ηÏ?α/Ï?Ï?νολο)</string>
- <string name="main_layout_upload">Î?Ï?οÏ?Ï?ολή (Ï?αÏ?Ï?Ï?ηÏ?α/Ï?Ï?νολο)</string>
- <string name="button_help">Î?οήθεια</string>
- <string name="button_close">Î?λείÏ?ιμο</string>
- <string name="button_about">ΣÏ?εÏ?ικά</string>
- <string name="button_clear_log">Î?ιαγÏ?αÏ?ή Î?αÏ?αγÏ?αÏ?ήÏ?</string>
- <string name="menu_verify">Î?λεγÏ?οÏ?</string>
- <string name="menu_exit">Î?ξοδοÏ?</string>
- <string name="press_to_start">-για να εκκινήÏ?ει κÏ?αÏ?ήÏ?Ï?ε Ï?ο Ï?αÏ?ημÎνο-</string>
- <string name="pref_trans_proxy_group">Î?ιαÏ?ανήÏ? ΠληÏ?εξοÏ?Ï?ιοÏ? Î?ιακομηÏ?Ï?ήÏ? (Î?Ï?αιÏ?εί διαÏ?είÏ?ιÏ?η root)</string>
- <string name="pref_trans_proxy_title">Î?ιαÏ?ανήÏ? ΠληÏ?εξοÏ?Ï?ιοÏ? Î?ιακομηÏ?Ï?ήÏ?</string>
- <string name="pref_trans_proxy_summary">Î?Ï?Ï?Ï?μαÏ?η Î Ï?οÏ?αÏ?μογή Î?Ï?αÏ?μογÏ?ν Ï?Ï?ο Tor</string>
- <string name="pref_transparent_all_title">Î?νÏ?νÏ?μοÏ?οίηÏ?η Î?λÏ?ν</string>
- <string name="pref_transparent_all_summary">Î?α γίνεÏ?αι η μεÏ?αβίβαÏ?η Ï?ηÏ? κÏ?κλοÏ?οÏ?ίαÏ? Ï?λÏ?ν Ï?Ï?ν εÏ?αÏ?μογÏ?ν μÎÏ?Ï? Ï?οÏ? Tor</string>
- <string name="pref_transparent_port_fallback_title">Î?Ï?Ï?α αναδίÏ?λÏ?Ï?ηÏ? Ï?οÏ? Ï?ληÏ?εξοÏ?Ï?ιοÏ? διακομιÏ?Ï?ή</string>
- <string name="pref_transparent_port_fallback_summary">ΠΡÎ?Î?Î?Î?Î?Î Î?Î?Î?ΣÎ?: ΠαÏ?ακάμÏ?Ï?ει Ï?ιÏ? κοινÎÏ? θÏ?Ï?εÏ? (80, 443, κλÏ?). *Î?Î? ΧΡÎ?ΣÎ?Î?Î?Î Î?Î?Î?Î?ΤÎ?Î? Î?Î?Î?Î?Î?* Ï?Ï?αν οι λειÏ?οÏ?Ï?γίεÏ? \'All\' ή \'App\' δεν αÏ?οδίδοÏ?ν.</string>
- <string name="pref_transparent_port_title">Î?ίÏ?Ï?α θÏ?Ï?Ï?ν</string>
- <string name="pref_transparent_port_summary">Î?ίÏ?Ï?α θÏ?Ï?Ï?ν Ï?ληÏ?εξοÏ?Ï?ιοÏ? διακομιÏ?Ï?ή. *Î?Î? ΧΡÎ?ΣÎ?Î?Î?Î Î?Î?Î?Î?ΤÎ?Î? Î?Î?Î?Î?Î?* Ï?Ï?αν οι λειÏ?οÏ?Ï?γίεÏ? \'All\' ή \'App\' δεν αÏ?οδίδοÏ?ν.</string>
- <string name="pref_transparent_port_dialog">Î?ιÏ?άγεÏ?ε θÏ?Ï?εÏ? Ï?ληÏ?εξοÏ?Ï?ιοÏ? διακομιÏ?Ï?ή</string>
- <string name="pref_has_root">Î?ιÏ?ημα Ï?Ï?Ï?Ï?βαÏ?ηÏ? με δικαιÏ?μαÏ?α Ï?Ï?εÏ?Ï?Ï?ήÏ?Ï?η</string>
- <string name="pref_has_root_summary">Î?ιÏ?ημα Ï?Ï?Ï?Ï?βαÏ?ηÏ? με δικαιÏ?μαÏ?α Ï?Ï?εÏ?Ï?Ï?ήÏ?Ï?η για διαÏ?ανή μεÏ?αβίβαÏ?η δεδομÎνÏ?ν μÎÏ?Ï? Ï?ληÏ?εξοÏ?Ï?ιοÏ? διακομιÏ?Ï?ή</string>
- <string name="status_install_success">Τα δÏ?αδικά αÏ?Ï?εία Ï?οÏ? Tor εγκαÏ?αÏ?Ï?άθηκαν με εÏ?ιÏ?Ï?Ï?ία!</string>
- <string name="status_install_fail">Τα δÏ?αδικά αÏ?Ï?εία Ï?οÏ? Tor δεν εγκαÏ?αÏ?Ï?άθηκαν. Î?λÎγξÏ?ε Ï?ιÏ? καÏ?αγÏ?αÏ?ÎÏ? και ειδοÏ?οιείÏ?Ï?ε Ï?Ï?ην διεÏ?θÏ?νÏ?η tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">ΣÏ?άλμα εÏ?αÏ?μογήÏ?</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">ΣÏ?εÏ?ικά με Ï?ο Orbot</string>
- <string name="btn_next">Î?Ï?Ï?μενο</string>
- <string name="btn_back">ΠίÏ?Ï?</string>
- <string name="btn_finish">ΤÎλοÏ?</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Î?κÏ?Ï?ο</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Î?εÏ?ικÎÏ? λεÏ?Ï?ομÎÏ?ειεÏ? για Ï?ο Orbot</string>
- <string name="wizard_permissions_root">Î? άδεια Ï?αÏ?αÏ?Ï?Ï?ήθηκε</string>
- <string name="wizard_permissions_stock">Î?δειεÏ? Orbot</string>
- <string name="wizard_premissions_msg_root">Î?αλÏ?Ï?! Î?ιαÏ?ιÏ?Ï?Ï?νοÏ?με Ï?Ï?ι ÎÏ?εÏ?ε ενεÏ?γοÏ?οιημÎνο Ï?ον Ï?Ï?εÏ?Ï?Ï?ήÏ?Ï?η για Ï?ο Orbot. Î?α Ï?Ï?ηÏ?ιμοÏ?οιήÏ?οÏ?με Ï?ο Ï?Ï?ονÏ?μιο αÏ?Ï?Ï? με Ï?Ï?νεÏ?η.</string>
- <string name="wizard_permissions_msg_stock"> Î?ν και δεν είναι αÏ?αÏ?αίÏ?ηÏ?ο, Ï?ο Orbot μÏ?οÏ?εί να γίνει ιÏ?Ï?Ï?Ï?Ï?Ï?εÏ?ο Ï?Ï?αν η Ï?Ï?Ï?κεÏ?ή Ï?αÏ? ÎÏ?ει διαμοÏ?Ï?Ï?θεί για Ï?Ï?Ï?Ï?βαÏ?η Ï?Ï?εÏ?Ï?Ï?ήÏ?Ï?η. ΠαÏ?ήÏ?Ï?ε Ï?ο Ï?ιο κάÏ?Ï? κοÏ?μÏ?ί για να δÏ?Ï?εÏ?ε αÏ?ξημÎνα δικαιÏ?μαÏ?α Ï?Ï?ο Orbot! </string>
- <string name="wizard_permissions_no_root">Î?ν δεν διαθÎÏ?εÏ?ε Ï?Ï?Ï?Ï?βαÏ?η Ï?Ï?εÏ?Ï?ήÏ?Ï?η ή δεν καÏ?αλαβαίνεÏ?ε Ï?ι εννοοÏ?με, αÏ?λÏ?Ï? Ï?Ï?ηÏ?ιμοÏ?οιείÏ?ε εÏ?αÏ?μογÎÏ? Ï?οÏ? Ï?Ï?ιάÏ?Ï?ηκαν για να Ï?Ï?νεÏ?γάζονÏ?αι με Ï?ο Orbot.</string>
- <string name="wizard_permissions_consent">Î?αÏ?αλαβαίνÏ? και θÎλÏ? να Ï?Ï?νεÏ?ίÏ?Ï? Ï?Ï? Î¥Ï?εÏ?Ï?Ï?ήÏ?Ï?ηÏ?</string>
- <string name="wizard_permission_enable_root">Î?Ï?Ï?δοÏ?η Î?ιαÏ?ειÏ?ιÏ?ηÏ? Ï?Ï?ο Orbot</string>
- <string name="wizard_configure">ΡÏ?θμιÏ?η Torification</string>
- <string name="wizard_configure_msg">Το Orbot Ï?αÏ? εÏ?ιÏ?Ï?ÎÏ?ει να καÏ?εÏ?θÏ?νεÏ?ε Ï?λη Ï?ην κÏ?κλοÏ?οÏ?ία κάÏ?οιαÏ? εÏ?αÏ?μογήÏ? Ï?Ï?οÏ? Ï?ο Tor ή να εÏ?ιλÎξεÏ?ε κάθε μια εÏ?αÏ?μογή ξεÏ?Ï?Ï?ιÏ?Ï?ά.</string>
- <string name="wizard_configure_all">Το Tor να γίνει ενδιάμεÏ?οÏ? διακομιÏ?Ï?ήÏ? Proxy για Ï?λεÏ? Ï?ιÏ? εÏ?αÏ?μογÎÏ?</string>
- <string name="wizard_configure_select_apps">Î?Ï?ιλογή μεμονÏ?μÎνÏ?ν εÏ?αÏ?μογÏ?ν για Ï?ο Tor</string>
- <string name="wizard_tips_tricks">Î?Ï?αÏ?μογÎÏ? Ï?Ï?μβαÏ?ÎÏ? για Orbont</string>
- <string name="wizard_tips_msg">Î?ι Ï?αÏ?ακάÏ?Ï? εÏ?αÏ?μογÎÏ? αναÏ?Ï?Ï?Ï?θηκαν Ï?Ï?Ï?ε να λειÏ?οÏ?Ï?γοÏ?ν με Ï?ο Orbot. ΠαÏ?ήÏ?Ï?ε Ï?ε κάθε κοÏ?μÏ?ί για να εγκαÏ?αÏ?Ï?αθεί Ï?Ï?Ï?α ή μÏ?οÏ?είÏ?ε να Ï?ιÏ? βÏ?είÏ?ε αÏ?γÏ?Ï?εÏ?α Ï?Ï?ο Android Market</string>
- <string name="wizard_tips_otrchat">ChatSecure - Î?Ï?αÏ?μογή αÏ?Ï?αλοÏ?Ï? ανÏ?αλλαγήÏ? άμεÏ?Ï?ν μηνÏ?μάÏ?Ï?ν για Android</string>
- <string name="wizard_tips_proxy">ΡÏ?θμίÏ?ειÏ? proxy: Î?άθεÏ?ε Ï?Ï?Ï? θα Ï?Ï?θμίÏ?εÏ?ε Ï?ιÏ? εÏ?αÏ?μογÎÏ? Ï?Ï?Ï?ε να λειÏ?οÏ?Ï?γοÏ?ν με Ï?ο Orbot</string>
- <string name="wizard_tips_duckgo">Î?Ï?αÏ?μογή Î?ηÏ?ανήÏ? Î?ναζήÏ?ηÏ?ηÏ? Duckduckgo</string>
- <string name="wizard_tips_twitter">Το Twitter Ï?Ï?οÏ?Ï?ηÏ?ίζει http proxy localhost:8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">ΡÏ?θμίÏ?ειÏ? proxy</string>
- <string name="wizard_final">Το Orbot είναι ÎÏ?οιμο!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Î?α ανοίξει ο Ï?εÏ?ιηγηÏ?ήÏ? δικÏ?Ï?οÏ? Ï?Ï?ην Ï?ελίδα https://check.torproject.org για να διαÏ?ιÏ?Ï?Ï?Ï?εÏ?ε αν Ï?ο Orbot είναι Ï?Ï?Ï?Ï?ά Ï?Ï?θμιÏ?μÎνο και Ï?Ï?ι είÏ?Ï?ε Ï?Ï?νδεδεμÎνοÏ?/η Ï?Ï?ο Tor.</string>
- <string name="pref_hs_group">Φιλοξενία κÏ?Ï?Ï?Ï?ν Ï?Ï?ηÏ?εÏ?ιÏ?ν</string>
- <string name="pref_general_group">Î?ενικά</string>
- <string name="pref_start_boot_title">Î?ναÏ?ξη Ï?οÏ? Orbot καÏ?ά Ï?ην εκκίνηÏ?η</string>
- <string name="pref_start_boot_summary">Î?Ï?Ï?Ï?μαÏ?η ÎναÏ?ξη Ï?οÏ? Orbot και Ï?Ï?νδεÏ?η Ï?Ï?ο Tor Ï?Ï?αν ξεκινά η Android Ï?Ï?Ï?κεÏ?ή Ï?αÏ?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Î Ï?οειδοÏ?οίηÏ?η</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Î?δειεÏ?</string>
- <string name="wizard_permissions_root_msg1">Î?ν θÎλεÏ?ε, μÏ?οÏ?εί να δÏ?Ï?εÏ?ε Ï?Ï?ο Orbot Ï?Ï?Ï?Ï?βαÏ?η \'Î¥Ï?εÏ?Ï?Ï?ήÏ?Ï?η\' Ï?Ï?Ï?ε να ενεÏ?γοÏ?οιήÏ?εÏ?ε Ï?α Ï?Ï?οÏ?Ï?Ï?ημÎνα Ï?αÏ?ακÏ?ηÏ?ιÏ?Ï?ικά, Ï?Ï?Ï?Ï? Ï?ο Transparent Proxying.</string>
- <string name="wizard_permissions_root_msg2">Î?ν δεν θÎλεÏ?ε κάÏ?ι Ï?ÎÏ?οιο, βεβαιÏ?θείÏ?ε Ï?Ï?ι Ï?Ï?ηÏ?ιμοÏ?οιείÏ?ε εÏ?αÏ?μογÎÏ? Ï?οÏ? Ï?Ï?νεÏ?γάζονÏ?αι με Ï?ο Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Î?Ï?αÏ?μογÎÏ? Ï?Ï?μβαÏ?ÎÏ? με Orbot</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Î?Ï?Ï?αλÎÏ? chat app με Off-the-Record κÏ?Ï?Ï?Ï?ογÏ?άÏ?ηÏ?η</string>
- <string name="wizard_tips_play">Î?Ï?εÏ? Ï?λεÏ? Ï?ιÏ? εÏ?αÏ?μογÎÏ? Guardian Project Ï?Ï?ο Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Î?ιαÏ?ανήÏ? μεÏ?ολάβηÏ?η διακομιÏ?Ï?ή</string>
- <string name="wizard_transproxy_msg">Το Ï?Ï?οιÏ?είο αÏ?Ï?Ï? εÏ?ιÏ?Ï?ÎÏ?ει Ï?Ï?ιÏ? εÏ?αÏ?μογÎÏ? Ï?αÏ? να λειÏ?οÏ?Ï?γοÏ?ν μÎÏ?Ï? Ï?οÏ? δικÏ?Ï?οÏ? Tor Ï?Ï?Ï?ίÏ? κάÏ?οια Ï?Ï?θμιÏ?η.</string>
- <string name="wizard_transproxy_hint">(Î?Ï?ιλÎξÏ?ε αÏ?Ï?Ï? Ï?ο Ï?εÏ?Ï?άγÏ?νο αν δεν καÏ?αλαβαίνεÏ?ε για Ï?ι Ï?Ï?άγμα μιλάμε)</string>
- <string name="wizard_transproxy_none">Î?αμία</string>
- <string name="pref_transparent_tethering_title">Î?ιαÏ?Ï?νδεÏ?η Tor</string>
- <string name="pref_transparent_tethering_summary">Î?νεÏ?γοÏ?οίηÏ?η Ï?ηÏ? Î?ιαÏ?ανοÏ?Ï? μεÏ?ολάβηÏ?ηÏ? διακομιÏ?Ï?ή για Ï?Ï?Ï?κεÏ?ÎÏ? με WiFi και διαÏ?Ï?νδεÏ?η USB (αÏ?αιÏ?εί εÏ?ανεκκίνηÏ?η)</string>
- <string name="button_grant_superuser">Î?ίÏ?ημα Î Ï?Ï?Ï?βαÏ?ηÏ? Î¥Ï?εÏ?Ï?Ï?ήÏ?Ï?η</string>
- <string name="pref_select_apps">Î?Ï?ιλογή εÏ?αÏ?μογÏ?ν</string>
- <string name="pref_select_apps_summary">Î?Ï?ιλÎξÏ?ε Ï?ιÏ? εÏ?αÏ?μογÎÏ? Ï?οÏ? θα διÎλθοÏ?ν μÎÏ?Ï? Tor</string>
- <string name="pref_node_configuration">ΡÏ?θμιÏ?η κÏ?μβοÏ?</string>
- <string name="pref_node_configuration_summary">Î?ι Ï?Ï?θμίÏ?ειÏ? αÏ?Ï?ÎÏ? είναι Ï?Ï?οÏ?Ï?Ï?ημÎνεÏ? και μÏ?οÏ?οÏ?ν να μειÏ?Ï?οÏ?ν Ï?ην ανÏ?νÏ?μία Ï?αÏ?.</string>
- <string name="pref_entrance_node">Î?Ï?μβοι ειÏ?Ï?δοÏ?</string>
- <string name="pref_entrance_node_summary">Î?Ï?οÏ?Ï?Ï?Ï?μαÏ?α, Ï?εÏ?δÏ?νÏ?μα, Ï?Ï?Ï?εÏ? και διεÏ?θÏ?νÏ?ειÏ? για Ï?ην Ï?Ï?Ï?Ï?η Ï?Ï?νδεÏ?η</string>
- <string name="pref_entrance_node_dialog">Î?ιÏ?άγεÏ?ε κÏ?μβοÏ?Ï? ειÏ?αγÏ?γήÏ?</string>
- <string name="pref_proxy_title">Î?ιακομιÏ?Ï?ήÏ? μεÏ?ολάβηÏ?ηÏ? εξεÏ?Ï?ομÎνÏ?ν δεδομÎνÏ?ν</string>
- <string name="pref_proxy_type_title">ΤÏ?Ï?οÏ? Ï?οÏ? διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ? εξεÏ?Ï?ομÎνÏ?ν δεδομÎνÏ?ν</string>
- <string name="pref_proxy_type_summary">Î Ï?Ï?Ï?Ï?κολλο Ï?οÏ? διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ?: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Î?ιÏ?άγεÏ?ε Ï?Ï?Ï?ο διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_host_title">Î?ιακομιÏ?Ï?ήÏ? μεÏ?ολάβηÏ?ηÏ? εξεÏ?Ï?Ï?μενÏ?ν δεδομÎνÏ?ν</string>
- <string name="pref_proxy_host_summary">Hostname Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_host_dialog">Î?ιÏ?άγεÏ?ε Ï?ον Ï?Ï?ολογιÏ?Ï?ή για Ï?ον διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_port_title">Î?Ï?Ï?α εξεÏ?Ï?ομÎνÏ?ν Ï?οÏ? διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_port_summary">Î?Ï?Ï?α Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_port_dialog">Î?ιÏ?άγεÏ?ε Ï?ην θÏ?Ï?α Ï?οÏ? διακομιÏ?Ï?ή μεÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_username_title">Î?νομα Ï?Ï?ήÏ?Ï?η για Ï?ον Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ? εξεÏ?Ï?Ï?μενÏ?ν δεδομÎνÏ?ν</string>
- <string name="pref_proxy_username_summary">Î?νομα Ï?Ï?ήÏ?Ï?η για Ï?ο Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ? (Î Ï?οαιÏ?εÏ?ικÏ?)</string>
- <string name="pref_proxy_username_dialog">Î?ιÏ?άγεÏ?ε Ï?ο Î?νομα ΧÏ?ήÏ?Ï?η για Ï?ο Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ?</string>
- <string name="pref_proxy_password_title">Î?Ï?δικÏ?Ï? για Ï?ον Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ? εξεÏ?Ï?Ï?μενÏ?ν δεδομÎνÏ?ν</string>
- <string name="pref_proxy_password_summary">Î?Ï?δικÏ?Ï? για Ï?ον Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ? (Î Ï?οαιÏ?εÏ?ικÏ?)</string>
- <string name="pref_proxy_password_dialog">Î?ιÏ?άγεÏ?ε Ï?ον Î?Ï?δικÏ? για Ï?ον Î?ιακομιÏ?Ï?ή Î?εÏ?ολάβηÏ?ηÏ?</string>
- <string name="status">Î?αÏ?άÏ?Ï?αÏ?η</string>
- <string name="setting_up_full_transparent_proxying_">ΡÏ?θμιÏ?η </string>
- <string name="setting_up_app_based_transparent_proxying_">ΡÏ?θμιÏ?η Ï?ηÏ? διαÏ?ανοÏ?Ï? μεÏ?ολάβηÏ?ηÏ? διακομιÏ?Ï?ή</string>
- <string name="transparent_proxying_enabled">Î? διαÏ?ανήÏ? μεÏ?ολάβηÏ?η διακομιÏ?Ï?ή Î?Î?Î?ΡÎ?Î?Î Î?Î?Î?Î?Î?Î?Î?</string>
- <string name="transproxy_enabled_for_tethering_">Το TransProxy ενεÏ?γοÏ?οιήθηκε για Ï?ην διαÏ?Ï?νδεÏ?η - Tethering</string>
- <string name="warning_error_starting_transparent_proxying_">ΠΡÎ?Î?Î?Î?Î?Î Î?Î?Î?ΣÎ?: Ï?Ï?άλμα καÏ?ά Ï?ην εκκίνηÏ?η Ï?ηÏ? διαÏ?ανοÏ?Ï? μεÏ?ολάβηÏ?ηÏ? διακομιÏ?Ï?ή!</string>
- <string name="transproxy_rules_cleared">Î?ι Ï?Ï?θμίÏ?ειÏ? Ï?οÏ? TransProxy αÏ?ομακÏ?Ï?νθηκαν</string>
- <string name="couldn_t_start_tor_process_">Î?δÏ?ναμία εκκίνηÏ?ηÏ? Ï?ηÏ? διεÏ?γαÏ?ίαÏ? Tor:</string>
- <string name="setting_up_port_based_transparent_proxying_">ΡÏ?θμιÏ?η Ï?ηÏ? διαÏ?ανοÏ?Ï? μεÏ?ολάβηÏ?ηÏ? διακομιÏ?Ï?ή καÏ?ά θÏ?Ï?α...</string>
- <string name="bridge_error">ΣÏ?άλμα γÎÏ?Ï?Ï?αÏ?</string>
- <string name="bridge_requires_ip">Î?ια να Ï?Ï?ηÏ?ιμοÏ?οιήÏ?εÏ?ε Ï?ο Ï?Ï?οιÏ?είο γÎÏ?Ï?Ï?αÏ?, Ï?Ï?ÎÏ?ει να ειÏ?άγεÏ?ε Ï?ην διεÏ?θÏ?νÏ?η Î?Ρ Ï?οÏ?λάÏ?ιÏ?Ï?ον μιαÏ? γÎÏ?Ï?Ï?αÏ?.</string>
- <string name="send_email_for_bridges">Î?ÎÏ?Ï? ενÏ?Ï? λογαÏ?ιαÏ?μοÏ? gmai Ï?Ï?είλÏ?ε Îνα μήνÏ?μα Ï?Ï?ην διεÏ?θÏ?νÏ?η bridges@xxxxxxxxxxxxxx με Ï?ην Ï?αÏ?η \"get bridges\" μÏ?νη Ï?ηÏ? Ï?Ï?ο Ï?Ï?μα Ï?ο μηνÏ?μαÏ?οÏ?.</string>
- <string name="error">ΣÏ?άλμα</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Î?ι Ï?Ï?θμίÏ?ειÏ? ReachableAddresses Ï?Ï?οκάλεÏ?αν μια εξαίÏ?εÏ?η!</string>
- <string name="your_relay_settings_caused_an_exception_">Î?ι Ï?Ï?θμίÏ?ειÏ? αναμεÏ?αδÏ?Ï?η Ï?αÏ? Ï?Ï?οκάλεÏ?αν μια εξαίÏ?εÏ?η!</string>
- <string name="exit_nodes">Î?Ï?μβοι εξÏ?δοÏ?</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Î?Ï?οÏ?Ï?Ï?Ï?μαÏ?α, Ï?εÏ?δÏ?νÏ?μα, Ï?Ï?Ï?εÏ? και διεÏ?θÏ?νÏ?ειÏ? Ï?ηÏ? Ï?ελεÏ?Ï?αίαÏ? Ï?Ï?νδεÏ?ηÏ?</string>
- <string name="enter_exit_nodes">Î?ιÏ?άγεÏ?ε κÏ?μβοÏ?Ï? εξÏ?δοÏ?</string>
- <string name="exclude_nodes">Î?ξαιÏ?εÏ?Îοι κÏ?μβοι</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Î?Ï?οÏ?Ï?Ï?Ï?μαÏ?α, Ï?εÏ?δÏ?νÏ?μα, Ï?Ï?Ï?εÏ? και διεÏ?θÏ?νÏ?ειÏ? Ï?Ï?οÏ? εξαίÏ?εÏ?η</string>
- <string name="enter_exclude_nodes">Î?ιÏ?άγεÏ?ε Î?ξαιÏ?εÏ?ÎοÏ?Ï? κÏ?μβοÏ?Ï?</string>
- <string name="strict_nodes">Î?Ï?οκλειÏ?Ï?ικοί κÏ?μβοι</string>
- <string name="use_only_these_specified_nodes">ΧÏ?ήÏ?η *μÏ?νον* αÏ?Ï?Ï?ν Ï?Ï?ν Ï?Ï?γκεκÏ?ιμÎνÏ?ν κÏ?μβÏ?ν</string>
- <string name="bridges">Î?ÎÏ?Ï?Ï?εÏ?</string>
- <string name="use_bridges">ΧÏ?ήÏ?η γεÏ?Ï?Ï?Ï?ν</string>
- <string name="bridges_obfuscated">Î?Ï?Ï?Ï?ÎÏ? γÎÏ?Ï?Ï?εÏ?</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Î?νεÏ?γοÏ?οίηÏ?η εναλλακÏ?ικÏ?ν κÏ?μβÏ?ν ειÏ?Ï?δοÏ? Ï?Ï?ο δίκÏ?Ï?ο Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Î?νεÏ?γοÏ?οιήÏ?Ï?ε Ï?ο αν οι Ï?Ï?θμιÏ?μÎνεÏ? γÎÏ?Ï?Ï?εÏ? είναι κÏ?Ï?Ï?ÎÏ?</string>
- <string name="ip_address_and_port_of_bridges">Î?ιεÏ?θÏ?νÏ?η Î?Ρ και θÏ?Ï?α Ï?Ï?ν γεÏ?Ï?Ï?Ï?ν</string>
- <string name="enter_bridge_addresses">Î?ιÏ?άγεÏ?ε Ï?ην διεÏ?θÏ?νÏ?η Ï?ηÏ? γÎÏ?Ï?Ï?αÏ?</string>
- <string name="relays">Î?ναμεÏ?αδÏ?Ï?εÏ?</string>
- <string name="relaying">Î?ίνεÏ?αι αναμεÏ?άδοÏ?η</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Î?εÏ?αÏ?Ï?ÎÏ?Ï?ε Ï?ην Ï?Ï?Ï?κεÏ?ή Ï?αÏ? Ï?ε Îνα αναμεÏ?αδÏ?Ï?η μη-εξÏ?δοÏ?</string>
- <string name="relay_port">Î?Ï?Ï?α αναμεÏ?άδοÏ?ηÏ?</string>
- <string name="listening_port_for_your_tor_relay">Î?Ï?Ï?α ακÏ?Ï?αÏ?ηÏ? για Ï?ον αναμεÏ?αδÏ?Ï?η Ï?αÏ?</string>
- <string name="enter_or_port">Î?ιÏ?άγεÏ?ε Ï?ην θÏ?Ï?α OR</string>
- <string name="relay_nickname">ΨεÏ?δÏ?νÏ?μο Ï?οÏ? αναμεÏ?αδÏ?Ï?η</string>
- <string name="the_nickname_for_your_tor_relay">Το Ï?εÏ?δÏ?νÏ?μο Ï?οÏ? αναμεÏ?αδÏ?Ï?η Ï?αÏ? Tor</string>
- <string name="enter_a_custom_relay_nickname">Î?ιÏ?άγεÏ?ε Îνα Ï?Ï?οÏ?ιμÏ?μενο Ï?εÏ?δÏ?νÏ?μο αναμεÏ?αδÏ?Ï?η</string>
- <string name="reachable_addresses">Î Ï?οÏ?ιÏ?ÎÏ? διεÏ?θÏ?νÏ?ειÏ?</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Î?κÏ?ÎλεÏ?η Ï?Ï? Ï?ελάÏ?η Ï?ίÏ?Ï? αÏ?Ï? Ï?οίÏ?οÏ? Ï?Ï?οÏ?Ï?αÏ?ίαÏ? με Ï?εÏ?ιοÏ?ιÏ?Ï?ικÎÏ? Ï?ολιÏ?ικÎÏ?</string>
- <string name="reachable_ports">Î Ï?οÏ?ιÏ?ÎÏ? θÏ?Ï?εÏ?</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Î Ï?οÏ?ιÏ?ÎÏ? θÏ?Ï?εÏ? Ï?ίÏ?Ï? αÏ?Ï? Ï?εÏ?ιοÏ?ιÏ?Ï?ικÏ? Ï?οίÏ?οÏ? Ï?Ï?οÏ?Ï?αÏ?ίαÏ?</string>
- <string name="enter_ports">Î?ιÏ?άγεÏ?ε θÏ?Ï?εÏ?</string>
- <string name="enable_hidden_services">Φιλοξενία κÏ?Ï?Ï?Ï?ν Ï?Ï?ηÏ?εÏ?ιÏ?ν</string>
- <string name="run_servers_accessible_via_the_tor_network">να εÏ?ιÏ?Ï?ÎÏ?εÏ?ε Ï?Ï?ον διακομιÏ?Ï?ή Ï?ηÏ? Ï?Ï?Ï?κεÏ?ήÏ? να είναι Ï?Ï?οÏ?βάÏ?ιμοÏ? μÎÏ?Ï? Ï?οÏ? δικÏ?Ï?οÏ? Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">ειÏ?άγεÏ?ε Ï?ιÏ? θÏ?Ï?εÏ? κÏ?Ï?Ï?Ï?ν Ï?Ï?ηÏ?εÏ?ιÏ?ν Ï?οÏ? localhost</string>
- <string name="hidden_service_ports">Î?Ï?Ï?εÏ? κÏ?Ï?Ï?Ï?ν Ï?Ï?ηÏ?εÏ?ιÏ?ν</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ï?ο Ï?νομα Ï?Ï?οÏ?Ï?ÎλαÏ?ηÏ? για Ï?ιÏ? κÏ?Ï?Ï?ÎÏ? Ï?Ï?ηÏ?εÏ?ίεÏ? Ï?αÏ? (Ï?αÏ?άγεÏ?αι αÏ?Ï?Ï?μαÏ?α)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ενεÏ?γοÏ?οίηÏ?η καÏ?αγÏ?αÏ?Ï?ν αÏ?οÏ?Ï?αλμάÏ?Ï?Ï?ηÏ? (για Ï?ην Ï?Ï?οβολή Ï?οÏ?Ï? αÏ?αιÏ?είÏ?αι Ï?Ï?ήÏ?η adb ή aLogCat)</string>
- <string name="project_home">Î?Ï?Ï?οÏ?ελίδεÏ? Ï?οÏ? ÎÏ?γοÏ?:</string>
- <string name="the_tor_license">Î? Î?δεια Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Î?ογιÏ?μικÏ? Ï?Ï?ίÏ?Ï?ν:</string>
- <string name="hidden_service_request">Î?άÏ?οια εÏ?αÏ?μογή Ï?Ï?οÏ?Ï?αθεί να ανοίξει Ï?ην κÏ?Ï?Ï?ή θÏ?Ï?α διακομιÏ?Ï?ή %S Ï?Ï?ο δίκÏ?Ï?ο Tor. Î Ï?Ï?κειÏ?αι για αÏ?Ï?αλή ενÎÏ?γεια, εÏ?Ï?Ï?ον γνÏ?Ï?ίζεÏ?ε Ï?ην εÏ?αÏ?μογή.</string>
- <string name="found_existing_tor_process">αναζήÏ?ηÏ?η διεÏ?γαÏ?ιÏ?ν Tor...</string>
- <string name="something_bad_happened">Î?άÏ?ι κακÏ? Ï?Ï?νÎβη. Î?λÎγξÏ?ε Ï?ιÏ? καÏ?αγÏ?αÏ?ÎÏ?</string>
- <string name="hidden_service_on">ενεÏ?γοÏ?οιημÎνη κÏ?Ï?Ï?ή Ï?Ï?ηÏ?εÏ?ία:</string>
- <string name="unable_to_read_hidden_service_name">αδÏ?ναμία ανάγνÏ?Ï?ηÏ? Ï?οÏ? ονÏ?μαÏ?οÏ? Ï?ηÏ? κÏ?Ï?Ï?ήÏ? Ï?Ï?ηÏ?εÏ?ίαÏ?</string>
- <string name="unable_to_start_tor">Î?δÏ?ναμία εκκίνηÏ?ηÏ? Ï?οÏ? Tor:</string>
- <string name="pref_use_sys_iptables_title">ΧÏ?ήÏ?η αÏ?Ï?ικοÏ? iptables</string>
- <string name="pref_use_sys_iptables_summary">Ï?Ï?ήÏ?η Ï?οÏ? ενÏ?Ï?μαÏ?Ï?μÎνοÏ? iptables ανÏ?ί για εκείνÏ?ν Ï?οÏ? Ï?ακÎÏ?οÏ? Orbot</string>
- <string name="error_installing_binares">Τα αÏ?Ï?εία Tor δεν μÏ?Ï?Ï?εÏ?αν να εγκαÏ?αÏ?Ï?αθοÏ?ν ή να αναβαθμιÏ?Ï?οÏ?ν.</string>
- <string name="pref_use_persistent_notifications">Î?α διαÏ?ηÏ?είÏ?αι Ï?άνÏ?οÏ?ε Ï?ο εικονίδιο Ï?Ï?ην γÏ?αμμή εÏ?γαλείÏ?ν Ï?Ï?αν Ï?ο Orbot Ï?Ï?νδÎεÏ?αι</string>
- <string name="pref_use_persistent_notifications_title">Î?ιδοÏ?οιήÏ?ειÏ? διαÏ?κοÏ?Ï? Ï?Ï?νδεÏ?ηÏ?</string>
- <string name="notification_using_bridges">Î?ι γÎÏ?Ï?Ï?εÏ? ενεÏ?γοÏ?οιήθηκαν!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Î?Ï?ιλÎξÏ?ε Ï?Ï?θμίÏ?ειÏ? Ï?οÏ?ικÏ?Ï?ηÏ?αÏ? και γλÏ?Ï?Ï?αÏ? για Ï?ο Orbot</string>
- <string name="wizard_locale_title">Î?Ï?ιλÎξÏ?ε γλÏ?Ï?Ï?α</string>
- <string name="wizard_locale_msg">ΠαÏ?αμείνεÏ?ε Ï?Ï?ην αÏ?Ï?ική ή αλλάξÏ?ε Ï?ην Ï?Ï?ÎÏ?οÏ?Ï?α γλÏ?Ï?Ï?α</string>
- <string name="btn_save_settings">Î?Ï?οθήκεÏ?Ï?η Ï?Ï?θμίÏ?εÏ?ν</string>
- <string name="bandwidth_">Î?Ï?Ï?οÏ? ζÏ?νηÏ?:</string>
- <string name="down">καÏ?ÎβαÏ?μα</string>
- <string name="up">ανÎβαÏ?μα</string>
- <string name="pref_disable_network_title">ΧÏ?Ï?ίÏ? Î?Ï?Ï?Ï?μαÏ?η Î?ναÏ?Ï?ολή Î?ικÏ?Ï?οÏ?</string>
- <string name="pref_disable_network_summary">Î?ÎÏ?ε Ï?ο Tor Ï?ε λειÏ?οÏ?Ï?γία sleep Ï?Ï?αν δεν Ï?Ï?άÏ?Ï?ει διαθÎÏ?ιμη Ï?Ï?νδεÏ?η Î?nternet</string>
- <string name="newnym">Î?Ï?εÏ?ε αλλάξει εÏ?ιÏ?Ï?Ï?Ï?Ï? Ï?ην Ï?αÏ?Ï?Ï?Ï?ηÏ?α Ï?αÏ? Ï?Ï?ο Tor! </string>
- <string name="menu_use_chatsecure">ΧÏ?ήÏ?η Ï?οÏ? ChatSecure</string>
- <string name="permission_manage_tor_label">Î?ιαÏ?είÏ?ιÏ?η Tor</string>
- <string name="permission_manage_tor_description">Î?ξοÏ?Ï?ιοδοÏ?ήÏ?Ï?ε Ï?ην εÏ?αÏ?μογή να ελÎγÏ?ει Ï?ην Ï?Ï?ηÏ?εÏ?ία Ï?οÏ? Tor</string>
- <string name="install_apps_">Î?γκαÏ?άÏ?Ï?αÏ?η εÏ?αÏ?μογÏ?ν?</string>
-</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0151874..0000000
--- a/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="btn_next">Next</string>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml
deleted file mode 100644
index 1c8a380..0000000
--- a/res/values-eo/strings.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Å?alti kaj malÅ?alti Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot Å?altiÄ?as...</string>
- <string name="status_activated">Konektita al Tor-reto</string>
- <string name="status_disabled">Orbot estas malaktivigita</string>
- <string name="tor_process_starting">Å?altiÄ?as Tor-kliento...</string>
- <string name="tor_process_complete">kompleta.</string>
- <string name="tor_process_waiting">atendas.</string>
- <string name="not_anonymous_yet">ATENTIGO: Via trafiko ankoraŠne estas anonima! Bonvolu agordi viajn aplikaĵojn por uzi HTTP-prokurilon 127.0.0.1:8118 aŠSOCKS4A- aŠSOCKS5-prokurilo 127.0.0.1:9050</string>
- <string name="menu_home">Hejma tasto</string>
- <string name="menu_browse">Foliumi</string>
- <string name="menu_settings">Agordoj</string>
- <string name="menu_log">Protokolo</string>
- <string name="menu_info">Helpo</string>
- <string name="menu_start">Starti</string>
- <string name="menu_stop">Halti</string>
- <string name="menu_about">Pri</string>
- <string name="main_layout_download">ElÅ?utado</string>
- <string name="main_layout_upload">AlÅ?utado</string>
- <string name="button_help">Helpo</string>
- <string name="button_close">Fermi</string>
- <string name="button_about">Pri</string>
- <string name="button_clear_log">ForviÅ?i protokolon</string>
- <string name="menu_verify">Kontroli</string>
- <string name="menu_exit">Eliri</string>
- <string name="press_to_start">- longe puÅ?i por Å?alti -</string>
- <string name="pref_trans_proxy_summary">AÅtomata Tor-igo de Aplikaĵoj</string>
- <string name="pref_transparent_all_title">Tor-igu Ä?ion</string>
- <string name="pref_transparent_port_title">Listo de Pordoj</string>
- <string name="pref_has_root">Peti Administrajn Rajtojn</string>
- <string name="status_install_success">Binara kodo de Tor estas sukcese instalita!</string>
- <string name="status_install_fail">Binaraj dosieroj de Tor ne povis esti instalitaj. Kontrolu protokolon kaj sciigu nin per tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Eraro de Aplikaĵo</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Pri Orbot</string>
- <string name="btn_next">Sekva</string>
- <string name="btn_back">MalantaÅe</string>
- <string name="btn_finish">Fini</string>
- <string name="btn_cancel">Rezigni</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Kelkaj Detaloj pri Orbot</string>
- <string name="wizard_permissions_root">Permeso estas AluÄ?ita</string>
- <string name="wizard_permissions_stock">Permesoj de Orbot</string>
- <string name="wizard_permissions_consent">Mi komprenas kaj volas daÅri sen administraj rajtoj</string>
- <string name="wizard_configure">Agordi Tor-igon</string>
- <string name="wizard_configure_select_apps">Elekti Individualajn Aplikaĵojn por Tor</string>
- <string name="wizard_tips_tricks">Aplikaĵoj permesitaj por Orbot</string>
- <string name="wizard_tips_otrchat">ChatSecutre - Sekura tujmesaÄ?ilo por Android</string>
- <string name="wizard_tips_proxy">Agordoj de prokurilo - Lernu kiel agordi aplikaĵojn por kunlabori kun Orbot</string>
- <string name="wizard_tips_twitter">Agordi prokurilon por Twitter je adreso \"localhost\" kaj pordo 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Retperantâ??agordoj</string>
- <string name="wizard_final">Orbot estas preparita!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_hs_group">Gastigado de kaÅ?ita servo</string>
- <string name="pref_general_group">Ä?enerala</string>
- <string name="pref_start_boot_title">Å?alti Orbot dum praÅ?argado</string>
- <string name="pref_start_boot_summary">AÅtomate startigi Orbot kaj konekti al Tor dum praÅ?argado de via Androida ilo</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Averto</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permesoj</string>
- <string name="wizard_permissions_root_msg2">Se vi ne volas fari tion, bonvolu certiÄ?i ke eblas agordi aplikaĵojn por kunlabori kun Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplikaĵoj permesitaj por Orbot</string>
- <string name="wizard_tips_play">Trovu Ä?iujn aplikaĵojn de Guardian Project Ä?e Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_hint">(Marku Ä?i tiun butonon se vi ne scias pri kio ni parolas)</string>
- <string name="wizard_transproxy_none">Neniom</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="button_grant_superuser">Peti Administrajn Rajtojn</string>
- <string name="pref_select_apps">Elekti aplikaĵojn</string>
- <string name="pref_node_configuration">Agordo de Nodoj</string>
- <string name="pref_node_configuration_summary">Tie troviÄ?as progresintaj agordoj kiuj povas limigi vian anonimecon</string>
- <string name="pref_entrance_node">Eniraj nodoj</string>
- <string name="pref_entrance_node_summary">Fingrospuroj, kaÅ?nomoj, landoj kaj adresoj por la unua hopo</string>
- <string name="pref_entrance_node_dialog">Entajpu enirajn nodojn</string>
- <string name="pref_proxy_title">Elira prokurilo (Malnepra)</string>
- <string name="pref_proxy_type_title">Tipo de elira prokurilo</string>
- <string name="pref_proxy_type_summary">Protokolo uzata de la prokurilo: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Entajpu tipon de la prokurilo</string>
- <string name="pref_proxy_host_title">Adreso de la elira prokurilo</string>
- <string name="pref_proxy_host_summary">Adresnomo de la prokurilo</string>
- <string name="pref_proxy_host_dialog">Entajpu adreson</string>
- <string name="pref_proxy_port_title">Pordo de la elira prokurilo</string>
- <string name="pref_proxy_port_summary">Pordo de la Prokurservilo</string>
- <string name="pref_proxy_port_dialog">Entajpu la pordon</string>
- <string name="pref_proxy_username_title">Uzantnomo de la elira prokurilo</string>
- <string name="pref_proxy_username_summary">Uzantnomo de la prokurilo (Malnepra)</string>
- <string name="pref_proxy_username_dialog">Entajpu uzantnomon</string>
- <string name="pref_proxy_password_title">Pasvorto de la elira prokurilo</string>
- <string name="pref_proxy_password_summary">Pasvorto de la prokurilo (Malnepra)</string>
- <string name="pref_proxy_password_dialog">Entajpu pasvorton</string>
- <string name="status">Stato</string>
- <string name="couldn_t_start_tor_process_">Tor-procedo ne sukcesis stariÄ?i:</string>
- <string name="bridge_error">Eraro de Ponto</string>
- <string name="error">Eraro</string>
- <string name="your_relay_settings_caused_an_exception_">Via agordo de relajso kaÅzis escepton!</string>
- <string name="exit_nodes">Finnodoj</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingrospuroj, kaÅ?nomoj, landoj kaj adresoj por la lasta hopo</string>
- <string name="enter_exit_nodes">Entajpu finnofojn</string>
- <string name="use_only_these_specified_nodes">Uzi *nur* tiujn Ä?i nodojn</string>
- <string name="bridges">Pontoj</string>
- <string name="use_bridges">Uzi Pontojn</string>
- <string name="ip_address_and_port_of_bridges">IP-adresoj kaj pordoj de pontoj</string>
- <string name="enter_or_port">Entajpu OR-pordon</string>
- <string name="relay_nickname">KaÅ?nomo de la relajso</string>
- <string name="the_nickname_for_your_tor_relay">KaÅ?nomo por via Tor-relajso</string>
- <string name="enter_a_custom_relay_nickname">Entajpu propran kaÅ?nomon de la relajso</string>
- <string name="reachable_addresses">Atingeblaj adresoj</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Startigi kiel kliento malantaÅ fajromuro kun restriktaj reguloj</string>
- <string name="reachable_ports">Atingeblaj pordoj</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Pordoj, kiuj atingeblas tra la restrikta fajromuro</string>
- <string name="enter_ports">Entajpu pordojn</string>
- <string name="enable_hidden_services">Gastigado de KaÅ?itaj Servoj</string>
- <string name="run_servers_accessible_via_the_tor_network">permesi al servilo sur Ä?i tiu aparato esti atingebla per Tor-reto</string>
- <string name="enter_localhost_ports_for_hidden_services">entajpi localhost-pordojn de kaÅ?itaj servoj</string>
- <string name="hidden_service_ports">Pordoj de KaÅ?itaj Servoj</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adreso de via kaÅ?ita servo (aÅtomate generata)</string>
- <string name="project_home">RetpaÄ?aro(j) de la Projekto:</string>
- <string name="the_tor_license">The Tor License</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="found_existing_tor_process">trovi ekzistantan Tor-procedon...</string>
- <string name="hidden_service_on">kaÅ?itaj servoj je:</string>
- <string name="unable_to_read_hidden_service_name">ne eblas legi nomon de la kaÅ?ita servo</string>
- <string name="unable_to_start_tor">Ne eblas startigi Tor:</string>
- <string name="pref_use_sys_iptables_title">Uzi defaÅltajn Iptables</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Elekti lokaĵaron kaj lingvon por Orbot</string>
- <string name="wizard_locale_title">Elekti lingvon</string>
- <string name="btn_save_settings">Konservi Agordojn</string>
- <string name="bandwidth_">Kapacito:</string>
- <string name="down">el</string>
- <string name="up">al</string>
- <string name="menu_use_chatsecure">Uzi ChatSecure</string>
- <string name="install_apps_">Instali aplikaĵojn?</string>
-</resources>
diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml
deleted file mode 100644
index d58340e..0000000
--- a/res/values-es-rAR/strings.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">reiniciar Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot está iniciándose...</string>
- <string name="status_activated">Conectado a la red Tor</string>
- <string name="status_disabled">\"Orbot está Desactivado</string>
- <string name="tor_process_starting">Iniciando el cliente Tor...</string>
- <string name="tor_process_complete">Completar</string>
- <string name="tor_process_waiting">esperando...</string>
- <string name="not_anonymous_yet">CIUDADO: Tu tráfico no es anónimo aún! Por favor configura tus aplicaciones para que usen el HTTP proxy 127.0.0.1:8118 o SOCKS4A o el proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Inicio</string>
- <string name="menu_browse">Navegar</string>
- <string name="menu_settings">Configuración</string>
- <string name="menu_log">Registro</string>
- <string name="menu_info">Ayuda</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Detener</string>
- <string name="menu_about">Acerca de</string>
- <string name="main_layout_download">Descargar</string>
- <string name="main_layout_upload">Subir</string>
- <string name="button_help">Ayuda</string>
- <string name="button_close">Cerrar</string>
- <string name="button_about">Acerca de</string>
- <string name="button_clear_log">Borrar Registros</string>
- <string name="menu_verify">Chequear</string>
- <string name="menu_exit">Salir</string>
- <string name="pref_trans_proxy_group">Proxying Transparente (Requiere Root)</string>
- <string name="pref_trans_proxy_title">Proxying Transparente</string>
- <string name="pref_trans_proxy_summary">Torificación Automática de Aplicaciones</string>
- <string name="pref_transparent_all_title">Torear Todo</string>
- <string name="status_install_fail">Los archivos binarios Tor no pudieron ser instalado. Compruebe el registro y notificar a tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Error de la aplicación</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
- <string name="btn_next">Siguiente</string>
- <string name="btn_back">Atrás</string>
- <string name="btn_finish">Finalizar</string>
- <string name="btn_okay">Ok</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Algunos detalles de Orbot</string>
- <string name="wizard_final">Orbot está listo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">General</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxying Transparente</string>
- <string name="pref_proxy_password_dialog">Ingrese contraseña Proxy</string>
- <string name="enter_ports">Ingresar puertos</string>
- <string name="the_tor_license">La Licencia de Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="unable_to_start_tor">No se puede iniciar Tor:</string>
- <string name="default_bridges"></string>
- <string name="wizard_locale_title">Elegir el lenguaje</string>
- <string name="btn_save_settings">Guardar configuración</string>
- <string name="bandwidth_">Ancho de banda:</string>
- <string name="menu_use_chatsecure">Usar ChatSecure</string>
- <string name="install_apps_">Instalar apps?</string>
-</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
deleted file mode 100644
index bfcbe14..0000000
--- a/res/values-es/strings.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot es una aplicación libre de proxy (interpuesto) que faculta a otras aplicaciones para usar Internet de forma más segura. Orbot utiliza Tor para cifrar su tráfico de Internet, y luego lo oculta rebotándolo a través de una serie de computadoras por todo el mundo. Tor es software libre y una red abierta que le ayuda a defenderse contra una forma de vigilancia de red conocida como análisis de tráfico que amenaza la libertad y la privacidad personales, las actividades y relaciones comerciales confidenciales, y la seguridad de estado.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">https://check.torproject.org/?lang=es</string>
- <string name="secure_default_web_url">https://check.torproject.org/?lang=es</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">iniciar y detener Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot está iniciandose...</string>
- <string name="status_activated">Conectado a la red Tor</string>
- <string name="status_disabled">Orbot está desactivado</string>
- <string name="status_shutting_down">TorService se está cerrando</string>
- <string name="tor_process_starting">Iniciando cliente Tor...</string>
- <string name="tor_process_complete">completado.</string>
- <string name="tor_process_waiting">en espera.</string>
- <string name="not_anonymous_yet">ADVERTENCIA: ¡Su tráfico no es anónimo aún! Configure sus aplicaciones para utilizar proxy HTTP 127.0.0.1:8118, o proxy SOCKS4A o SOCKS5 127.0.0.1:9050 (o podrÃa habilitar la proxyficación transparente si su dispositivo está rooteado)</string>
- <string name="menu_home">Principal</string>
- <string name="menu_browse">Examinar</string>
- <string name="menu_settings">Configuración</string>
- <string name="menu_log">Registro (log)</string>
- <string name="menu_info">Ayuda</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Detener</string>
- <string name="menu_about">Acerca de</string>
- <string name="menu_promo_apps">Obtener aplicaciones...</string>
- <string name="main_layout_download">Descarga</string>
- <string name="main_layout_upload">Subida</string>
- <string name="button_help">Ayuda</string>
- <string name="button_close">Cerrar</string>
- <string name="button_about">Acerca de</string>
- <string name="button_clear_log">Limpiar registro (log)</string>
- <string name="menu_verify">Verificar</string>
- <string name="menu_exit">Salir</string>
- <string name="menu_scan">Escanear QR de bridge</string>
- <string name="menu_share_bridge">Compartir QR de bridge</string>
- <string name="press_to_start">- mantega pulsado para iniciar -</string>
- <string name="pref_trans_proxy_group">Proxyficación transparente (requiere root)</string>
- <string name="pref_trans_proxy_title">Proxyficación transparente</string>
- <string name="pref_trans_proxy_summary">Torificado automático de aplicaciones</string>
- <string name="pref_transparent_all_title">Torificar todo</string>
- <string name="pref_transparent_all_summary">Proxyfica vÃa Tor el tráfico de todas las aplicaciones sin configurarlas</string>
- <string name="pref_transparent_port_fallback_title">Puertos a proxyficar para contingencias</string>
- <string name="pref_transparent_port_fallback_summary">ADVERTENCIA: Evita puertos comunes (80, 443, etc). *USAR SÃ?LO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan.</string>
- <string name="pref_transparent_port_title">Lista de puertos</string>
- <string name="pref_transparent_port_summary">Lista de puertos a proxyficar. *USAR SÃ?LO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan</string>
- <string name="pref_transparent_port_dialog">Introduzca los puertos a proxyficar</string>
- <string name="pref_has_root">Solicitar permisos de root</string>
- <string name="pref_has_root_summary">Solicita permisos de root para usar proxyficación transparente</string>
- <string name="status_install_success">¡Los binarios de Tor se instalaron con éxito!</string>
- <string name="status_install_fail">Los archivos binarios de Tor no pudieron ser instalados. Revise el registro (log) y notifique a tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Error de la aplicación</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
- <string name="btn_next">Siguiente</string>
- <string name="btn_back">Atrás</string>
- <string name="btn_finish">Finalizar</string>
- <string name="btn_okay">Aceptar</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Algunos detalles de Orbot</string>
- <string name="wizard_details_msg">Orbot es una aplicación de código-abierto que contiene Tor, LibEvent y Polipo. Proporciona un proxy HTTP (8118) y un proxy SOCKS (9050) locales hacia la red Tor. Orbot también tiene la capacidad, en un dispositivo rooteado, de enviar todo el tráfico de Internet a través de Tor.</string>
- <string name="wizard_permissions_root">Permiso concedido</string>
- <string name="wizard_permissions_stock">Permisos de Orbot</string>
- <string name="wizard_premissions_msg_root">¡Excelente! Hemos detectado que ha concedido a Orbot permisos de root. Utilizaremos estos poderes sabiamente.</string>
- <string name="wizard_permissions_msg_stock"> Aunque no es un requisito, Orbot puede convertirse en una herramienta más potente si accede a su dispositivo con permisos de root. ¡Utilice el botón inferior para conceder superpoderes a Orbot!</string>
- <string name="wizard_permissions_no_root">Si no tiene acceso como root o no tiene idea de qué estamos hablando, tan solo asegúrese de utilizar aplicaciones especÃficamente preparadas para trabajar con Orbot (o que permitan conexión por proxy HTTP o SOCKS).</string>
- <string name="wizard_permissions_consent">Comprendo, y quiero continuar sin poderes administrativos</string>
- <string name="wizard_permission_enable_root">Conceder permisos de root a Orbot</string>
- <string name="wizard_configure">Configurar torificación</string>
- <string name="wizard_configure_msg">Orbot le da la opción de dirigir el tráfico de todas las aplicaciones a través de Tor - o - de seleccionar sus aplicaciones a torificar individualmente.</string>
- <string name="wizard_configure_all">Proxyficar todas la aplicaciones a través de Tor</string>
- <string name="wizard_configure_select_apps">Seleccionar aplicaciones individuales para Tor</string>
- <string name="wizard_tips_tricks">Aplicaciones habilitadas para Orbot</string>
- <string name="wizard_tips_msg">Las siguientes aplicaciones fueron desarrolladas para trabajar con Orbot. Haga clic en cada botón para instalarlas ahora, o puede encontrarlas más tarde en Google Play, en la web guardianproject.info o vÃa f-droid.org </string>
- <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensajerÃa instantánea segura para Android</string>
- <string name="wizard_tips_proxy">Preferencias para proxy - aprenda cómo configurar aplicaciones para que trabajen con Orbot</string>
- <string name="wizard_tips_duckgo">Aplicación del motor de búsqueda DuckDuckGo</string>
- <string name="wizard_tips_twitter">Configure por proxy la aplicación de Twitter en localhost:8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - ¡Elabore una historia y déjesela a Tor por seguridad!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Preferencias para proxy</string>
- <string name="wizard_proxy_help_msg">Si la aplicación Android que está utilizando puede soportar el uso de un proxy (interpuesto) HTTP o SOCKS, entonces puede configurarla para que conecte a Orbot y use Tor.\n\n\nLa configuración del servidor es 127.0.0.1 o \"localhost\". Para HTTP, la configuración del puerto es 8118. Para SOCKS, el proxy está en el 9050. Debe utilizar la configuración para SOCKS4A o SOCKS5 si es posible.\n\n\n\nPuede aprender más acerca de proxyficación en Android a través de las preguntas frecuentes (FAQ) en: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">¡Orbot está listo!</string>
- <string name="wizard_final_msg">Millones de personas por todo el mundo usan Tor por una amplia variedad de razones.\n\nPeriodistas y blogueros, defensores de los derechos humanos, funcionarios judiciales, corporaciones, ciudadanos bajo regÃmenes represivos, y simples ciudadanos corrientes... ¡y ahora usted también está listo!</string>
- <string name="wizard_exit_at_first_screen_toast">¡Por favor, configure Orbot antes para poder comenzar a usarlo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Ha conectado con éxito a la red Tor - pero esto no significa que su dispositivo sea seguro. Puede usar el botón \'Navegador\' para probar su conexión. \n\nVisÃtenos en https://guardianproject.info/apps/orbot o envÃe un correo electrónico a help@xxxxxxxxxxxxxxxxxxxx para conocer más.</string>
- <string name="tor_check">Esto abrirá https://check.torproject.org/?lang=es en su navegador predeterminado para comprobar que Orbot esté configurado y que esté conectado a Tor.</string>
- <string name="pref_hs_group">Alojamiento de servicios ocultos (dentro de la red Tor)</string>
- <string name="pref_general_group">General</string>
- <string name="pref_start_boot_title">Iniciar Orbot en el arranque</string>
- <string name="pref_start_boot_summary">Inicia Orbot y conecta a Tor automáticamente cuando arranca su dispositivo Android</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">¡Orbot trae Tor a Android!\n\nTor le ayuda a defenderse contra el filtrado de contenido, el análisis de tráfico y la vigilancia de la red, que amenazan la privacidad, la información confidencial y las relaciones personales.\n\nEste asistente le ayudará a configurar Orbot y Tor en su dispositivo.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Advertencia</string>
- <string name="wizard_warning_msg">Simplemente instalando Orbot no anonimizará automáticamente su tráfico móvil/celular.\n\nPara usar Tor con éxito tiene que configurar adecuadamente Orbot, su dispositivo, y otras aplicaciones.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permisos</string>
- <string name="wizard_permissions_root_msg1">Opcionalmente puede conceder permisos de \'Superusuario\' a Orbot para habilitar las caracterÃsticas avanzadas, como la proxyficación transparente.</string>
- <string name="wizard_permissions_root_msg2">Si no desea hacer esto, asegúrese de utilizar aplicaciones especÃficamente preparadas para trabajar con Orbot (o configurables para ello)</string>
- <string name="wizard_permissions_no_root_msg">Su dispositivo no parece estar rooteado o proporcionar root o acceso de \"Superusuario\".\n\nEn su lugar, por favor, pruebe con el modo \'Aplicaciones\' en la pantalla principal.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplicaciones habilitadas para Orbot</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Aplicación de chat segura con cifrado Off-The-Record (OTR)</string>
- <string name="wizard_tips_orweb">Orfox: Navegador con privacidad mejorada que funciona a través de Tor</string>
- <string name="wizard_tips_play">Descubre todas las aplicaciones de Guardian Project en Google Play</string>
- <string name="wizard_tips_fdroid">Encontrará todas las aplicaciones del Guardian Project en F-Droid</string>
- <string name="wizard_tips_fdroid_org">Encontrará todas las aplicaciones del Guardian Project en https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxyficación transparente</string>
- <string name="wizard_transproxy_msg">Permite que sus aplicaciones se ejecuten automáticamente a través de la red Tor sin realizar configuración alguna.</string>
- <string name="wizard_transproxy_hint">(Marque esta casilla si no tiene idea de qué estamos hablando)</string>
- <string name="wizard_transproxy_none">Ninguno</string>
- <string name="pref_transparent_tethering_title">Tor tethering</string>
- <string name="pref_transparent_tethering_summary">Habilita la proxyficación transparente de Tor para dispositivos tethered (dispositivos móviles \"amarrados\", pasarela a Internet para otros dispositivos conectados a ellos mediante Wifi, USB o Bluetooth) -- (requiere reinicio)</string>
- <string name="button_grant_superuser">Solicitar permisos de superusuario</string>
- <string name="pref_select_apps">Seleccionar aplicaciones</string>
- <string name="pref_select_apps_summary">Escoja las aplicaciones a redirigir través de Tor</string>
- <string name="pref_node_configuration">Configuración de nodos</string>
- <string name="pref_node_configuration_summary">¡Estas son configuraciones avanzadas que pueden reducir su anonimato! Afectan a los circuitos (túneles) que se establezcan para su propio tráfico a través de Tor; si repite tráfico ajeno estas configuraciones no afectan a esos circuitos.</string>
- <string name="pref_entrance_node">Nodos de entrada</string>
- <string name="pref_entrance_node_summary">Reglas de identificación de repetidores de entrada a la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de paÃs y
-direcciones (o rangos). No prevalecen sobre las configuraciones de exclusión de nodos, y las configuraciones de bridges.</string>
- <string name="pref_entrance_node_dialog">Introduzca nodos de entrada</string>
- <string name="pref_allow_background_starts_title">Permitir inicios en segundo plano</string>
- <string name="pref_allow_background_starts_summary">Deja que cualquier aplicación le diga a Orbot que inicie Tor y servicios relacionados</string>
- <string name="button_proxy_all">Proxyficar todo</string>
- <string name="button_proxy_none">No proxyficar nada</string>
- <string name="button_invert_selection">Invertir selección</string>
- <string name="pref_proxy_title">Proxy de salida a la red (opcional)</string>
- <string name="pref_proxy_type_title">Tipo de proxy saliente</string>
- <string name="pref_proxy_type_summary">Protocolo a usar para el servidor proxy saliente: HTTP, HTTPS, Socks4, Socks5.</string>
- <string name="pref_proxy_type_dialog">Introduzca tipo de proxy</string>
- <string name="pref_proxy_host_title">Servidor proxy saliente</string>
- <string name="pref_proxy_host_summary">Nombre del servidor proxy </string>
- <string name="pref_proxy_host_dialog">Introduzca el servidor proxy</string>
- <string name="pref_proxy_port_title">Puerto del proxy saliente </string>
- <string name="pref_proxy_port_summary">Puerto del servidor proxy</string>
- <string name="pref_proxy_port_dialog">Introduzca el puerto del proxy</string>
- <string name="pref_proxy_username_title">Nombre de usuario en el proxy de salida</string>
- <string name="pref_proxy_username_summary">Nombre de usuario en el proxy (opcional)</string>
- <string name="pref_proxy_username_dialog">Introduzca nombre de usuario en el proxy</string>
- <string name="pref_proxy_password_title">Contraseña en el proxy de salida</string>
- <string name="pref_proxy_password_summary">Contraseña en el proxy (opcional)</string>
- <string name="pref_proxy_password_dialog">Introduzca contraseña en el proxy</string>
- <string name="status">Estado</string>
- <string name="setting_up_full_transparent_proxying_">Estableciendo proxyficación transparente completa... </string>
- <string name="setting_up_app_based_transparent_proxying_">Estableciendo proxyficación transparente por aplicaciones... </string>
- <string name="transparent_proxying_enabled">Proxyficación transparente ACTIVADA</string>
- <string name="transproxy_enabled_for_tethering_">¡TransProxy (proxyficación transparente) habilitado para tethering (pasarela)!</string>
- <string name="warning_error_starting_transparent_proxying_">ADVERTENCIA: ¡Error al iniciar la proxyficación transparente!</string>
- <string name="transproxy_rules_cleared">Reglas de TransProxy (proxyficación transparente) borradas</string>
- <string name="couldn_t_start_tor_process_">No se pudo iniciar el proceso de Tor: </string>
- <string name="privoxy_is_running_on_port_">Polipo se está ejecutando en el puerto:</string>
- <string name="setting_up_port_based_transparent_proxying_">Estableciendo proxyficación transparente por puertos... </string>
- <string name="bridge_error">Error de bridge (repetidor puente)</string>
- <string name="bridge_requires_ip">Para utilizar la función bridge (repetidor puente, acceso a Tor de publicitación restringida), debe introducir al menos una dirección IP de bridge.</string>
- <string name="send_email_for_bridges">EnvÃe un correo a bridges@xxxxxxxxxxxxxx incluyendo en el cuerpo del mensaje una lÃnea sólo con \"get bridges\", desde una cuenta con dominio gmail.com, yahoo.com o yahoo.cn (que soportan DKIM)</string>
- <string name="error">Error</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">¡Sus \'Reglas de direcciones accesibles\' han producido una excepción!</string>
- <string name="your_relay_settings_caused_an_exception_">¡La configuración de su repetidor ha producido una excepción!</string>
- <string name="exit_nodes">Nodos de salida</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Reglas de identificación de repetidores de salida de la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de paÃs y direcciones (o rangos)</string>
- <string name="enter_exit_nodes">Introduzca repetidores de salida</string>
- <string name="exclude_nodes">ExcluÃr nodos</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Reglas de identificación de repetidores a evitar en la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de paÃs y direcciones (o rangos)</string>
- <string name="enter_exclude_nodes">Introduzca repetidores a evitar</string>
- <string name="strict_nodes">Hacer estricta la exclusión de nodos (incluso si falla la comunicación)</string>
- <string name="use_only_these_specified_nodes">Usar *sólo* estos nodos especificados</string>
- <string name="bridges">Bridges (repetidores puente) </string>
- <string name="use_bridges">Usar bridges</string>
- <string name="bridges_obfuscated">Bridges ofuscados (contra análisis DPI del tráfico) </string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilita nodos alternativos de entrada a la red Tor, de publicitación restringida. Prevalece sobre \'Nodos de entrada\'</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">HabilÃtelo si los bridges (repetidores puente) de su lista de configuración están ofuscados (encapsulando el tráfico SSL para evitar ser detectados) </string>
- <string name="ip_address_and_port_of_bridges">Direcciones IP y puertos de los bridges</string>
- <string name="enter_bridge_addresses">Introduzca direcciones de bridge</string>
- <string name="relays">Repetidores</string>
- <string name="relaying">Repetición de tráfico</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Habilitar que su dispositivo no sea repetidor de salida (de la red Tor) </string>
- <string name="relay_port">Puerto de repetidor</string>
- <string name="listening_port_for_your_tor_relay">Puerto de escucha para su repetidor Tor</string>
- <string name="enter_or_port">Introduzca puerto OR (Onion Routing, repositorio de repetidores)</string>
- <string name="relay_nickname">Alias del repetidor</string>
- <string name="the_nickname_for_your_tor_relay">El apodo que identificará a su repetidor en la red Tor</string>
- <string name="enter_a_custom_relay_nickname">Introduzca un alias personalizado para su repetidor</string>
- <string name="reachable_addresses">Reglas de direcciones accesibles ([accept(*)|reject] IP:port, etc.)</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ejecutar Tor como sólo cliente detrás de un cortafuegos (firewall) con polÃticas restrictivas</string>
- <string name="reachable_ports">Puertos accesibles</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Puertos accesibles detrás de un firewall restrictivo (80 y 443 por defecto)</string>
- <string name="enter_ports">Introduzca puertos</string>
- <string name="enable_hidden_services">Activar alojamiento de servicios ocultos (en la red Tor)</string>
- <string name="run_servers_accessible_via_the_tor_network">Permite el acceso a servidores ocultos por dispositivo (IP oculta al usuario) accesibles a través de la red Tor (dominio .onion, sin DNS)</string>
- <string name="enter_localhost_ports_for_hidden_services">Introduzca los puertos locales de sus servicios ocultos</string>
- <string name="hidden_service_ports">Puertos de los servicios ocultos</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">El nombre direccionable (sin DNS, .onion generado automáticamente) para su servicio oculto</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Habilitar el registro de depuración (debug log) a la salida (debe utilizar adb o aLogCat para verlo)</string>
- <string name="project_home">Página(s) principal(es) del proyecto:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Licencia de Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software de terceras partes</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicación está intentando abrir el puerto %S de servicio oculto hacia la red Tor. Esto es seguro si su aplicación es de su confianza.</string>
- <string name="found_existing_tor_process">Se encontró un proceso de Tor ya existente...</string>
- <string name="something_bad_happened">Hubo algún tipo de problema. Compruebe el registro (log)</string>
- <string name="hidden_service_on">Servicio oculto en:</string>
- <string name="unable_to_read_hidden_service_name">No fue posible leer el nombre del servicio oculto</string>
- <string name="unable_to_start_tor">No fue posible iniciar Tor: </string>
- <string name="unable_to_reset_tor">¡Reinicie su dispositivo, no se pudo reiniciar Tor!</string>
- <string name="pref_use_sys_iptables_title">Usar el Iptables por defecto</string>
- <string name="pref_use_sys_iptables_summary">Usa el binario de Iptables del sistema en lugar del incluÃdo en el paquete de Orbot</string>
- <string name="error_installing_binares">No fue posible instalar o actualizar los binarios de Tor.</string>
- <string name="pref_use_persistent_notifications">Mantener siempre el icono de Orbot en la barra de tareas cuando esté conectado</string>
- <string name="pref_use_persistent_notifications_title">Notificaciones siempre activadas</string>
- <string name="pref_use_expanded_notifications">Mostrar notificación expandida con el paÃs de salida de Tor y la IP</string>
- <string name="pref_use_expanded_notifications_title">Notificaciones expandidas</string>
- <string name="notification_using_bridges">¡Bridges habilitados! </string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Idioma</string>
- <string name="set_locale_summary">Elija la configuración regional y el idioma para Orbot</string>
- <string name="wizard_locale_title">Escoja idioma</string>
- <string name="wizard_locale_msg">Deje el predeterminado o cambie de idioma</string>
- <string name="powered_by">impulsado por Tor</string>
- <string name="btn_save_settings">Guardar configuración</string>
- <string name="no_internet_connection_tor">Sin conexión a Internet; Tor está en suspensión...</string>
- <string name="bandwidth_">Ancho de banda:</string>
- <string name="down">bajada</string>
- <string name="up">subida</string>
- <string name="pref_disable_network_title">Sin suspensión-automática de la red</string>
- <string name="pref_disable_network_summary">Ponga Tor en suspensión cuando no haya Internet disponible</string>
- <string name="newnym">¡Ha cambiado a una nueva identidad de Tor!</string>
- <string name="menu_verify_browser">Navegador</string>
- <string name="menu_use_chatsecure">Usar ChatSecure</string>
- <string name="permission_manage_tor_label">Administrar Tor</string>
- <string name="permission_manage_tor_description">Habilita esta aplicación para controlar el servicio Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">No parece que tenga Orfox instalado. ¿Quiere ayuda con eso, o simplemente debemos abrir el navegador?</string>
- <string name="install_apps_">¿Instalar aplicaciones?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">No hay conectividad de red. Poniendo a Tor a dormir...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">La conectividad de red es buena. Despertando a Tor...</string>
- <string name="updating_settings_in_tor_service">actualizando la configuración en el servicio Tor</string>
- <string name="pref_socks_title">SOCKS de Tor</string>
- <string name="pref_socks_summary">Puerto sobre el que Tor ofrece su proxy SOCKS (por defecto: 9050 o 0 para deshabilitarlo)</string>
- <string name="pref_socks_dialog">Configuración del puerto SOCKS</string>
- <string name="pref_transport_title">Puerto de TransProxy de Tor</string>
- <string name="pref_transport_summary">Puerto sobre el que Tor ofrece su Proxy Transparente (por defecto: 9040 o 0 para deshabilitarlo)</string>
- <string name="pref_transport_dialog">Configuración del puerto de TransProxy</string>
- <string name="pref_dnsport_title">Puerto DNS de Tor</string>
- <string name="pref_dnsport_summary">Puerto sobre el que Tor ofrece su DNS (por defecto: 5400 o 0 para deshabilitarlo)</string>
- <string name="pref_dnsport_dialog">Configuración del puerto DNS</string>
- <string name="pref_torrc_title">Configuración personalizada de torrc</string>
- <string name="pref_torrc_summary">SÃ?LO EXPERTOS: Introduzca directamente las lÃneas de configuración en el fichero torrc</string>
- <string name="pref_torrc_dialog">torrc personalizado</string>
- <string name="wizard_tips_martus">Martus Móvil - Aplicación de documentación de derechos humanos de Benetech</string>
- <string name="your_tor_public_ips_">Las IPs públicas de su Tor:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Por favor, deshabilite esta aplicación en Android->Configuración->Aplicaciones si está teniendo problemas con Orbot:</string>
- <string name="app_conflict">Conflicto de la aplicación</string>
- <string name="pref_transproxy_refresh_title">Auto-refresco de transproxy</string>
- <string name="pref_transproxy_refresh_summary">Reaplica las reglas de transproxy cuando el estado de la red cambia</string>
- <string name="pref_transproxy_flush_title">Transproxy FORZAR ELIMINACIÃ?N</string>
- <string name="pref_transproxy_flush_summary">Pulse aquà para desechar AHORA todas las reglas de red de transproxy </string>
- <string name="transparent_proxy_rules_flushed_">¡Reglas de proxy transparente desechadas!</string>
- <string name="you_do_not_have_root_access_enabled">No tiene habilitado el acceso como ROOT</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Puede que tenga que detener e iniciar Orbot para que el cambio de configuración se habilite.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridges actualizados</string>
- <string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para habilitar los cambios</string>
- <string name="menu_qr">Códigos QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si su red móvil/celular bloquea activamente Tor, puede usar un Puente (bridge) para acceder a la red. SELECCIONE uno de los tipos de repetidor puente arriba para hablitar los puentes.</string>
- <string name="bridge_mode">Modo bridge</string>
- <string name="get_bridges_email">Correo electrónico</string>
- <string name="get_bridges_web">Página web</string>
- <string name="activate">Activar</string>
- <string name="apps_mode">Aplicaciones en modo VPN</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Puede habilitar que todas las aplicaciones de su dispositivo transiten a través de la red Tor usando la función VPN de Android.\n\n*ADVERTENCIA* Esta es una caracterÃstica experimental nueva, y en algunos casos puede que no se inicie automáticamente, o puede que se detenga. NO debe usarse para anonimato, SÃ?LO para atravesar cortafuegos (firewalls) y filtros.</string>
- <string name="send_email">Enviar correo</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Puede obtener una dirección de bridge (repetidor puente) a través de correo electrónico, la web, o escaneando un código QR de bridge. Seleccione \'Correo\' o \'Web\' debajo para solicitar una dirección de bridge.\n\nUna vez tenga una dirección, copie y péguela en la opción \"Bridges\" de la configuración de Orbot, y reinicie.</string>
- <string name="install_orweb">Instalar Orfox</string>
- <string name="standard_browser">Navegador estándar</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Sólo los repetidores puente (bridges) estándar de Tor funcionan en dispositivos Intel X86/ATOM</string>
- <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
deleted file mode 100644
index e5a9ada..0000000
--- a/res/values-et/strings.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.orghttp://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">käivita ja peata Tor</string>
- <string name="tor_proxy_service_process">torproxyteenus</string>
- <string name="status_starting_up">Orbot käivitub...</string>
- <string name="status_activated">�hendatud Tor võrgustikku</string>
- <string name="status_disabled">Orbot deaktiveeritud</string>
- <string name="tor_process_starting">Tor kliendi käivitamine...</string>
- <string name="tor_process_complete">valmis.</string>
- <string name="tor_process_waiting">ootel.</string>
- <string name="not_anonymous_yet">HOIATUS: Teie liiklus pole veel anonüümne! Palun seadistage oma rakendused nii et need kasutaksid HTTP proxy\'t 127.0.0.1:8118 või SOCKS4A või SOCKS5 proxy\'t 127.0.0.1:9050</string>
- <string name="menu_home">Kodu</string>
- <string name="menu_browse">Sirvi</string>
- <string name="menu_settings">Seaded</string>
- <string name="menu_log">Logi</string>
- <string name="menu_info">Abi</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stopp</string>
- <string name="menu_about">Lähemalt</string>
- <string name="main_layout_download">Lae alla</string>
- <string name="main_layout_upload">Lae üles</string>
- <string name="button_help">Abi</string>
- <string name="button_close">Sulge</string>
- <string name="button_about">Lähemalt</string>
- <string name="button_clear_log">Nulli logi</string>
- <string name="menu_verify">Kontrolli</string>
- <string name="menu_exit">Välja</string>
- <string name="press_to_start">- pikk vajutus alustamiseks -</string>
- <string name="pref_trans_proxy_group">Läbipaistev proxy (Nõuab Root õigusi)</string>
- <string name="pref_trans_proxy_title">Läbipaistev proxy</string>
- <string name="pref_trans_proxy_summary">Rakenduste automaatne Torifitseerimine</string>
- <string name="pref_transparent_all_title">Kõik läbi Tor\'i</string>
- <string name="pref_transparent_all_summary">Proxy kõikide reakenduste liiklus läbi Tor\'i</string>
- <string name="pref_transparent_port_fallback_title">Pordiproxy reserv</string>
- <string name="pref_transparent_port_fallback_summary">HOIATUS: Väldib tavaporte (80, 443, jne). *KASUTAGE AINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta.</string>
- <string name="pref_transparent_port_title">Portide loend</string>
- <string name="pref_transparent_port_summary">Proxy portide loend. *KASUTAGE SINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta</string>
- <string name="pref_transparent_port_dialog">Sisestage pordid mida proxy\'da</string>
- <string name="pref_has_root">Nõua root juurdepääsu</string>
- <string name="pref_has_root_summary">Nõua läbipaistva proxy jaoks root juurdepääsu</string>
- <string name="status_install_success">Tor binaarid edukalt paigaldatud!</string>
- <string name="status_install_fail">Tor binaarfailide paigaldamine ebaõnnestus. Palun kontrollige logi ja teavitage tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Rakenduse Viga</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Lähemalt Orbot\'ist</string>
- <string name="btn_next">Edasi</string>
- <string name="btn_back">Tagasi</string>
- <string name="btn_finish">Lõpeta</string>
- <string name="btn_okay">Hea küll</string>
- <string name="btn_cancel">Katkesta</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Mõned Orbot\'i detailid</string>
- <string name="wizard_permissions_root">Luba Antud</string>
- <string name="wizard_permissions_stock">Orbot õigused</string>
- <string name="wizard_premissions_msg_root">Vinge! Leidsime et teie seadmes on Orbot\'ile lubatud root õigused. Lubame kasutada seda väge arukalt.</string>
- <string name="wizard_permissions_msg_stock">Kuigi see pole vajalik, saab root juurdepääsuga seadmel kasutada Orbot\'i palju võimsama vahendina. Kasutage allpool olevat nuppu et lubada Orbot\'ile supervõimed!</string>
- <string name="wizard_permissions_no_root">Kui teil pole root juurdepääsu või te ei tea millest jutt käib, siis kindlustage et kasutate ainult rakendusi mis on seadistatud Orbot\'iga koos töötama.</string>
- <string name="wizard_permissions_consent">Saan aru ja jätkan ilma Superkasutajata</string>
- <string name="wizard_permission_enable_root">Luba Orbotile Root õigused</string>
- <string name="wizard_configure">Seadista Torifitseerimine</string>
- <string name="wizard_configure_msg">Orbot võimaldab juhtida kõigi rakenduste liikluse läbi Tor\'i V�I valida need rakendused individuaalselt.</string>
- <string name="wizard_configure_all">Proxy kõik rakendused läbi Tor\'i</string>
- <string name="wizard_configure_select_apps">Valige Tor\'i jaoks individuaalsed rakendused</string>
- <string name="wizard_tips_tricks">Orbot-lubatud rakendused</string>
- <string name="wizard_tips_msg">Alltoodud rakendused arendati Orbot\'iga koos töötama. Koheseks paigaldamiseks vajutage igat allolevat nuppu või paigaldage need hiljem Google Play portaalist, GuardianProject.info veebilehelt või F-Droid.org kaudu.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Turvaline kiirsõnumiklient Androidile</string>
- <string name="wizard_tips_proxy">Proxy seaded - �pi kuidas seadistada rakendusi töötama koos Orbot\'iga</string>
- <string name="wizard_tips_duckgo">DuckDuckGo otsingumootori rakendus</string>
- <string name="wizard_tips_twitter">Seadistage Twitteri proxy server \"localhost\" ja port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxyseaded</string>
- <string name="wizard_final">Orbot on valmis!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">See avab teie veebisivikus lehe https://check.torproject.org mille kaudu saate näha kas Orbot on ehk seadistatud ja olete ühenduses Tor\'iga.</string>
- <string name="pref_hs_group">Peidetud Teenuste Majutus</string>
- <string name="pref_general_group">Ã?ldist</string>
- <string name="pref_start_boot_title">Käivita Orbot seadme käivitumisel</string>
- <string name="pref_start_boot_summary">Automaatne Orbot käivitumine ja Tor külge ühendumine seadme käivitumisel</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Hoiatus</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Load</string>
- <string name="wizard_permissions_root_msg1">Võite Orbot\'ile lubada \'Superkasutaja\' juurdepääsu selleks et võimaldada rohkem võimalusi, nagu näiteks Läbipaistev Proxy.</string>
- <string name="wizard_permissions_root_msg2">Kui te ei soovi seda teha, siis palun kindlustage et kasutate ainult rakendusi mis on seadistatud töötama koos Orbot\'iga</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot\'ile mõeldud rakendused</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Turvaline vestlusrakendus Off-the-Record krüptoga</string>
- <string name="wizard_tips_play">Kõik Guardian Project rakendused on leitavad ka Google Play kaudu</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Läbipaistev Proxy</string>
- <string name="wizard_transproxy_msg">Saate kõik rakendused suunata iseeneslikult Tor kaudu, lisaseadistusteta.</string>
- <string name="wizard_transproxy_hint">(Klikkige sellele kastile kui teil pole õrna aimugi millest jutt käib)</string>
- <string name="wizard_transproxy_none">Puudub</string>
- <string name="pref_transparent_tethering_title">Tor lõastamine</string>
- <string name="pref_transparent_tethering_summary">Luba Tor Läbipaistev Proxy WiFi ja USB lõastatud seadmetele (vajab uuestilaadimist)</string>
- <string name="button_grant_superuser">Nõua Superkasutaja Juurdepääsu</string>
- <string name="pref_select_apps">Vali Rakendused</string>
- <string name="pref_select_apps_summary">Vali läbi Tor suunatavad rakendused</string>
- <string name="pref_node_configuration">Sõlme seadistamine</string>
- <string name="pref_node_configuration_summary">Need on seadistused edasijõudnutele ja võivad vähendada teie anonüümsust</string>
- <string name="pref_entrance_node">Sisendsõlmed</string>
- <string name="pref_entrance_node_summary">Sõrmejäljed, hüüdnimed, riigid ja aadressid esimese hüppe jaoks</string>
- <string name="pref_entrance_node_dialog">Sisestage sisendsõlmed</string>
- <string name="pref_proxy_title">Väljuva võrgu proxy (Valikuline)</string>
- <string name="pref_proxy_type_title">Väljuva proxy tüüp</string>
- <string name="pref_proxy_type_summary">Proxy serveri kasutamise protokoll: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Sisestage proxy tüüp</string>
- <string name="pref_proxy_host_title">Väljuva proxy seade</string>
- <string name="pref_proxy_host_summary">Proxyserveri seadmenimi</string>
- <string name="pref_proxy_host_dialog">Sisestage proxy seade</string>
- <string name="pref_proxy_port_title">Väljuva proxy port</string>
- <string name="pref_proxy_port_summary">Proxyserveri port</string>
- <string name="pref_proxy_port_dialog">Sisestage proxy port</string>
- <string name="pref_proxy_username_title">Väljuva proxy kasutajanimi</string>
- <string name="pref_proxy_username_summary">Proxy kasutajanimi (Valikuline)</string>
- <string name="pref_proxy_username_dialog">Sisestage proxy kasutajanimi</string>
- <string name="pref_proxy_password_title">Väljuva proxy salasõna</string>
- <string name="pref_proxy_password_summary">Proxy salasõna (Valikuline)</string>
- <string name="pref_proxy_password_dialog">Sisestage proxy salasõna</string>
- <string name="status">Olek</string>
- <string name="setting_up_full_transparent_proxying_">Täisläbipaistva proxy seadistamine...</string>
- <string name="setting_up_app_based_transparent_proxying_">Rakenduspõhise läbipaistva proxy seadistamine...</string>
- <string name="transparent_proxying_enabled">Läbipaistev proxy LUBATUD</string>
- <string name="transproxy_enabled_for_tethering_">LäbivProxy lõastamine lubatud!</string>
- <string name="warning_error_starting_transparent_proxying_">Hoiatus: viga läbipaistva proxy käivitamisel!</string>
- <string name="transproxy_rules_cleared">LäbivProxy seaded nullitud</string>
- <string name="couldn_t_start_tor_process_">Tor protsessi käivitamine ebaõnnestus:</string>
- <string name="setting_up_port_based_transparent_proxying_">Pordipõhise läbipaistva proxy seadistamine...</string>
- <string name="bridge_error">Silla viga</string>
- <string name="bridge_requires_ip">Silla võimaluse kasutamiseks peate sisestama vähemalt ühe silla IP aadressi.</string>
- <string name="send_email_for_bridges">Saatke e-kiri oma gmail kontolt aadressile bridges@xxxxxxxxxxxxxx mis sisaldab ainult ühte rida \"get bridges\".</string>
- <string name="error">Viga</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Teie ReachableAddresses seadistus põhjustas ekse!</string>
- <string name="your_relay_settings_caused_an_exception_">Teie releeseadistus põhjustas ekse!</string>
- <string name="exit_nodes">Väljundsõlmed</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Sõrmejäljed, hüüdnimed, riigid ja aadressid viimase hüppe jaoks</string>
- <string name="enter_exit_nodes">Sisestage väljundsõlmed</string>
- <string name="exclude_nodes">Välistatud sõlmed</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Sõrmejäljed, hüüdnimed, riigid ja aadressid mida välistada</string>
- <string name="enter_exclude_nodes">Sisestage välistatavad sõlmed</string>
- <string name="strict_nodes">Kindlad sõlmed</string>
- <string name="use_only_these_specified_nodes">Kasuta *ainult* neid märgitud sõlmi</string>
- <string name="bridges">Sillad</string>
- <string name="use_bridges">Kasuta sildu</string>
- <string name="bridges_obfuscated">Varjatud sillad</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Luba Tor võrgustiku alternatiivseid sisendsõlmi</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Luba siis kui seadistatud sillad on varjatud sillad</string>
- <string name="ip_address_and_port_of_bridges">Sildade IP aadressid ja pordinumbrid</string>
- <string name="enter_bridge_addresses">Sisestage silla aadressid</string>
- <string name="relays">Edastajad</string>
- <string name="relaying">Edastamine</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Luba oma seadmel hakata mitte-väljund edastajaks</string>
- <string name="relay_port">Edastusport</string>
- <string name="listening_port_for_your_tor_relay">Port mida teie Tor edastaja kuulab</string>
- <string name="enter_or_port">Kas Enter VÃ?I port</string>
- <string name="relay_nickname">Edastaja hüüdnimi</string>
- <string name="the_nickname_for_your_tor_relay">Teie Tor edastaja hüüdnimi</string>
- <string name="enter_a_custom_relay_nickname">Sisestage edastaja kohandatud hüüdnimi</string>
- <string name="reachable_addresses">Juurdepääsetavad aadressid</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Käivita kui piirava poliitikaga tulemüüri taga asuvat klienti.</string>
- <string name="reachable_ports">Juurdepääsetavad pordid</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Piirava poliitikaga tulemüüris avatud pordid</string>
- <string name="enter_ports">Sisestage pordid</string>
- <string name="enable_hidden_services">Varjatud teenuste majutamine</string>
- <string name="run_servers_accessible_via_the_tor_network">luba üle Tor võrgustiku juurdepääs seadmes töötavale serverile</string>
- <string name="enter_localhost_ports_for_hidden_services">sisestage varjatud teenuste localhost pordid</string>
- <string name="hidden_service_ports">Varjatud teenuste pordid</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">teie varjatud teenuste adresseeritav nimi (luuakse automaatselt)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">lubage väljastatav silumislogi (vaatamiseks peab kasutama kas adb või aLogCat utiliite) </string>
- <string name="project_home">Projekti kodu(d):</string>
- <string name="the_tor_license">Tor litsents</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Kolmanda osapoole tarkvara:</string>
- <string name="hidden_service_request">�ks rakendus soovib avada varjatud teenuse porti %S Tor võrgustikule. See on turvaline kui te usaldate seda rakendust.</string>
- <string name="found_existing_tor_process">leidus töötav Tor protsess...</string>
- <string name="something_bad_happened">Juhtus midagi halba. Kontrollige logi</string>
- <string name="hidden_service_on">varjatud teenused:</string>
- <string name="unable_to_read_hidden_service_name">ei õnnestu lugeda varjatud teenuse nime</string>
- <string name="unable_to_start_tor">Tor käivitamine ebaõnnestus:</string>
- <string name="pref_use_sys_iptables_title">Kasuta iptables vaikeseadeid</string>
- <string name="pref_use_sys_iptables_summary">kasuta Orbot\'iga kaasneva iptables binaari asemel süsteemset binaari</string>
- <string name="error_installing_binares">Tor binaaride paigaldamine või uuendamine ebaõnnestus.</string>
- <string name="pref_use_persistent_notifications">�hendatud Orbot korral näidata katkematult ikoonide tööriistariba</string>
- <string name="pref_use_persistent_notifications_title">Pidevalt kuvatavad teated</string>
- <string name="notification_using_bridges">Sillad lubatud!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Valige Orbot lokaat ja keel</string>
- <string name="wizard_locale_title">Valige keel</string>
- <string name="wizard_locale_msg">Jätkake vaikeväärtusega või vahetage kehtiv keel</string>
- <string name="btn_save_settings">Salvesta seaded</string>
- <string name="bandwidth_">Ribalaius:</string>
- <string name="down">alla</string>
- <string name="up">üles</string>
- <string name="pref_disable_network_title">Pole võrgu auto-und</string>
- <string name="pref_disable_network_summary">Pane Tor magama kui Internetiühendus puudub</string>
- <string name="newnym">Lülitusite uuele Tor identiteedile!</string>
- <string name="menu_use_chatsecure">Kasutage ChatSecure\'t</string>
- <string name="permission_manage_tor_label">Hallake Tor\'i</string>
- <string name="permission_manage_tor_description">Lubage sellel rakendusel hallata Tor teenust</string>
- <string name="install_apps_">Paigaldada rakendusi?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Interneti ühendus puudub. Panen Tori magama...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Interneti ühendus hea. �ratan Tori üles...</string>
-</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
deleted file mode 100644
index d8a8567..0000000
--- a/res/values-eu/strings.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Tor abiarazi eta gelditu</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot abiarazten ari da...</string>
- <string name="status_activated">Tor sarera konektatuta</string>
- <string name="status_disabled">\"Orbot desaktibatuta dago</string>
- <string name="tor_process_starting">Tor bezeroa hasten...</string>
- <string name="tor_process_complete">eginda.</string>
- <string name="tor_process_waiting">itxaroten.</string>
- <string name="not_anonymous_yet">ABISUA: Zure trafikoa ez da anonimoa oraindik! Mesedez konfigura itzazu zure aplikazioak 127.0.0.1:8118 HTTP proxya edo 127.0.0.1:9050 SOCKS4 edo SOCKS5 proxyak erabiltzeko</string>
- <string name="menu_home">Etxea</string>
- <string name="menu_browse">Arakatu</string>
- <string name="menu_settings">Ezarpenak</string>
- <string name="menu_log">Saioa hasi</string>
- <string name="menu_info">Laguntza</string>
- <string name="menu_start">Abiarazi</string>
- <string name="menu_stop">Gelditu</string>
- <string name="menu_about">Honi buruz</string>
- <string name="main_layout_download">Deskargatu</string>
- <string name="main_layout_upload">Igo</string>
- <string name="button_help">Laguntza</string>
- <string name="button_close">Itxi</string>
- <string name="button_about">Honi buruz</string>
- <string name="button_clear_log">Zerrenda Garbitu</string>
- <string name="menu_verify">Egiaztatu</string>
- <string name="menu_exit">Irten</string>
- <string name="press_to_start">- sakatu luze hasteko -</string>
- <string name="pref_trans_proxy_group">Proxyatze Gardena (Root behar du)</string>
- <string name="pref_trans_proxy_title">Proxyatze Gardena</string>
- <string name="pref_trans_proxy_summary">Aplikazioen Torifikatze Automatikoa</string>
- <string name="pref_transparent_all_title">Tor-tu Dena</string>
- <string name="pref_transparent_all_summary">Aplikazio guztien trafikoa Tor bidez proxyatu</string>
- <string name="pref_transparent_port_fallback_title">Azken aukerako proxy portuak</string>
- <string name="pref_transparent_port_fallback_summary">KONTUZ: Ohizko portuak sahiezten ditu (80, 443, etab.) *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil.</string>
- <string name="pref_transparent_port_title">Portu Zerrenda</string>
- <string name="pref_transparent_port_summary">Proxyak baimenduko dituen portuak. *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil</string>
- <string name="pref_transparent_port_dialog">Sartu proxyatzeko portuak</string>
- <string name="pref_has_root">Root sarrera eskatu</string>
- <string name="pref_has_root_summary">Root sarrera eskatu proxyatze gardenarentzat</string>
- <string name="status_install_success">Tor bitarrak zuzen instalatuta!</string>
- <string name="status_install_fail">Tor fitxategi bitarrak ezin izan dira instalatu. Mesedez ikusi erregistroa eta jakinarazi tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Aplikazio Akatsa</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orboti buruz</string>
- <string name="btn_next">Hurrengoa</string>
- <string name="btn_back">Atzera</string>
- <string name="btn_finish">Amaitu</string>
- <string name="btn_okay">Ados</string>
- <string name="btn_cancel">Utzi</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbot xehetasun batzuk</string>
- <string name="wizard_permissions_root">Baimena Emanda</string>
- <string name="wizard_permissions_stock">Orbot Baimenak</string>
- <string name="wizard_premissions_msg_root">Bikain! Orbotentzako root baimenak gaituta dituzula detektatu dugu.</string>
- <string name="wizard_permissions_msg_stock">Beharrezkoa ez den arren, Orbot tresna ahaltsuagoa bihurtu daiteke zure gailuak root atzipena badu. Erabili beheko botoia Orboteri superbotereak emateko!</string>
- <string name="wizard_permissions_no_root">Root atzipenik ez baduzu edo zertaz ari garen ez badakizu, ziurtatu zire appak Orbotekin lan egiteko konfiguratzen dituzula.</string>
- <string name="wizard_permissions_consent">Ulertzen dut eta supererabiltzaile gabe jarraitu nahiko nuke</string>
- <string name="wizard_permission_enable_root">Root Orboti eman</string>
- <string name="wizard_configure">Torifikazioa Konfiguratu</string>
- <string name="wizard_configure_msg">Orbotek zure aplikazio guztien EDO banan-banan hautatutako aplikazioen trafiko guztia Tor bidez bideratzeko aukera ematen dizu.</string>
- <string name="wizard_configure_all">Aplikazio guztiak Tor bidez proxyatu</string>
- <string name="wizard_configure_select_apps">Hautatu Banakako Aplikazioak Torentzat</string>
- <string name="wizard_tips_tricks">Orbot-gaitutako Aplikazioak</string>
- <string name="wizard_tips_msg">Azpiko appak Orbotekin lan egiteko garatuta daude. Sakatu botoi bakoitza orain instalatzeko, edo bilatu geroago Google Play-n, GuardianProject.info webgunean edo F-Droid.org erabiliz.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Andriodentzako berehalako mezulari bezero ziurra</string>
- <string name="wizard_tips_proxy">Proxy Ezarpenak - Ikasi zure aplikazioak Orbotekin funtziona dezaten nola konfiguratu</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Bilaketa Motorraren appa</string>
- <string name="wizard_tips_twitter">Twittereko proxyaren ostalarian \"localhost\" jarri eta portuan 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy Ezarpenak</string>
- <string name="wizard_final">Orbot prest dago!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Honek https://check.torproject.org web nabigatzailean irekiko du Orbot konfiguratuta eta Tor-era konektatuta zauden antzemateko.</string>
- <string name="pref_hs_group">Ezkutuko Zerbitzuak</string>
- <string name="pref_general_group">Orokorra</string>
- <string name="pref_start_boot_title">Hasi Orbot Abiarazterakoan</string>
- <string name="pref_start_boot_summary">Automatikoki Orbot hasi eta Tor konektatu zure Android gailua abiarazterakoan</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Abisua</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Baimenak</string>
- <string name="wizard_permissions_root_msg1">Aukera moduan Orbot-i \'Supererabiltzaile\' atzipena eman ahal diozu ezaugarri aurreratuak erabiltzeko, Proxy gardena adibidez.</string>
- <string name="wizard_permissions_root_msg2">Ez baduzu hau egin nahi ziurtatu Orbot-ekin lan egiten duten aplikazioak erabiltzen dituzula.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Gaitutako Aplikazioak</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Txat aplikazio segurua Off-the-Record enkriptazioarekin.</string>
- <string name="wizard_tips_play">Google Play-n Guardiak Proiektuko aplikazio guztiak bilatu</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxyatze Gardena</string>
- <string name="wizard_transproxy_msg">Honek zure aplikazioak konfiguratu beharrik Tor saretik joatea ahalbidetzen du.</string>
- <string name="wizard_transproxy_hint">(Gaituta utzi zertaz ari garez ulertzen ez baduzu)</string>
- <string name="wizard_transproxy_none">Bat ere ez</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Gaitu proxy gardena Wifi eta USB bidez Tethering-atutako gailuentzat (berrabiaraztea beharrezkoa)</string>
- <string name="button_grant_superuser">Supererabiltzaile sarrera eskatu</string>
- <string name="pref_select_apps">Aplikazioak hautatu</string>
- <string name="pref_select_apps_summary">Tor bidez bideratuko diren aplikazioak hautatu</string>
- <string name="pref_node_configuration">Nodo Konfigurazioa</string>
- <string name="pref_node_configuration_summary">Hauek zure anonimotasuna murriztu dezaketen ezarpen aurreratuak dira</string>
- <string name="pref_entrance_node">Sarrera Nodoak</string>
- <string name="pref_entrance_node_summary">Lehen jauzirako hatzmarka, ezizen, herrialde eta helbideak</string>
- <string name="pref_entrance_node_dialog">Sartu Sarrera Nodoak</string>
- <string name="pref_proxy_title">Irteera sareko proxya (Aukerazkoa)</string>
- <string name="pref_proxy_type_title">Proxy mota</string>
- <string name="pref_proxy_type_summary">Proxy zerbitzariarentzako erabiltzeko protokoloak: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Sartu Proxy Mota</string>
- <string name="pref_proxy_host_title">Proxy Ostalaria</string>
- <string name="pref_proxy_host_summary">Proxy zerbitzariaren helbidea</string>
- <string name="pref_proxy_host_dialog">Sartu Proxy Ostalaria</string>
- <string name="pref_proxy_port_title">Proxy Portua</string>
- <string name="pref_proxy_port_summary">Proxy zerbitzariaren portua</string>
- <string name="pref_proxy_port_dialog">Sartu Proxy portua</string>
- <string name="pref_proxy_username_title">Irteerako proxyaren erabiltzaile izena</string>
- <string name="pref_proxy_username_summary">Proxy erabiltzaile izena (Aukerazkoa)</string>
- <string name="pref_proxy_username_dialog">Sartu proxy erabiltzailea</string>
- <string name="pref_proxy_password_title">Irteerako proxyaren pasahitza</string>
- <string name="pref_proxy_password_summary">Proxy pasahitza (Aukerazkoa)</string>
- <string name="pref_proxy_password_dialog">Sartu proxy pasahitza</string>
- <string name="status">Egoera</string>
- <string name="setting_up_full_transparent_proxying_">Guztientzako proxy gardena martxan ezartzen...</string>
- <string name="setting_up_app_based_transparent_proxying_">Aplikazioetan oinarritutako proxy transparentea ezartzen...</string>
- <string name="transparent_proxying_enabled">Proxyatze gardena GAITUTA</string>
- <string name="transproxy_enabled_for_tethering_">Proxy gardena gaituta Tethering-ean!</string>
- <string name="warning_error_starting_transparent_proxying_">ABISUA: akatsa proxyatze gardena hasterakoan!</string>
- <string name="transproxy_rules_cleared">Proxy gardeneko erregelak garbituta</string>
- <string name="couldn_t_start_tor_process_">Ezin izan da Tor prozesua hasi:</string>
- <string name="setting_up_port_based_transparent_proxying_">Portuetan oinarritutako proxy gardena ezartzen...</string>
- <string name="bridge_error">Zubi Akatsa</string>
- <string name="bridge_requires_ip">Zubi ezaiugarria erabiltzeko gutxienez zubi baten IP helbidea sartu behar duzu.</string>
- <string name="send_email_for_bridges">Gmail kontutik bridges@xxxxxxxxxxxxxx helbidera eposta bat bidali gorputzean \"get bridges\" lerroa duena.</string>
- <string name="error">Akatsa</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Zure helbide atzigarriak salbuespena sortu du!</string>
- <string name="your_relay_settings_caused_an_exception_">Zure errele ezarpenak salbuespena sortu dute!</string>
- <string name="exit_nodes">Irteera Nodoak</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Hatzmarkak, ezizenak, herrialdeak eta helbideak azkeneko jauzirako</string>
- <string name="enter_exit_nodes">Irteera Nodoak sartu</string>
- <string name="exclude_nodes">Nodoak baztertu</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Baztertuko diren hatzmarkak, ezizenak, herrialdeak eta helbideak</string>
- <string name="enter_exclude_nodes">Baztertzeko nodoak sartu</string>
- <string name="strict_nodes">Nodo hertsiak</string>
- <string name="use_only_these_specified_nodes">*Bakarrik* zehaztutako nodo hauek erabili</string>
- <string name="bridges">Zubiak</string>
- <string name="use_bridges">Zubiak erabili</string>
- <string name="bridges_obfuscated">Nahasitako Zubiak</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor sarera sartzeko nodo alternatiboak gaitu</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Gaitu konfiguratutako zubiak nahasitako zubiak badira</string>
- <string name="ip_address_and_port_of_bridges">IP helbidea eta zubien portua</string>
- <string name="enter_bridge_addresses">Sartu Zubi Helbideak</string>
- <string name="relays">Erreleak</string>
- <string name="relaying">Erreleatzea</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Zure gailua ez-irteerako errelea izatea gaitu</string>
- <string name="relay_port">Errele Portua</string>
- <string name="listening_port_for_your_tor_relay">Zure Tor errelearentzako entzuteko portua</string>
- <string name="enter_or_port">Sartu OR portua</string>
- <string name="relay_nickname">Errele ezizena</string>
- <string name="the_nickname_for_your_tor_relay">Zure Tor errelearen ezizena</string>
- <string name="enter_a_custom_relay_nickname">Sartu gustoko errelearen ezizena</string>
- <string name="reachable_addresses">Helbide atzigarriak</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Suheziaren atzean exekutatu politika murriztaileekin</string>
- <string name="reachable_ports">Portu atzigarriak</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Suhezi murriztailetik atzigarri diren portuak</string>
- <string name="enter_ports">Portuak sartu</string>
- <string name="enable_hidden_services">Ezkutuko Zerbitzuak Gaitu</string>
- <string name="run_servers_accessible_via_the_tor_network">gailuko zerbitzuak Tor saretik atzitzea gaitu</string>
- <string name="enter_localhost_ports_for_hidden_services">sartu localhost portuak ezkutuko zerbitzuentzat</string>
- <string name="hidden_service_ports">Ezkutuko Zerbitzu Portuak</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">zure eskutuko zerbitzuaren izen atzigarria (automatikoki sortuta)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">arazketarako logak gaitu (adb edo aLogCat erabili ikusteko)</string>
- <string name="project_home">Proiektuaren etxea(k):</string>
- <string name="the_tor_license">Tor Lizentzia</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3.-Ataleko-Softwarea:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %S portua ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
- <string name="found_existing_tor_process">Aurreko Tor prozesua topatuta...</string>
- <string name="something_bad_happened">Zerbait txarra gertatu da. Begiratu logetan</string>
- <string name="hidden_service_on">ezkutuko zerbitzua hemen:</string>
- <string name="unable_to_read_hidden_service_name">ezkutuko zerbitzuare izena ezin da irakurri</string>
- <string name="unable_to_start_tor">Ezin izan da Tor hasi:</string>
- <string name="pref_use_sys_iptables_title">Lehenetsitako Iptables erabili</string>
- <string name="pref_use_sys_iptables_summary">Sistemako iptables programa erabili Orbot-ekin datorreraren ordez</string>
- <string name="error_installing_binares">Tor programak ezin izan dira instalatu edo eguneratu.</string>
- <string name="pref_use_persistent_notifications">Orbot konektatuta dagoenean ikonoa tresna barran mantendu beti</string>
- <string name="pref_use_persistent_notifications_title">Jakinarazpenetan beti</string>
- <string name="notification_using_bridges">Zubiak gaituta!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Aukeratu Orbotentzako lokala eta hizkuntza</string>
- <string name="wizard_locale_title">Hizkuntza aukeratu</string>
- <string name="wizard_locale_msg">Lehenetsia utzi edo uneko hizkuntzara aldatu</string>
- <string name="powered_by">Tor-ek eskainita</string>
- <string name="btn_save_settings">Ezarpenak gorde</string>
- <string name="no_internet_connection_tor">Ez dago Interneterako konexiorik; Tor egonean dago...</string>
- <string name="bandwidth_">Banda zabalera:</string>
- <string name="down">behera</string>
- <string name="up">gora</string>
- <string name="pref_disable_network_title">Sareko lokartze automatikorik ez</string>
- <string name="pref_disable_network_summary">Jarri Tor lotan internet atzigarri ez dagoenean</string>
- <string name="newnym">ChatSecure - Andriodentzako berehalako mezulari bezero ziurra</string>
- <string name="menu_use_chatsecure">ChatSecure erabili</string>
- <string name="permission_manage_tor_label">Tor kudeatu</string>
- <string name="permission_manage_tor_description">Gaitu app hau Tor zerbitzua kontrolatzeko</string>
- <string name="install_apps_">App-ak instalatu?</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="menu_qr">QR Kodeak</string>
- <string name="standard_browser">Nabigatzaile Estandarra</string>
-</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
deleted file mode 100644
index 746923b..0000000
--- a/res/values-fa/strings.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">ربات Ù¾Û?ازÛ?</string>
- <string name="app_description">اربت Û?Ú© برÙ?اÙ?Ù? پرÙ?کسÛ? Ù?جاÙ?Û? است Ú©Ù? دÛ?گر برÙ?اÙ?Ù? Ù?ا را بÙ? استÙ?ادÙ? اÙ?Ù? از اÛ?Ù?ترÙ?ت تÙ?اÙ?Ù?Ù?د Ù?Û? Ú©Ù?د . اربÙ?ت از تÙ?ر براÛ? رÙ?زگذارÛ? کردÙ? تراÙ?Û?Ú© اÛ?Ù?ترÙ?ت Ø´Ù?ا استÙ?ادÙ? Ù?Û? Ú©Ù?د Ù? بعد Ø¢Ù? Ù?ا را از طرÛ?Ù? کاÙ?Ù¾Û?Ù?ترÙ?اÛ? Ù?تÙ?اÙ?ت در Ù?Ù?اط Ù?ختÙ?Ù? جÙ?اÙ? Ù?Ø®Ù?Û? Ù?Û? Ú©Ù?د. تÙ?ر Û?Ú© برÙ?اÙ?Ù? Ù?جاÙ?Û? Ù? شبکÙ? باز است Ú©Ù? Ø´Ù?ا از Ø´Ù?ا در Ù?Ù?ابÙ? تØت Ù?ظر بÙ?دÙ? در شبکÙ?Ù¬â?? تÙ?دÛ?د آزادÛ? Ù?اÛ? شخصÛ?Ù¬ خصÙ?صÛ?Ù¬ Ù?عاÙ?Û?ت Ù?اÛ? کارÛ? Ù? رابطÙ? Ù?اÛ? شخصÛ? بطÙ?ر اÙ?Ù? Ù?ØاÙ?ظت Ù?Û? Ú©Ù?د. </string>
- <string name="internal_web_url">https://guardianproject.info/apps/orbot/</string>
- <string name="default_web_url">https://check.torproject.org/?lang=fa_IR</string>
- <string name="secure_default_web_url">https://check.torproject.org/?lang=fa_IR</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">شرÙ?ع Ù? پاÛ?اÙ? تÙ?ر</string>
- <string name="tor_proxy_service_process">سرÙ?Ù?س پرÙ?کسÛ? تÙ?ر</string>
- <string name="status_starting_up">اربÙ?ت درØاÙ? آغاز است...</string>
- <string name="status_activated">Ù?تصÙ? بÙ? شبکÙ? تÙ?ر</string>
- <string name="status_disabled">اربÙ?ت غÛ?رÙ?عاÙ? شدÙ? است.</string>
- <string name="status_shutting_down">TorService خاÙ?Ù?Ø´ است</string>
- <string name="tor_process_starting">شرÙ?ع Ú©Ù?اÛ?Ù?ت تÙ?ر...</string>
- <string name="tor_process_complete">تÙ?اÙ?.</string>
- <string name="tor_process_waiting">در ØاÙ? اÙ?تظار.</string>
- <string name="not_anonymous_yet">Ù?شدار: Ù?عاÙ?Û?ت Ø´Ù?ا Ù?Ù?Ù?ز \"Ú¯Ù?Ù?اÙ?\" Ù?Û?ست! Ù?Ø·Ù?Ù? اپÙ?Û?Ú©Û?Ø´Ù? Ø®Ù?د را تÙ?ظÛ?Ù? Ú©Ù?Û?د تا از HTTP پرÙ?کسÛ? 127.0.0.1:8118 Ù? Û?ا SOCKS4A Ù? Û?ا SOCKS5 پرÙ?کسÛ? 127.0.01:9050 استÙ?ادÙ? Ú©Ù?د.</string>
- <string name="menu_home">خاÙ?Ù?</string>
- <string name="menu_browse">Ù?رÙ?ر</string>
- <string name="menu_settings">تÙ?ظÛ?Ù?ات</string>
- <string name="menu_log">Ù?رÙ?د</string>
- <string name="menu_info">Ú©Ù?Ú©</string>
- <string name="menu_apps">Ù?Û? Ù¾Û? اÙ?</string>
- <string name="menu_start">آغاز</string>
- <string name="menu_stop">اÛ?ست</string>
- <string name="menu_about">دربارÙ?</string>
- <string name="menu_promo_apps">درÛ?اÙ?ت برÙ?اÙ?Ù? Ù?ا ...</string>
- <string name="main_layout_download">داÙ?Ù?Ù?د</string>
- <string name="main_layout_upload">آپÙ?Ù?د</string>
- <string name="button_help">Ú©Ù?Ú©</string>
- <string name="button_close">بستÙ?</string>
- <string name="button_about">دربارÙ?</string>
- <string name="button_clear_log">پاکسازÛ? Ù?رد</string>
- <string name="menu_verify">بررسÛ?</string>
- <string name="menu_exit">خرÙ?ج</string>
- <string name="menu_scan">اسکÙ? BridgeQR</string>
- <string name="menu_share_bridge">اشتراک BridgeQR</string>
- <string name="press_to_start">- Ù?Ú¯Ù?دارÛ?د براÛ? شرÙ?ع -</string>
- <string name="pref_trans_proxy_group">پرÙ?کسÛ?دÙ? Ø´Ù?اÙ? (Ù?Û?از بÙ? Root دارد)</string>
- <string name="pref_trans_proxy_title">پرÙ?کسÛ? Ø´Ù?اÙ?</string>
- <string name="pref_trans_proxy_summary">تÙ?ر-Ù?Ù?اÛ?Û? اتÙ?Ù?اتÛ?Ú© اپÙ?Û?Ú©Û?Ø´Ù? Ù?ا</string>
- <string name="pref_transparent_all_title">تÙ?ر Ù?Ù?Ù? Ú?Û?ز</string>
- <string name="pref_transparent_all_summary">Ù?عاÙ?Û?ت Ù?Ù?Ù? اپÙ?Û?Ú©Û?Ø´Ù? Ù?ا را از طرÛ?Ù? تÙ?ر پرÙ?کسÛ? Ú©Ù?Û?د.</string>
- <string name="pref_transparent_port_fallback_title">Ù?طع پرÙ?کسÛ? Ù¾Ù?رت</string>
- <string name="pref_transparent_port_fallback_summary">Ù?شدار: Ù¾Ù?رتÙ?اÛ? راÛ?ج دÙ?ر زدÙ? (80, 444, غÛ?رÙ?). *Ù?Ù?Ø· در شراÛ?Ø·Û? استÙ?ادÙ? Ú©Ù?Û?د* Ú©Ù? ØاÙ?ت Ù?اÛ? \'Ù?Ù?Ù?\' Û?ا \'اپÙ?Û?Ú©Û?Ø´Ù?\' کار Ù?Ù?Û?Ú©Ù?د.</string>
- <string name="pref_transparent_port_title">Ù?Ù?رست Ù¾Ù?رت</string>
- <string name="pref_transparent_port_summary">Ù?Ù?رست پرتÙ?ا بÙ? پرÙ?کسÛ?.*Ù?Ù?Ø· در شراÛ?Ø·Û? استÙ?ادÙ? Ú©Ù?Û?د* Ú©Ù? ØاÙ?ت Ù?اÛ? \'Ù?Ù?Ù?\' Û?ا \'اپÙ?Û?Ú©Û?Ø´Ù?\' کار Ù?Ù?Û?Ú©Ù?د.</string>
- <string name="pref_transparent_port_dialog">Ù¾Ù?رت Ù?ا را بÙ? پرÙ?کسÛ? Ù?ارد Ú©Ù?</string>
- <string name="pref_has_root">درخÙ?است دسترسÛ? root</string>
- <string name="pref_has_root_summary"> درخÙ?است دسترسÛ? رÙ?Ù? براÛ? پرÙ?کسÛ? کردÙ? Ø´Ù?اÙ? </string>
- <string name="status_install_success">باÛ?Ù?رÛ? Ù?اÛ? تÙ?ر با Ù?Ù?Ù?Ù?Û?ت Ù?صب شدÙ?د!</string>
- <string name="status_install_fail">Ù?صب Ù?اÛ?Ù? Ù?اÛ? دÙ?تاÛ?Û? تÙ?ر Ù?Ù?Ú©Ù? Ù?بÙ?د. Ù?Ø·Ù?Ù? Ù?طعÙ? را Ù?ارسÛ? Ú©Ù?Û?د Ù? بÙ? tor-assistance@xxxxxxxxxxxxxx اطÙ?اع دÙ?Û?د.</string>
- <string name="title_error">خطاÛ? اپÙ?Û?Ú©Û?Ø´Û?Ù?</string>
- <string name="wizard_title">اÙ?ربÙ?ت</string>
- <string name="wizard_btn_tell_me_more">دربارÙ? اÙ?ربÙ?ت</string>
- <string name="btn_next">بعدÛ?</string>
- <string name="btn_back">بازگشت</string>
- <string name="btn_finish">پاÛ?اÙ?</string>
- <string name="btn_okay">Ù?بÙ?Ù?</string>
- <string name="btn_cancel">Ù?غÙ?</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">برخÛ? جزÛ?Û?ات دربارÙ? اÙ?ربÙ?ت</string>
- <string name="wizard_details_msg">اربت Û?Ú© برÙ?اÙ?Ù? زباÙ? باز است Ú©Ù? شاÙ?Ù? Tor, LibEvent and Polipo Ù?Û? Ø´Ù?د Ù? Ù?ظÛ?Ù?Ù? Ø¢Ù? ارائÙ? local HTTP proxy (8118) Ù? SOCKS proxy (9050) بÙ? شبکÙ? تÙ?ر است. Ù?Ù?Ú?Ù?Û?Ù? اربت اÛ?Ù? Ù?ابÙ?Û?ت را در دستگاÙ? Ù?اÛ? رÛ?Ø´Ù? دار دارد Ú©Ù? Ù?Û? تÙ?اÙ?د تراÙ?Û?Ú© اÛ?Ù?ترÙ?ت را از طرÛ?Ù? تÙ?ر ارساÙ? Ú©Ù?د. </string>
- <string name="wizard_permissions_root">Ù?جÙ?ز صادر گردÛ?د</string>
- <string name="wizard_permissions_stock">Ù?جÙ?زÙ?اÛ? اÙ?ربÙ?ت</string>
- <string name="wizard_premissions_msg_root">بسÛ?ار عاÙ?Û?! اÛ?Ù?Ø·Ù?ر Ú©Ù? Ù?عÙ?Ù?Ù? است Ø´Ù?ا داراÛ? Ù?جÙ?ز root براÛ? Ù?عاÙ? کردÙ? ربات Ù¾Û?ازÛ? Ù?ستÛ?د. اÛ?Ù? اÙ?کاÙ? را بخÙ?بÛ? Ù?Ù?رد استÙ?ادÙ? Ù?رار Ø®Ù?اÙ?Û?Ù? داد.</string>
- <string name="wizard_permissions_msg_stock">Ù?رÚ?Ù?د ضرÙ?رت Ù?دارد اÙ?ا اگر سÛ?ستÙ? Ø´Ù?ا داراÛ? دسترسÛ? root باشد ربات Ù¾Û?ازÛ? با ظرÙ?Û?ت بسÛ?ار بÛ?شترÛ? عÙ?Ù? Ø®Ù?اÙ?د کرد. دکÙ?Ù? زÛ?ر را Ù?شار دÙ?Û?د تا ربات Ù¾Û?ازÛ? داراÛ? ظرÙ?Û?ت ØداکثرÛ? بشÙ?د.</string>
- <string name="wizard_permissions_no_root">اگر سÛ?ستÙ? Ø´Ù?ا داراÛ? دسترسÛ? root Ù?Û?ست Ù? Û?ا اصÙ?ا Ú?Û?زÛ? از اÛ?Ù? عبارت Ù?تÙ?جÙ? Ù?Ù?Û? Ø´Ù?Û?دØ? ØتÙ?ا سعÛ? Ú©Ù?Û?د از اپÙ?Ú©Û?Ø´Ù? Ù?اÛ?Û? استÙ?ادÙ? Ú©Ù?Û?د Ú©Ù? Ù?Û?Ú?Ù? ربات Ù¾Û?ازÛ? تÙ?Û?Ù? شدÙ? اÙ?د.</string>
- <string name="wizard_permissions_consent">Ù?تÙ?جÙ? Ù?ستÙ? Ù? ترجÛ?Ø Ù?Û? دÙ?Ù? بدÙ?Ù? root اداÙ?Ù? بدÙ?Ù?.</string>
- <string name="wizard_permission_enable_root">Ù?اگذارÛ? دسترسÛ? root براÛ? ربات Ù¾Û?ازÛ?</string>
- <string name="wizard_configure">تÙ?ظÛ?Ù?ات تبدÛ?Ù? بÙ? تÙ?ر</string>
- <string name="wizard_configure_msg">ربات Ù¾Û?ازÛ? بÙ? Ø´Ù?ا اÙ?کاÙ? Ù?Û? دÙ?د Ú©Ù? تÙ?اÙ? اپÙ?Û?Ú©Ø´Û?Ù? Ù?ا را از طرÛ?Ù? تÙ?ز Ù?Ù?تÙ?Ù? Ú©Ù?Û?د Ù? Û?ا اپÙ?Û?Ú©Û?Ø´Ù? Ù?Ù?رد Ù?ظر Ø®Ù?د را شخصÙ? اÙ?تخاب Ú©Ù?Û?د.</string>
- <string name="wizard_configure_all">تÙ?اÙ? اپÙ?Û?Ú©Û?Ø´Ù? Ù?ا را از طرÛ?Ù? تÙ?ر Ù?Ù?تÙ?Ù? Ú©Ù?Û?د.</string>
- <string name="wizard_configure_select_apps">اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ? Ù?Ù?Ù?رد براÛ? تÙ?ر اÙ?تخاب Ú©Ù?Û?د.</string>
- <string name="wizard_tips_tricks">اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ?Û? Ú©Ù? براÛ? ربات Ù¾Û?ازÛ? تÙ?ظÛ?Ù? شدÙ? اÙ?د</string>
- <string name="wizard_tips_msg">تÙ?صÛ?Ù? Ù?Û? Ú©Ù?Û?Ù? داÙ?Ù?Ù?Ù?د Ù? Ù?عاÙ? Ú©Ù?Û?دØ? اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ?Û? را استÙ?ادÙ? Ú©Ù?Û?د Ú©Ù? Ù?ستÙ?Û?Ù? بÙ? اÙ?ربÙ?ت Ù?صÙ? Ù?Û? Ø´Ù?Ù?د. دکÙ?Ù? Ù?اÛ? زÛ?ر را Ù?شار دÙ?Û?د تا Ù?صب Ø´Ù?د.</string>
- <string name="wizard_tips_otrchat">ChatSecure - برÙ?اÙ?Ù? اÙ?Ù? ارساÙ? Ù¾Û?غاÙ? Ù?Ù?رÛ? براÛ? اÙ?درÙ?ئÛ?د</string>
- <string name="wizard_tips_proxy">تÙ?ظÛ?Ù?ات پرÙ?کسÛ? - Û?ادگÛ?رÛ? تÙ?ظÛ?Ù? اپÙ?Û?Ú©Û?Ø´Ù? Ù?ا براÛ? کار با اÙ?ربÙ?ت</string>
- <string name="wizard_tips_duckgo">اپÙ?Û?Ú©Û?Ø´Ù? Ù?Ù?تÙ?ر جستجÙ?Û? داک داک Ú¯Ù?</string>
- <string name="wizard_tips_twitter">تÙ?Û?Û?تر از \"http proxy \"localhost:8118 پشتÛ?باÙ?Û? Ù?Û? Ú©Ù?د</string>
- <string name="wizard_tips_story_maker">StoryMaker - ساختÙ? Û?Ú© داستاÙ? Ù? ترک Ø¢Ù? بÙ? Tor براÛ? اÙ?Ù?Û?ت!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">تÙ?ظÛ?Ù?ات پرÙ?کسÛ?</string>
- <string name="wizard_proxy_help_msg">اگر برÙ?اÙ?Ù? Ø¢Ù?درÙ?Û?دÛ? Ú©Ù? استÙ?ادÙ? Ù?Û? Ú©Ù?Û?د Ù?Û? تÙ?اÙ?د از استÙ?ادÙ? HTTP Û?ا SOCKS proxy ساپÙ?رت Ú©Ù?د٬ پس Ù?Û? تÙ?اÙ?Û?د Ø¢Ù? را براÛ? اتصاÙ? بÙ? اÙ?ربÙ?ت استÙ?ادÙ? از تÙ?ر تÙ?ظÛ?Ù? Ú©Ù?Û?د. .\n\n\n تÙ?ظÛ?Ù?ات Ù?است 127.0.0.1 Û?ا \"localhost\". براÛ? HTTP تÙ?ظÛ?Ù? Ù¾Ù?رت 8118 است. براÛ? SOCKS Ù¬ پرÙ?کسÛ? 9050. اگر اÙ?کاÙ?Ø´ Ù?جÙ?د دارد از SOCKS4A Û?ا SOCKS5 استÙ?ادÙ? Ú©Ù?Û?د. \n \n\n\n Ù?Û? تÙ?اÙ?Û?د در Ù?Ù?رد پرÙ?کسÛ? در Ø¢Ù?درÙ?Û?د بÛ?شتر بÛ?اÙ?Ù?زÛ?د در
- http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">اÙ?ربÙ?ت Ø¢Ù?ادÙ? استÙ?ادÙ? Ù?Û?باشد!</string>
- <string name="wizard_final_msg">بسÛ?ارÛ? از Ù?ردÙ? در سرتاسر جÙ?اÙ? از تÙ?ر بÙ? دÙ?اÛ?Ù? Ù?تÙ?اÙ?ت استÙ?ادÙ? Ù?Û? Ú©Ù?Ù?د.\n\n خبرÙ?گارÙ?ا Ù? بÙ?اگرÙ?ا٬ Ù?عاÙ?اÙ? ØÙ?Ù?Ù? بشر٬ سربازاÙ?Ù¬ Ù?اÙ?Ù?راÙ? اجراÛ? Ù?اÙ?Ù?Ù?Ù¬ Ø´Ù?رÙ?Ù?داÙ? رÚ?Û?Ù? Ù?اÛ? سرکÙ?بگر Ù? Ù?ردÙ? Ù?عÙ?Ù?Ù?Û?... Ù? ØاÙ?ا تÙ? </string>
- <string name="wizard_exit_at_first_screen_toast">Ù?Ø·Ù?ا اÙ?ربÙ?ت را Ù¾Û?کربÙ?دÛ? Ú©Ù?Û?د Ù?بÙ? از اÛ?Ù?Ú©Ù? Ø´Ù?ا شرÙ?ع بÙ? استÙ?ادÙ? از Ø¢Ù? Ú©Ù?Û?د!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">با Ù?Ù?Ù?Ù?Û?ت بÙ? شبکÙ? Tor Ù?تصÙ? شدÙ? اÛ?د - اÙ?ا اÛ?Ù? بداÙ? Ù?عÙ?ا Ù?Û?ست دستگاÙ? Ø´Ù?ا اÙ?Ù? است. Ø´Ù?ا Ù?Û? تÙ?اÙ?Û?د استÙ?ادÙ? Ú©Ù?Û?د از Ú©Ù?Û?د \"Ù?رÙ?رگر\" براÛ? تست اتصاÙ? . \n\n دربارÙ? Ù?ا در https://guardianproject.info/apps/orbot Ù? Û?ا ارساÙ? اÛ?Ù?Û?Ù? بÙ? help@xxxxxxxxxxxxxxxxxxxx براÛ? کسب اطÙ?اعات بÛ?شتر.</string>
- <string name="tor_check">با اÛ?Ù? Ù?دÙ? Ù¾Û?Ø´Ù?رض Ù?رÙ?رگر Ù?ب Ø´Ù?ا بÙ? صÙ?ØÙ? https://check.torproject.org باز Ù?Û? Ø´Ù?د تا Ø´Ù?ا Ù?شاÙ?دÙ? Ú©Ù?Û?د Ø¢Û?ا ربات Ù¾Û?ازÛ? تÙ?ظÛ?Ù? شدÙ? است Ù? Ø¢Û?ا Ø´Ù?ا بÙ? تÙ?ر Ù?صÙ? شدÙ? اÛ?د Û?ا Ù?Ù?.</string>
- <string name="pref_hs_group">سرÙ?Ù?س Ù?اÛ? Ù?Ø®Ù?Û? Ù?است</string>
- <string name="pref_general_group">Ú©Ù?Û?</string>
- <string name="pref_start_boot_title">اÙ?ربÙ?ت را Ù?Ù?زÙ?اÙ? با بÙ?ت آغاز Ú©Ù?</string>
- <string name="pref_start_boot_summary">Ù?Ù?تÛ? اÙ?درÙ?Û?د بÙ?ت شدØ? بصÙ?رت Ø®Ù?دکار ربات Ù¾Û?ازÛ? را اجرا Ù? Ø¢Ù? را بÙ? شبکÙ? تÙ?ر Ù?تصÙ? Ú©Ù?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">اربت٬ تÙ?ر را براÛ? Ø¢Ù?درÙ?Û?د Ù?Û? Ø¢Ù?رد تا از Ù?ØتÙ?Û?ات Ù?Û?Ù?تر شدÙ?Ù¬ Ø¢Ù?اÙ?Û?ز تراÙ?Û?Ú© Ù? Ú©Ù?ترÙ? شبکÙ? Ú©Ù? خطرÛ? براÛ? ØرÛ?Ù? خصÙ?صÛ? است Ù? اطÙ?اعات شخصÛ? Ù? رابطÙ? Ù?ا دÙ?اع Ú©Ù?د. \n\nT اÛ?Ù? جادÙ?گر براÛ? تÙ?ظÛ?Ù? اربت Ù? تÙ?ر در دستگاÙ? Ø´Ù?ا Ú©Ù?Ú© Ù?Û? Ú©Ù?د. </string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ù?شدار</string>
- <string name="wizard_warning_msg">Ù?صب کردÙ? اربت بÙ? Ø®Ù?دÛ? Ø®Ù?د تراÙ?Û?Ú© Ù?Ù?باÛ?Ù? Ø´Ù?ا را Ù?اشÙ?اس Ù?Ø®Ù?اÙ?د کرد.\n\n باÛ?د ØتÙ?ا اربت را در دستگاÙ? Û?ا برÙ?اÙ?Ù? اÛ? Ú©Ù? از Ø¢Ù? استÙ?ادÙ? Ù?Û? Ú©Ù?Û?د براÛ? استÙ?ادÙ? از تÙ?ر تÙ?ظÛ?Ù? Ù?Ù?اÛ?Û?د.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">دسترسÛ?â??Ù?ا</string>
- <string name="wizard_permissions_root_msg1">اگر بخÙ?اÙ?Û?د Ù?Û?تÙ?اÙ?Û?د بÙ? ربات Ù¾Û?ازÛ? اجازÙ? دسترسÛ? سÙ?پر Û?Ù?زر بدÙ?Û?د تا Ù?Û?Ú?Ú¯Û?Ù?اÛ? Ù¾Û?شرÙ?تÙ? Ù?اÙ?Ù?د پرÙ?کسÛ? Ø´Ù?اÙ? را Ù?عاÙ? Ú©Ù?د </string>
- <string name="wizard_permissions_root_msg2">اگر Ù?Ù?Û?Ø®Ù?اÙ?Û?د اÛ?Ù? کار را اÙ?جاÙ? دÙ?Û?د Ø? Ù?Ø·Ù?ا Ù?Ø·Ù?ئÙ? Ø´Ù?Û?د Ú©Ù? از اپÙ?Û?Ú©Û?Ø´Ù?Ù?اÛ?Û? استÙ?ادÙ? Ù?Û? Ú©Ù?Û?د Ú©Ù? با ربات Ù¾Û?ازÛ? کار Ù?Û? Ú©Ù?Ù?د</string>
- <string name="wizard_permissions_no_root_msg">بÙ?ظر Ù?Û? رسد دستگاÙ? Ø´Ù?ا رÛ?Ø´Ù? Ù?دارد Û?ا رÛ?Ø´Ù? اÛ? ارائÙ? Ú©Ù?د Û?ا دسترسÛ? بÙ? کاربرÛ? Ù?دÛ?ر داشتÙ? باشد. \n\n Ù?Ø·Ù?ا ØاÙ?ت Apps را در صÙ?ØÙ? اصÙ?Û? رÙ?Ø´Ù? Ù?Ù?اÛ?Û?د. </string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title"> اپÙ?Û?Ú©Û?Ø´Ù?Ù?اÛ?Û? Ú©Ù? ربات Ù¾Û?ازÛ? رÙ?Û? Ø¢Ù?Ù?ا Ù?عاÙ? است</string>
- <string name="wizard_tips_gibberbot">ChatSecure: برÙ?اÙ?Ù? Ú¯Ù?تگÙ?Û? اÙ?Ù? Ù?ØرÙ?اÙ?Ù? با Ù?ابÙ?Û?ت رÙ?زگزارÛ?</string>
- <string name="wizard_tips_play">تÙ?اÙ?Ù? برÙ?اÙ?Ù? Ù?اÛ? Guardian Project را در Google Play Ù¾Ù?دا Ù?Ù?Ù?د.</string>
- <string name="wizard_tips_fdroid">Û?اÙ?تÙ? Ù?Ù?Ù? برÙ?اÙ?Ù? Ù?اÛ? Guardian Project در F-Droid</string>
- <string name="wizard_tips_fdroid_org">Û?اÙ?تÙ? Ù?Ù?Ù? برÙ?اÙ?Ù? Ù?اÛ? Guardian Project در https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">پرÙ?کسÛ? کردÙ? Ø´Ù?اÙ?</string>
- <string name="wizard_transproxy_msg">اÛ?Ù? بÙ? برÙ?اÙ?Ù? Ù?ا بÙ? Ø´Ù?ا اجازÙ? Ù?Û?دÙ?د Ú©Ù? بدÙ?Ù? Ù?Û?Ú? تÙ?ظÛ?Ù?Û?Ø? بصÙ?رت Ø®Ù?دکار از طرÛ?Ù? شبکÙ? تÙ?ر اجرا Ø´Ù?Ù?د</string>
- <string name="wizard_transproxy_hint">(اگر Ù?Û?Ú? اÛ?دÙ?â??اÛ? Ù?دارÛ?د Ú©Ù? راجع بÙ? Ú?Ù? Ú?Û?زÛ? ØرÙ? Ù?Û?زÙ?Û?Ù? اÛ?Ù? گزÛ?Ù?Ù? را اÙ?تخاب Ú©Ù?Û?د)</string>
- <string name="wizard_transproxy_none">Ù?Û?Ù?Ú?</string>
- <string name="pref_transparent_tethering_title"> تترÛ?Ù?Ú¯ از طرÛ?Ù? تÙ?ر</string>
- <string name="pref_transparent_tethering_summary">پرÙ?کسÛ? Ø´Ù?اÙ? از طرÛ?Ù? تÙ?ر را براÛ? دستگاÙ? Ù?اÛ?Û? Ú©Ù? با Û?Ù? اس بÛ? Û?ا Ù?اÛ? Ù?اÛ? تتر شدÙ? اÙ?د Ù?جاز Ú©Ù?. (بÙ? رÛ? استارت Ù?Û?از دارÙ?د)</string>
- <string name="button_grant_superuser">درخÙ?است دسترسÛ? براÛ? سÙ?پرÛ?Ù?زر</string>
- <string name="pref_select_apps">اÙ?تخاب برÙ?اÙ?Ù? Ù?ا</string>
- <string name="pref_select_apps_summary"> اÙ?تخاب اپÙ?Û?Ú©Û?Ø´Ù? براÛ? Ù?سÛ?رÛ?ابÛ? از طرÛ?Ù? تÙ?ر </string>
- <string name="pref_node_configuration">تÙ?ظÛ?Ù?ات گرÙ?</string>
- <string name="pref_node_configuration_summary">اÛ?Ù?Ù?ا تÙ?ظÛ?Ù?ات Ù¾Û?شرÙ?تÙ? اÛ? Ù?ستÙ?د Ú©Ù? Ù?Ù?Ú©Ù? است Ú¯Ù?Ù?اÙ?Û? Ø´Ù?ا را کاÙ?Ø´ دÙ?Ù?د</string>
- <string name="pref_entrance_node">گرÙ? Ù?اÛ? Ù?رÙ?دÛ?</string>
- <string name="pref_entrance_node_summary">اثراÙ?گشت Ù?اØ? اساÙ?Û? Ù?ستعارØ? Ú©Ø´Ù?رÙ?ا Ù? آدرسÙ?اÛ? جÙ?Ø´ اÙ?Ù?</string>
- <string name="pref_entrance_node_dialog">گرÙ? Ù?اÛ? Ù?رÙ?دÛ? را Ù?ارد Ú©Ù?Û?د</string>
- <string name="pref_allow_background_starts_title">اجازÙ? دادÙ? اجرا در پس زÙ?Û?Ù?Ù?</string>
- <string name="button_proxy_all">Ù?Ù?Ù? پرÙ?کسÛ? Ù?ا</string>
- <string name="button_proxy_none">Ù?Û?Ú? پرÙ?کسÛ?</string>
- <string name="button_invert_selection">اÙ?تخاب برعکس Ø´Ù?د</string>
- <string name="pref_proxy_title">پراکسÛ? شبکÙ? خرÙ?جÛ?</string>
- <string name="pref_proxy_type_title">Ù?Ù?ع پرÙ?کسÛ?</string>
- <string name="pref_proxy_type_summary">پرÙ?تکÙ? Ù?Ù?رد استÙ?ادÙ? براÛ? پراکسÛ? سرÙ?ر: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ù?Ù?ع پرÙ?کسÛ? را Ù?ارد Ú©Ù?Û?د</string>
- <string name="pref_proxy_host_title"> پرÙ?کسÛ? Ù?Û?زباÙ?</string>
- <string name="pref_proxy_host_summary">Ù?اÙ? سرÙ?ر پرÙ?کسÛ? Ù?Û?زباÙ? </string>
- <string name="pref_proxy_host_dialog">Ù?اÙ? پرÙ?کسÛ? Ù?Û?زباÙ? را Ù?ارد Ú©Ù?Û?د</string>
- <string name="pref_proxy_port_title">Ù¾Ù?رت پرÙ?کسÛ? خرÙ?جÛ?</string>
- <string name="pref_proxy_port_summary">Ù¾Ù?رت سرÙ?ر پرÙ?کسÛ?</string>
- <string name="pref_proxy_port_dialog">Ù¾Ù?رت پرÙ?کسÛ? را Ù?ارد Ú©Ù?Û?د</string>
- <string name="pref_proxy_username_title">Ù?اÙ? کاربرÛ? پراکسÛ? خرÙ?جÛ?</string>
- <string name="pref_proxy_username_summary">Ù?اÙ? کاربرÛ? پرÙ?کسÛ?(اختÛ?ازÛ?)</string>
- <string name="pref_proxy_username_dialog">Ù?اÙ? کاربرÛ? پرÙ?کسÛ? را Ù?ارد Ù?Ù?اÛ?Û?د</string>
- <string name="pref_proxy_password_title">Ú©Ù?Ù?Ù? عبÙ?ر پراکسÛ? خرÙ?جÛ?</string>
- <string name="pref_proxy_password_summary">رÙ?ز عبÙ?ر پرÙ?کسÛ?(اختÛ?ارÛ?)</string>
- <string name="pref_proxy_password_dialog">رÙ?ز عبÙ?ر پرÙ?کسÛ? را Ù?ارد Ù?Ù?اÛ?Û?د</string>
- <string name="status">Ù?ضعÛ?ت</string>
- <string name="setting_up_full_transparent_proxying_">Ù?صب پرÙ?کسÛ? کاÙ?Ù?Ù? Ø´Ù?اÙ?...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ù?صب پرÙ?کسÛ? Ø´Ù?اÙ? Ù?بتÙ?Û? بر برÙ?اÙ?Ù?...</string>
- <string name="transparent_proxying_enabled">پرÙ?کسÛ? Ø´Ù?اÙ? Ù?عاÙ? است</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy براÛ? Tethering Ù?عاÙ? شدÙ? است!</string>
- <string name="warning_error_starting_transparent_proxying_">Ù?شدار: خطا در Ù?Ù?گاÙ? راÙ? اÙ?دازÛ? پرÙ?کسÛ? Ø´Ù?اÙ?!</string>
- <string name="transproxy_rules_cleared">Ù?Ù?اÙ?Û?Ù? TransProxy پاک شدÙ?د</string>
- <string name="couldn_t_start_tor_process_"> تÙ?ر Ù?تÙ?است اجرا Ø´Ù?د:</string>
- <string name="privoxy_is_running_on_port_">Polipo در ØاÙ? اجرا است در Ù¾Ù?رت:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ù?صب پرÙ?کسÛ? Ø´Ù?اÙ? Ù?بتÙ?Û? بر Ù¾Ù?رت...</string>
- <string name="bridge_error">خطاÛ? Bridge </string>
- <string name="bridge_requires_ip">براÛ? استÙ?ادÙ? از Ù?Û?Ú?Ú¯Û? BridgeØ? باÛ?د ØداÙ?Ù? آدرس IP Û?Ú© Ù¾Ù? را Ù?ارد Ú©Ù?Û?د.</string>
- <string name="send_email_for_bridges">از Û?Ú© Øساب کاربرÛ? جÛ?Ù?Û?Ù?Ø? اÛ?Ù?Û?Ù?Û? با Ù?تÙ? \"get bridges\" بÙ? آدرس bridges@xxxxxxxxxxxxxx بÙ?رستÛ?د.</string>
- <string name="error">خطا</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">تÙ?ظÛ?Ù?ات Ø´Ù?ا براÛ? آدرس Ù?ابÙ? دسترسÛ? باعث اÛ?جاد خطا شدÙ? اÙ?د !</string>
- <string name="your_relay_settings_caused_an_exception_">تÙ?ظÛ?Ù?ات رÙ?Ù? Ø´Ù?ا Ù?Ù?جب خطا شدÙ? اÙ?د</string>
- <string name="exit_nodes">گرÙ? Ù?اÛ? خرÙ?جÛ?</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">اثر اÙ?گشتÙ?ا Ø? اساÙ?Û? Ù?ستعار Ø? Ú©Ø´Ù?رÙ?ا Ù? آدرسÙ?ا براÛ? آخرÛ?Ù? جÙ?Ø´ </string>
- <string name="enter_exit_nodes"> گرÙ? Ù?اÛ? خرÙ?جÛ? را Ù?ارد Ú©Ù?Û?د</string>
- <string name="exclude_nodes">اÛ?Ù? گرÙ? Ù?ا را استÙ?ادÙ? Ù?Ú©Ù?</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">اثر اÙ?گشتÙ?اØ? اساÙ?Û? Ù?ستعار Ø? Ú©Ø´Ù?رÙ?ا Ù? آدرسÙ?اÛ?Û? Ú©Ù? Ù?باÛ?د استÙ?ادÙ? Ø´Ù?Ù?د</string>
- <string name="enter_exclude_nodes"> گرÙ? Ù?اÛ?Û? Ú©Ù? Ù?باÛ?د استÙ?ادÙ? Ø´Ù?Ù?د</string>
- <string name="strict_nodes">گرÙ? Ù?اÛ? Ù?ØدÙ?د</string>
- <string name="use_only_these_specified_nodes">Ù?Ù?Ø· * از اÛ?Ù? گرÙ? Ù?اÛ? Ù?شخص شدÙ? استÙ?ادÙ? Ú©Ù?Û?د* </string>
- <string name="bridges">Bridges</string>
- <string name="use_bridges">از Ù¾Ù? Bridges Ú©Ù?</string>
- <string name="bridges_obfuscated">Ù¾Ù? Ù?اÛ? Ú¯Û?ج Ú©Ù?Ù?دÙ?</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">گرÙ? Ù?رÙ?دÛ? Ù?تÙ?اÙ?ب بÙ? شبکÙ? تÙ?ر را Ù?عاÙ? Ú©Ù?Û?د</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">اگر Bridges تÙ?ظÛ?Ù? شدÙ? Ù¾Ù?Ù?اÛ? Ù?ربÙ?Ø· بÙ? پرÙ?کسÛ? Ú¯Û?ج Ú©Ù?Ù?دÙ? Ù?ستÙ?د اÛ?Ù? گزÛ?Ù?Ù? را Ù?عاÙ? Ú©Ù?Û?د</string>
- <string name="ip_address_and_port_of_bridges">آدرس Ø¢Û? Ù¾Û? Ù? Ù¾Ù?رتÙ? Ù¾Ù? Ù?ا</string>
- <string name="enter_bridge_addresses">آدرس Bridges را Ù?ارد Ú©Ù?Û?د</string>
- <string name="relays">بازپخش Ú©Ù?Ù?دÙ? Ù?ا</string>
- <string name="relaying">درØاÙ? بازپخش</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">دستگاÙ? Ø®Ù?د را براÛ? Û?Ú© بازپخش Ú©Ù?Ù?دÙ? غÛ?ر-خرÙ?جÛ? Ù?عاÙ? Ú©Ù?Û?د</string>
- <string name="relay_port">Ù¾Ù?رت بازپخش Ú©Ù?Ù?دÙ?</string>
- <string name="listening_port_for_your_tor_relay"> Ù¾Ù?رت Ø´Ù?Ù?Ù?دÙ? براÛ? باز پخش تÙ?ر</string>
- <string name="enter_or_port">Ù¾Ù?رت OR را Ù?ارد Ú©Ù?Û?د</string>
- <string name="relay_nickname">Ù?اÙ? Ù?ستعار بازپخش Ú©Ù?Ù?دÙ?</string>
- <string name="the_nickname_for_your_tor_relay">Ù?اÙ? Ù?ستعار بازپخش Ú©Ù?Ù?دÙ? Ø´Ù?ا</string>
- <string name="enter_a_custom_relay_nickname">Û?Ú© Ù?اÙ? Ù?ستعار دÙ?Ø®Ù?اÙ? براÛ? بازپخش Ú©Ù?Ù?دÙ? Ù?ارد Ú©Ù?Û?د</string>
- <string name="reachable_addresses">آدرس Ù?اÛ? Ù?ابÙ? دسترس</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">بعÙ?Ù?اÙ? Û?Ú© کاربر پشت دÛ?Ù?ارÙ? آتش با سÛ?است Ù?اÛ? Ù?ØدÙ?د Ú©Ù?Ù?دÙ? اجرا Ú©Ù?Û?د</string>
- <string name="reachable_ports">Ù¾Ù?رتâ??Ù?اÛ? Ù?ابÙ? دسترس</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ù¾Ù?رتâ??Ù?اÛ? Ù?ابÙ? دسترس پشت Û?Ú© Ù?اÛ?رÙ?اÙ? Ù?ØدÙ?دکÙ?Ù?دÙ?</string>
- <string name="enter_ports">Ù¾Ù?رتâ??Ù?ا را Ù?ارد Ú©Ù?Û?د</string>
- <string name="enable_hidden_services">سرÙ?Û?سâ??Ù?اÛ? Ù?Ø®Ù?Û? را Ù?عاÙ? Ú©Ù?</string>
- <string name="run_servers_accessible_via_the_tor_network">اجازÙ? بدÙ? سرÙ?رÙ?اÛ? رÙ?Û? دستگاÙ? از طرÛ?Ù? شبکÙ? تÙ?ر Ù?ابÙ? دسترسÛ? باشÙ?د</string>
- <string name="enter_localhost_ports_for_hidden_services">Ù¾Ù?رت Ù?اÛ? Ù?Ù?کاÙ? Ù?است را براÛ? سرÙ?Û?س Ù?Ø®Ù?Û? Ù?ارد Ú©Ù?Û?د</string>
- <string name="hidden_service_ports">Ù¾Ù?رتâ??Ù?اÛ? سرÙ?Û?س Ù?Ø®Ù?Û?</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ù?اÙ? Ù?شاÙ?Û? پذÛ?ر براÛ? سرÙ?Û?س Ù?Ø®Ù?Û? Ø´Ù?ا (بصÙ?رت Ø®Ù?دکار تÙ?Ù?Û?د شدÙ? است)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ثبت گزارش اشکاÙ? زداÛ?Û? را بÙ? خرÙ?جÛ? Ù?عاÙ? Ú©Ù? (براÛ? Ù?Ù?اÛ?Ø´ باÛ?د از adb Û?ا aLogCat استÙ?ادÙ? Ú©Ù?Û?د)</string>
- <string name="project_home">صÙ?ØÙ? (Ù?اÛ?) اصÙ?Û? پرÙ?Ú?Ù?:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Ú¯Ù?اÙ?Û? تÙ?ر</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Û?Ú© اپÙ?Û?Ú©Û?Ø´Ù? Ù?Û?Ø®Ù?اÙ?د Ù¾Ù?رت %S سرÙ?Û?س Ù?Ø®Ù?Û? را بÙ? شبکÙ? تÙ?ر باز Ú©Ù?د. اگر بÙ? اÛ?Ù? اپÙ?Û?Ú©Û?Ø´Ù? اعتÙ?اد دارÛ?د اÛ?Ù? بÛ? خطر است.</string>
- <string name="found_existing_tor_process">Û?Ú© تÙ?ر درØاÙ? اجرا Ù¾Û?دا شد...</string>
- <string name="something_bad_happened">اتÙ?اÙ? بدÛ? اÙ?تاد. Ù?Ù?اÛ?ع ثبت شدÙ? را Ú?Ú© Ú©Ù?Û?د</string>
- <string name="hidden_service_on">سرÙ?Û?س Ù?Ø®Ù?Û? رÙ?Û?:</string>
- <string name="unable_to_read_hidden_service_name">Ù?اتÙ?اÙ? در Ø®Ù?اÙ?دÙ? Ù?اÙ? سرÙ?Û?س Ù?Ø®Ù?Û?</string>
- <string name="unable_to_start_tor">Ù?اتÙ?اÙ? در راÙ? اÙ?دازÛ? تÙ?ر:</string>
- <string name="unable_to_reset_tor">راÙ? اÙ?دازÛ? Ù?جدد دستگاÙ? Ø´Ù?ا Ø? Ù?ادر Ù?Û?ست بÙ? تÙ?ظÛ?Ù? Ù?جدد Tor !</string>
- <string name="pref_use_sys_iptables_title">از Iptables Ù¾Û?Ø´ Ù?رض استÙ?ادÙ? Ú©Ù?</string>
- <string name="pref_use_sys_iptables_summary">بÙ? جاÛ? Ú?Û?زÛ? Ú©Ù? با ربات Ù¾Û?ازÛ? اÙ?Ù?دÙ?Ø? از باÛ?Ù?رÛ? Ø¢Û? Ù¾Û? تÛ?بÙ?ز داخÙ?Û? استÙ?ادÙ? Ú©Ù?</string>
- <string name="error_installing_binares">Ù?اÛ?Ù?Ù?اÛ? باÛ?Ù?رÛ? تÙ?ر Ù?ادر بÙ? Ù?صب Ù? Û?ا ارتÙ?ا Ù?بÙ?دÙ?د</string>
- <string name="pref_use_persistent_notifications">Ù?Ù?تÛ? ربات Ù¾Û?ازÛ? Ù?تصÙ? استØ? Ù?Ù?Û?Ø´Ù? Ø¢Û?Ú©Ù?Ù? Ù?ربÙ?Ø· را در Ù?Ù?ار ابزار Ù?Ú¯Ù? دار.</string>
- <string name="pref_use_persistent_notifications_title">آگاÙ?سازÛ? Ù?Ù?Û?Ø´Ù? رÙ?Ø´Ù?</string>
- <string name="pref_use_expanded_notifications">Ù?Ù?اÛ?Ø´ اطÙ?اع رساÙ?Û? گستردÙ? با Ú©Ø´Ù?ر خرÙ?جÛ? Tor Ù? IP</string>
- <string name="pref_use_expanded_notifications_title">اطÙ?اعÛ?Ù? گستردÙ?</string>
- <string name="notification_using_bridges">Bridges Ù?عاÙ? شدÙ?د!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">زباÙ?</string>
- <string name="set_locale_summary">زباÙ? Ù?ØÙ?Û? ربات Ù¾Û?ازÛ? را اÙ?تخاب Ú©Ù?Û?د</string>
- <string name="wizard_locale_title">اÙ?تخاب زباÙ?</string>
- <string name="wizard_locale_msg">زباÙ? Ú©Ù?Ù?Ù?Û? را تعÙ?Û?ض Ù? Û?ا بÙ? Ø´Ú©Ù? Ù¾Û?Ø´Ù?رض رÙ?اÛ?Ø´ Ú©Ù?Û?د</string>
- <string name="powered_by">طراØÛ? شدÙ? تÙ?سط Tor</string>
- <string name="btn_save_settings">ذخÛ?رÙ? تÙ?ظÛ?Ù?ات</string>
- <string name="no_internet_connection_tor">ارتباط اÛ?Ù?ترÙ?تÛ? Ù?جÙ?د Ù?دارد; تÙ?ر Ø¢Ù?ادÙ? کار است... </string>
- <string name="bandwidth_">Ù¾Ù?Ù?اÛ? باÙ?د:</string>
- <string name="down">پائÛ?Ù?</string>
- <string name="up">باÙ?ا</string>
- <string name="pref_disable_network_title">خاÙ?Ù?Ø´ کردÙ? در صÙ?رت عدÙ? Ù?جÙ?د شبکÙ?</string>
- <string name="pref_disable_network_summary">در صÙ?رتÛ? Ú©Ù? شبکÙ? Ù?جÙ?د Ù?داشتÙ? باشد خاÙ?Ù?Ø´ Ø´Ù?د</string>
- <string name="newnym">Ø´Ù?ا بÙ? Ø´Ù?اسÙ? جدÛ?د تÙ?ر Ù?Ù?تÙ?Ù? شدÛ?د</string>
- <string name="menu_verify_browser">Ù?رÙ?رگر</string>
- <string name="menu_use_chatsecure">استÙ?ادÙ? از ChatSecure</string>
- <string name="permission_manage_tor_label">Ù?دÛ?رÛ?ت تÙ?ر</string>
- <string name="permission_manage_tor_description">اÛ?Ù? برÙ?اÙ?Ù? بتÙ?اÙ?د سرÙ?Û?س تÙ?ر را Ù?دÛ?رÛ?ت Ú©Ù?د</string>
- <string name="install_apps_">برÙ?اÙ?Ù? Ù?صب Ø´Ù?دØ?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">ارتباط شبکÙ? اÛ? Ù?جÙ?د Ù?دارد. تÙ?ر بÙ? ØاÙ?ت Ø®Ù?اب Ù?Û? رÙ?د</string>
- <string name="network_connectivity_is_good_waking_tor_up_">ارتباط شبکÙ? اÛ? Ø®Ù?ب است. تÙ?ر را بÛ?دار Ù?Ù?اÛ?Û?د...</string>
- <string name="updating_settings_in_tor_service">بÙ? رÙ?ز رساÙ?Û? تÙ?ظÛ?Ù?ات در سرÙ?Û?س Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ù¾Ù?رتÛ? Ú©Ù? تÙ?ر ارائÙ? Ù?Û? دÙ?د SOCKS proxy رÙ?Û? (Ù¾Û?Ø´ Ù?رض: 9050 Û?ا 0 براÛ? غÛ?رÙ?عاÙ? کردÙ?)</string>
- <string name="pref_socks_dialog">Ù¾Û?کربÙ?دÛ? Ù¾Ù?رت SOCKS</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Ù¾Ù?رتÛ? Ú©Ù? تÙ?ر ارائÙ? Ù?Û? دÙ?د Transparent Proxy رÙ?Û? (Ù¾Û?Ø´ Ù?رض: 9040 Û?ا 0 براÛ? غÛ?رÙ?عاÙ? کردÙ?)</string>
- <string name="pref_transport_dialog">Ù¾Û?کربÙ?دÛ? Ù¾Ù?رت Transproxy</string>
- <string name="pref_dnsport_title">Ù¾Ù?رت Tor DNS</string>
- <string name="pref_dnsport_summary">Ù¾Ù?رتÛ? Ú©Ù? Tor ارائÙ? Ù?Û? دÙ?د Ø¢Ù? DNS رÙ?Û? (بÙ? Ø·Ù?ر Ù¾Û?Ø´ Ù?رض: 5400 Û?ا 0 براÛ? غÛ?ر Ù?عاÙ? کردÙ?)</string>
- <string name="pref_dnsport_dialog">Ù¾Û?کربÙ?دÛ? Ù¾Ù?رت DNS</string>
- <string name="pref_torrc_title">Ù¾Û?کربÙ?دÛ? سÙ?ارشÛ? Torrc</string>
- <string name="pref_torrc_summary">Ù?Ù?Ø· Ù?تخصصاÙ?: enter direct torrc config lines</string>
- <string name="pref_torrc_dialog">سÙ?ارشÛ? Torrc</string>
- <string name="wizard_tips_martus">Ù?Ù?باÛ?Ù? Ù?ارتÙ?س - Benetech Human Rights Documentation App</string>
- <string name="your_tor_public_ips_">IP Ù?اÛ? عÙ?Ù?Ù?Û? Tor Ø´Ù?ا:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ù?Ø·Ù?ا اÛ?Ù? برÙ?اÙ?Ù? را در Ø¢Ù?درÙ?Û?د از کار بÛ?Ù?دازÛ?د Android->Settings->Apps اگر Ù?Ø´Ú©Ù?Û? با اربت دارÛ?د: </string>
- <string name="app_conflict">تعارض برÙ?اÙ?Ù?</string>
- <string name="pref_transproxy_refresh_title">Ø®Ù?دکار تازÙ? کردÙ? Transproxy</string>
- <string name="pref_transproxy_refresh_summary">درخÙ?است Ù?جدÛ?د براÛ? Ù?Ù?اÙ?Û?Ù? Transproxy Ù?Ù?تÛ? Ù?ضعÛ?ت شبکÙ? تغÛ?Û?ر کرد</string>
- <string name="pref_transproxy_flush_title">ØØ°Ù? اجبارÛ? Transproxy</string>
- <string name="pref_transproxy_flush_summary">اÛ?Ù?جا را Ù?شار دÙ?Û?د براÛ? برÙ?Ù? رÛ?ختÙ? تÙ?اÙ? Ù?Ù?اÙ?Û?Ù? transproxy</string>
- <string name="transparent_proxy_rules_flushed_">Ù?Ù?اÙ?Û?Ù? Transparent proxy برÙ?Ù? رÛ?ختÙ? شد! </string>
- <string name="you_do_not_have_root_access_enabled">Ø´Ù?ا دسترسÛ? رÙ?ت را Ù?عاÙ? Ù?کردÛ?د. </string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_"> براÛ? اعÙ?اÙ? تÙ?ظÛ?Ù?ات جدÛ?د باÛ?د اÙ?ربات را خاÙ?Ù?Ø´ Ù? رÙ?Ø´Ù? Ú©Ù?Û?د.</string>
- <string name="menu_vpn">Ù?Û? Ù¾Û? اÙ?</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridges بÙ? رÙ?ز شدÙ?د</string>
- <string name="restart_orbot_to_use_this_bridge_">براÛ? Ù?عاÙ? کردÙ? تغÛ?Û?رات Ù?Ø·Ù?ا Orbot را راÙ? اÙ?دازÛ? Ù?جدد Ú©Ù?Û?د</string>
- <string name="menu_qr">کدÙ?اÛ? QR</string>
- <string name="bridge_mode">ØاÙ?ت Bridges</string>
- <string name="get_bridges_email">اÛ?Ù?Û?Ù?</string>
- <string name="get_bridges_web">Ù?ب</string>
- <string name="activate">Ù?عاÙ?</string>
- <string name="apps_mode">ØاÙ?ت Ù?رÙ? اÙ?زار VPN</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">با استÙ?ادÙ? از اÙ?کاÙ? Ù?Û? Ù¾Û? اÙ? اÙ?درÙ?Û?د٬ اÙ?ربات تراÙ?Û?Ú© تÙ?اÙ? اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ? Ù?Ù?باÛ?Ù? Ø´Ù?ا را از طرÛ?Ù? شبکÙ? تÙ?ر اÙ?تÙ?اÙ? Ù?Û?دÙ?د.
-\n\n*Ù?شدار*
-اÙ?کاÙ? تÙ?Ù?Ù? تÙ?اÙ? Ú¯Ù?Ø´Û? Ù?Ù?Ù?ز جدÛ?د Ù? در ØاÙ? آزÙ?اÛ?Ø´ است. بÙ? Ù?Ù?Û?Ù? دÙ?Û?Ù? اÙ?کاÙ? دارد Ú©Ù? بÙ? صÙ?رت Ø®Ù?دکار Ù?عاÙ? Ù?Ø´Ù?د Û?ا Ù?Ù?گاÙ? استÙ?ادÙ? Ù?طع Ø´Ù?د. از اÛ?Ù? اÙ?کاÙ? براÛ? Ù?اشÙ?اس بÙ?دÙ? در Ù?ب Ù?رگز Ù?باÛ?د استÙ?ادÙ? Ú©Ù?Û?د Ù? باÛ?د Ù?Ù?Ø· از Ø¢Ù? براÛ? عبÙ?ر از Ù?اÛ?رÙ?اÙ? Ù?ا Ù? دÙ?ر زدÙ? Ù?Û?Ù?ترÛ?Ù?Ú¯ استÙ?ادÙ? Ø´Ù?د.</string>
- <string name="send_email">اÛ?Ù?Û?Ù? بÙ?رست</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ù?Û? تÙ?اÙ?Û?د آدرس bridge را از طرÛ?Ù? اÛ?Ù?Û?Ù?Ù¬ Ù?ب Û?ا با اسکÙ? کردÙ? bridge QR code بدست Ø¢Ù?رÛ?د. اÛ?Ù?Û?Ù? Û?ا Ù?ب پاÛ?Û?Ù? را براÛ? درخÙ?است آدرس bridge اÙ?تخاب Ú©Ù?Û?د.\n\n Ù?Ù?تÛ? آدرس را دارÛ?د Ø¢Ù? را Ú©Ù¾Û? Ú©Ù?Û?د Ù? برگرداÙ?Û?د در اÙ?Ù?Ù?Û?ت Ù?اÛ? Bridges در تÙ?ظÛ?Ù?ات اربت Ù? Ø¢Ù? را دÙ?بارÙ? راÙ? اÙ?دازÛ? Ú©Ù?Û?د.</string>
- <string name="install_orweb">Ù?صب Orfox</string>
- <string name="standard_browser">Ù?رÙ?رگر استاÙ?دارد</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Ù?کتÙ?: Tor bridges استاÙ?دارد Ù?Ù?Ø· بر رÙ?Û? دستگاÙ? Ù?اÛ? Intel X86/ATOM کار Ù?Û? Ú©Ù?د</string>
- <string name="vpn_default_world">جÙ?اÙ?</string>
-</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
deleted file mode 100644
index 5eb1777..0000000
--- a/res/values-fi/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot on ilmainen välityspalvelinsovellus, joka tarjoaa muille sovelluksille mahdollisuuden käyttää internetiä turvallisemmin. Orbot käyttää Toria kryptaamaan verkkoliikenteesi ja sitten piilottaa sen kierrättämällä sitä usean tietokoneen kautta ympäri maailman. Tor on vapaa ohjelmisto ja avoin verkosto, jotka auttavat puolustautumaan vapautta ja yksityisyyttä uhkaavalta verkkovalvonnalta ja valtioiden verkonseurannalta sekä suojaamaan salaisia liiketoimintoja ja -yhteyksiä.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">käynnistä ja pysäytä Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot käynnistyy...</string>
- <string name="status_activated">Yhdistetty Tor-verkkoon</string>
- <string name="status_disabled">Orbot on poistettu käytöstä</string>
- <string name="tor_process_starting">Käynnistetään Tor-ohjelmaa...</string>
- <string name="tor_process_complete">valmis.</string>
- <string name="tor_process_waiting">odottaa.</string>
- <string name="not_anonymous_yet">VAROITUS: Verkkoliikenteesi ei ole vielä anonyymiä! Määritä ohjelmasi käyttämään HTTP-välityspalvelinta 127.0.0.1:8118 tai SOCKS4A- tai SOCKS5-välityspalvelinta 127.0.0.1:9050</string>
- <string name="menu_home">Alkuun</string>
- <string name="menu_browse">Selaa</string>
- <string name="menu_settings">Asetukset</string>
- <string name="menu_log">Loki</string>
- <string name="menu_info">Ohje</string>
- <string name="menu_start">Aloita</string>
- <string name="menu_stop">Lopeta</string>
- <string name="menu_about">Tietoa</string>
- <string name="main_layout_download">Lataa</string>
- <string name="main_layout_upload">Lähetä</string>
- <string name="button_help">Apua</string>
- <string name="button_close">Sulje</string>
- <string name="button_about">Tietoa</string>
- <string name="button_clear_log">Tyhjennä loki</string>
- <string name="menu_verify">Tarkista</string>
- <string name="menu_exit">Lopeta</string>
- <string name="menu_scan">Skannaa sillan QR-koodi</string>
- <string name="menu_share_bridge">Jaa sillan QR-koodi</string>
- <string name="press_to_start">- paina pitkään käynnistääksesi -</string>
- <string name="pref_trans_proxy_group">Läpinäkyvä välityspalvelimen käyttö (vaatii roottauksen)</string>
- <string name="pref_trans_proxy_title">Läpinäkyvä välityspalvelimen käyttö</string>
- <string name="pref_trans_proxy_summary">Ohjelmien automaattinen Torimointi</string>
- <string name="pref_transparent_all_title">Torraa kaikki</string>
- <string name="pref_transparent_all_summary">Välitä kaikki ohjelmien liikenne Torin läpi</string>
- <string name="pref_transparent_port_fallback_title">Välityspalvelinportin varoasetus</string>
- <string name="pref_transparent_port_fallback_summary">VAROITUS: Kiertää yleisiä portteja (80, 443, jne). *K�YT� VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi.</string>
- <string name="pref_transparent_port_title">Porttilista</string>
- <string name="pref_transparent_port_summary">Välityspalvelimen kautta vietävien porttien lista. *K�YT� VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi.</string>
- <string name="pref_transparent_port_dialog">Kirjoita portit, jotka viedään välityspalvelimen kautta</string>
- <string name="pref_has_root">Pyydä root-tason oikeuksia</string>
- <string name="pref_has_root_summary">Pyydä root-tason oikeuksia läpinäkyvään tiedonvälitykseen</string>
- <string name="status_install_success">Tor-binääritiedostojen asennus onnistui!</string>
- <string name="status_install_fail">Tor-binääritiedostojen asennus epäonnistui. Tarkista loki ja ilmoita asiasta osoitteeseen tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Sovellusvirhe</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Tietoja Orbotista</string>
- <string name="btn_next">Seuraava</string>
- <string name="btn_back">Takaisin</string>
- <string name="btn_finish">Lopeta</string>
- <string name="btn_okay">Selvä</string>
- <string name="btn_cancel">Peruuta</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Joitakin Orbotin yksityiskohtia</string>
- <string name="wizard_details_msg">Orbot on avoimen lähdekoodin sovellus, joka sisältää Torin, LibEventin ja Polipon. Se tarjoaa paikallisen HTTP-välityspalvelimen (8118) ja SOCKS-välityspalvelimen (9050) Tor-verkkoon. Rootatulla laitteella Orbot kykenee myös reitittämään kaiken verkkoliikenteen Torin läpi.</string>
- <string name="wizard_permissions_root">Lupa myönnetty</string>
- <string name="wizard_permissions_stock">Orbot-oikeudet</string>
- <string name="wizard_premissions_msg_root">Loistavaa! Olemme havainneet että olet antanut root-tason oikeudet Orbotille. Käytämme näiden oikeuksien suomia mahdollisuuksia harkiten.</string>
- <string name="wizard_permissions_msg_stock">Vaikka root-tason oikeuksien antaminen Orbotille ei ole pakollista, tulee Orbotista tehokkaampi työkalu jos laitteellasi on root-tason oikeudet. Käytä alla olevaa painiketta antaaksesi Orbotille supervoimat!</string>
- <string name="wizard_permissions_no_root">Jos sinulla ei ole root-tason oikeuksia tai et tiedä, mitä tarkoitamme, käytä vain Orbotille suunniteltuja ohjelmia.</string>
- <string name="wizard_permissions_consent">Ymmärrän ja haluan jatkaa ilman Superuser-tason oikeuksia</string>
- <string name="wizard_permission_enable_root">Anna root-tason oikeudet Orbotille</string>
- <string name="wizard_configure">Konfiguroi Torimointi</string>
- <string name="wizard_configure_msg">Orbot mahdollistaa kaiken sovellusliikenteen reitittämisen Tor-sovelluksen kautta TAI valita sovelluksesi yksilöllisesti.</string>
- <string name="wizard_configure_all">Välitä kaikkien sovellusten tiedonsiirto Tor-verkon kautta</string>
- <string name="wizard_configure_select_apps">Valitse Tor-verkkoa käyttävät sovellukset</string>
- <string name="wizard_tips_tricks">Orbotia käyttävät sovellukset</string>
- <string name="wizard_tips_msg">Alempana näkyvät sovellukset on suunniteltu toimimaan Orbotin kanssa. Paina jokaista nappia, jos haluat asentaa ne nyt. Voit myös löytää ne myöhemmin Googlen Play-kaupasta, GuardianProject.info:n nettisivulta tai F-Droid.org:in kautta.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Turvallinen pikaviestisovellus Androidille</string>
- <string name="wizard_tips_proxy">Välityspalvelinasetukset - Opi konfiguroimaan sovellukset toimimaan Orbotin kanssa</string>
- <string name="wizard_tips_duckgo">DuckDuckGo-hakukonesovellus</string>
- <string name="wizard_tips_twitter">Aseta Twitter-välityspalvelinisännäksi \"localhost\" ja portiksi 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Tee tarina ja jätä se torin turvallisuuteen!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Välityspalvelinasetukset</string>
- <string name="wizard_proxy_help_msg">Jos käyttämäsi Android-sovellus tukee HTTP- tai SOCKS-välityspalvelimen käyttöä, voit määrittää sen yhdistämään Orbotiin ja käyttämään Toria.\n\n\n Isäntänimi on 127.0.0.1 tai \"localhost\". HTTP-portti on 8118. SOCKS-portti on 9050. SOCKS4A- tai SOCKS5-protokollia tulisi käyttää, mikäli mahdollista.\n \n\n\n Voit lukea lisää välityspalvelinten käytöstä Androidilla usein kysytyistä kysymyksistä osoitteessa: http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Orbot on valmis!</string>
- <string name="wizard_final_msg">Miljoonat ihmiset ympäri maailman käyttävät Toria eri syistä.\n\nJornalistit ja bloggaajat, ihmisoikeuksien puolustajat, poliisit, sotilaat, yritykset, sorrettujen valtioiden kansalaiset, ja tavalliset kansalaiset... ja nyt sinäkin olet valmis siihen!</string>
- <string name="wizard_exit_at_first_screen_toast">Määritä Orbot ennen kuin alat käyttää sitä!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Tämä avaa selaimesi osoitteeseen https://check.torproject.org nähdäkseen, onko Orbot varmaan konfiguroitu ja onko sinut yhdistetty Tor-sovellukseen.</string>
- <string name="pref_hs_group">Piilopalvelun isännöinti</string>
- <string name="pref_general_group">Yleiset</string>
- <string name="pref_start_boot_title">Aloita Orbot käynnistettäessä</string>
- <string name="pref_start_boot_summary">Käynnistä Orbot ja yhdistä Toriin automaattisesti, kun Anroid-laitteesi käynnistyy</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot tuo Torin Androidille!\n\nTor auttaa sinua suojautumaan sisältösuodattimilta sekä verkkoliikenteen seurannalta ja valvonnalta, jotka uhkaavat yksityisyyttä, salaista tietoa ja henkilökohtaisia suhteita.\n\nTämä velho auttaa sinua määrittämään Orbotin ja Torin laitteellasi.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Varoitus</string>
- <string name="wizard_warning_msg">Pelkkä Orbotin asentaminen ei automaattisesti tee verkkoliikenteestäsi anonyymiä. Sinun täytyy määrittää Orbot kunnolla, jotta laitteesi ja muut sovellukset käyttävät Toria onnistuneesti.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Käyttöoikeudet</string>
- <string name="wizard_permissions_root_msg1">Voit antaa Orbotille Superuser-oikeudet mahdollistaaksesi joitakin lisäominaisuuksia, kuten läpinäkyvän tiedonvälityksen.</string>
- <string name="wizard_permissions_root_msg2">Jos et halua tehdä tätä, varmista, että käytät Orbotin kanssa toimivaksi suunniteltuja sovelluksia.</string>
- <string name="wizard_permissions_no_root_msg">Laitteesi ei vaikuta olevan rootattu tai tarjoavan root- tai \'Superuser\'-oikeuksia.\n\nKokeile \'Sovellukset\'-tilaa päänäytöltä.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbotia käyttävät sovellukset</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Turvallinen chattailusovellus Off-the-Record -salauksella</string>
- <string name="wizard_tips_play">Löydä kaikki Guardian-projektin sovellukset Googlen Play-kaupasta</string>
- <string name="wizard_tips_fdroid">Löydä kaikki Guardian Projectin sovellukset F-Droidista</string>
- <string name="wizard_tips_fdroid_org">Löydä kaikki Guardian Projectin sovellukset osoitteesta https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Läpinäkyvä tiedonvälitys</string>
- <string name="wizard_transproxy_msg">Tämä sallii sovellustesi tietoliikenteen menemisen automaattisesti Torin läpi</string>
- <string name="wizard_transproxy_hint">(Rastita tämä ruutu, jos et tiedä, mitä tarkoitamme)</string>
- <string name="wizard_transproxy_none">Ei mikään</string>
- <string name="pref_transparent_tethering_title">Tor-välityspalvelimena oleminen</string>
- <string name="pref_transparent_tethering_summary">Salli Torin läpinäkyvä tiedonvälitys Wifille ja USB-välityspalvelimena oleville laitteille (vaatii uudelleenkäynnistyksen)</string>
- <string name="button_grant_superuser">Pyydä Superuser-oikeuksia</string>
- <string name="pref_select_apps">Valitse sovellukset</string>
- <string name="pref_select_apps_summary">Valitse Torin läpi reititettävät sovellukset</string>
- <string name="pref_node_configuration">Tor-solmukohdan konfigurointi</string>
- <string name="pref_node_configuration_summary">Nämä ovat lisäasetuksia, jotka voivat vähentää anonyymiyttäsi</string>
- <string name="pref_entrance_node">Tor-sisääntulosolmu</string>
- <string name="pref_entrance_node_summary">Sormenjäljet, lovet, maat ja osoitteet ensimmäiseen hyppyyn</string>
- <string name="pref_entrance_node_dialog">Kirjoita sisääntulosolmujen nimet</string>
- <string name="button_proxy_all">Välitä kaikki</string>
- <string name="button_proxy_none">�lä välitä mitään</string>
- <string name="button_invert_selection">Käännä valinta</string>
- <string name="pref_proxy_title">Lähtevän liikenteen välityspalvelin (valinnainen)</string>
- <string name="pref_proxy_type_title">Lähtevän liikenteen välityspalvelimen tyyppi</string>
- <string name="pref_proxy_type_summary">Välityspalvelimen protokolla: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Kirjoita välityspalvelintyyppi</string>
- <string name="pref_proxy_host_title">Ulosmenovälityspalvelimen isäntä</string>
- <string name="pref_proxy_host_summary">Välityspalvelimen verkko-osoite</string>
- <string name="pref_proxy_host_dialog">Kirjoita välityspalvelimen isäntä</string>
- <string name="pref_proxy_port_title">Ulosmenovälityspalvelimen portti</string>
- <string name="pref_proxy_port_summary">Välityspalvelimen portti</string>
- <string name="pref_proxy_port_dialog">Kirjoita välityspalvelimen portti</string>
- <string name="pref_proxy_username_title">Ulosmenovälityspalvelimen käyttäjänimi</string>
- <string name="pref_proxy_username_summary">Välityspalvelimen käyttäjätunnus (valinnainen)</string>
- <string name="pref_proxy_username_dialog">Kirjoita välityspalvelimen käyttäjätunnus</string>
- <string name="pref_proxy_password_title">Ulosmenovälityspalvelimen salasana</string>
- <string name="pref_proxy_password_summary">Välityspalvelimen salasana (valinnainen)</string>
- <string name="pref_proxy_password_dialog">Kirjoita välityspalvelimen salasana</string>
- <string name="status">Tila</string>
- <string name="setting_up_full_transparent_proxying_">Täyttä läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
- <string name="setting_up_app_based_transparent_proxying_">Sovelluspohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
- <string name="transparent_proxying_enabled">Läpinäkyvä tiedonvälitys SALLITTU</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy on otettu käyttöön Tor-välityspalvelimimena olemista varten!</string>
- <string name="warning_error_starting_transparent_proxying_">VAROITUS: virhe aloittaessa läpinäkyvää tiedonvälitystä!</string>
- <string name="transproxy_rules_cleared">TransProxyn säännöt tyhjennetty</string>
- <string name="couldn_t_start_tor_process_">Tor-prosessin käynnistäminen epäonnistui:</string>
- <string name="privoxy_is_running_on_port_">Polipo on käynnissä portissa:</string>
- <string name="setting_up_port_based_transparent_proxying_">Porttipohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
- <string name="bridge_error">Siltavirhe</string>
- <string name="bridge_requires_ip">Jos haluat käyttää siltaominaisuutta, kirjoita vähintään yhden sillan IP-osoite.</string>
- <string name="send_email_for_bridges">Lähetä sähköpostia osoitteeseen bridges@xxxxxxxxxxxxxx gmail-osoitteesta siten, että viestin ainoa rivi on \"get bridges\".</string>
- <string name="error">Virhe</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">ReachableAccess-asetuksesi aiheuttivat virheen!</string>
- <string name="your_relay_settings_caused_an_exception_">Releasetuksesi aiheuttivat virheen!</string>
- <string name="exit_nodes">Päätesolmut</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Sormenjäljet, lovet, maat ja osoitteet viimeiselle hypylle</string>
- <string name="enter_exit_nodes">Kirjoita päätesolmut</string>
- <string name="exclude_nodes">Vältä solmuja</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Vältettävät sormenjäljet, lovet, maat ja osoitteet</string>
- <string name="enter_exclude_nodes">Kirjoita vältettävät solmut</string>
- <string name="strict_nodes">Tarkat solmukohdat</string>
- <string name="use_only_these_specified_nodes">Käytä *vain* näitä solmuja</string>
- <string name="bridges">Sillat</string>
- <string name="use_bridges">Käytä siltoja</string>
- <string name="bridges_obfuscated">Hämärät sillat</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Salli vaihtoehtoiset sisääntulosolmut Tor-verkkoon</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Salli hämärien siltojen konfigurointi</string>
- <string name="ip_address_and_port_of_bridges">Siltojen IP-osoitteet ja portit</string>
- <string name="enter_bridge_addresses">Kirjoita siltaosoitteet</string>
- <string name="relays">Releet</string>
- <string name="relaying">Releytys</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Salli laitteen käyttö välireleenä</string>
- <string name="relay_port">Releportti</string>
- <string name="listening_port_for_your_tor_relay">Tor-releesi kuunteluportti</string>
- <string name="enter_or_port">Kirjoita OR-portti</string>
- <string name="relay_nickname">Releen kutsumanimi</string>
- <string name="the_nickname_for_your_tor_relay">Kutsumanimi Tor-releellesi</string>
- <string name="enter_a_custom_relay_nickname">Kirjoita mukautettu relenimi</string>
- <string name="reachable_addresses">Saavutettavissa olevat osoitteet</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Aja asiakkaana rajoitetun palomuurin takaa</string>
- <string name="reachable_ports">Saavutettavissa olevat portit</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Rajoitetun palomuurin takaa saavutettavat portit</string>
- <string name="enter_ports">Kirjoita portit</string>
- <string name="enable_hidden_services">Piilopalvelun isännöinti</string>
- <string name="run_servers_accessible_via_the_tor_network">salli laitteensisäisen palvelimen käyttö osana Tor-verkkoa</string>
- <string name="enter_localhost_ports_for_hidden_services">kirjoita sisäiset portit piilopalveluille</string>
- <string name="hidden_service_ports">Piilopalveluiden portit</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">piilopalvelusi nimiosoite (luodaan automaattisesti)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">salli virheenjäljityslokin tulo tulostevirtaan (käytä adb:tä tai aLogCat:ia tarkastellaksesi)</string>
- <string name="project_home">Projektin kotisivu(t):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor-lisenssi</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3:n osapuolen ohjelmisto:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Sovellus haluaa avata piilopalveluportin %S Tor-verkkoon. Tämä on turvallista, jos luotat sovellukseen.</string>
- <string name="found_existing_tor_process">löytyi olemassaoleva Tor-prosessi...</string>
- <string name="something_bad_happened">Jotain pahaa tapahtui. Tarkista loki</string>
- <string name="hidden_service_on">piilopalvelun sijainti:</string>
- <string name="unable_to_read_hidden_service_name">piilopalvelunimen lukeminen epäonnistui</string>
- <string name="unable_to_start_tor">Torin käynnistys epäonnistui:</string>
- <string name="unable_to_reset_tor">Toria ei voitu nollata, käynnistä laitteesi uudelleen!</string>
- <string name="pref_use_sys_iptables_title">Käytä Ip-oletustauluja</string>
- <string name="pref_use_sys_iptables_summary">käytä sisäänrakennettua Ip-taulubinääriä Orbotin mukana tulleen sijasta</string>
- <string name="error_installing_binares">Tor-binääritiedostojen asentaminen tai päivitys epäonnistui.</string>
- <string name="pref_use_persistent_notifications">Pidä kuvake aina työkalupalkissa, kun Orbot on yhdistetty</string>
- <string name="pref_use_persistent_notifications_title">Ilmoitukset aina käytössä</string>
- <string name="pref_use_expanded_notifications">Näytä laajennettu ilmoitus (Torin ulostulon maa ja IP)</string>
- <string name="pref_use_expanded_notifications_title">Laajennetut ilmoitukset</string>
- <string name="notification_using_bridges">Sillat käytössä!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Kieli</string>
- <string name="set_locale_summary">Valitse maa-asetus ja kieli Orbit-sovellukselle</string>
- <string name="wizard_locale_title">Valitse kieli</string>
- <string name="wizard_locale_msg">Jätä oletusarvoon tai vaihda nykyiseen kieleen</string>
- <string name="powered_by">perustuu Toriin</string>
- <string name="btn_save_settings">Tallenna asetukset</string>
- <string name="no_internet_connection_tor">Ei internet-yhteyttä; Tor on valmiustilassa...</string>
- <string name="bandwidth_">Kaistanleveys:</string>
- <string name="down">alas</string>
- <string name="up">ylös</string>
- <string name="pref_disable_network_title">Ei verkon automaattilepotilaa</string>
- <string name="pref_disable_network_summary">Laita Tor nukkumaan, kun internet-yhteyttä ei ole saatavilla</string>
- <string name="newnym">Vaihdoit Tor-identiteettisi uuteen!</string>
- <string name="menu_use_chatsecure">Käytä ChatSecurea</string>
- <string name="permission_manage_tor_label">Hallinnoi Toria</string>
- <string name="permission_manage_tor_description">Anna tämän sovelluksen ohjata Tor-palvelua</string>
- <string name="install_apps_">Asennetaanko sovelluksia?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ei verkkoyhteyttä. Tor siirtyy valmiustilaan...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Verkkoyhteys toimii. Herätetään Tor...</string>
- <string name="updating_settings_in_tor_service">päivitetään Tor-palvelun asetuksia</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Portti, jossa Torin SOCKS-proxy on (oletus: 9050, 0 = poista käytöstä)</string>
- <string name="pref_socks_dialog">SOCKS-portin valinta</string>
- <string name="pref_transport_title">Tor TransProxyn portti</string>
- <string name="pref_transport_summary">Portti, jossa Torin läpinäkyvä välityspalvelin on (oletus: 9040, 0 = poista käytöstä)</string>
- <string name="pref_transport_dialog">TransProxy-portin valinta</string>
- <string name="pref_dnsport_title">Tor DNS-portti</string>
- <string name="pref_dnsport_summary">Portti, jossa Torin DNS on (oletus: 5400, 0 = poista käytöstä)</string>
- <string name="pref_dnsport_dialog">DNS-portin valinta</string>
- <string name="pref_torrc_title">Torrc:n mukautetut asetukset</string>
- <string name="pref_torrc_summary">VAIN ASIANTUNTIJAT: syötä torrc:n määritysrivejä suoraan</string>
- <string name="pref_torrc_dialog">Mukautettu torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetechin ihmisoikeuksien dokumentaatiosovellus</string>
- <string name="your_tor_public_ips_">Julkiset Tor-IP:si:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Poista tämä sovellus käytöstä kohdassa Android->Asetukset->Sovellukset, jos Orbotin kanssa on ongelmia:</string>
- <string name="app_conflict">Sovellusristiriita</string>
- <string name="pref_transproxy_refresh_title">Transproxyn automaattinen päivitys</string>
- <string name="pref_transproxy_refresh_summary">Uudista Transproxy-säännöt, kun verkon tila muuttuu</string>
- <string name="pref_transproxy_flush_title">Transproxyn PAKOTETTU POISTO</string>
- <string name="pref_transproxy_flush_summary">Kosketa tätä tyhjentääksesi transproxyn verkkosäännöt V�LITT�M�STI</string>
- <string name="transparent_proxy_rules_flushed_">Läpinäkyvän välityspalvelimen säännöt tyhjennetty!</string>
- <string name="you_do_not_have_root_access_enabled">Sinulla ei ole ROOT-oikeuksia käytössä</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Saatat joutua pysäyttämään ja käynnistämään Orbotin, jotta asetusten muutos tulee käyttöön</string>
- <string name="kbps">kbps</string>
- <string name="mbps">Mbps</string>
- <string name="kb">kt</string>
- <string name="mb">Mt</string>
- <string name="bridges_updated">Sillat päivitetty</string>
- <string name="restart_orbot_to_use_this_bridge_">Käynnistä Orbot uudelleen ottaaksesi muutokset käyttöön</string>
- <string name="menu_qr">QR-koodit</string>
- <string name="bridge_mode">Siltatila</string>
- <string name="get_bridges_email">Sähköposti</string>
- <string name="get_bridges_web">Verkkosivu</string>
- <string name="activate">Ota käyttöön</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Voit siirtää kaikki sovellukset laitteellasi kulkemaan Tor-verkon kautta Androidin VPN-toiminnolla.\n\n*VAROITUS* Tämä on uusi, kokeellinen ominaisuus, joka ei välttämättä käynnisty automaattisesti tai voi pysähtyä. Sitä EI pitäisi käyttää anonymiyteen, AINOASTAAN palomuurien ja suodatinten ohittamiseen.</string>
- <string name="send_email">Lähetä sähköpostia</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Voit saada sillan osoitteen sähköpostin kautta, verkkosivulta tai skannaamalla sillan QR-koodin. Valitse \'Sähköposti\' tai \'Verkkosivu\' alta pyytääksesi sillan osoitetta.\n\nKun sinulla on osoite, kopioi & liitä se \"Sillat\" -kohtaan Orbotin asetuksissa ja käynnistä uudelleen.</string>
- <string name="standard_browser">Normaali selain</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">HUOMAA: Vain standardit Tor-sillat toimivat Intel X86/ATOM -laitteilla.</string>
-</resources>
diff --git a/res/values-fr-rFR/strings.xml b/res/values-fr-rFR/strings.xml
deleted file mode 100644
index 7685171..0000000
--- a/res/values-fr-rFR/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot est une appli libre de serveur mandataire permettant aux applis d\'utiliser Internet avec une sécurité accrue. Orbot utilise Tor pour chiffrer votre trafic Internet et le cache ensuite en le relayant au travers d\'ordinateurs de par le monde. Tor est un logiciel libre et un réseau ouvert qui vous aide à vous défendre contre une forme de surveillance réseau qui menace la liberté personnelle et la protection des données personnelles, les activités professionnelles confidentielles et les relations, et l\'analyse du trafic des gouvernements.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">démarrer et arrêter Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot démarre...</string>
- <string name="status_activated">Connecté au réseau Tor</string>
- <string name="status_disabled">Orbot est désactivé</string>
- <string name="status_shutting_down">TorService est en cours d\'extinction</string>
- <string name="tor_process_starting">Démarrage du client Tor...</string>
- <string name="tor_process_complete">terminé.</string>
- <string name="tor_process_waiting">attente.</string>
- <string name="not_anonymous_yet">AVERTISSEMENT : votre trafic n\'est pas encore anonyme ! Veuillez configurer vos applications pour qu\'elles utilisent le serveur mandataire HTTP 127.0.0.1:8118 ou le serveur mandataire SOCKS4A ou SOCKS5 Ã 127.0.0.1:9050</string>
- <string name="menu_home">Accueil</string>
- <string name="menu_browse">Parcourir</string>
- <string name="menu_settings">Paramètres</string>
- <string name="menu_log">Journal</string>
- <string name="menu_info">Aide</string>
- <string name="menu_apps">RPV</string>
- <string name="menu_start">Démarrer</string>
- <string name="menu_stop">Arrêter</string>
- <string name="menu_about">Ã? propos</string>
- <string name="menu_promo_apps">Obtenir des applis...</string>
- <string name="main_layout_download">Télchargement</string>
- <string name="main_layout_upload">Téléversement</string>
- <string name="button_help">Aide</string>
- <string name="button_close">Fermer</string>
- <string name="button_about">Ã? propos</string>
- <string name="button_clear_log">Effacer le journal</string>
- <string name="menu_verify">Vérifier</string>
- <string name="menu_exit">Quitter</string>
- <string name="menu_scan">Balayer un code QR de pont</string>
- <string name="menu_share_bridge">Partager un code QR de pont</string>
- <string name="press_to_start">- appuyer longuement pour démarrer -</string>
- <string name="pref_trans_proxy_group">Relayage transparent (root exigé)</string>
- <string name="pref_trans_proxy_title">Relayage transparent</string>
- <string name="pref_trans_proxy_summary">Torifaction automatique des applis</string>
- <string name="pref_transparent_all_title">Tout passer par Tor</string>
- <string name="pref_transparent_all_summary">Relayer le trafic de toutes les applis par Tor</string>
- <string name="pref_transparent_port_fallback_title">Repli pour le relais de port</string>
- <string name="pref_transparent_port_fallback_summary">AVERTISSEMENT : contourne les ports habituels (80, 443, etc). *� N\'UTILISER QUE* si les modes « Tout » ou « Appli » ne fonctionnent pas.</string>
- <string name="pref_transparent_port_title">Liste des ports</string>
- <string name="pref_transparent_port_summary">Liste des ports à relayer. *� N\'UTILISER QUE* si les modes « Tout » ou « Appli » ne fonctionnent pas.</string>
- <string name="pref_transparent_port_dialog">Saisir les ports à relayer</string>
- <string name="pref_has_root">Demander l\'accès Root</string>
- <string name="pref_has_root_summary">Demander l\'accès Root pour un relayage transparent</string>
- <string name="status_install_success">L\'exécutable de Tor a été installé avec succès !</string>
- <string name="status_install_fail">Le fichier exécutable de Tor n\'a pu pas être installé. Veuillez vérifier le journal et le signaler à tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Erreur d\'application</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Ã? propos d\'Orbot</string>
- <string name="btn_next">Suivant</string>
- <string name="btn_back">Précédent</string>
- <string name="btn_finish">Fin</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Annuler</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Quelques détails sur Orbot</string>
- <string name="wizard_details_msg">Orbot est une application à code source ouvert incluant Tor, LibEvent et Polipo. Elle fournit un mandataire local HTTP (8118) et un mandataire SOCKS (9050) vers le réseau Tor. Orbot a aussi la capacité, sur un appareil rooté, d\'envoyer tout le trafic Internet par Tor.</string>
- <string name="wizard_permissions_root">Permission accordée</string>
- <string name="wizard_permissions_stock">Permissions d\'Orbot</string>
- <string name="wizard_premissions_msg_root">Excellent ! Nous avons détecté les permissions root sont activées pour Orbot. Nous utiliserons ce pouvoir avec discernement.</string>
- <string name="wizard_permissions_msg_stock">Bien que cela ne soit pas exigé, Orbot peut devenir un outil plus puissant si votre appareil à l\'accès root. Utilisez le bouton ci-dessous pour accorder à Orbot des superpouvoirs !</string>
- <string name="wizard_permissions_no_root">Si vous n\'avez pas l\'accès root ou n\'avez aucune idée de quoi l\'on parle, assurez-vous d\'utiliser des applis conçues pour fonctionner avec Orbot.</string>
- <string name="wizard_permissions_consent">Je comprends et je souhaite continuer sans superpouvoir</string>
- <string name="wizard_permission_enable_root">Accorder les droits Root à Orbot</string>
- <string name="wizard_configure">Configurer la torification</string>
- <string name="wizard_configure_msg">Orbot vous donne l\'option de faire passer tout le trafic applicatif par Tor OU de choisir les applications individuellement.</string>
- <string name="wizard_configure_all">Relayer toutes les applis par Tor</string>
- <string name="wizard_configure_select_apps">Choisir des applis pour Tor</string>
- <string name="wizard_tips_tricks">Applis concues pour Orbot</string>
- <string name="wizard_tips_msg">Les applis ci-dessous ont été développées pour fonctionner avec Orbot. Cliquez sur chaque bouton pour les installer maintenant, ou trouvez plus tard dans Google Play Store, sur le site Web GuardianProject.info ou avec F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Client sécurisé de messagerie instantanée pour Android</string>
- <string name="wizard_tips_proxy">Paramètres du relais - Apprendre à configurer des applis pour qu\'elles fonctionnent avec Orbot</string>
- <string name="wizard_tips_duckgo">Appli du moteur de recherche DuckDuckgo</string>
- <string name="wizard_tips_twitter">Configurer le mandataire Twitter sur l\'hôte « localhost:8118 » et le port 8118</string>
- <string name="wizard_tips_story_maker">Faiseur d\'histoires - Rédigez une histoire et laissez Tor s\'occuper de la sécurité !</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Paramètres du mandataire</string>
- <string name="wizard_proxy_help_msg">Si l\'appli Android que vous utilisez peut prendre en charge un mandataire HTTP ou SOCKS, vous pouvez alors la configurer pour se connecter à Orbot et utiliser Tor.\n\n\n Le paramètre de l\'hôte est 127.0.0.1 or « localhost ». Pour HTTP, le paramètre de port est 8118. Pour SOCKS, le mandataire est 9050. Vous devriez utiliser SOCKS4A ou SOCKS5 si possible.\n \n\n\n Vous pouvez en apprendre davantage sur l\'utilisation d\'un serveur mandataire sur Android dans la FAQ sur : http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Orbot est prêt !</string>
- <string name="wizard_final_msg">Des millions de personnes de par le monde utilisent Tor pour une grande variété de raisons.\n\nDes journalistes et des blogueurs, des défenseurs des droits humains, des officiers des forces de l\'ordre, des soldats, des sociétés, des citoyens de régimes répressifs, et de simples citoyens... et maintenant vous êtes aussi prêt à l\'utiliser !</string>
- <string name="wizard_exit_at_first_screen_toast">Veuillez configurer Orbot avant de pouvoir commencer à l\'utiliser !</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Vous vous êtes connecté au réseau Tor avec succès - mais cela NE SIGNIFIE PAS que votre appareil est sécurisé. Vous pouvez utiliser le bouton « Navigateur » pour tester votre connexion. \n\n Visitez https://guardianproject.info/apps/orbot ou envoyez un courriel à help@xxxxxxxxxxxxxxxxxxxx pour en savoir davantage.</string>
- <string name="tor_check">Ceci ouvrira votre navigateur Web sur https://check.torproject.org afin de déterminer si Orbot est convenablement configuré et si vous êtes connecté à Tor.</string>
- <string name="pref_hs_group">Hébergement de services cachés</string>
- <string name="pref_general_group">Général</string>
- <string name="pref_start_boot_title">Démarrer Orbot à l\'amorçage</string>
- <string name="pref_start_boot_summary">Démarrer Orbot automatiquement et se connecter à Tor lors de l\'amorçage de votre appareil Android</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot, c\'est Tor sur Android !\n\nTor vous aide à vous défendre contre le filtrage du contenu, l\'analyse du trafic et la surveillance du réseau qui menacent la vie privée, les informations confidentielles et les relations interpersonnelles.\n\nCet assistant vous aidera à configurer Orbot et Tor sur votre appareil.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Avertissement</string>
- <string name="wizard_warning_msg">La simple installation d\'Orbot n\'anonymisera pas automatiquement votre trafic mobile.\n\nVous devez configurer Orbot adéquatement, ainsi que votre appareil et les autres applis pour utiliser Tor avec succès.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permissions</string>
- <string name="wizard_permissions_root_msg1">Vous pouvez optionnellement accorder à Orbot un accès « superutilisateur » pour activer des options avancées, comme le relayage transparent.</string>
- <string name="wizard_permissions_root_msg2">Si vous ne voulez pas le faire, veuillez vous assurer d\'utiliser des applis conçues pour fonctionner avec Orbot</string>
- <string name="wizard_permissions_no_root_msg">Votre appareil ne semble pas être rooté ou ne pas fournir l\'accès root ou super-utilisateur.\n\nVeuillez plutôt essayer le mode « Applis » de l\'écran principal.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Applis conçues pour Orbot</string>
- <string name="wizard_tips_gibberbot">Chatsecure : appli sécurisée de clavardage avec chiffrement confidentiel </string>
- <string name="wizard_tips_orweb">Orfox : navigateur à confidentialité améliorée fonctionnant sur Tor</string>
- <string name="wizard_tips_play">Trouver toutes les applis du Projet Guardian sur Google Play</string>
- <string name="wizard_tips_fdroid">Trouver toutes les applis du Projet Guardian sur F-Droid</string>
- <string name="wizard_tips_fdroid_org">Trouver toutes les applis du Projet Guardian sur https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Relayage transparent</string>
- <string name="wizard_transproxy_msg">Ceci permet à vos applis d\'utiliser automatiquement le réseau Tor sans aucune configuration.</string>
- <string name="wizard_transproxy_hint">(Cochez cette case si vous n\'avez aucune idée de ce dont nous parlons)</string>
- <string name="wizard_transproxy_none">Aucun</string>
- <string name="pref_transparent_tethering_title">Fonction modem avec Tor</string>
- <string name="pref_transparent_tethering_summary">Activer le relayage transparent pour les périphériques utilisant la fonction modem soit par Wi-Fi ou par USB (redémarrage nécessaire)</string>
- <string name="button_grant_superuser">Demander l\'accès superutilisateur</string>
- <string name="pref_select_apps">Choisir les applis</string>
- <string name="pref_select_apps_summary">Choisir les applis à acheminer par Tor</string>
- <string name="pref_node_configuration">Configuration de nÅ?ud </string>
- <string name="pref_node_configuration_summary">Ces paramètres avancés peuvent réduire votre anonymat</string>
- <string name="pref_entrance_node">NÅ?uds d\'entrée</string>
- <string name="pref_entrance_node_summary">Empreintes, pseudos, pays et adresses pour le premier saut</string>
- <string name="pref_entrance_node_dialog">Saisir les nÅ?uds d\'entrée</string>
- <string name="pref_allow_background_starts_title">Permet des lancements en arrière-plan</string>
- <string name="pref_allow_background_starts_summary">Laissez n\'importe quelle appli dire à Orbot de démarrer Tor et les services connexes</string>
- <string name="button_proxy_all">Tout relayer</string>
- <string name="button_proxy_none">Ne rien relayer</string>
- <string name="button_invert_selection">Inverser la sélection</string>
- <string name="pref_proxy_title">Mandataire pour le réseau sortant (optionnel)</string>
- <string name="pref_proxy_type_title">Type de mandataire sortant</string>
- <string name="pref_proxy_type_summary">Protocole à utiliser pour le serveur mandataire : HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Saisir le type de mandataire</string>
- <string name="pref_proxy_host_title">Hôte du mandataire sortant</string>
- <string name="pref_proxy_host_summary">Nom d\'hôte du serveur mandataire</string>
- <string name="pref_proxy_host_dialog">Saisir l\'hôte mandataire</string>
- <string name="pref_proxy_port_title">Port du mandataire sortant</string>
- <string name="pref_proxy_port_summary">Port du serveur mandataire</string>
- <string name="pref_proxy_port_dialog">Saisir le port du mandataire</string>
- <string name="pref_proxy_username_title">Nom d\'utilisateur du mandataire sortant</string>
- <string name="pref_proxy_username_summary">Nom d\'utilisateur du mandataire (optionnel)</string>
- <string name="pref_proxy_username_dialog">Saisir le nom d\'utilisateur du mandataire</string>
- <string name="pref_proxy_password_title">Mot de passe du mandataire sortant</string>
- <string name="pref_proxy_password_summary">Mot de passe du mandataire (optionnel)</string>
- <string name="pref_proxy_password_dialog">Saisir le mot de passe du mandataire</string>
- <string name="status">Ã?tat</string>
- <string name="setting_up_full_transparent_proxying_">Configuration le relayage entièrement transparent...</string>
- <string name="setting_up_app_based_transparent_proxying_">Configuration d\'un relayage transparent par appli...</string>
- <string name="transparent_proxying_enabled">Relayage transparent ACTIVÃ?</string>
- <string name="transproxy_enabled_for_tethering_">Relais transparent activé pour pour la fonction modem !</string>
- <string name="warning_error_starting_transparent_proxying_">AVERTISSEMENT : erreur lors du démarrage du relayage transparent !</string>
- <string name="transproxy_rules_cleared">Règles du relais transparent effacées</string>
- <string name="couldn_t_start_tor_process_">Impossible de démarrer le processus Tor : </string>
- <string name="privoxy_is_running_on_port_">Polipo tourne sur le port : </string>
- <string name="setting_up_port_based_transparent_proxying_">Configuration du relayage transparent par port...</string>
- <string name="bridge_error">Erreur de pont</string>
- <string name="bridge_requires_ip">Afin de pouvoir utiliser la fonction pont, vous devez au moins saisir l\'adresse IP d\'un pont.</string>
- <string name="send_email_for_bridges">Envoyez un courriel à bridges@xxxxxxxxxxxxxx avec la ligne « get bridges », seule, dans le corps du courriel à partir d\'un compte Gmail. </string>
- <string name="error">Erreur</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Vos paramètres ReachableAddresses (adresses accessibles) ont causé une exception !</string>
- <string name="your_relay_settings_caused_an_exception_">Vos paramètres de relais ont causé une exception !</string>
- <string name="exit_nodes">NÅ?uds de sortie</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Empreintes, pseudos, pays et adresses pour le dernier saut</string>
- <string name="enter_exit_nodes">Saisir les noeuds de sortie</string>
- <string name="exclude_nodes">NÅ?uds à exclure</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Empreintes, pseudos, pays et adresses à exclure</string>
- <string name="enter_exclude_nodes">Saisir les nÅ?uds à exclure</string>
- <string name="strict_nodes">NÅ?uds stricts</string>
- <string name="use_only_these_specified_nodes">Utiliser *uniquement * ces nÅ?uds spécifiés</string>
- <string name="bridges">Ponts</string>
- <string name="use_bridges">Utiliser des ponts</string>
- <string name="bridges_obfuscated">Ponts obscurcis</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activer des nÅ?uds alternatifs d\'entrée vers le réseau Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activer si les ponts configurés sont des ponts obscurcis</string>
- <string name="ip_address_and_port_of_bridges">Adresse IP et port des ponts</string>
- <string name="enter_bridge_addresses">Saisir les adresses des ponts</string>
- <string name="relays">Relais</string>
- <string name="relaying">Relayage</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Configurez votre appareil pour être un relais de non-sortie</string>
- <string name="relay_port">Port du relais</string>
- <string name="listening_port_for_your_tor_relay">Port d\'écoute pour votre relais Tor</string>
- <string name="enter_or_port">Saisir le port OR</string>
- <string name="relay_nickname">Pseudo du relais</string>
- <string name="the_nickname_for_your_tor_relay">Le pseudo de votre relais Tor</string>
- <string name="enter_a_custom_relay_nickname">Saisir un pseudo personnalisé pour le relais</string>
- <string name="reachable_addresses">Adresses accessibles</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Exécuter en tant que client derrière un pare-feu avec des politiques restrictives</string>
- <string name="reachable_ports">Ports accessibles</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ports accessibles derrière un pare-feu restrictif</string>
- <string name="enter_ports">Saisir les ports</string>
- <string name="enable_hidden_services">Hébergement de services cachés</string>
- <string name="run_servers_accessible_via_the_tor_network">permettre aux serveurs sur l\'appareil d\'être accessibles par le réseau Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">saisir les ports de l\'hôte local pour les services cachés</string>
- <string name="hidden_service_ports">Ports des services cachés</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">le nom adressable pour votre service caché (généré automatiquement)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activer le journal de débogage vers la sortie (vous devez utiliser adb ou aLogCat pour le visualiser)</string>
- <string name="project_home">Page(s) d\'accueil du projet :</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">La licence de Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Logiciels tiers :</string>
- <string name="tor_version">Tor : https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21 : http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9 : https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21 : http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q : http://www.openssl.org</string>
- <string name="hidden_service_request">Une appli veut ouvrir le port %S du serveur caché au réseau Tor. ceci est sécuritaire si vous faites confiance à l\'appli.</string>
- <string name="found_existing_tor_process">un processus existant de Tor a été trouvé...</string>
- <string name="something_bad_happened">Quelque chose n\'a pas été. Vérifiez le journal</string>
- <string name="hidden_service_on">service caché sur :</string>
- <string name="unable_to_read_hidden_service_name">impossible de lire le nom du service caché</string>
- <string name="unable_to_start_tor">Impossible de démarrer Tor :</string>
- <string name="unable_to_reset_tor">Redémarrez votre appareil, impossible de réinitialiser Tor !</string>
- <string name="pref_use_sys_iptables_title">Utiliser les Iptables par défaut</string>
- <string name="pref_use_sys_iptables_summary">Utiliser le binaire iptables intégré à la place du binaire intégré avec Orbot</string>
- <string name="error_installing_binares">Les fichiers binaires de Tor n\'ont pas pu être installés ou mis à niveau.</string>
- <string name="pref_use_persistent_notifications">Toujours conserver l\'icône dans la barre des tâches quand Orbot est connecté.</string>
- <string name="pref_use_persistent_notifications_title">Toujours activer les notifications</string>
- <string name="pref_use_expanded_notifications">Montrer des notifications étendues avec le pays de sortie de Tor et l\'IP</string>
- <string name="pref_use_expanded_notifications_title">Notifications étendues</string>
- <string name="notification_using_bridges">Les ponts sont activés !</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Langue</string>
- <string name="set_locale_summary">Choisir les paramètres régionaux pour Orbot</string>
- <string name="wizard_locale_title">Choisir la langue</string>
- <string name="wizard_locale_msg">Laisser à la valeur par défaut ou changer la langue actuelle</string>
- <string name="powered_by">propulsé par Tor</string>
- <string name="btn_save_settings">Enregistrer les paramètres</string>
- <string name="no_internet_connection_tor">Pas de connexion Internet ; Tor est en attente...</string>
- <string name="bandwidth_">Bande passante :</string>
- <string name="down">aval</string>
- <string name="up">amont</string>
- <string name="pref_disable_network_title">Pas de mise en veille automatique du réseau</string>
- <string name="pref_disable_network_summary">Mettre Tor en veille quand aucune connexion Internet n\'est disponible</string>
- <string name="newnym">Vous avez basculé vers une nouvelle identité Tor !</string>
- <string name="menu_verify_browser">Navigateur</string>
- <string name="menu_use_chatsecure">Utiliser ChatSecure</string>
- <string name="permission_manage_tor_label">Gérer Tor</string>
- <string name="permission_manage_tor_description">Autoriser cette appli à contrôler le service Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Il semble qu\'Orfox n\'est pas installé. Voulez-vous de l\'aide à ce sujet ou devrions-nous juste ouvrir le navigateur ?</string>
- <string name="install_apps_">Installer les applis ?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Pas de connectivité réseau. Mise au repos de Tor...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">La connectivité réseau est bonne. Réveil de Tor...</string>
- <string name="updating_settings_in_tor_service">mise à jour des paramètres dans le service Tor</string>
- <string name="pref_socks_title">SOCKS Tor</string>
- <string name="pref_socks_summary">Port sur lequel Tor offre son mandataire SOCKS (par défaut : 9050 ou 0 pour le désactiver)</string>
- <string name="pref_socks_dialog">Configuration du part SOCKS</string>
- <string name="pref_transport_title">Port Transproxy de Tor</string>
- <string name="pref_transport_summary">Port sur lequel Tor offre son mandataire transparent (par défaut : 9040 ou 0 pour le désactiver)</string>
- <string name="pref_transport_dialog">Configuration du port TransProxy</string>
- <string name="pref_dnsport_title">Port DNS de Tor</string>
- <string name="pref_dnsport_summary">Port sur lequel Tor offre son DNS (par défaut : 5400 ou 0 pour le désactiver)</string>
- <string name="pref_dnsport_dialog">Configuration du port DNS</string>
- <string name="pref_torrc_title">Configuration personnalisée de Torrc</string>
- <string name="pref_torrc_summary">EXPERTS SEULEMENT : saisissez les lignes de configuration de torrc direct</string>
- <string name="pref_torrc_dialog">Personnaliser Torrc </string>
- <string name="wizard_tips_martus">Martus mobile - Appli de documentation pour les droits humains de Benetech</string>
- <string name="your_tor_public_ips_">Vos IP publiques Tor :</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Veuillez désactiver cette appli dans Android->Paramètres->Applications si vous éprouvez des problèmes avec Orbot :</string>
- <string name="app_conflict">Conflit d\'applis</string>
- <string name="pref_transproxy_refresh_title">Rafraîchissement automatique de Transproxy</string>
- <string name="pref_transproxy_refresh_summary">Appliquer de nouveau les règles de Transproxy lors des changements d\'état du réseau</string>
- <string name="pref_transproxy_flush_title">Transproxy ENLEVER DE FORCE</string>
- <string name="pref_transproxy_flush_summary">Toquer ici pour vider toutes les règles réseau de transproxy MAINTENANT</string>
- <string name="transparent_proxy_rules_flushed_">Les règles du mandataire transparent ont été vidées !</string>
- <string name="you_do_not_have_root_access_enabled">L\'accès ROOT n\'est pas activé</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Vous pourriez avoir à arrêter et démarrer Orbot pour que les changements de paramètres soient activés.</string>
- <string name="menu_vpn">RPV</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">Ko</string>
- <string name="mb">Mo</string>
- <string name="bridges_updated">Ponts mis à jour</string>
- <string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
- <string name="menu_qr">Codes QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un pont pour accéder au réseau.\n\nCHOISIR un des types de ponts ci-dessus pour activer les ponts.</string>
- <string name="bridge_mode">Mode pont</string>
- <string name="get_bridges_email">Courriel</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Activer</string>
- <string name="apps_mode">Mode RPV des applis</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Vous pouvez activer le relais de toutes les applis par le réseau Tor en utilisant la fonction de RPV d\'Android.\n\n*AVERTISSEMENT* Cette fonction est nouvelle et expérimentale et pourrait parfois ne pas démarrer automatiquement, et même s\'arrêter. Elle ne devrait PAS être utilisée pour l\'anonymat, et être SEULEMENT utilisée pour passer les pare-feu et les filtres.</string>
- <string name="send_email">Envoyer un courriel</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Vous pouvez obtenir une adresse de pont par courriel, par le Web ou en balayant le code QR d\'un pont. Choisissez *Courriel* ou *Web* ci-dessous pour demander une adresse de pont.\n\nUne fois que vous avez une adresse, copiez & collez-la dans le champ « Ponts » des paramètres d\'Orbot et redémarrez.</string>
- <string name="install_orweb">Installer Orfox</string>
- <string name="standard_browser">Navigateur standard</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Note : seuls les ponts Tor standards fonctionnent sur les appareils Intel X86/ATOM</string>
- <string name="vpn_default_world">Monde</string>
-</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
deleted file mode 100644
index 3f54635..0000000
--- a/res/values-fr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot est une application proxy gratuite qui améliore l\'utilisation plus sécurisée des applications. Orbot utilise Tor pour crypter votre trafic internet et le cacher en passant par une série d\'ordinateur partout dans le monde. Tor est un logiciel gratuit et un réseau ouvert qui vous aide à vous défendre contre les surveillances de réseau qui font peur à la liberté personnelle et la vie privée, les activités confidentielles des entreprises et des relations, et l\'état de la sécurité connu sous le nom d\'analyse de trafic.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Démarrer et arrêter Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Démarrage de Orbot...</string>
- <string name="status_activated">Connecté au réseau Tor</string>
- <string name="status_disabled">Orbot est désactivé</string>
- <string name="status_shutting_down">Le service Tor est en cours de fermeture</string>
- <string name="tor_process_starting">Démarrage du client Tor...</string>
- <string name="tor_process_complete">terminé.</string>
- <string name="tor_process_waiting">en attente.</string>
- <string name="not_anonymous_yet">ATTENTION : Votre trafic n\'est pas encore anonyme ! Veuillez configurer votre application pour utiliser le proxy HTTP 127.0.0.1:8118 ou le proxy SOCKS4A ou SOCKS5A 172.0.0.1:9050</string>
- <string name="menu_home">Accueil</string>
- <string name="menu_browse">Naviguer</string>
- <string name="menu_settings">Paramètres</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Aide</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Démarrer</string>
- <string name="menu_stop">Arrêter</string>
- <string name="menu_about">A propos</string>
- <string name="menu_promo_apps">Obtenir des applications</string>
- <string name="main_layout_download">Télécharger</string>
- <string name="main_layout_upload">Envoyer</string>
- <string name="button_help">Aide</string>
- <string name="button_close">Fermer</string>
- <string name="button_about">A propos</string>
- <string name="button_clear_log">Effacer la log</string>
- <string name="menu_verify">Vérifier</string>
- <string name="menu_exit">Quitter</string>
- <string name="menu_scan">Analyser BridgeQR</string>
- <string name="menu_share_bridge">Partager BridgeQR</string>
- <string name="press_to_start">- appui long pour commencer -</string>
- <string name="pref_trans_proxy_group">Passage du trafic Internet de manière transparente (Requiert le Root)</string>
- <string name="pref_trans_proxy_title">Passage du trafic Internet de manière transparente</string>
- <string name="wizard_title">Orbot</string>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Passage du trafic Internet de manière transparente</string>
- <string name="default_bridges"></string>
- <string name="menu_vpn">VPN</string>
-</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
deleted file mode 100644
index 9c7d1ad..0000000
--- a/res/values-gl/strings.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot é unha aplicación de proxy libre que permite a outras aplicacións usar a internet dun xeito máis seguro. Orbot usa Tor para encriptar o teu tráfico de internet ocultando e rebotándoo a través dunha serie de ordenadores ao redor do mundo. Tor é software libre e unha rede aberta que axuda a defenderte contra unha forma de vixiancia na rede que ameaza a liberdade e privacidade persoal, actividades confidenciáis de negocios e relacións, e estado de seguridade coñecido como análise de tráfico.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">iniciar e deter Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot está a se iniciar...</string>
- <string name="status_activated">Conectado á rede Tor</string>
- <string name="status_disabled">Orbot está desactivado</string>
- <string name="tor_process_starting">Iniciando cliente Tor...</string>
- <string name="tor_process_complete">completado.</string>
- <string name="tor_process_waiting">á espera.</string>
- <string name="not_anonymous_yet">AVISO: o teu tráfico aÃnda non é anónimo! Por favor, configura os teus aplicativos para uxar o proxy HTTP 127.0.0.1:8118 ou SOCKS4A ou o proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Inicio</string>
- <string name="menu_browse">Examinar</string>
- <string name="menu_settings">Axustes</string>
- <string name="menu_log">Rexistro (log)</string>
- <string name="menu_info">Axuda</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Deter</string>
- <string name="menu_about">Sobre</string>
- <string name="main_layout_download">Descargar</string>
- <string name="main_layout_upload">Cargar</string>
- <string name="button_help">Axuda</string>
- <string name="button_close">Pechar</string>
- <string name="button_about">Sobre</string>
- <string name="button_clear_log">Limpar rexistro</string>
- <string name="menu_verify">Comprobar</string>
- <string name="menu_exit">SaÃr </string>
- <string name="press_to_start">- toque longo para comezar-</string>
- <string name="pref_trans_proxy_group">Proxyficación transparente (cómpre ser root)</string>
- <string name="pref_trans_proxy_title">Proxyficación transparente</string>
- <string name="pref_trans_proxy_summary">Torificación Automática dos Aplicativos</string>
- <string name="pref_transparent_all_title">Tor para todo</string>
- <string name="pref_transparent_all_summary">Pasar todo o tráfico dos aplicativos por Tor</string>
- <string name="pref_transparent_port_fallback_title">Porto de Reserva do Proxy</string>
- <string name="pref_transparent_port_fallback_summary">ATENCI�N: Evita os portos comúns (80, 443, etc). * USAR S�* se os modos \'Todo\' ou \'Aplicación\' non funcionan.</string>
- <string name="pref_transparent_port_title">Lista de Portos</string>
- <string name="pref_transparent_port_summary">Lista de portos a pasar. *USAR S�* se os modos \'Todo\' ou \'Aplicación\' non funcionan</string>
- <string name="pref_transparent_port_dialog">Introduza os portos a pasar</string>
- <string name="pref_has_root">Requerir Acceso de Superusuario</string>
- <string name="pref_has_root_summary">Requerir acceso de root para proxy transparente</string>
- <string name="status_install_success">Se instalaron con éxito os binarios de Tor!</string>
- <string name="status_install_fail">Non se puideron instalar os ficheiros binarios de Tor. Por favor, comprobe o rexistro e notifÃqueo a tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Erro de Aplicativo</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
- <string name="btn_next">Seguinte</string>
- <string name="btn_back">Atrás</string>
- <string name="btn_finish">Rematar</string>
- <string name="btn_okay">Aceptar</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Algúns detalles sobre Orbot</string>
- <string name="wizard_permissions_root">Permiso Concedido</string>
- <string name="wizard_permissions_stock">Permisos de Orbot</string>
- <string name="wizard_premissions_msg_root">Excelente! Detectamos que ten permisos de root habilitados para Orbot. Empregaremos este poder sabiamente.</string>
- <string name="wizard_permissions_msg_stock">AÃnda que non é necesario, Orbot pode ser unha ferramenta máis poderosa se o seu dispositivo ten acceso de root. Use o botón de abaixo para dar superpoderes a Orbot!</string>
- <string name="wizard_permissions_no_root">Se non ten acceso de root ou non tén nin idea de qué lle estamos a falar, asegúrese de usar aplicativos que funcionen con Orbot.</string>
- <string name="wizard_permissions_consent">Entendo e gostarÃame continuar sen Superusuario</string>
- <string name="wizard_permission_enable_root">Conceder Root a Orbot</string>
- <string name="wizard_configure">Configurar Torificación</string>
- <string name="wizard_configure_msg">Orbot dá-lle a opción de enrutar todo o tráfico dos aplicativos a través de Tor OU elexir ditos aplicativos individualmente.</string>
- <string name="wizard_configure_all">Enviar Todos os Aplicativos Por Tor</string>
- <string name="wizard_configure_select_apps">Elixir Aplicativos Individuais por Tor</string>
- <string name="wizard_tips_tricks">Aplicativos habilitados para Tor</string>
- <string name="wizard_tips_msg">Os aplicativos de abaixo foron programados para funcionar con Orbot. Prema en cada botón para instalar agora, ou os pode atopar despóis en Google Play, no sitio web GuardianProject.info ou en F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensaxerÃa instantánea segura para Android</string>
- <string name="wizard_tips_proxy">Axustes do Proxy - Aprenda cómo configurar aplicativos para que funcionen con Orbot</string>
- <string name="wizard_tips_duckgo">Aplicativo do Motor de Búsquedas DuckDuckGo</string>
- <string name="wizard_tips_twitter">Axustar o host para proxy de Twitter a \"localhost\" e porto 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Axustes do proxy</string>
- <string name="wizard_final">Orbot está listo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Isto abrirá no seu navegador https://check.torproject.org para ver se Obrbot está configurado probablemente e se está conectado a Tor.</string>
- <string name="pref_hs_group">Aloxamento Oculto de Servizo</string>
- <string name="pref_general_group">Xeral</string>
- <string name="pref_start_boot_title">Inciar Orbot no Arranque</string>
- <string name="pref_start_boot_summary">Iniciar Orbot automáticamente cando o seu dispositivo Android arranque</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Aviso</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permisos</string>
- <string name="wizard_permissions_root_msg1">Opcionalmente pode darlle a Orbot acceso de \'Superusuario\' para habilitar caracterÃsticas avanzadas, como o Proxy Transparente.</string>
- <string name="wizard_permissions_root_msg2">Se non quere facer isto, por favor asegúrese de usar aplicativos feitos para traballar con Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplicativos Habilitados para Orbot</string>
- <string name="wizard_tips_gibberbot">CahtSecure: Aplicativo de chat seguro con Off-the-Record Encryption (OTR)</string>
- <string name="wizard_tips_play">Atope todos os aplicativos de Guardian Project apps en Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy Transparente</string>
- <string name="wizard_transproxy_msg">Isto permite que os seus aplicativos funcionen a través de rede Tor sen ningunha configuración.</string>
- <string name="wizard_transproxy_hint">(Marque esta caixa se non ten nin idea do que lle estamos a falar)</string>
- <string name="wizard_transproxy_none">Ningunha</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Habilitar Proxy Transparente Tor para dispositivos enlazados por Wifi ou USB (require reiniciar)</string>
- <string name="button_grant_superuser">Pedir Acceso de Superusuario</string>
- <string name="pref_select_apps">Seleccionar Aplicativos</string>
- <string name="pref_select_apps_summary">Elixir Aplicativos a Enrutar a Través de Tor</string>
- <string name="pref_node_configuration">Configuración de Nodo</string>
- <string name="pref_node_configuration_summary">Estes son axuste avanzados que poden reducir o seu anonimato</string>
- <string name="pref_entrance_node">Nodos de Entrada</string>
- <string name="pref_entrance_node_summary">Huellas, alias, paÃses e direccións para o primeiro salto</string>
- <string name="pref_entrance_node_dialog">Introduzca Nodos de Entrada</string>
- <string name="pref_proxy_title">Proxy para a Rede de SaÃda (Opcional)</string>
- <string name="pref_proxy_type_title">Tipo de Proxy de SaÃda</string>
- <string name="pref_proxy_type_summary">Protocolo a usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Introduzca Tipo de Proxy</string>
- <string name="pref_proxy_host_title">Host de Proxy de SaÃda</string>
- <string name="pref_proxy_host_summary">Nome do Host Proxy Servidor</string>
- <string name="pref_proxy_host_dialog">Introduzca o Host Proxy</string>
- <string name="pref_proxy_port_title">Porto do Proxy de SaÃda</string>
- <string name="pref_proxy_port_summary">Porto do Servidor Proxy</string>
- <string name="pref_proxy_port_dialog">Introduzca o porto do Proxy</string>
- <string name="pref_proxy_username_title">Nome de usuario do Proxy de SaÃda</string>
- <string name="pref_proxy_username_summary">Nome de Usuario do Proxy (Opcional)</string>
- <string name="pref_proxy_username_dialog">Introduza o Nome de Usuario do Proxy</string>
- <string name="pref_proxy_password_title">Contrasinal do Proxy de SaÃda</string>
- <string name="pref_proxy_password_summary">Contrasinal do Proxy (Opcional)</string>
- <string name="pref_proxy_password_dialog">Introduza Contrasinal do Proxy</string>
- <string name="status">Estado</string>
- <string name="setting_up_full_transparent_proxying_">Preparando proxy transparente completo...</string>
- <string name="setting_up_app_based_transparent_proxying_">Preparando proxy transparente baseado en aplicativo...</string>
- <string name="transparent_proxying_enabled">Proxy Transparente HABILITADO</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy habilitado para Enlazamento!</string>
- <string name="warning_error_starting_transparent_proxying_">ATENCIÃ?N: erro arrancando o proxy transparente!</string>
- <string name="transproxy_rules_cleared">Regras TransProxy limpadas</string>
- <string name="couldn_t_start_tor_process_">No se pudio inciar o proceso Tor:</string>
- <string name="setting_up_port_based_transparent_proxying_">Preparando proxy transparente baseado en porto...</string>
- <string name="bridge_error">Erro de Ponte</string>
- <string name="bridge_requires_ip">Para usar a caracterÃstica de ponte, debe introducir cando menos unha dirección IP de ponte.</string>
- <string name="send_email_for_bridges">EnvÃe un email a bridges@xxxxxxxxxxxxxx só coa liña \"get bridges\" no corpo do correo dende unha conta de gmail.</string>
- <string name="error">Erro</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">O seu axuste de ReachableAddresses causou unha excepción!</string>
- <string name="your_relay_settings_caused_an_exception_">Os seus axustes de relay causou unha excepción!</string>
- <string name="exit_nodes">Nodos de SaÃda</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Huellas, alias, paÃses e direccións para o último salto</string>
- <string name="enter_exit_nodes">Introduza Nodos de SaÃda</string>
- <string name="exclude_nodes">Excluir Nodos</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Huellas, alias, paÃses e direccións a excluÃr</string>
- <string name="enter_exclude_nodes">Introduza Nodos ExcluÃdos</string>
- <string name="strict_nodes">Nodos Estritos</string>
- <string name="use_only_these_specified_nodes">Usar *só* este nodos especÃficos</string>
- <string name="bridges">Pontes</string>
- <string name="use_bridges">Usar Pontes</string>
- <string name="bridges_obfuscated">Pontes Ofuscadas</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar nodos alternativos de entrada á rede Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Habilitar se oas pontes configuradas son pontes ofuscadas</string>
- <string name="ip_address_and_port_of_bridges">Dirección IP e porto das pontes</string>
- <string name="enter_bridge_addresses">Introduza Direccións das Pontes</string>
- <string name="relays">ReenvÃos</string>
- <string name="relaying">ReenvÃo</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Habilite o seu dispositivo para ser un reenvÃo non de saÃda</string>
- <string name="relay_port">Porto de ReenvÃo</string>
- <string name="listening_port_for_your_tor_relay">Porto de Escoita do seu reenvÃo Tor</string>
- <string name="enter_or_port">Introduza o porto OR</string>
- <string name="relay_nickname">Alias de ReenvÃo</string>
- <string name="the_nickname_for_your_tor_relay">Seu alias para reenvÃo de Tor</string>
- <string name="enter_a_custom_relay_nickname">Introduza un alias personalizado de reenvÃo</string>
- <string name="reachable_addresses">Direccións Alcanzábeis</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Executar como un cliente detrás dun firewall con polÃticas restritivas</string>
- <string name="reachable_ports">Portos Alcanzábeis</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Portos alcanzábeis detrás dun firewall restritivo</string>
- <string name="enter_ports">Inserir portos</string>
- <string name="enable_hidden_services">Aloxamento de Servizo Oculto</string>
- <string name="run_servers_accessible_via_the_tor_network">permitir ao servidor no dispositivo estar accesible na rede Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">introduza os portos localis para servizos ocultos</string>
- <string name="hidden_service_ports">Portos de Servicios Ocultos</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nome para referirse ao seu servizo oculto (xenerado automáticamente)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">habilitar rexistro de depuración na saÃda (debe usar adb ou aLogCat para ver)</string>
- <string name="project_home">Páxina(s) de Inicio do Proxecto:</string>
- <string name="the_tor_license">A Licencia de Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software de Terceiros:</string>
- <string name="hidden_service_request">Un aplicativo quere abrir o porto do servidor oculto %S na rede Tor. Isto é seguro se confÃa no aplicativo.</string>
- <string name="found_existing_tor_process">atopado proceso Tor existente...</string>
- <string name="something_bad_happened">Algo malo pasou. Comprobe o rexistro</string>
- <string name="hidden_service_on">servizo oculto en:</string>
- <string name="unable_to_read_hidden_service_name">imposible ler nome de servizo oculto</string>
- <string name="unable_to_start_tor">Incapaz de arrancar Tor</string>
- <string name="pref_use_sys_iptables_title">Usar iptables por Defecto</string>
- <string name="pref_use_sys_iptables_summary">usar o binario de iptables instalado en lugar do empaquetado con Orbot</string>
- <string name="error_installing_binares">Non se puideron instalar ou actualizar os binarios de Tor</string>
- <string name="pref_use_persistent_notifications">Mostrar sempre a icona na barra de ferramentas cando Orbot estea conectado</string>
- <string name="pref_use_persistent_notifications_title">Notificacións Sempre Acesas</string>
- <string name="notification_using_bridges">Pontes habilitadas!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Elixir locale e idioma para Orbot</string>
- <string name="wizard_locale_title">Escoller idioma</string>
- <string name="wizard_locale_msg">Deixar por defecto ou cambiar ao idioma actual</string>
- <string name="btn_save_settings">Gardar os axustes</string>
- <string name="bandwidth_">Ancho de Banda:</string>
- <string name="down">caÃdo</string>
- <string name="up">levantado</string>
- <string name="pref_disable_network_title">Auto-Parado Sen Rede</string>
- <string name="pref_disable_network_summary">Parar Tor cando non hai conexión a internet</string>
- <string name="newnym">Cambiou a unha nova identidade Tor!</string>
- <string name="menu_use_chatsecure">Usar ChatSecure</string>
- <string name="permission_manage_tor_label">Xestionar Tor</string>
- <string name="permission_manage_tor_description">Hablitar este aplicativo para controlar o servicio Tor</string>
- <string name="install_apps_">Instalar aplicativos?</string>
-</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
deleted file mode 100644
index bb77230..0000000
--- a/res/values-gu-rIN/strings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="btn_cancel">રદ �ર�</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">પ�ર���સ� ��ઠવણ��</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
deleted file mode 100644
index 573c5ef..0000000
--- a/res/values-gu/strings.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_info">મદદ</string>
- <string name="button_help">મદદ</string>
- <string name="button_close">બ�ધ �ર�</string>
- <string name="btn_cancel">રદ� �ર�</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">પ�ર���સ� ��ઠવણ��</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-he b/res/values-he
deleted file mode 120000
index 6fe8b49..0000000
--- a/res/values-he
+++ /dev/null
@@ -1 +0,0 @@
-values-iw
\ No newline at end of file
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
deleted file mode 100644
index f540ca1..0000000
--- a/res/values-hi/strings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">�रब�� �� म�फ�त ��प</string>
- <string name="menu_browse">ब�रा��़</string>
- <string name="menu_settings">स��ि���स</string>
- <string name="menu_info">मदद</string>
- <string name="button_help">मदद</string>
- <string name="button_close">ब�द �र�� </string>
- <string name="wizard_title">Orbot</string>
- <string name="btn_back">वापस</string>
- <string name="btn_cancel">रद�द �र�� </string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">प�र���स� स�����</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">समन�य </string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">��� नह��</string>
- <string name="status">स�थिति</string>
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-hr-rHR/strings.xml b/res/values-hr-rHR/strings.xml
deleted file mode 100644
index b636d33..0000000
--- a/res/values-hr-rHR/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_home">Polazno</string>
- <string name="menu_browse">Pretraži</string>
- <string name="menu_settings">Postavke</string>
- <string name="menu_info">PomoÄ?</string>
- <string name="menu_about">O</string>
- <string name="button_help">PomoÄ?</string>
- <string name="button_close">Zatvori</string>
- <string name="button_about">O</string>
- <string name="menu_exit">Izlaz</string>
- <string name="btn_back">Povratak</string>
- <string name="btn_cancel">Odustani</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Postavke Proxya</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">OpÄ?enito</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Upozorenje</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Nepoznato</string>
- <string name="status">Status</string>
- <string name="error">Greška</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Spremi postavke</string>
-</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
deleted file mode 100644
index 74832a8..0000000
--- a/res/values-hr/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot je besplatna proxy aplikacija koja omoguÄ?uje ostalim aplikacijama da koriste internet sigurnije. Orbot koristi Tor za enkripciju VaÅ¡eg Internet prometa, a zatim ga skriva Å¡aljuÄ?i ga kroz seriju raÄ?unala diljem svijeta. Tor je besplatan software i otvorena mreža koja pomaže u borbi protiv nadzora mreže koji ugrožava osobne slobode i privatnost, povjerljive poslovne aktivnosti i odnose, te pomaže u borbi protiv analize prometa.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">pokreni i zaustavi Tor</string>
- <string name="tor_proxy_service_process">torproxyusluga</string>
- <string name="status_starting_up">Orbot se pokreÄ?e...</string>
- <string name="status_activated">Spojen na Tor mrežu</string>
- <string name="status_disabled">Orbot je deaktiviran</string>
- <string name="status_shutting_down">TorService se gasi</string>
- <string name="tor_process_starting">PokreÄ?em Tor klijent...</string>
- <string name="tor_process_complete">gotovo.</string>
- <string name="tor_process_waiting">Ä?ekam.</string>
- <string name="not_anonymous_yet">UPOZORENJE: Vaš promet još nije anoniman! Molimo konfigurirajte Vaše aplikacije da koriste HTTP proxy 127.0.0.1:8118 ili SOCKS4A ili SOCKS5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Polazno</string>
- <string name="menu_browse">Pretraži</string>
- <string name="menu_settings">Postavke</string>
- <string name="menu_log">Dnevnik</string>
- <string name="menu_info">PomoÄ?</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">PoÄ?etak</string>
- <string name="menu_stop">Zaustavi</string>
- <string name="menu_about">O</string>
- <string name="menu_promo_apps">Dohvati aplikacije...</string>
- <string name="main_layout_download">Preuzimanje</string>
- <string name="main_layout_upload">Slanje</string>
- <string name="button_help">PomoÄ?</string>
- <string name="button_close">Zatvori</string>
- <string name="button_about">O</string>
- <string name="button_clear_log">OÄ?isti Dnevnik</string>
- <string name="menu_verify">Provjeri</string>
- <string name="menu_exit">Izlaz</string>
- <string name="menu_scan">Skeniraj BridgeQR</string>
- <string name="menu_share_bridge">Podijeli BridgeQR</string>
- <string name="press_to_start">- dugi klik za poÄ?etak -</string>
- <string name="pref_trans_proxy_group">Transparentni Proxy (Zahtijeva Root)</string>
- <string name="pref_trans_proxy_title">Transparentni Proxy</string>
- <string name="pref_trans_proxy_summary">Automatska Torifikacija Aplikacija</string>
- <string name="pref_transparent_all_title">Tor Sve</string>
- <string name="pref_transparent_all_summary">Proxy promet svih aplikacija kroz Tor</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy Rezerva</string>
- <string name="pref_transparent_port_fallback_summary">UPOZORENJE: Zaobilazi uobiÄ?ajene portove (80, 443, itd.) *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi.</string>
- <string name="pref_transparent_port_title">Popis portova</string>
- <string name="pref_transparent_port_summary">Popis portova za proxy. *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi</string>
- <string name="pref_transparent_port_dialog">Unesite port za proxy</string>
- <string name="pref_has_root">Zatraži Root Pristup</string>
- <string name="pref_has_root_summary">Zatraži root pristup za transparentni proxy</string>
- <string name="status_install_success">Tor izvršne datoteke uspješno instalirane!</string>
- <string name="status_install_fail">Tor izvrÅ¡ne datoteke nije bilo moguÄ?e instalirati. Molimo provjerite dnevnik i obavijestite tor-assistans@xxxxxxxxxxxxxx</string>
- <string name="title_error">Greška u Aplikaciji</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">O Orbot-u</string>
- <string name="btn_next">SljedeÄ?e</string>
- <string name="btn_back">Natrag</string>
- <string name="btn_finish">Završi</string>
- <string name="btn_okay">U redu</string>
- <string name="btn_cancel">Odustani</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Detalji o Orbot-u</string>
- <string name="wizard_details_msg">Orbot je otvorena aplikacija koja sadrži Tor, LibEvent i Polipo. Pruža lokalni HTTP proxy (8118) i SOCKS proxy (9050) u Tor mrežu. Orbot ima moguÄ?nost, na root-anom ureÄ?aju, slati sav promet kroz Tor.</string>
- <string name="wizard_permissions_root">Dopuštenje Odobreno</string>
- <string name="wizard_permissions_stock">Orbot Dopuštenja</string>
- <string name="wizard_premissions_msg_root">OdliÄ?no! UoÄ?ili smo da imate root dopuÅ¡tenja omoguÄ?ena za Orbot. Koristit Ä?emo ovu moÄ? mudro.</string>
- <string name="wizard_permissions_msg_stock">Iako nije neophodan, Orbot može postati moÄ?an alat ako vaÅ¡ ureÄ?aj ima root pristup. Koristite gumb niže da bi odobrili Orbot-u supermoÄ?i!</string>
- <string name="wizard_permissions_no_root">Ako nemate root pristup ili nemate pojma o Ä?emu priÄ?amo, osigurajte da koristite aplikacije koje rade s Orbot-om.</string>
- <string name="wizard_permissions_consent">Razumijem i želim nastaviti bez Superuser-a</string>
- <string name="wizard_permission_enable_root">Odobri Root za Orbot</string>
- <string name="wizard_configure">Konfiguriraj Torifikaciju</string>
- <string name="wizard_configure_msg">Orbot Vam daje opciju da usmjerite sav aplikacijski promet kroz Tor ILI odaberete aplikacije individualno.</string>
- <string name="wizard_configure_all">Proxy Sve Aplikacije Kroz Tor</string>
- <string name="wizard_configure_select_apps">Odaberi Individualne Aplikacije za Tor</string>
- <string name="wizard_tips_tricks">Orbot-omoguÄ?ene Aplikacije</string>
- <string name="wizard_tips_msg">Aplikacije dolje su napravljene da rade sa Orbot-om. Kliknite svaki gumb da instalirate odmah ili ih kasnije možete naÄ?i na Google Play-u, na GuardianProject.info web stranici ili preko F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Sigurni klijent instant poruka za Adnroid</string>
- <string name="wizard_tips_proxy">Proxy Postavke - NauÄ?ite kako konfigurirati aplikacije za rad s Orbot-om</string>
- <string name="wizard_tips_duckgo">DuckDuckGo aplikacija za pretraživanje</string>
- <string name="wizard_tips_twitter">Namjesti Twitter proxy na host \"localhost\" i port 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - napravite priÄ?u i prepustite sigurnost Tor-u!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Postavke Proxy-a</string>
- <string name="wizard_proxy_help_msg">Ako Android aplikacija koju koristite podržava koriÅ¡tenje HTTP ili SOCKS proxy-a, možete ju konfigurirati da se spaja na Orbot i koristi Tor.\n\n\n Postavke su 127.0.0.1 ili \"localhost\". Za HTTP postavke porta su 8118. Za SOCKS, proxy je 9050. Trebali bi koristiti SOCKS4A ili SOCKS5 ako je moguÄ?e.\n\n\n Možete nauÄ?iti viÅ¡e o proxy-ranju na Androidu putem Ä?esto postavljenih pitanja: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot je spreman!</string>
- <string name="wizard_final_msg">Milijuni ljudi diljem svijeta koriste Tor iz raznih razloga.\n\nNovinari i blogeri, pravobranitelji, policijski službenici, vojnici, korporacije, graÄ?ani represivnih režima i uobiÄ?ajeni graÄ?ani... a od sad i Vi!</string>
- <string name="wizard_exit_at_first_screen_toast">Molimo konfigurirajte Orbot prije nego ga poÄ?nete koristiti!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">UspjeÅ¡no ste spojeni na Tor mrežu - ali ovo NE znaÄ?i da je VaÅ¡ ureÄ?aj siguran. Možete koristiti gumb \'Preglednik\' kako bi testirali svoju vezu. \n\nPosjetite nas na https://guardianproject.info/apps/orbot ili nam poÅ¡aljite email na help@xxxxxxxxxxxxxxxxxxxx kako bi nauÄ?ili viÅ¡e.</string>
- <string name="tor_check">Ovo Ä?e otvoriti VaÅ¡ web preglednik na https://check.torproject.org kako bi vidjeli je li Orbot konfiguriran i jeste li povezani na Tor.</string>
- <string name="pref_hs_group">Hosting Skrivenih Usluga</string>
- <string name="pref_general_group">OpÄ?enito</string>
- <string name="pref_start_boot_title">Pokreni Orbot pri pokretanju</string>
- <string name="pref_start_boot_summary">Automatski pokreni Orbot i poveži Tor kad se Android ureÄ?aj pokrene</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot donosi Tor na Android!\n\nTor pomaže u borbi protiv filtriranja prometa, analize prometa i nadzora mreže koji ugrožava privatnost, povjerljive informacije i osobne veze.\n\nOvaj Ä?arobnjak Ä?e Vam pomoÄ?i u konfiguraciji Orbot-a i Tor-a na VaÅ¡em ureÄ?aju.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Upozorenje</string>
- <string name="wizard_warning_msg">Samo instaliranje Orbot-a neÄ?e automatski anonimizirati VaÅ¡ mobilni promet.\n\nMorate ispravno konfigurirati Orbot, svoj ureÄ?aj i ostale aplikacije da uspjeÅ¡no koriste Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Dopuštenja</string>
- <string name="wizard_permissions_root_msg1">Opcionalno, možete odobriti Orbot-u \'Superuser\' pristup da bi omoguÄ?ili napredne znaÄ?ajke, kao Å¡to je Transparentni Proxy.</string>
- <string name="wizard_permissions_root_msg2">Ako ne želite ovo, budite sigurni da koristite aplikacije koje su napravljene da rade s Orbotom</string>
- <string name="wizard_permissions_no_root_msg">Ä?ini se da VaÅ¡ ureÄ?aj nije root-an.\n\nMolimo probajte \'Aplikacije\' naÄ?in rada na glavnom ekranu.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-OmoguÄ?ene Aplikacije</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Sigurna aplikacija za Ä?avrljanje s Povjerljivom Enkripcijom</string>
- <string name="wizard_tips_orweb">Orfox: Preglednik s pojaÄ?anom privatnosti koji radi kroz Tor</string>
- <string name="wizard_tips_play">PronaÄ?i sve Guardian Projekt aplikacije na Google Play</string>
- <string name="wizard_tips_fdroid">PronaÄ?i sve Guardian Project aplikacije na F-Droid-u</string>
- <string name="wizard_tips_fdroid_org">PronaÄ?i sve Guardian Project aplikacije na https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparentni Proxy</string>
- <string name="wizard_transproxy_msg">Ovo omoguÄ?ava VaÅ¡im aplikacijama da automatski rade kroz Tor mrežu bez ikakve konfiguracije.</string>
- <string name="wizard_transproxy_hint">(Stavite kvaÄ?icu ako nemate pojma o Ä?emu priÄ?amo)</string>
- <string name="wizard_transproxy_none">Ništa</string>
- <string name="pref_transparent_tethering_title">Tor Privezanje</string>
- <string name="pref_transparent_tethering_summary">OmoguÄ?i Tor Transparentni Proxy za Wifi i USB privezane ureÄ?aje (zahtijeva ponovno pokretanje)</string>
- <string name="button_grant_superuser">Zatraži Pristup Superuser-u</string>
- <string name="pref_select_apps">Odaberi Aplikacije</string>
- <string name="pref_select_apps_summary">Odaberi Aplikacije koje Ä?e se usmjeriti kroz Tor</string>
- <string name="pref_node_configuration">Konfiguracija Ä?vora</string>
- <string name="pref_node_configuration_summary">Ovo su napredne postavke koje mogu smanjiti Vašu anonimnost</string>
- <string name="pref_entrance_node">Ulazni Ä?vorovi</string>
- <string name="pref_entrance_node_summary">Otisci prstiju, nadimci, države i adrese za prvi skok</string>
- <string name="pref_entrance_node_dialog">Unesi Ulazne Ä?vorove</string>
- <string name="pref_allow_background_starts_title">Dozvoli pokretanja u pozadini</string>
- <string name="pref_allow_background_starts_summary">Dopusti bilo kojoj aplikaciji da kaže Orbot-u da pokrene Tor i povezane usluge</string>
- <string name="button_proxy_all">Proxy-raj sve</string>
- <string name="button_proxy_none">Ne proxy-raj ništa</string>
- <string name="button_invert_selection">Izokreni odabrano</string>
- <string name="pref_proxy_title">Izlazni Mrežni Proxy (Opcionalno)</string>
- <string name="pref_proxy_type_title">Vrsta Izlaznog Proxy-a</string>
- <string name="pref_proxy_type_summary">Protokol koji se koristi za proxy server: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Unesi Tip Proxyj-a</string>
- <string name="pref_proxy_host_title">DomaÄ?in Izlaznog Proxy-a</string>
- <string name="pref_proxy_host_summary">Ime domaÄ?ina Proxy Poslužitelja</string>
- <string name="pref_proxy_host_dialog">Unesi DomaÄ?ina Proxy-a</string>
- <string name="pref_proxy_port_title">Port Izlaznog Proxy-a</string>
- <string name="pref_proxy_port_summary">Port Proxy Poslužitelja</string>
- <string name="pref_proxy_port_dialog">Unesite port za proxy.</string>
- <string name="pref_proxy_username_title">Proxy izlazno korisniÄ?ko ime</string>
- <string name="pref_proxy_username_summary">Proxy korisniÄ?ko ime (Opcionalno)</string>
- <string name="pref_proxy_username_dialog">Unesite Proxy korisniÄ?ko ime</string>
- <string name="pref_proxy_password_title">Proxy izlazna lozinka</string>
- <string name="pref_proxy_password_summary">Proxy lozinka (Opcionalno)</string>
- <string name="pref_proxy_password_dialog">Unesite Proxy lozinku</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Postavljam potpuno transparentan proxy...</string>
- <string name="setting_up_app_based_transparent_proxying_">Postavljam transparentan proxy zasnovan na aplikaciji...</string>
- <string name="transparent_proxying_enabled">Transparentni Proxy OMOGUÄ?ENO</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy omoguÄ?en za Privezivanje!</string>
- <string name="warning_error_starting_transparent_proxying_">UPOZORENJE: greška pri pokretanju transparentnog proxy-a!</string>
- <string name="transproxy_rules_cleared">TransProxy pravila oÄ?iÅ¡Ä?ena</string>
- <string name="couldn_t_start_tor_process_">Nije moguÄ?e zapoÄ?eti Tor proces:</string>
- <string name="privoxy_is_running_on_port_">Polipo je pokrenut na portu:</string>
- <string name="setting_up_port_based_transparent_proxying_">Postavljam transparentan proxy zasnovan na portu...</string>
- <string name="bridge_error">Greška Mosta</string>
- <string name="bridge_requires_ip">Da bi koristili mostove, morate unijeti bar jednu IP adresu mosta.</string>
- <string name="send_email_for_bridges">PoÅ¡aljite email koristeÄ?i gmail raÄ?un na bridges@xxxxxxxxxxxxxx samo s tekstom \"get bridges\" u sadržaju.</string>
- <string name="error">Greška</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Vaše ReachableAddresses postavke su uzrokovale iznimku!</string>
- <string name="your_relay_settings_caused_an_exception_">Vaše postavke releja su uzrokovale iznimku!</string>
- <string name="exit_nodes">Izlazni Ä?vorovi</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Otisci prstiju, nadimci, države i adrese za zadnji skok</string>
- <string name="enter_exit_nodes">Unesi Izlazne Ä?vorove</string>
- <string name="exclude_nodes">Nemoj UkljuÄ?iti Ä?vorove</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Otisci prstiju, nadimci, države i adrese koje ne treba ukljuÄ?iti</string>
- <string name="enter_exclude_nodes">Unesi Ä?vorove koje treba iskljuÄ?iti</string>
- <string name="strict_nodes">Striktni Ä?vorovi</string>
- <string name="use_only_these_specified_nodes">Koristi *samo* ove navedene Ä?vorove</string>
- <string name="bridges">Mostovi</string>
- <string name="use_bridges">Koristi Mostove</string>
- <string name="bridges_obfuscated">Skriveni Mostovi</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">OmoguÄ?i naizmjeniÄ?ne ulazne Ä?vorove u Tor Mrežu</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">OmoguÄ?ite ako su postavljeni mostovi skriveni mostovi</string>
- <string name="ip_address_and_port_of_bridges">IP adresa i port mostova</string>
- <string name="enter_bridge_addresses">Unesi Adrese Mostova</string>
- <string name="relays">Releji</string>
- <string name="relaying">Prenošenje</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">OmoguÄ?ite svom ureÄ?aju da bude ne-izlazni relej</string>
- <string name="relay_port">Relej Port</string>
- <string name="listening_port_for_your_tor_relay">Port za slušanje Vašeg Tor releja</string>
- <string name="enter_or_port">Unesi OR port</string>
- <string name="relay_nickname">Nadimak releja</string>
- <string name="the_nickname_for_your_tor_relay">Nadimak za Vaš Tor relej</string>
- <string name="enter_a_custom_relay_nickname">Unesi prilagoÄ?eni nadimak releja</string>
- <string name="reachable_addresses">Dostupne Adrese</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Pokreni kao klijent iza firewall-a sa restriktivnim pravilima</string>
- <string name="reachable_ports">Dostupni portovi</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Portovi dostupni iza restriktivnog firewall-a</string>
- <string name="enter_ports">Unesi portove</string>
- <string name="enable_hidden_services">Hosting Skrivenih Usluga</string>
- <string name="run_servers_accessible_via_the_tor_network">dopusti poslužitelju na ureÄ?aju da bude dostupan preko Tor mreže</string>
- <string name="enter_localhost_ports_for_hidden_services">unesi localhost portove za skrivene usluge</string>
- <string name="hidden_service_ports">Portovi za skrivene usluge</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresirano ime za vašu skrivenu uslugu (generirano automatski)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">omoguÄ?i izlaznost dnevnika o otkrivanju greÅ¡ke (mora koristiti adb ili aLogCat za pregled)</string>
- <string name="project_home">Dom(ovi) Projekta:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor licenca</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software treÄ?e strane:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Aplikacija želi otvoriti port %S skrivenog poslužitelja Tor mreži. Ovo je sigurno ako vjerujete aplikaciji.</string>
- <string name="found_existing_tor_process">pronaÄ?eni postojeÄ?i Tor procesi...</string>
- <string name="something_bad_happened">Nešto loše se dogodilo. Provjerite dnevnik</string>
- <string name="hidden_service_on">skrivena usluga na:</string>
- <string name="unable_to_read_hidden_service_name">nije moguÄ?e proÄ?itati ime skrivene usluge</string>
- <string name="unable_to_start_tor">Nije moguÄ?e pokrenuti Tor:</string>
- <string name="unable_to_reset_tor">Ponovno pokrenit svoj ureÄ?aj, nije moguÄ?e ponovno pkrenuti Tor!</string>
- <string name="pref_use_sys_iptables_title">Koristi Zadane Iptablice</string>
- <string name="pref_use_sys_iptables_summary">koristi ugraÄ?ene iptablice umjesto onih zapakiranih s Orbot-om</string>
- <string name="error_installing_binares">Nije bilo moguÄ?e instalirati ili nadograditi Tor datoteke .</string>
- <string name="pref_use_persistent_notifications">Uvjek drži ikonu na alatnoj traci kad je Orbot spojen</string>
- <string name="pref_use_persistent_notifications_title">Obavijesti o stalnoj pokrenutosti</string>
- <string name="pref_use_expanded_notifications">Prikaži proširene obavijesti s Tor izlaznom državom i IP-em</string>
- <string name="pref_use_expanded_notifications_title">Proširene obavijesti</string>
- <string name="notification_using_bridges">Mostovi omoguÄ?eni!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Jezik</string>
- <string name="set_locale_summary">Odaberi lokaciju i jezik za Orbot</string>
- <string name="wizard_locale_title">Odaberi Jezik</string>
- <string name="wizard_locale_msg">Ostavi zadano ili promjeni na trenutni jezik</string>
- <string name="powered_by">pogoni Tor</string>
- <string name="btn_save_settings">Spremi postavke</string>
- <string name="no_internet_connection_tor">Nema internet veze; Tor je u stanju pripravnosti...</string>
- <string name="bandwidth_">Bandwidth:</string>
- <string name="down">dolje</string>
- <string name="up">gore</string>
- <string name="pref_disable_network_title">Nema mrežnog auto-spavanja</string>
- <string name="pref_disable_network_summary">Stavi Tor na spavanje kad internet nije dostupan</string>
- <string name="newnym">Prebacili ste se na nov Tor identitet!</string>
- <string name="menu_verify_browser">Preglednik</string>
- <string name="menu_use_chatsecure">Koristi ChatSecure</string>
- <string name="permission_manage_tor_label">Upravljaj Tor-om</string>
- <string name="permission_manage_tor_description">OmoguÄ?i ovoj palikaciji da upravlja Tor-om</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Ä?ini se da nemate Orfox instaliran. Želite li pomoÄ? s tim ili da samo otvorimo preglednik?</string>
- <string name="install_apps_">Instaliraj aplikacije?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nema mrežne povezivosti. Stavljam Tor na spavanje...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Mrežan povezanost je dobra. Budim Tor...</string>
- <string name="updating_settings_in_tor_service">ažuriram postavke u Tor usluzi</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port na kojem Tor pruža svoj SOCKS proxy (zadano: 9050, 0 za onemoguÄ?avanje)</string>
- <string name="pref_socks_dialog">Konfiguracija SOCKS porta </string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Port na kojem Tor pruža Transparentni Proxy (zadano: 9040, 0 za onemoguÄ?ivanje)</string>
- <string name="pref_transport_dialog">Konfiguracija TransProxy porta</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Port na kojem Tor pruža DNS (zadano 5400, 0 za onemoguÄ?ivanje)</string>
- <string name="pref_dnsport_dialog">Postavljanje DNS porta</string>
- <string name="pref_torrc_title">Torrc prilagoÄ?ena konfiguracija</string>
- <string name="pref_torrc_summary">SAMO ZA STRUÄ?NJAKE: unesite direktno torrc konfiguracijske linije</string>
- <string name="pref_torrc_dialog">PrilagoÄ?eni Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech aplikacija za dokumentaciju ljudskih prava</string>
- <string name="your_tor_public_ips_">Vaši javni Tor IP-evi:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">OnemoguÄ?ite ovu palikaciju u Android->Postavke->Aplikacije ako imate problema s Orbot-om:</string>
- <string name="app_conflict">Konflikt aplikacija</string>
- <string name="pref_transproxy_refresh_title">Automatsko osvježavanje Transproxy-a</string>
- <string name="pref_transproxy_refresh_summary">Ponovno primjeni Transproxy pravila kad se promjeni mrežno stanje</string>
- <string name="pref_transproxy_flush_title">Transproxy PRISILNO UKLANJANJE</string>
- <string name="pref_transproxy_flush_summary">Dotaknite ovdje da bi oÄ?istili sva transproxy mrežna pravila ODMAH</string>
- <string name="transparent_proxy_rules_flushed_">Pravila transparentnog proxy-a oÄ?iÅ¡Ä?ena!</string>
- <string name="you_do_not_have_root_access_enabled">Nema omoguÄ?en root pristup</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Možda Ä?e te morati zaustaviti i pokrenuti Orbot da bi se omoguÄ?ile promjenjene postavke.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Mostova ažurirano</string>
- <string name="restart_orbot_to_use_this_bridge_">Ponovno pokrenite Orbot da bi omoguÄ?ili promjene</string>
- <string name="menu_qr">QR kodovi</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ako VaÅ¡ mreža aktivno blokira Tor, možete koristiti Most kako bi pristupili mreži. ODABERITE jedan od gorenavedenih tipova mosta kako bi ih omoguÄ?ili.</string>
- <string name="bridge_mode">NaÄ?in rada Most</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Aktiviraj</string>
- <string name="apps_mode">VPN naÄ?in rada aplikacija</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Možete omoguÄ?iti svim aplikacijama na svom ureÄ?aju da se pokreÄ?u kroz Tor koristeÄ?i VPN znaÄ?ajku Android-a.\n\n*UPOZORENJE* Ovo je nova, eksperimentalna znaÄ?ajka i u nekim sluÄ?ajevima se možda neÄ?e automatski pokrenuti, ili Ä?e se zaustaviti. NE bi ju trebalo koristiti za anonimnost, nego SAMO za prolaženje kroz vatrozide i filtere.</string>
- <string name="send_email">Pošalji email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Možete dobiti adrese mostova kroz email, web ili skeniranjem QR koda. Odaberite \'Email\' ili \'Web\' niže da zatražite adresu mosta.\n\nJednom kad imate adresu, kopirajte i zalijepite ju u \"Mostovi\" postavku Orbot-a i ponovno ga pokrenite.</string>
- <string name="install_orweb">Instaliraj Orfox</string>
- <string name="standard_browser">Standardni preglendik</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NAPOMENA: samo standardni Tor mostovi rade na Intel X86/ATOM ureÄ?ajima</string>
- <string name="vpn_default_world">Svijet</string>
-</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
deleted file mode 100644
index 03dcc37..0000000
--- a/res/values-hu/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Az Orbot egy ingyenes proxy alkalmazás, ami képessé tesz alkalmazásokat, hogy biztonságosabban használhassák az internetet. Az Orbot Tor-t használ, hogy titkosÃtsa az internetforgalmadat és elrejtse azáltal, hogy pattogtatja számÃtógépek sorozatain keresztül a világ körül. A Tor ingyenes szoftver és nyitott hálózat, ami segÃt megvédeni a hálózati felügyelettÅ?l, ami fenyegeti a személyi szabadságot és magánéletet, a bizalmas céges tevékenységeket és kapcsolatokat, és állambiztonság cÃmén a forgalomelemzéstÅ?l.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">a Tor indÃtása, leállÃtása</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Az Orbot indul...</string>
- <string name="status_activated">Csatlakozva a Tor hálózathoz</string>
- <string name="status_disabled">Az Orbot deaktiválva</string>
- <string name="status_shutting_down">A TorService leáll</string>
- <string name="tor_process_starting">A Tor kliens indÃtása...</string>
- <string name="tor_process_complete">kész.</string>
- <string name="tor_process_waiting">várakozik.</string>
- <string name="not_anonymous_yet">FIGYELEM: A forgalmad még nem névtelen! Ã?llÃtsd be az alkalmazásaidat, hogy HTTP proxyt használjanak a 127.0.0.1:8118 cÃmen vagy SOCKS4A vagy SOCKS5 proxyt a 127.0.0.1:9050 cÃmen</string>
- <string name="menu_home">KezdÅ?lap</string>
- <string name="menu_browse">Böngészés</string>
- <string name="menu_settings">BeállÃtások</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Súgó</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">IndÃtás</string>
- <string name="menu_stop">LeállÃtás</string>
- <string name="menu_about">Névjegy</string>
- <string name="menu_promo_apps">Alkalmazások beszerzése...</string>
- <string name="main_layout_download">Letöltés</string>
- <string name="main_layout_upload">Feltöltés</string>
- <string name="button_help">Súgó</string>
- <string name="button_close">Bezár</string>
- <string name="button_about">Névjegy</string>
- <string name="button_clear_log">Log törlése</string>
- <string name="menu_verify">EllenÅ?rzés</string>
- <string name="menu_exit">Kilépés</string>
- <string name="menu_scan">BridgeQR szkennelése</string>
- <string name="menu_share_bridge">BridgeQR megosztása</string>
- <string name="press_to_start">- hosszú nyomás az indÃtáshoz -</string>
- <string name="pref_trans_proxy_group">Transzparens Proxyzás (Root szükséges)</string>
- <string name="pref_trans_proxy_title">Transzparens Proxyzás</string>
- <string name="pref_trans_proxy_summary">Alkalmazások automatikus Tor-izálása</string>
- <string name="pref_transparent_all_title">Minden Tor-olása</string>
- <string name="pref_transparent_all_summary">Minden forgalom átproxyzása a Tor-on</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy visszacsatolás</string>
- <string name="pref_transparent_port_fallback_summary">FIGYELEM: Kikerüli a szokásos portokat (80, 443, stb). *CSAK AKKOR HASZN�LD* ha a \'Minden\' vagy \'Alkalmazás\' mód nem működik.</string>
- <string name="pref_transparent_port_title">Port Lista</string>
- <string name="pref_transparent_port_summary">A proxyzandó portok listája. *CSAK AKKOR HASZN�LD* ha a \'Minden\' vagy \'Alkalmazás\' mód nem működik.</string>
- <string name="pref_transparent_port_dialog">Add meg a proxyzandó portokat</string>
- <string name="pref_has_root">Root hozzáférés szükséges</string>
- <string name="pref_has_root_summary">Root hozzáférés szükséges a transzparens proxyzáshoz</string>
- <string name="status_install_success">A Tor binárisok sikeresen telepÃtve lettek!</string>
- <string name="status_install_fail">A Tor bináris állományok telepÃtése sikertelen. EllenÅ?rizd a naplót és értesÃtsd a tor-assistants@xxxxxxxxxxxxxx -ot</string>
- <string name="title_error">Alkalmazás hiba</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Az Orbot-ról</string>
- <string name="btn_next">Tovább</string>
- <string name="btn_back">Vissza</string>
- <string name="btn_finish">Befejezés</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Mégsem</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Néhány Orbot adat</string>
- <string name="wizard_details_msg">Az Orbot egy nyÃlt-forráskódú alkalmazás, ami tartalmazza a Tor-t, LibEvent-et és Polipo-t. Szolgáltat egy helyi HTTP proxyt (8118) és egy SOCKS proxyt (9050) a Tor hálózatba. Az Orbot-nak megvan az a képessége is, hogy rootolt eszközön minden internetes forgalmat a Tor-on keresztül küldjön.</string>
- <string name="wizard_permissions_root">Jogosultság megadva</string>
- <string name="wizard_permissions_stock">Orbot jogosultságok</string>
- <string name="wizard_premissions_msg_root">KitűnÅ?! Ã?gy észleltük, hogy root jogot engedélyeztél az Orbot számára. Ezt az erÅ?t bölcsen fogjuk használni.</string>
- <string name="wizard_permissions_msg_stock"> Habár nem szükséges, az Orbot sokkal hatékonyabb eszköz lehet, ha a készüléknek van root hozzáférése. Használd az alábbi gombot, hogy szuper-erÅ?t adj az Orbot-nak! </string>
- <string name="wizard_permissions_no_root">Ha nincs root hozzáférésed, vagy fogalmad sincs, hogy mirÅ?l beszélünk, csak gyÅ?zÅ?djél meg arról, hogy olyan alkalmazásokat használsz, amelyek együttműködnek az Orbot-tal.</string>
- <string name="wizard_permissions_consent">�rtettem és Superuser nélkül folytatnám tovább</string>
- <string name="wizard_permission_enable_root">Root jog megadása az Orbot-nak</string>
- <string name="wizard_configure">Tor-izálás konfigurálása</string>
- <string name="wizard_configure_msg">Az Orbot lehetÅ?vé teszi, hogy az összes alkalmazás forgalmát a Tor-on keresztül küldje VAGY hogy egyénileg kiválaszthasd az alkalmazásaidat.</string>
- <string name="wizard_configure_all">Minden alkalmazás keresztülproxyzása a Tor-on</string>
- <string name="wizard_configure_select_apps">Alkalmazások kiválasztása a Tor-hoz</string>
- <string name="wizard_tips_tricks">Orbot-engedélyezett alkalmazások</string>
- <string name="wizard_tips_msg">Az alábbi alkalmazások az Orbot-tal való együttműködésre lettek fejlesztve. Kattints minden gombra az azonnali telepÃtéshez, vagy késÅ?bb megtalálod Å?ket a Google Play-en, a GuardianProject.info weboldalon vagy az F-Droid.org-n.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Biztonságos azonnali üzenetküldÅ? kliens Androidra</string>
- <string name="wizard_tips_proxy">Proxy beállÃtások - Tanuld meg, hogyan állÃthatod be az alkalmazásaidat, hogy együttműködjenek az Orbot-tal</string>
- <string name="wizard_tips_duckgo">DuckDuckGo keresÅ?motor alkalmazás</string>
- <string name="wizard_tips_twitter"> Ã?llÃtsd be a Twitter proxyt a hosztnál \"localhost\"-ra és a port-nál 8118-ra</string>
- <string name="wizard_tips_story_maker">StoryMaker - KészÃts egy történetet és hagyd a Tor-ra a biztonságért!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy beállÃtások</string>
- <string name="wizard_proxy_help_msg">Ha az Android alkalmazás, amit használsz támogatja a HTTP vagy SOCKS proxy használatát, akkor konfigurálhatod, hogy csatlakozzon az Orbot-hoz és Tor-t használjon.\n\n\n A hoszt beállÃtások 127.0.0.1 vagy \"localhost\". HTTP-nek a port beállÃtása 8118. A SOCKS-nak a proxyja 9050. SOCKS4A -t vagy SOCKS5 -t kéne használnod, ha lehetséges.\n \n\n\n Többet tudhatsz meg a proxyzásról Androidon a GYIK-en keresztül itt: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Az Orbot kész!</string>
- <string name="wizard_final_msg">Emberek milliói használják a világ körül a Tor-t többféle különbözÅ? okból.\n\nÃ?jságÃrók és bloggerek, emberi jogok védelmezÅ?i, rendÅ?rök, katonák, cégek, elnyomó rezsimek polgárai, és csak átlagos polgárok... és most már te is készen állsz!</string>
- <string name="wizard_exit_at_first_screen_toast">Kérlek konfiguráld az Orbot-ot, mielÅ?tt elkezded használni!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Sikeresen csatlakoztál a Tor hálózathoz - de ez NEM jelenti azt, hogy a készüléked biztonságos. Használhatod a \'BöngészÅ?\' gombot a kapcsolatod teszteléséhez. \n\nLátogass meg minket a https://guardianproject.info/apps/orbot -on vagy küldj egy emailt a help@xxxxxxxxxxxxxxxxxxxx -ra, hogy többet megtudj.</string>
- <string name="tor_check">Ez megnyitja a webböngészÅ?dben a https://check.torproject.org -t ahhoz, hogy lásd, az Orbot valószÃnűleg konfigurált és csatlakozva vagy a Tor-hoz.</string>
- <string name="pref_hs_group">Rejtett szolgáltatás kiszolgálás</string>
- <string name="pref_general_group">�ltalános</string>
- <string name="pref_start_boot_title">Az Orbot indÃtása rendszerindÃtáskor</string>
- <string name="pref_start_boot_summary">Automatikusan elindÃtja az Orbot-ot és csatlakozik a hálózathoz, amikor az Android eszköz betölt</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Az Orbot elhozza a Tor-t Androidra!\n\nA Tor segÃt megvédeni téged a tartalomszűréstÅ?l, forgalomelemzéstÅ?l és hálózati felügyelettÅ?l ami fenyegeti a magánéletet, bizalmas információt és személyes kapcsolatokat.\n\nEz a varázsló segÃt konfigurálni az Orbot-ot és Tor-t az eszközödön.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Figyelem</string>
- <string name="wizard_warning_msg">Az Orbot egyszerű telepÃtésével nem fogja automatikusan névtelenné tenni a mobilforgalmadat.\n\nMegfelelÅ?en kell konfigurálnod az Orbot-ot, az eszközödet és egyéb alkalmazásokat ahhoz, hogy sikeresen használják a Tor-t.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Jogosultságok</string>
- <string name="wizard_permissions_root_msg1">Opcionálisan adhatsz az Orbot részére \'Superuser\' hozzáférést, hogy engedélyezz olyan speciális szolgáltatásokat, mint például a Transzparens Proxyzás.</string>
- <string name="wizard_permissions_root_msg2">Ha nem akarod ezt tenni, kérlek bizonyosodj meg róla, hogy olyan alkalmazásokat használsz, amelyek együttműködnek az Orbot-tal</string>
- <string name="wizard_permissions_no_root_msg">Az eszközöd nem tűnik rootoltnak vagy nem ad root vagy \'Superuser\' hozzáférést.\n\nKérlek próbáld az \'Appok\' módot a fÅ?képernyÅ?n ehelyett.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-engedélyezett Alkalmazások</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Biztonságos üzenetküldÅ? alkalmazás OTR titkosÃtással</string>
- <string name="wizard_tips_orweb">Orfox: Fokozott adatvédelmi böngészÅ?, ami Tor-on keresztül működik</string>
- <string name="wizard_tips_play">Az összes Guardian Project alkalmazás keresése a Google Play-en</string>
- <string name="wizard_tips_fdroid">Az összes Guardian Project alkalmazást megtalálod az F-Droid -on</string>
- <string name="wizard_tips_fdroid_org">Az összes Guardian Project alkalmazást megtalálod a https://f-droid.org -on</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">�tlátszó Proxyzás</string>
- <string name="wizard_transproxy_msg">Ez lehetÅ?vé teszi az alkalmazások számára a Tor-on keresztül kommunikálást, bármilyen konfiguráció nélkül.</string>
- <string name="wizard_transproxy_hint">(Jelöld be ezt négyzetet, ha fogalmad sincs arról, hogy mirÅ?l beszélünk)</string>
- <string name="wizard_transproxy_none">Nincs</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">A Tor Transzparens Proxyzásának engedélyezése a Wifi és az USB Tetherelt eszközök felé (újraindÃtást igényel)</string>
- <string name="button_grant_superuser">Superuser hozzáférés kérése</string>
- <string name="pref_select_apps">Alkalmazások kiválasztása</string>
- <string name="pref_select_apps_summary">Válassz alkalmazásokat, amik keresztül haladjanak a Tor-on</string>
- <string name="pref_node_configuration">Csomópont konfiguráció</string>
- <string name="pref_node_configuration_summary">Ezek haladó beállÃtások, amelyek csökkenthetik a névtelenséged.</string>
- <string name="pref_entrance_node">BelépÅ? csomópontok</string>
- <string name="pref_entrance_node_summary">Ujjlenyomatok, becenevek, országok és cÃmek az elsÅ? ugráshoz</string>
- <string name="pref_entrance_node_dialog">BelépÅ? csomópontok megadása</string>
- <string name="pref_allow_background_starts_title">Háttérbeli indulások engedélyezése</string>
- <string name="pref_allow_background_starts_summary">Bármely alkalmazás közölheti az Orbot-tal, hogy indÃtsa a Tor-t és a kapcsolódó szolgáltatásokat</string>
- <string name="button_proxy_all">Mindent proxyz</string>
- <string name="button_proxy_none">Semmit nem proxyz</string>
- <string name="button_invert_selection">Kijelölés megfordÃtása</string>
- <string name="pref_proxy_title">KimenÅ? hálózati proxy (választható)</string>
- <string name="pref_proxy_type_title">Proxy tÃpus</string>
- <string name="pref_proxy_type_summary">A Proxy szerver által használandó protokoll: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Add meg a proxy tÃpusát</string>
- <string name="pref_proxy_host_title">KimenÅ? proxy hoszt</string>
- <string name="pref_proxy_host_summary">Proxy szerver állomásneve</string>
- <string name="pref_proxy_host_dialog">Add meg a proxy hosztot</string>
- <string name="pref_proxy_port_title">Proxy port</string>
- <string name="pref_proxy_port_summary">Proxy szerver port</string>
- <string name="pref_proxy_port_dialog">Add meg a proxy portját</string>
- <string name="pref_proxy_username_title">KimenÅ? proxy felhasználónév</string>
- <string name="pref_proxy_username_summary">Proxy felhasználónév (választható)</string>
- <string name="pref_proxy_username_dialog">Add meg a proxy felhasználónevet</string>
- <string name="pref_proxy_password_title">KimenÅ? proxy jelszó</string>
- <string name="pref_proxy_password_summary">Proxy jelszó (választható)</string>
- <string name="pref_proxy_password_dialog">Add meg a proxy jelszót</string>
- <string name="status">Ã?llapot</string>
- <string name="setting_up_full_transparent_proxying_">A teljes körű transzparens proxyzás beállÃtása...</string>
- <string name="setting_up_app_based_transparent_proxying_">Alkalmazásalapú transzparens proxyzás beállÃtása...</string>
- <string name="transparent_proxying_enabled">Transzparens proxyzás ENGED�LYEZVE</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy engedélyezve tetheringre!</string>
- <string name="warning_error_starting_transparent_proxying_">FIGYELMEZTETÃ?S: hiba a transzparens proxyzás indÃtásakor!</string>
- <string name="transproxy_rules_cleared">TransProxy szabályok törölve</string>
- <string name="couldn_t_start_tor_process_">Nem indÃtható el a Tor folyamat:</string>
- <string name="privoxy_is_running_on_port_">A Polipo ezen a porton fut:</string>
- <string name="setting_up_port_based_transparent_proxying_">Port alapú transzparens proxyzás beállÃtása...</string>
- <string name="bridge_error">HÃd hiba</string>
- <string name="bridge_requires_ip">A hÃd szolgáltatás használatához legalább egy hÃd IP cÃmét meg kell adnod.</string>
- <string name="send_email_for_bridges">Küldj egy emailt a bridges@xxxxxxxxxxxxxx -ra a \"get bridges\" sorral a levél törzsében egy gmail fiókból.</string>
- <string name="error">Hiba</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Az elérhetÅ? cÃmeid beállÃtásai kivételt okoztak!</string>
- <string name="your_relay_settings_caused_an_exception_">Az átjátszód beállÃtásai kivételt okoztak!</string>
- <string name="exit_nodes">Kilépési csomópontok</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ujjlenyomatok, becenevek, országok és cÃmek az utolsó ugráshoz</string>
- <string name="enter_exit_nodes">Kilépési csomópontok megadása</string>
- <string name="exclude_nodes">Csomópontok kizárása</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Kizárandó ujjlenyomatok, becenevek, országok és cÃmek</string>
- <string name="enter_exclude_nodes">Add meg a kizárandó csomópontokat</string>
- <string name="strict_nodes">Szigorú csomópontok</string>
- <string name="use_only_these_specified_nodes">*Csak* ezeknek a megadott csomópontoknak a használata</string>
- <string name="bridges">Hidak</string>
- <string name="use_bridges">Hidak használata</string>
- <string name="bridges_obfuscated">FedÅ?hidak</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">AlternatÃv belépési pontok engedélyezése a Tor hálózatba</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Bekapcsolva, ha a konfigurált hidak fedÅ?hidak</string>
- <string name="ip_address_and_port_of_bridges">A hidak IP cÃme és portja</string>
- <string name="enter_bridge_addresses">Add meg a hÃd cÃmeit</string>
- <string name="relays">�tjátszók</string>
- <string name="relaying">�tjátszás</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Engedélyezd az eszközödnek, hogy nem-átjátszó elosztó legyen</string>
- <string name="relay_port">�tjátszó port</string>
- <string name="listening_port_for_your_tor_relay">Hallgató port a Tor átjátszódnak</string>
- <string name="enter_or_port">Enter VAGY port</string>
- <string name="relay_nickname">�tjátszó becenév</string>
- <string name="the_nickname_for_your_tor_relay">A Tor átjátszód beceneve</string>
- <string name="enter_a_custom_relay_nickname">Adj meg egy egyedi átjátszó becenevet</string>
- <string name="reachable_addresses">ElérhetÅ? cÃmek</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Futtatás kliensként egy tűzfal mögül, korlátozó rendelkezésekkel</string>
- <string name="reachable_ports">ElérhetÅ? portok</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">A tűzfal mögött elérhetÅ? portok</string>
- <string name="enter_ports">Add meg a portokat</string>
- <string name="enable_hidden_services">Rejtett szolgáltatás kiszolgálás</string>
- <string name="run_servers_accessible_via_the_tor_network">a készülék szerver elérhetÅ?ségének engedélyezése a Tor hálózaton keresztül</string>
- <string name="enter_localhost_ports_for_hidden_services">add meg a localhost portokat a rejtett szolgáltatásokhoz</string>
- <string name="hidden_service_ports">Rejtett szolgáltatás portok</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">a cÃmezhetÅ? neve a rejtett szolgáltatásaidnak (automatikusan generált)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">a hibakeresési napló engedélyezése a kimenetre (adb -t vagy aLogCat -t kell használni a megtekintéshez)</string>
- <string name="project_home">Projekt honlap(ok):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">A Tor Licenc</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3. fél szoftver:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Egy alkalmazás a %S rejtett szerver portot akarja megnyitni a Tor hálózathoz. Ez biztonságos, ha megbÃzol az alkalmazásban.</string>
- <string name="found_existing_tor_process">létezÅ? Tor folyamat találva...</string>
- <string name="something_bad_happened">Valami rossz történt. Nézd meg a naplót.</string>
- <string name="hidden_service_on">rejtett szolgáltatás itt:</string>
- <string name="unable_to_read_hidden_service_name">nem olvasható a rejtett szolgáltatás neve</string>
- <string name="unable_to_start_tor">A Tor indÃtása sikertelen:</string>
- <string name="unable_to_reset_tor">IndÃtsd újra a készüléked, nem lehet helyreállÃtani a Tor-t!</string>
- <string name="pref_use_sys_iptables_title">Alapértelmezett Iptables használata</string>
- <string name="pref_use_sys_iptables_summary">a beépÃtett iptables bináris használata az Orbot-tal egybecsomagolt helyett</string>
- <string name="error_installing_binares">A Tor binárisok nem telepÃthetÅ?ek, vagy frissÃthetÅ?ek.</string>
- <string name="pref_use_persistent_notifications">Mindig tartsa az ikont az eszköztáron, ha az Orbot csatlakoztatva van.</string>
- <string name="pref_use_persistent_notifications_title">Mindig-bekapcsolt értesÃtések</string>
- <string name="pref_use_expanded_notifications">Mutassa a bÅ?vÃtett értesÃtést a Tor kilépÅ? országgal és IP-vel</string>
- <string name="pref_use_expanded_notifications_title">BÅ?vÃtett értesÃtések</string>
- <string name="notification_using_bridges">Hidak engedélyezve!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Nyelv</string>
- <string name="set_locale_summary">Válaszd ki a helyszÃnt és nyelvet az Orbot-nak</string>
- <string name="wizard_locale_title">Válassz nyelvet</string>
- <string name="wizard_locale_msg">Hagyd alapértelmezetten vagy válts az aktuális nyelvre</string>
- <string name="powered_by">powered by Tor</string>
- <string name="btn_save_settings">BeállÃtások mentése</string>
- <string name="no_internet_connection_tor">Nincs internetkapcsolat; Tor készenlétben...</string>
- <string name="bandwidth_">Sávszélesség:</string>
- <string name="down">le</string>
- <string name="up">fel</string>
- <string name="pref_disable_network_title">Nincs hálózati auto-alvás</string>
- <string name="pref_disable_network_summary">A Tor alvó módba helyezése, ha internet nem elérhetÅ?</string>
- <string name="newnym">�j Tor identitásra váltottál!</string>
- <string name="menu_verify_browser">BöngészÅ?</string>
- <string name="menu_use_chatsecure">ChatSecure használata</string>
- <string name="permission_manage_tor_label">Tor kezelése</string>
- <string name="permission_manage_tor_description">Engedélyezi ennek az alkalmazásnak, hogy a Tor szolgáltatást vezérelje</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Ã?gy tűnik, hogy neked nincs Orfox telepÃtve. Kérsz segÃtséget benne, vagy csak nyissuk meg böngészÅ?t?</string>
- <string name="install_apps_">Alkalmazások telepÃtése?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nincs hálózati kapcsolat. Tor alvó állapotba helyezése...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">A hálózati kapcsolat jó. Tor felébresztése...</string>
- <string name="updating_settings_in_tor_service">a Tor szolgáltatás beállÃtásainak frissÃtése</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port amelyen a Tor a SOCKS proxyt biztosÃtja (alapértelmezett: 9050 vagy 0 a tiltáshoz)</string>
- <string name="pref_socks_dialog">SOCKS port konfiguráció</string>
- <string name="pref_transport_title">Tor TransProxy port</string>
- <string name="pref_transport_summary">Port, amelyen a Tor a transzparens proxyt ajánl (alapértelmezett: 9040 vagy 0 a tiltáshoz)</string>
- <string name="pref_transport_dialog">TransProxy port konfiguráció</string>
- <string name="pref_dnsport_title">Tor DNS port</string>
- <string name="pref_dnsport_summary">Port, amelyen a Tor a saját DNS-t ajánlja (alapértelmezett: 5400 vagy 0 a letiltáshoz)</string>
- <string name="pref_dnsport_dialog">DNS port konfiguráció</string>
- <string name="pref_torrc_title">Torrc egyedi konfiguráció</string>
- <string name="pref_torrc_summary">CSAK SZAKÃ?RTÅ?KNEK: torrc konfigurációs sorok közvetlen beÃrása</string>
- <string name="pref_torrc_dialog">Egyedi Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech emberi jogok dokumentációja alkalmazás</string>
- <string name="your_tor_public_ips_">A Tor-od publikus IP-jei:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Kérlek tiltsd le ezt az alkalmazást az Android->BeállÃtások->Alkalmazások-ban, ha az Orbot-tal problémáid vannak: </string>
- <string name="app_conflict">Alkalmazás ütközés</string>
- <string name="pref_transproxy_refresh_title">Transproxy auto-frissÃtés</string>
- <string name="pref_transproxy_refresh_summary">A Transproxy szabályok újraalkalmazása, ha a hálózati állapot változik</string>
- <string name="pref_transproxy_flush_title">Transproxy KÃ?NYSZERÃ?TETT ELTÃ?VOLÃ?TÃ?SA</string>
- <string name="pref_transproxy_flush_summary">Ã?rintsd meg itt, az összes transproxy hálózati szabály AZONNALI kiürÃtéséhez</string>
- <string name="transparent_proxy_rules_flushed_">Transzparens proxy szabályok kiürÃtve!</string>
- <string name="you_do_not_have_root_access_enabled">Nincs ROOT hozzáférésed engedélyezve</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Szükséged lehet az Orbot megállÃtására és indÃtására, hogy a beállÃtások megváltoztatása engedélyezve legyen.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Hidak frissÃtve</string>
- <string name="restart_orbot_to_use_this_bridge_">Kérlek indÃtsd újra az Orbot-ot a változások engedélyezéséhez</string>
- <string name="menu_qr">QR kódok</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ha a mobilhálózatod aktÃvan blokkolja a Tor-t, használhatsz Hidat, hogy hozzáférj a hálózathoz. VÃ?LASSZ egyet a fenti hÃd tÃpusokból, hogy engedélyezd a hidakat.</string>
- <string name="bridge_mode">HÃd mód</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Aktiválás</string>
- <string name="apps_mode">Alkalmazások VPN mód</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Engedélyezhetsz minden alkalmazást, hogy Tor hálózaton keresztül fussanak az Android VPN funkcióját használva.\n\n*FIGYELMEZTETÃ?S* Ez egy új, kÃsérleti funkció és néhány esetben nem indulhat automatikusan, vagy leállhat. NEM kéne névtelenségre használni, CSAK a tűzfalakon és szűrÅ?kön való átjutáshoz.</string>
- <string name="send_email">Email küldése</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Kaphatsz egy hÃd-cÃmet emailen, weben keresztül vagy a hÃd QR kódjának beszkennelésével. Válaszd az \'Email\'-t vagy a \'Web\'-et alább a hÃd-cÃm kéréséhez.\n\nAmikor már van egy cÃmed, másold & illeszd be \"Hidak\" preferenciákba az Orbot beállÃtásaiban és indÃtsd újra.</string>
- <string name="install_orweb">Orweb telepÃtése</string>
- <string name="standard_browser">Standard böngészÅ?</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">MEGJEGYZ�S: Csak standard Tor hidak működnek az Intel X86/ATOM eszközökön</string>
- <string name="vpn_default_world">Világ</string>
-</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ia/strings.xml b/res/values-ia/strings.xml
deleted file mode 100644
index fa92290..0000000
--- a/res/values-ia/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_home">Initio</string>
- <string name="menu_browse">Navigar</string>
- <string name="menu_settings">Configurationes</string>
- <string name="menu_info">Adjuta</string>
- <string name="menu_about">Circa</string>
- <string name="button_help">Adjuta</string>
- <string name="button_close">Clauder</string>
- <string name="button_about">Circa</string>
- <string name="menu_exit">Sortir</string>
- <string name="btn_back">Retro</string>
- <string name="btn_cancel">Cancellar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Configurationes de proxy:</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">General</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Advertimento</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Nulle</string>
- <string name="status">Stato</string>
- <string name="error">Error</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Salveguardar configurationes</string>
-</resources>
diff --git a/res/values-id b/res/values-id
deleted file mode 120000
index 3e5fb5a..0000000
--- a/res/values-id
+++ /dev/null
@@ -1 +0,0 @@
-values-in-rID
\ No newline at end of file
diff --git a/res/values-in-rID/strings.xml b/res/values-in-rID/strings.xml
deleted file mode 100644
index 0daf8c8..0000000
--- a/res/values-in-rID/strings.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot adalah aplikasi proxy gratis yang membuat aplikasi-aplikasi lainnya dapat terkoneksi dengan internet secara aman. Orbot menggunakan Tor untuk mengenkripsi hubungan internet anda dan menyalurkannya melewati berbagai komputer di seluruh dunia. Tor adalah software gratis dan suatu network terbuka, yang membantu anda menghindari pengawasan network yang mengancam kebebasan pribadi dan privasi, aktivitas bisnis rahasia dan relasi, serta keamanan negara yang dikenal dengan analisa traffic.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">mulai dan akhiri Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot sedang dimulai...</string>
- <string name="status_activated">Tersambung ke Jaringan Tor</string>
- <string name="status_disabled">Orbot telah dibatalkan</string>
- <string name="status_shutting_down">TorService dimatikan</string>
- <string name="tor_process_starting">Memulai klien Tor...</string>
- <string name="tor_process_complete">selesai.</string>
- <string name="tor_process_waiting">menunggu.</string>
- <string name="not_anonymous_yet">PERINGATAN: Trafik anda belum anonim! Silahkan konfigurasikan aplikasi anda untuk dapat menggunakan proxy HTTP 127.0.0.1:8118 atau SOCKS4A atau proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Beranda</string>
- <string name="menu_browse">Jelajah</string>
- <string name="menu_settings">Pengaturan</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Bantuan</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Mulai</string>
- <string name="menu_stop">Berhenti</string>
- <string name="menu_about">Tentang</string>
- <string name="menu_promo_apps">Dapatkan aplikasi...</string>
- <string name="main_layout_download">Unduh</string>
- <string name="main_layout_upload">Unggah</string>
- <string name="button_help">Bantuan</string>
- <string name="button_close">Tutup</string>
- <string name="button_about">Tentang</string>
- <string name="button_clear_log">Hapus Log</string>
- <string name="menu_verify">Periksa</string>
- <string name="menu_exit">Keluar</string>
- <string name="menu_scan">Pindai BridgeQR</string>
- <string name="menu_share_bridge">Bagikan BridgeQR</string>
- <string name="press_to_start">- sentuh dan tahan untuk memulai -</string>
- <string name="pref_trans_proxy_group">Proxy Transparan (Dibutuhkan Root)</string>
- <string name="pref_trans_proxy_title">Proxy Transparan</string>
- <string name="pref_trans_proxy_summary">Otomatis Torfying Aplikasi</string>
- <string name="pref_transparent_all_title">Tor Semuanya</string>
- <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi melalui Tor</string>
- <string name="pref_transparent_port_fallback_title">Alternatif Port Proxy</string>
- <string name="pref_transparent_port_fallback_summary">PERINGATAN: Temukan port umum (80, 443, dll). *Gunakan Hanya* jika \'Semua\' atau \'Aplikasi\' mode tidak bekerja.</string>
- <string name="pref_transparent_port_title">Daftar Port</string>
- <string name="pref_transparent_port_summary">Daftar port untuk proxy. *GUNAKAN HANYA* jika modus \'Semua\' atau \'Apl\' tidak bekerja</string>
- <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
- <string name="pref_has_root">Minta Akses Root</string>
- <string name="pref_has_root_summary">Meminta akses root untuk proxy transparan</string>
- <string name="status_install_success">Binary Tor berhasil dipasang!</string>
- <string name="status_install_fail">File binary Tor tidak dapat dipasang. Silahkan periksa log dan beritahukan ke tor-assistants@xxxxxxxxxxxxxxx</string>
- <string name="title_error">Kesalahan Pada Aplikasi</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
- <string name="btn_next">Berikutnya</string>
- <string name="btn_back">Kembali</string>
- <string name="btn_finish">Selesai</string>
- <string name="btn_okay">Oke</string>
- <string name="btn_cancel">Batal</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Beberapa Rincian Orbot</string>
- <string name="wizard_details_msg">Orbot adalah aplikasi open-source yang mengandung Tor, LibEvent dan Polipo. Tor menyediakan HTTP proxy (8118) dan SOCKS proxy (9050) lokal menuju jaringan Tor. Orbot juga dapat, pada perangkat yang di-root, untuk mengirimkan semua lalu-lintas data internet melalui Tor.</string>
- <string name="wizard_permissions_root">Izin Diberikan</string>
- <string name="wizard_permissions_stock">Perizinan Orbot</string>
- <string name="wizard_premissions_msg_root">Baik sekali! Kami telah mendeteksi bahwa anda telah mengaktifkan perizinan root untuk Orbot. Kami akan menggunakan kekuatan ini secara bijak.</string>
- <string name="wizard_permissions_msg_stock">Sementara itu tidak diperlukan, Orbot dapat menjadi tool yang lebih kuat jika perangkat anda memiliki akses root. Gunakan tombol dibawah untuk memberikan kekuatan super kepada Orbot!</string>
- <string name="wizard_permissions_no_root">Jika anda tidak memiliki akses root atau tidak tahu tentang apa yang kita bicarakan, pastikan untuk menggunakan aplikasi yang dibuat untuk bekerja dengan Orbot.</string>
- <string name="wizard_permissions_consent">Saya mengerti dan ingin melanjutkan tanpa Superuser</string>
- <string name="wizard_permission_enable_root">Berikan Akses Root untuk Orbot</string>
- <string name="wizard_configure">Konfigurasi Torifikasi</string>
- <string name="wizard_configure_msg">Orbot memberikan pilihan kepada anda untuk mengerahkan semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi anda secara individu.</string>
- <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
- <string name="wizard_configure_select_apps">Pilih Individu Aplikasi untuk Tor</string>
- <string name="wizard_tips_tricks">Orbot- Aplikasi teraktifkan</string>
- <string name="wizard_tips_msg">Aplikasi dibawah ini dikembangkan untuk bekerja dengan Orbot. Klik pada setiap tombol untuk memasangnya sekarang, atau anda dapat menemukan mereka di lain waktu pada Google Play, website GuardianProject.info atau melalui F-Droid.org</string>
- <string name="wizard_tips_otrchat">ChatSecure - Client instant messaging aman untuk Android</string>
- <string name="wizard_tips_proxy">Pengaturan Proxy - Pelajari bagaimana mengkonfigurasikan aplikasi untuk bekerja dengan Orbot</string>
- <string name="wizard_tips_duckgo">Aplikasi Mesin Pencari DuckDuckGo</string>
- <string name="wizard_tips_twitter">Setel proxy Twitter ke host \"localhost\" dan port 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Tulis cerita dan biarkan Tor yang mengurus keamanannya!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Pengaturan Proxy</string>
- <string name="wizard_proxy_help_msg">Jika aplikasi Android yang anda gunakan mendukung penggunaan proxy HTTP atau SOCKS, maka anda dapat mengaturnya untuk terhubung ke Orbot dan menggunakan Tor. Setting host-nya 127.0.0.1 atau \"localhost\". Untuk HTTP, setting port-nya adalah 8118. Untuk SOCKS, proxy-nya adalah 9050. Anda disarankan menggunakan SOCKS4A atau SOCKS5 jika memungkinkan. Anda dapat mempelajari lebih lanjut mengenai pemakaian proxy pada Android melalui FAQ di: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot sudah siap!</string>
- <string name="wizard_final_msg">Jutaan orang di seluruh dunia menggunakan Tor untuk berbagai tujuan. Jurnalis dan blogger, pembela hak asasi manusia, penegak hukum, prajurit, perusahaan, warga negara di rezim yang represif, dan warga biasa... dan kini anda sudah siap juga!</string>
- <string name="wizard_exit_at_first_screen_toast">Konfigurasi Orbot terlebih dahulu sebelum anda menggunakannya!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Hal ini akan membuka peramban web anda ke https://check.torproject.org agar dapat melihat jika Orbot kemungkinan sudah dikonfigurasikan dan anda telah terhubung dengan Tor.</string>
- <string name="pref_hs_group">Jasa Penyimpanan Rahasia</string>
- <string name="pref_general_group">Umum</string>
- <string name="pref_start_boot_title">Mulai Orbot saat Boot</string>
- <string name="pref_start_boot_summary">Secara otomatis memulai Orbot dan menghubungkan dengan Tor ketika perangkat Android anda boot</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot membawa Tor ke Android! Tor membantu anda melawan penyaringan konten, analisis trafik dan pengawasan jaringan yang mengancam privasi, informasi rahasia dan hubungan pribadi. Wizard ini akan membantu anda mengkonfigurasikan Orbot dan Tor pada perangkat anda.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Peringatan</string>
- <string name="wizard_warning_msg">Pemasangan Orbot tidak otomatis membuat trafik mobile anda anonim. Anda harus melakukan konfigurasi Orbot, perangkat anda dan aplikasi lainnya untuk dapat menggunakan Tor dengan baik.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Perizinan</string>
- <string name="wizard_permissions_root_msg1">Anda dapat secara opsional memberikan Orbot akses \'Superuser\' untuk mengaktifkan fitur lanjutan, seperti Transparan Proxying.</string>
- <string name="wizard_permissions_root_msg2">Jika anda tidak ingin melakukan ini, mohon pastikan bahwa anda menggunakan aplikasi yang dibuat untuk dapat bekerja dengan Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Perangkat anda belum di-root atau tidak punya akses \'Superuser\'. Silakan coba mode \'Aplikasi\' di tampilan utama.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Aplikasi Teraktifkan</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Aplikasi obrolan aman dengan Enkripsi Off-the-Record</string>
- <string name="wizard_tips_play">Temukan semua aplikasi Guardian Project di Google Play</string>
- <string name="wizard_tips_fdroid">Temukan semua aplikasi Guardian Project di F-Droid</string>
- <string name="wizard_tips_fdroid_org">Temukan semua aplikasi Guardian Project di https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparan Proxying</string>
- <string name="wizard_transproxy_msg">Hal ini akan memungkinkan aplikasi anda untuk secara otomatis berjalan melalui jaringan Tor tanpa konfigurasi apapun.</string>
- <string name="wizard_transproxy_hint">(Tandai box ini jika anda tidak tahu apa yang kita bicarakan)</string>
- <string name="wizard_transproxy_none">Tidak ada</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Mengaktifkan Transparan Proxying Tor untuk Wifi dan Perangkat Tether USB (diperlukan restart)</string>
- <string name="button_grant_superuser">Meminta Akses Superuser</string>
- <string name="pref_select_apps">Pilih Aplikasi</string>
- <string name="pref_select_apps_summary">Pilih Aplikasi untuk Mengerahkan Melalui Tor</string>
- <string name="pref_node_configuration">Konfigurasi Simpul</string>
- <string name="pref_node_configuration_summary">Itu adalah pengaturan lanjutan yang dapat mengurangi anonimitas anda</string>
- <string name="pref_entrance_node">Simpul Masuk</string>
- <string name="pref_entrance_node_summary">Sidik jari, alias, negara dan alamat untuk loncatan pertama</string>
- <string name="pref_entrance_node_dialog">Masukkan Simpul Masuk</string>
- <string name="pref_allow_background_starts_title">Ijinkan Latar Belakang Berjalan</string>
- <string name="button_proxy_all">Proxy Semuanya</string>
- <string name="button_proxy_none">Tanpa Proxy</string>
- <string name="button_invert_selection">Balik Pilihan</string>
- <string name="pref_proxy_title">Outbound Proxy Jaringan (Opsional)</string>
- <string name="pref_proxy_type_title">Outbound Jenis Proxy</string>
- <string name="pref_proxy_type_summary">Protokol yang digunakan untuk server proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
- <string name="pref_proxy_host_title">Outbound Host Proxy</string>
- <string name="pref_proxy_host_summary">Nama host Server Proxy</string>
- <string name="pref_proxy_host_dialog">Masukkan Host Proxy</string>
- <string name="pref_proxy_port_title">Outbound Port Proxy</string>
- <string name="pref_proxy_port_summary">Port Server Proxy</string>
- <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
- <string name="pref_proxy_username_title">Outbound Nama Pengguna Proxy</string>
- <string name="pref_proxy_username_summary">Nama Pengguna Proxy (Opsional)</string>
- <string name="pref_proxy_username_dialog">Masukkan Nama Pengguna Proxy</string>
- <string name="pref_proxy_password_title">Outbound Sandi Proxy</string>
- <string name="pref_proxy_password_summary">Sandi Proxy (Opsional)</string>
- <string name="pref_proxy_password_dialog">Masukkan Sandi Proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Menyetel transparan proxying penuh...</string>
- <string name="setting_up_app_based_transparent_proxying_">Menyetel apl-berbasis proxying transparan...</string>
- <string name="transparent_proxying_enabled">Proxying transparan DIAKTIFKAN</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy diaktifkan untuk Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">PERINGATAN: kesalahan dalam memulai proxying transparan!</string>
- <string name="transproxy_rules_cleared">Aturan TransProxy dibersihkan</string>
- <string name="couldn_t_start_tor_process_">Tidak dapat memulai proses Tor:</string>
- <string name="privoxy_is_running_on_port_">Polipo aktif di port:</string>
- <string name="setting_up_port_based_transparent_proxying_">Menyetel proxying transparan berbasis-port...</string>
- <string name="bridge_error">Kesalahan pada Bridge</string>
- <string name="bridge_requires_ip">Agar dapat menggunakan fitur bridge, anda perlu memasukkan minimal satu alamat IP bridge.</string>
- <string name="send_email_for_bridges">Kirimkan email ke bridges@xxxxxxxxxxxxxx dengan baris \"get bridges\" dengan sendirinya dalam tubuh surat dari akun gmail.</string>
- <string name="error">Kesalahan</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Pengaturan ReachableAddresses anda menyebabkan kesalahan!</string>
- <string name="your_relay_settings_caused_an_exception_">Pengaturan relay anda menyebabkan kesalahan!</string>
- <string name="exit_nodes">Node Keluar</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">fingerprints, nama, negara dan alamat untuk hop terakhir</string>
- <string name="enter_exit_nodes">Memasuki Node Keluar</string>
- <string name="exclude_nodes">Node pengecualian</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Pengecualian fingerprints,nama, negara dan alamat</string>
- <string name="enter_exclude_nodes">Memasuki Node Pengecualian</string>
- <string name="strict_nodes">Node Terlarang</string>
- <string name="use_only_these_specified_nodes">Pakai *hanya* spesifik node</string>
- <string name="bridges">Bridges</string>
- <string name="use_bridges">Pakai Bridges</string>
- <string name="bridges_obfuscated">Bridges Terobfuskasi</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Nyalakan alternatif node masuk ke dalam Tor Network</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Nyalakan jika pengaturan bridges adalah bridges terobfuskasi</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan port bridges</string>
- <string name="enter_bridge_addresses">Memasuki Alamat Bridge</string>
- <string name="relays">Relays</string>
- <string name="relaying">Sedang me-Relay</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Nyalakan perangkat anda menjadi non-exit relay</string>
- <string name="relay_port">Port Relay</string>
- <string name="listening_port_for_your_tor_relay">Port mendengarkan untuk TOR relay anda</string>
- <string name="enter_or_port">Memasuki OR port</string>
- <string name="relay_nickname">Nama Relay</string>
- <string name="the_nickname_for_your_tor_relay">sebuah nama untuk Tor Relay anda</string>
- <string name="enter_a_custom_relay_nickname">Masukkan nama relay</string>
- <string name="reachable_addresses">Addresses Terjangkau</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalankan sebagai client dibalik firewall dengan ketentuan ketat</string>
- <string name="reachable_ports">Ports terjangkau</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Port terjangkau dibalik firewall ketat</string>
- <string name="enter_ports">Memasuki ports</string>
- <string name="enable_hidden_services">Layanan Penyimpanan Rahasia</string>
- <string name="run_servers_accessible_via_the_tor_network">Membolehkan perangkat-nyala untuk diakses lewat Tor Network</string>
- <string name="enter_localhost_ports_for_hidden_services">memasuki localhost port untuk layanan rahasia</string>
- <string name="hidden_service_ports">Ports Layanan Rahasia</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nama teralamatkan untuk layanan rahasia anda (otomatis dibuat)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">nyalakan debug log untuk output (harus menggunakan adb atau aLogCat untuk menampilkan)</string>
- <string name="project_home">Beranda Projek:</string>
- <string name="project_urls">https://www.torproject.org/docs/android https://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Lisensi Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Perangkat Lunak Pihak Ke-3:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Sebuah aplikasi ingin membuka port %S server tersembunyi ke jaringan Tor. Hal ini aman jika anda mempercayai aplikasi tersebut.</string>
- <string name="found_existing_tor_process">menemukan proses Tor yang ada...</string>
- <string name="something_bad_happened">Sesuatu yang buruk terjadi. Periksa log</string>
- <string name="hidden_service_on">layanan tersembunyi pada:</string>
- <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama layanan tersembunyi</string>
- <string name="unable_to_start_tor">Tidak dapat memulai Tor:</string>
- <string name="unable_to_reset_tor">Boot ulang perangkat anda, gagal me-reset Tor!</string>
- <string name="pref_use_sys_iptables_title">Gunakan Iptables Default</string>
- <string name="pref_use_sys_iptables_summary">menggunakan binary iptables built-in daripada yang disertakan dengan Orbot</string>
- <string name="error_installing_binares">Binary Tor tidak dapat dipasang atau ditingkatkan</string>
- <string name="pref_use_persistent_notifications">Selalu pelihara icon dalam toolbar ketika Orbot terhubung</string>
- <string name="pref_use_persistent_notifications_title">Pemberitahuan Selalu-Hidup</string>
- <string name="pref_use_expanded_notifications">Tampilkan notifikasi melebar dengan negara dan IP keluar Tor</string>
- <string name="pref_use_expanded_notifications_title">Notifikasi Melebar</string>
- <string name="notification_using_bridges">Bridge diaktifkan!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Bahasa</string>
- <string name="set_locale_summary">Pilih lokal dan bahasa untuk Orbot</string>
- <string name="wizard_locale_title">Pilih Bahasa</string>
- <string name="wizard_locale_msg">Biarkan default atau berlaih ke bahasa saat ini</string>
- <string name="powered_by">diperkuat dengan Tor</string>
- <string name="btn_save_settings">Simpan Pengaturan</string>
- <string name="no_internet_connection_tor">Tidak ada koneksi internet; Tor sedang standby...</string>
- <string name="bandwidth_">Bandwidth:</string>
- <string name="down">unduh</string>
- <string name="up">unggah</string>
- <string name="pref_disable_network_title">Auto-Tidur Tidak Ada Jaringan</string>
- <string name="pref_disable_network_summary">Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia</string>
- <string name="newnym">Anda telah beralih ke identitas Tor baru!</string>
- <string name="menu_verify_browser">Peramban</string>
- <string name="menu_use_chatsecure">Gunakan ChatSecure</string>
- <string name="permission_manage_tor_label">Kelola Tor</string>
- <string name="permission_manage_tor_description">Aktifkan aplikasi ini untuk mengontrol layanan Tor</string>
- <string name="install_apps_">Pasang aplikasi?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Tidak ada jaringan terhubung. Menidurkan Tor...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Jaringan terhubung baik. Memanggil Tor...</string>
- <string name="updating_settings_in_tor_service">memperbarui setting pada layanan Tor</string>
- <string name="pref_socks_title">SOCKS Tor</string>
- <string name="pref_socks_summary">Port tempat proxy SOCKS Tor aktif (standar: 9050 atau 0 untuk mematikan)</string>
- <string name="pref_socks_dialog">Konfigurasi Port SOCKS</string>
- <string name="pref_transport_title">Port TransProxy Tor</string>
- <string name="pref_transport_summary">Port tempat Proxy Transparan Tor aktif (standar: 9040 atau 0 untuk mematikan)</string>
- <string name="pref_transport_dialog">Konfigurasi Port TransProxy</string>
- <string name="pref_dnsport_title">Port DNS Tor</string>
- <string name="pref_dnsport_summary">Port tempat DNS Tor aktif (standar: 5400 atau 0 untuk mematikan)</string>
- <string name="pref_dnsport_dialog">Konfigurasi Port DNS</string>
- <string name="pref_torrc_title">Konfigurasi Torrc</string>
- <string name="pref_torrc_summary">HANYA UNTUK AHLI: masukkan baris konfigurasi direct Torrc</string>
- <string name="pref_torrc_dialog">Torrc Custom</string>
- <string name="wizard_tips_martus">Mobile Martus - Aplikasi Dokumentasi Hak Asasi Manusia milik Benetech</string>
- <string name="your_tor_public_ips_">IP Publik Tor Anda:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Mohon nonaktifkan aplikasi ini di Android Settings Apps jika Orbot anda bermasalah</string>
- <string name="app_conflict">Konflik Aplikasi</string>
- <string name="pref_transproxy_refresh_title">Auto-Refresh Transproxy</string>
- <string name="pref_transproxy_refresh_summary">Pasang ulang rule Transproxy saat status jaringan berubah</string>
- <string name="pref_transproxy_flush_title">BUANG PAKSA Transproxy</string>
- <string name="pref_transproxy_flush_summary">Ketuk disini untuk mengosongkan semua rule jaringan Transproxy SEKARANG</string>
- <string name="transparent_proxy_rules_flushed_">Rule proxy transparan telah kosong!</string>
- <string name="you_do_not_have_root_access_enabled">Anda tidak punya akses ROOT</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridge Telah Diperbarui</string>
- <string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
- <string name="menu_qr">Kode QR</string>
- <string name="bridge_mode">Mode Bridge</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Laman</string>
- <string name="activate">Aktivasi</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Anda dapat membuat semua aplikasi di perangkat anda bekerja melalui jaringan Tor menggunakan fitur VPN dari Android. *AWAS* Fitur ini masih baru, percobaan dan pada beberapa kasus tidak start otomatis, atau bahkan berhenti. Tidak untuk anonimitas, dan HANYA untuk melewati firewall dan penyaringan.</string>
- <string name="send_email">Kirim Email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Anda bisa mendapatkan alamat bridge melalui email, halaman web atau dengan memindai kode QR bridge tersebut. Pilih \'Email\' atau \'Laman\' di bawah untuk meminta alamat bridge. Setelah anda mendapatkannya, salin lalu tempel di pilihan \"Bridges\" pada setting Orbot lalu start ulang.</string>
- <string name="standard_browser">Peramban Standar</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">CATATAN: Hanya bridge Tor yang standar yang bekerja di perangkat Intel X86/ATOM</string>
-</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
deleted file mode 100644
index f2cf3c6..0000000
--- a/res/values-in/strings.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">mulai dan akhiri Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot sedang dimulaiâ?¦</string>
- <string name="status_activated">Tersambung ke Jaringan Tor</string>
- <string name="status_disabled">Orbot telah dibatalkan</string>
- <string name="status_shutting_down">Orbot sedang dimatikan</string>
- <string name="not_anonymous_yet">PERINGATAN: </string>
- <string name="menu_home">Home</string>
- <string name="menu_browse">Jelajahi</string>
- <string name="menu_settings">Pengaturan</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Bantuan</string>
- <string name="menu_about">Mengenai</string>
- <string name="button_help">Bantuan</string>
- <string name="button_close">Dekat</string>
- <string name="button_about">Mengenai</string>
- <string name="button_clear_log">Hapus Log</string>
- <string name="menu_verify">Periksa</string>
- <string name="menu_exit">Keluar</string>
- <string name="pref_transparent_all_title">Tor Semuanya</string>
- <string name="pref_transparent_port_title">Daftar Port</string>
- <string name="pref_has_root">Minta Akses Dasar</string>
- <string name="btn_back">Kembali</string>
- <string name="btn_cancel">Batal</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Pengaturan Proxy</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Umum</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Peringatan</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Tidak ada</string>
- <string name="status">Status</string>
- <string name="error">Kesalahan</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Simpan Pengaturan</string>
-</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
deleted file mode 100644
index f169370..0000000
--- a/res/values-is/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot er ókeypis proxy smáforrit sem gerir öðrum smáforritum kleift að nota veraldarvefinn á öruggari hátt. Orbot notar Tor til að dulkóða umferð þÃna á netinu og felur hana svo með að hoppa à gegnum fjölda tölva um allan heim. Tor er ókeypis hugbúnaður og opið net sem aðstoðar þig við að verjast gegn eftirliti á netinu sem vinnur gegn frelsi einkalÃfsins og friðhelgi, trúnaðar viðskiptamálum og samböndum, og rÃkisöryggi þekkt sem umferðargreining.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">ræsa og stöðva Tor</string>
- <string name="tor_proxy_service_process">torproxyþjónusta</string>
- <string name="status_starting_up">Orbot er að ræsa...</string>
- <string name="status_activated">Tengdur við Tor netið</string>
- <string name="status_disabled">Orbot er slökkt</string>
- <string name="tor_process_starting">Kveiki á Tor notanda...</string>
- <string name="tor_process_complete">lokið.</string>
- <string name="tor_process_waiting">bÃða.</string>
- <string name="not_anonymous_yet">AÃ?VÃ?RUN: Netumferðin þÃn er ekki nafnlaus enn! Vinsamlegast stilltu hugbúnaðinn þinn til að nota HTTP proxy 127.0.0.1:8118 eða SOCK4A eða SOCK5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Heim</string>
- <string name="menu_browse">Vafra</string>
- <string name="menu_settings">Stillingar</string>
- <string name="menu_log">Skráning</string>
- <string name="menu_info">Hjálp</string>
- <string name="menu_start">Byrja</string>
- <string name="menu_stop">Stöðva</string>
- <string name="menu_about">Um</string>
- <string name="main_layout_download">Niðurhal</string>
- <string name="main_layout_upload">Upphal</string>
- <string name="button_help">Hjálp</string>
- <string name="button_close">Loka</string>
- <string name="button_about">Um</string>
- <string name="button_clear_log">Hreinsa Skráningu</string>
- <string name="menu_verify">Athuga</string>
- <string name="menu_exit">Hætta</string>
- <string name="menu_scan">Skanna BridgeQR</string>
- <string name="menu_share_bridge">Deila BridgeQR</string>
- <string name="press_to_start">- ýttu lengi til að byrja -</string>
- <string name="pref_trans_proxy_group">Gegnsætt Proxy (�arfnast Rótaraðgangs)</string>
- <string name="pref_trans_proxy_title">Gegnsætt Proxy</string>
- <string name="pref_trans_proxy_summary">Sjálfkrafa Tor-gera smáforrit</string>
- <string name="pref_transparent_all_title">Tor Allt</string>
- <string name="pref_transparent_all_summary">Beina umferð fyrir öll smáforrit à gegnum Tor</string>
- <string name="pref_transparent_port_fallback_title">Port Beinir til vara</string>
- <string name="pref_transparent_port_fallback_summary">A�V�RUN: Fer framhjá algengum portum (80, 443, etc). *NOTA A�EINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki.</string>
- <string name="pref_transparent_port_title">Porta Listi</string>
- <string name="pref_transparent_port_summary">Listi yfir port til að proxya. *NOTA A�EINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki</string>
- <string name="pref_transparent_port_dialog">Settu inn port til að proxya</string>
- <string name="pref_has_root">Biðja um Rótaraðgang</string>
- <string name="pref_has_root_summary">�arfnast rótaraðgangs fyrir gegnsæja proxýun</string>
- <string name="status_install_success">Uppsetning Tor skráa tókst!</string>
- <string name="status_install_fail">Tor binary skrár gátu ekki verið settar upp. Vinsamlegast athugaðu Skráninguna og láttu vita til tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Villa à Forriti</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Um Orbot</string>
- <string name="btn_next">Næsta</string>
- <string name="btn_back">Til baka</string>
- <string name="btn_finish">Enda</string>
- <string name="btn_okay">Ã?kei</string>
- <string name="btn_cancel">Hætta við</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Fáein Orbot Smáatriði</string>
- <string name="wizard_details_msg">Orbot er open-source forrit sem inniheldur Tor, LibEvent og Polipo. Ã?að veitir staðbundinn HTTP proxy (8118) og SOCKS proxy (9050) inná Tor netið. Orbot hefur lÃka eiginleika, á tæki með rótaraðgang, til að senda alla vefumferð à gegnum Tor.</string>
- <string name="wizard_permissions_root">Aðgangur Heimilaður</string>
- <string name="wizard_permissions_stock">Orbot Leyfisveiting</string>
- <string name="wizard_premissions_msg_root">Frábært! Við höfum skynjað að þú hefur rótaraðgang heimilaðan fyrir Orbot. Við munum nota þetta vald skynsamlega.</string>
- <string name="wizard_permissions_msg_stock">�rátt fyrir að vera ekki nauðsynlegt, getur Orbot orðið öflugra verkfæri ef tækið þitt hefur rótaraðgang. Notaðu hnappinn fyrir neðan til að veita Orbot ofurkrafta!</string>
- <string name="wizard_permissions_no_root">Ef þú hefur ekki rótaraðgang eða hefur enga hugmynd um hvað við erum að tala, vertu viss um að nota smáforrit sem gerð eru til að vinna með Orbot.</string>
- <string name="wizard_permissions_consent">�g skil og vil halda áfram án réttinda Ofurnotanda</string>
- <string name="wizard_permission_enable_root">Veita rótaraðgang fyrir Orbot</string>
- <string name="wizard_configure">Stilla Torinleika</string>
- <string name="wizard_configure_msg">Orbot gefur þér möguleikann á að beina allri umferð smáforrita à gegnum Tor E�A að velja smáforrit hvert fyrir sig.</string>
- <string name="wizard_configure_all">Beina umferð fyrir öll smáforrit à gegnum Tor</string>
- <string name="wizard_configure_select_apps">Velja Einstök Smáforrit fyrir Tor</string>
- <string name="wizard_tips_tricks">Orbot-virk Smáforrit</string>
- <string name="wizard_tips_msg">Smáforritin fyrir neðan voru þróuð til að virka með Orbot. Klikkaðu hvern takka til að setja upp núna, eða þú getur fundið þá seinna á Google Play, á heimasÃðu GuardianProject.info eða à gegnum F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - �ruggur spjall þjónn fyrir Android</string>
- <string name="wizard_tips_proxy">Proxy Stillingar - Lærðu hvernig á að stilla smáforrit til að virka með Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Leitarvél smáforrit</string>
- <string name="wizard_tips_twitter">Setja Twitter proxy hýsir til \"localhost\" and port 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Búða til sögu og skildu það eftir fyrir tor vegna öryggis!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy Stillingar</string>
- <string name="wizard_proxy_help_msg">Ef að Android smáforritið sem þú notar, styður notkun af HTTP eða SOCKS proxy, getur þú stillt það til að tengjast Orbot og nota Tor.\n\n\nStillingar þjóns er 127.0.0.1 eða \"localhost\". Fyrir HTTP, port stillingin er 8118. Fyrir SOCKS, proxyinn er 9050. �ú ættir að nota SOCKS4A eða SOCKS5 ef mögulegt. �ú getur lært meira um proxýun á Android með FAQ á: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot er tilbúinn!</string>
- <string name="wizard_final_msg">Milljónir manneskja um allan heim nota Tor útaf mörgum mismunandi ástæðum.\n\nBlaðamenn og bloggarar, mannréttindasinnar, lögreglufólk, hermenn, stórfyrirtæki, þegnar bælandi rÃkisstjórna og bara venjulegir borgarar... og núna þú ert lÃka tilbúinn!</string>
- <string name="wizard_exit_at_first_screen_toast">Vinsamlegast stilltu Orbot áður en þú getur byrjað að nota það!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">�etta mun opna vef vafrann þinn að https://check.torproject.org til að sjá hvort Orbot sé rétt tengdur og að þú sért tengdur Tor.</string>
- <string name="pref_hs_group">Falin �jónusta Hýsing</string>
- <string name="pref_general_group">Almennt</string>
- <string name="pref_start_boot_title">Virkja Orbot við Ræsingu</string>
- <string name="pref_start_boot_summary">Sjálfkrafa virkja Orbot og tengja Tor þegar Android tækið þitt ræsist</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot kemur með Tor til Android!\n\nTor hjálpar þér að verjast gegn sÃun innihalds, umferðargreiningu og net eftirliti sem er hættulegt friðhelgi einkalÃfsins, trúnaðarupplýsingum og persónulegum samböndum.\n\nÃ?essi leiðbeinandi hjálpar þér að stilla Orbot og Tor á tækinu þÃnu.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Aðvörun</string>
- <string name="wizard_warning_msg">Aðeins með að setja Orbot upp mun ekki sjálfkrafa gera netumferð þÃna nafnlausa.\n\nÃ?ú verður að stilla Orbot rétt, tækið þitt og önnur smáforrit til að nota Tor rétt.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Leyfisveitingar</string>
- <string name="wizard_permissions_root_msg1">�ú getur valfrjálst veitt Orbot \'Ofurnotanda\' aðgang til að virkja stillingar fyrir lengra komna, eins og Gegnsæ Proxýun.</string>
- <string name="wizard_permissions_root_msg2">Ef þú vilt ekki gera þetta, vinsamlegast vertu viss um að nota smáforrit sem gerð eru til að vinna með Orbot</string>
- <string name="wizard_permissions_no_root_msg">Tækið þitt virðist ekki vera með rótaraðgang eða veita \'Ofurnotanda\' réttindi.\n\nVinsamlegast prófaðu \'Smáforrit\' viðmótið á aðalskjánum à staðinn.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Virk Smáforrit</string>
- <string name="wizard_tips_gibberbot">ChatSecure: �ruggt spjall smáforrit með Utanvegar Dulkóðun</string>
- <string name="wizard_tips_play">Finndu öll Guardian Verkefnis smáforrit á Google Play</string>
- <string name="wizard_tips_fdroid">Finndu öll smáforrit úr Guardian Verkefninu á F-Droid</string>
- <string name="wizard_tips_fdroid_org">Finndu öll smáforrit úr Guardian Verkefninu á https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Gegnsæ Proxýun</string>
- <string name="wizard_transproxy_msg">Ã?etta leyfir smáforritunum þÃnum sjálfkrafa að keyra à gengum Tor netið án nokkurra stillinga.</string>
- <string name="wizard_transproxy_hint">(Hakaðu à þenna reit ef þú hefur enga hugmynd um hvað við erum að tala)</string>
- <string name="wizard_transproxy_none">Engin</string>
- <string name="pref_transparent_tethering_title">Tor Netaðgangspunktur</string>
- <string name="pref_transparent_tethering_summary">Leyfa Tor Gegnsæja Proxýun fyrir WiFi og USB Tæki með Netaðgengi (þarfnast endurræsingar)</string>
- <string name="button_grant_superuser">Biðja um Ofurnotandaréttindi</string>
- <string name="pref_select_apps">Velja Smáforrit</string>
- <string name="pref_select_apps_summary">Velja Smáforrit til að Beina à gegnum Tor</string>
- <string name="pref_node_configuration">Punkta Stilling</string>
- <string name="pref_node_configuration_summary">�etta eru flóknari stillingar sem geta minnkað nafnleysið þitt</string>
- <string name="pref_entrance_node">Inngangs Punktur</string>
- <string name="pref_entrance_node_summary">Fingraför, uppnefni, lönd og heimilisföng fyrir fyrsta hoppið</string>
- <string name="pref_entrance_node_dialog">Sláðu Inn Inngangspunkt</string>
- <string name="button_proxy_all">Proxy Allt</string>
- <string name="button_proxy_none">Proxy Ekkert</string>
- <string name="button_invert_selection">Ã?fugt Val</string>
- <string name="pref_proxy_title">�tistandandi Net Proxy (Valfrjálst)</string>
- <string name="pref_proxy_type_title">�tistandandi Proxy Gerð</string>
- <string name="pref_proxy_type_summary">Protocol til að nota fyrir proxy þjón: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Sláðu Inn Gerð Proxýs</string>
- <string name="pref_proxy_host_title">�tistandandi Proxy Hýsir</string>
- <string name="pref_proxy_host_summary">Proxy Netþjóns nafn</string>
- <string name="pref_proxy_host_dialog">Sláðu Inn Proxy �jón</string>
- <string name="pref_proxy_port_title">Ã?tistandandi Proxy Port</string>
- <string name="pref_proxy_port_summary">Proxy Netþjóns port</string>
- <string name="pref_proxy_port_dialog">Sláðu Inn Proxy port</string>
- <string name="pref_proxy_username_title">Ã?tistandandi Proxy Notendanafn</string>
- <string name="pref_proxy_username_summary">Proxy Notendanafn (Valfrjálst)</string>
- <string name="pref_proxy_username_dialog">Sláðu Inn Proxy Notendanafn</string>
- <string name="pref_proxy_password_title">�tistandandi Proxy Lykilorð</string>
- <string name="pref_proxy_password_summary">Proxy Lykilorð (Valfrjálst)</string>
- <string name="pref_proxy_password_dialog">Sláðu Inn Proxy Lykilorð</string>
- <string name="status">Staða</string>
- <string name="setting_up_full_transparent_proxying_">Set upp full-gegnsæjan proxy...</string>
- <string name="setting_up_app_based_transparent_proxying_">Set upp smáforrita-byggðan gegnsæjan proxy... </string>
- <string name="transparent_proxying_enabled">Gegnsæ proxýun KVEIKT</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy kveikt fyrir Netaðgangspunkt!</string>
- <string name="warning_error_starting_transparent_proxying_">A�V�RUN: villa við að kveikja á gegnsærri proxýun</string>
- <string name="transproxy_rules_cleared">TransProxy reglur hreinsaðar</string>
- <string name="couldn_t_start_tor_process_">Gat ekki kveikt á Tor þráð:</string>
- <string name="privoxy_is_running_on_port_">Polipo keyrir á porti:</string>
- <string name="setting_up_port_based_transparent_proxying_">Set upp port-byggða gegnsæja proxýun...</string>
- <string name="bridge_error">Brúar Villa</string>
- <string name="bridge_requires_ip">Til að nota brúar viðbótina, verðuru að slá inn að minnsta kosti eina IP addressu fyrir brú.</string>
- <string name="send_email_for_bridges">Sendu tölvupóst til bridges@xxxxxxxxxxxxxx með setningunni \"get bridges\" eitt og sér à innihaldi skeytisins frá gmail aðgangi.</string>
- <string name="error">Villa</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">�itt ReachableAddressur stillingar ollu undanþágu!</string>
- <string name="your_relay_settings_caused_an_exception_">Endurvarp stillingar þÃnar ollu undanþágu!</string>
- <string name="exit_nodes">Ã?tgangspunktar</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingraför, uppnefni, lönd og heimilisföng fyrir sÃðasta hoppið</string>
- <string name="enter_exit_nodes">Sláðu Inn �tgangspunkta</string>
- <string name="exclude_nodes">Ã?tiloka Punkta</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingraför, uppnefni, lönd og heimilisföng til að útiloka</string>
- <string name="enter_exclude_nodes">Sláðu Inn �tiloka Punkta</string>
- <string name="strict_nodes">Strangir Punktar</string>
- <string name="use_only_these_specified_nodes">Nota *aðeins* þessa tilgreindu punkta</string>
- <string name="bridges">Brýr</string>
- <string name="use_bridges">Nota Brýr</string>
- <string name="bridges_obfuscated">Villandi Brýr</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Kveikja hliðstæðan inngangspunkt inná Tor Netið</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Leyfa ef stilltar brýr eru villandi brýr</string>
- <string name="ip_address_and_port_of_bridges">IP addressa og brúarport</string>
- <string name="enter_bridge_addresses">Sláðu Inn Brúar Addressur</string>
- <string name="relays">Endurvarpar</string>
- <string name="relaying">Endurvörpun</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Leyfa tækinu þÃnu að vera útgangslaus endurvarpi</string>
- <string name="relay_port">Endurvörpunar Port</string>
- <string name="listening_port_for_your_tor_relay">Hlustunar port fyrir Tor endurvarpann þinn</string>
- <string name="enter_or_port">Sláðu Inn OR port</string>
- <string name="relay_nickname">Endurvörpunar viðurnefni</string>
- <string name="the_nickname_for_your_tor_relay">Viðurnefni fyrir Tor endurvarpið þitt</string>
- <string name="enter_a_custom_relay_nickname">Sláðu Inn sérhannað endurvarp viðurnefni</string>
- <string name="reachable_addresses">Nálgunarhæf Heimilisföng</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Keyra sem notandi bakvið eldvegg með hamlandi skilyrðum</string>
- <string name="reachable_ports">Nálgunarhæf port</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Port nálgunarhæf bakvið hamlandi eldvegg</string>
- <string name="enter_ports">Sláðu Inn port</string>
- <string name="enable_hidden_services">Falin �jónusta Hýsing</string>
- <string name="run_servers_accessible_via_the_tor_network">leyfa á-tæki netþjón til að vera aðgengilegur à gegnum Tor netið</string>
- <string name="enter_localhost_ports_for_hidden_services">sláðu inn localhost port fyrir faldar þjónustur</string>
- <string name="hidden_service_ports">Falin �jónustu Port</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nafnið fyrir falda þjónustu þÃna (búið til sjálfkrafa)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">leyfa villuskráningu á verða búin til (verður að nota adb eða aLogCat til að skoða)</string>
- <string name="project_home">Heimili Verkefni(sins):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor Leyfið</string>
- <string name="https_torproject_org">https:torproject.org</string>
- <string name="third_party_software">Hugbúnaður frá 3ja aðila:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Smáforrit vill opna falið port þjóns %S að Tor netinu. �etta er öruggt ef þú treystir smáforritinu.</string>
- <string name="found_existing_tor_process">fann annan Tor þráð...</string>
- <string name="something_bad_happened">Eitthvað slæmt gerðist. Athugaðu skráninguna</string>
- <string name="hidden_service_on">falin þjónusta á:</string>
- <string name="unable_to_read_hidden_service_name">get ekki lesið nafn földu þjónustunnar</string>
- <string name="unable_to_start_tor">Get ekki kveikt á Tor:</string>
- <string name="unable_to_reset_tor">Endurræstu tækið þitt, ekki hægt að núllstilla Tor!</string>
- <string name="pref_use_sys_iptables_title">Nota Upprunalegar IPtöflur</string>
- <string name="pref_use_sys_iptables_summary">nota innbyggðar iptöflur binary à staðinn fyrir þær sem fylgja með Orbot</string>
- <string name="error_installing_binares">Tor binary-in gátu ekki verið uppsettar eða uppfærðar.</string>
- <string name="pref_use_persistent_notifications">Alltaf hafa smámynd à glugganum þegar Orbot er tengudr</string>
- <string name="pref_use_persistent_notifications_title">Alltaf-� Upplýsingar</string>
- <string name="pref_use_expanded_notifications">Sýndu útvÃkkaðar upplýsingar varðandi Tor útgangsland og IP tölu</string>
- <string name="pref_use_expanded_notifications_title">Ã?tvÃkkaðar Upplýsingar</string>
- <string name="notification_using_bridges">Brýr kveiktar!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Tungumál</string>
- <string name="set_locale_summary">Veldu staðsetningu og tungumál fyrir Orbot</string>
- <string name="wizard_locale_title">Veldu Tungumál</string>
- <string name="wizard_locale_msg">Leyfa upprunalega eða skipta núverandi tungumáli</string>
- <string name="powered_by">gert kleift af Tor</string>
- <string name="btn_save_settings">Geyma Stillingar</string>
- <string name="no_internet_connection_tor">Engin tenging við netið; Tor er à biðstöðu...</string>
- <string name="bandwidth_">BandvÃdd:</string>
- <string name="down">niðri</string>
- <string name="up">uppi</string>
- <string name="pref_disable_network_title">Enginn Netkerfis Sjálfvirkur-Svefn</string>
- <string name="pref_disable_network_summary">Svæfðu Tor þegar engin internet tenging er til staðar</string>
- <string name="newnym">�ú ert komin með nýtt Tor auðkenni!</string>
- <string name="menu_use_chatsecure">Nota ChatSecure</string>
- <string name="permission_manage_tor_label">Stilla Tor</string>
- <string name="permission_manage_tor_description">Leyfa þessu smáforriti að stjórna Tor þjónustunni</string>
- <string name="install_apps_">Setja upp smáforrit?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Engin tenging við netið. Tor verður svæfður...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Tenging við netið er góð. Tor verður vakinn...</string>
- <string name="updating_settings_in_tor_service">uppfæri stillingar à Tor þjónustu</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port sem Tor býður SOCKS proxy á (upprunalegt: 9050 eða 0 til að slökkva)</string>
- <string name="pref_socks_dialog">SOCK Port Stilling</string>
- <string name="pref_transport_title">Tor GegnsærProxy Port</string>
- <string name="pref_transport_summary">Port sem Tor býður Gegnsæjum Proxy á (upprunalegt: 9040 eða 0 til að slökkva)</string>
- <string name="pref_transport_dialog">GegnsærProxy Port Stilling</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Port sem Tor býður DNS á (upprunalegt: 5400 eða 0 til að slökkva)</string>
- <string name="pref_dnsport_dialog">DNS Port Stilling</string>
- <string name="pref_torrc_title">Torrc Mótanleg Stilling</string>
- <string name="pref_torrc_summary">AÃ?EINS SÃ?RFRÃ?Ã?INGAR: sláðu inn beinar torrc stillingar lÃnur</string>
- <string name="pref_torrc_dialog">Mótanlegt Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Mannréttinda Skjölunar Smáforrit</string>
- <string name="your_tor_public_ips_">Tor Almennings IP tölurnar Ã?Ãnar </string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vinsamlegast slökktu á þessu smáforriti à Android->Settings->Apps ef þú ert à vandræðum með Orbot: </string>
- <string name="app_conflict">Smáforrita �rekstur</string>
- <string name="pref_transproxy_refresh_title">Gegnsærproxy Sjálfkrafa Endurnýjun</string>
- <string name="pref_transproxy_refresh_summary">Endursetja Gegnsærproxy reglurnar þegar ástand netsins breytist</string>
- <string name="pref_transproxy_flush_title">Gegnsærproxy �VINGU� FJARL�GING</string>
- <string name="pref_transproxy_flush_summary">�ttu hér til að henda öllum gegnsærproxy net reglunum N�NA</string>
- <string name="transparent_proxy_rules_flushed_">Gegnsær proxy reglum hent!</string>
- <string name="you_do_not_have_root_access_enabled">�ú ert ekki með R�TAR aðgang kveikt</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">�ú gætir þurft að stöðva og byrja Orbot til að stillinga breytingar taka gildi.</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Brýr Uppfærðar</string>
- <string name="restart_orbot_to_use_this_bridge_">Vinsamlegast endurræstu Orbot til að breytingarnar taki gildi</string>
- <string name="menu_qr">QR Kóðar</string>
- <string name="bridge_mode">Brúar Viðmót</string>
- <string name="get_bridges_email">Tölvupóstur</string>
- <string name="get_bridges_web">Vefur</string>
- <string name="activate">Virkja</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ã?ú getur leyft öllum smáforritum á tækinu þÃnu að fara à gegnum Tor netið með að nota VPN möguleikann à Android.\n\n*AÃ?VÃ?RUN* Ã?etta er ný, tilraunar möguleiki og à sumum tilfellum mun ekki byrja sjálfkrafa, eða geta stöðvast. Ã?að ætti EKKI að notast fyrir nafnleysi, og AÃ?EINS notað til að komast à gegnum eldveggi og sÃur.</string>
- <string name="send_email">Senda Tölvupóst</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ã?ú getur fengið brúar heimilisfang à gegnum tölvupóst, vefinn eða með að skanna brúar QR kóða. Veldu \'Tölvupóstur\' eða \'Vefur\' fyrir neðan til að óska eftir brúar heimilisfangi.\n\nÃ?egar þú hefur heimilisfang, afritaðu & lÃmdu það inn à \'Brýr\' stillingu à stillingar og endurræsun à Orbot.</string>
- <string name="standard_browser">Staðlaður Vafri</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">ATHUGA�U: Aðeins staðlaðar Tor brýr virka á Intel X86/ATOM devices</string>
-</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
deleted file mode 100644
index 40f8ddc..0000000
--- a/res/values-it/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot è un\'applicazione proxy che permette alle altre applicazioni di accedere a internet in maniera più sicura. Orbot usa Tor per cifrare il traffico internet e lo nasconde poi facendolo rimbalzare attraverso una serie di computer attorno al mondo. Tor è un software libero e una rete aperta che aiuta a difendersi da una forma di sorveglianza della rete conosciuta come analisi del traffico. Quest\'ultima minaccia libertà e privacy personale, attività commerciali riservate, rapporti interpersonali, e persino la sicurezza di stato.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">avvia e ferma Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot è in esecuzione...</string>
- <string name="status_activated">Connesso alla rete Tor</string>
- <string name="status_disabled">\"Orbot è disattivato</string>
- <string name="status_shutting_down">TorService si sta spegnendo</string>
- <string name="tor_process_starting">Avvio client Tor...</string>
- <string name="tor_process_complete">completa.</string>
- <string name="tor_process_waiting">attesa.</string>
- <string name="not_anonymous_yet">ATTENZIONE: Il traffico non è ancora anonimo! Configura le applicazioni per utilizzare il proxy HTTP 127.0.0.1:8118, SOCKS4A o proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Home</string>
- <string name="menu_browse">Sfoglia</string>
- <string name="menu_settings">Impostazioni</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Aiuto</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Avvio</string>
- <string name="menu_stop">Ferma</string>
- <string name="menu_about">About</string>
- <string name="menu_promo_apps">Installa apps...</string>
- <string name="main_layout_download">Download (velocità /totale)</string>
- <string name="main_layout_upload">Upload (velocità /totale)</string>
- <string name="button_help">Aiuto</string>
- <string name="button_close">Chiudi</string>
- <string name="button_about">About</string>
- <string name="button_clear_log">Cancella log</string>
- <string name="menu_verify">Controlla</string>
- <string name="menu_exit">Esci</string>
- <string name="menu_scan">Scansiona BridgeQR</string>
- <string name="menu_share_bridge">Condividi BridgeQR</string>
- <string name="press_to_start">- tieni premuto per avviare -</string>
- <string name="pref_trans_proxy_group">Proxying trasparente (Richiede root)</string>
- <string name="pref_trans_proxy_title">Proxying trasparente</string>
- <string name="pref_trans_proxy_summary">Torifying automatico delle app</string>
- <string name="pref_transparent_all_title">Tor ovunque</string>
- <string name="pref_transparent_all_summary">Traffico proxy di tutte le app attraverso Tor</string>
- <string name="pref_transparent_port_fallback_title">Fallback porte proxy</string>
- <string name="pref_transparent_port_fallback_summary">ATTENZIONE: Aggira le porte comuni (80, 443, ecc). *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano.</string>
- <string name="pref_transparent_port_title">Elenco porte</string>
- <string name="pref_transparent_port_summary">Lista di porte per cui fare proxy. *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano.</string>
- <string name="pref_transparent_port_dialog">Inserisci porte da proxare</string>
- <string name="pref_has_root">Richiesto accesso root</string>
- <string name="pref_has_root_summary">Richiede il root per il proxying trasparente</string>
- <string name="status_install_success">I binari di Tor sono stati installati con successo!</string>
- <string name="status_install_fail">I file binari di Tor non possono essere installati. Controlla i log e notifica l\'accaduto su tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Errore applicazione</string>
- <string name="wizard_title">Benvenuti in Orbot</string>
- <string name="wizard_btn_tell_me_more">About Orbot</string>
- <string name="btn_next">Avanti</string>
- <string name="btn_back">Indietro</string>
- <string name="btn_finish">Fine</string>
- <string name="btn_okay">Ok</string>
- <string name="btn_cancel">Annulla</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Alcuni dettagli su Orbot</string>
- <string name="wizard_details_msg">Orbot è un\'app open-source contenente Tor, LibEvent e Polipo. Fornisce un proxy HTTP locale (8118) e un proxy SOCKS (9050) nella rete Tor. Orbot, solo sui dispositivi con permessi di ROOT, offre anche la possibilità di veicolare tutto il traffico attraverso Tor.</string>
- <string name="wizard_permissions_root">Permesso concesso</string>
- <string name="wizard_permissions_stock">Permessi Orbot</string>
- <string name="wizard_premissions_msg_root">Eccellente! Abbiamo rilevato la presenza dei permessi di root attivati per Orbot. Useremo questi poteri con saggezza.</string>
- <string name="wizard_permissions_msg_stock">Anche se non è richiesto, Orbot può diventare uno strumento ancora più potente se il dispositivo ha accesso come root. Utilizza il pulsante qui sotto per concedere i superpoteri a Orbot!</string>
- <string name="wizard_permissions_no_root">Se non hai i permessi root o non hai idea di cosa siano, assicurati solamente di utilizzare applicazioni fatte per lavorare con Orbot.</string>
- <string name="wizard_permissions_consent">Ho capito e desidero continuare senza il root</string>
- <string name="wizard_permission_enable_root">Concedi permessi root a Orbot</string>
- <string name="wizard_configure">Configura Torification</string>
- <string name="wizard_configure_msg">Orbot dà la possibilità di instradare tutto il traffico delle applicazioni tramite Tor o scegliere le applicazioni singolarmente.</string>
- <string name="wizard_configure_all">Usa Tor come proxy per tutte le applicazioni.</string>
- <string name="wizard_configure_select_apps">Seleziona singole App per Tor</string>
- <string name="wizard_tips_tricks">App abilitate per Orbot</string>
- <string name="wizard_tips_msg">Ti invitiamo a scaricare & usare app che possono connettersi direttamente a Orbot. Fai click sui pulsanti qui sotto per installare.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Client sicuro di messaggistica istantanea, per Android</string>
- <string name="wizard_tips_proxy">Impostazioni proxy - Ulteriori informazioni su come configurare le app per funzionare con Orbot</string>
- <string name="wizard_tips_duckgo">App del motore di ricerca Duckduckgo</string>
- <string name="wizard_tips_twitter">Twitter supporta il proxy http \"localhost:8118\"</string>
- <string name="wizard_tips_story_maker">StoryMaker - Crea una storia e lascia a Tor la sicurezza!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Impostazioni proxy</string>
- <string name="wizard_proxy_help_msg">Se l\'app Android che stai usando supporta l\'uso di Proxy HTTP o SOCKS, allora puoi configurarle per connettersi a Orbot e usare Tor.\n\n\n L\'impostazione host è 127.0.0.1 o \"localhost\". Per l\'HTTP, il valore della porta è 8118. Per SOCKS, il proxy è 9050. Dovresti utilizzare SOCKS4A o SOCKS5 se possibile.\n \n\n\n PPuoi imparare altro sul proxying in Android tramite le FAQ: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot è pronto!</string>
- <string name="wizard_final_msg">Milioni di persione in giro per il mondo usano Tor per un\'ampia varietà di ragioni.\n\nGiornalisti e blogger, difensori dei diritti umani, ufficiali delle forze dell\'ordine, soldati, aziende, cittadini di paesi repressivi, e anche cittadini qualunque... e ora sei pronto a farlo anche tu!</string>
- <string name="wizard_exit_at_first_screen_toast">Perfavore configura Orbot prima di iniziare ad usarlo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Ti sei collegato correttamente alla rete Tor - ma questo NON significa che il tuo dispositivo è sicuro. � possibile utilizzare l\'opzione \'Browser\' dal menù per testare il browser. \n\nVisita il nostro sito web https://guardianproject.info/apps/orbot o invia una mail a help@xxxxxxxxxxxxxxxxxxxx per saperne di più.</string>
- <string name="tor_check">Si aprirà il browser web predefinito per https://check.torproject.org per controllare se Orbot probabilmente è configurato e si è connessi a Tor.</string>
- <string name="pref_hs_group">Servizi nascosti</string>
- <string name="pref_general_group">Generale</string>
- <string name="pref_start_boot_title">Avvia Orbot al boot</string>
- <string name="pref_start_boot_summary">Avvia automaticamente Orbot e connetti Tor quando il dispositivo Android viene avviato</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot porta Tor su Android!\n\nTor ti aiuta a difenderti da filtraggio di contenuti, analisi del traffico e sorveglianza della rete che minacciano la privacy, informazioni personali e relazioni personali.\n\nQuesta procedura guidata ti aiuterà a configurare Orbot e Tor sul tuo dispositivo.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Attenzione</string>
- <string name="wizard_warning_msg">La semplice installazione di Orbot non renderà anonimo il tuo traffico di rete mobile.\n\nDevi configurare correttamente Orbot, il tuo dispositivo e le altre applicazioni per usare Tor efficacemente.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permessi</string>
- <string name="wizard_permissions_root_msg1">Opzionalmente, è possibile concedere ad Orbot l\'accesso da superutente per abilitare funzionalità avanzate come il proxying trasparente.</string>
- <string name="wizard_permissions_root_msg2">Se non si vuole intraprendere questa scelta, ci si assicuri di utilizzare applicazioni fatte per funzionare con Orbot</string>
- <string name="wizard_permissions_no_root_msg">Il vostro dispositivo non sembra essere rooted o fornire accesso da \'Superutente\'.\n\nPerfavore prova invece la modalità \'App\' nella schermata principale.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-App abilitate</string>
- <string name="wizard_tips_gibberbot">ChatSecure: App chat sicura con Cifratura Off-the-Record</string>
- <string name="wizard_tips_orweb">Orfox: Browser progettato per la privacy che funziona attraverso Tor</string>
- <string name="wizard_tips_play">Cerca tutte le app del Guardian Project su Google Play</string>
- <string name="wizard_tips_fdroid">Trova tutte le app Guardian Projec su F-Droid</string>
- <string name="wizard_tips_fdroid_org">Trova tutte le app Guardian Project su https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxying trasparente</string>
- <string name="wizard_transproxy_msg">Questo permette alle tue applicazioni di passare automaticamente attraverso la rete Tor senza necessità di ulteriore configurazione.</string>
- <string name="wizard_transproxy_hint">(Seleziona questa casella se non hai idea di quello di cui stiamo parlando)</string>
- <string name="wizard_transproxy_none">Nessuno</string>
- <string name="pref_transparent_tethering_title">Tethering Tor</string>
- <string name="pref_transparent_tethering_summary">Abilita il proxying trasparente di Tor per i dispositivi connessi in tethering via WiFi e USB (necessita di riavvio)</string>
- <string name="button_grant_superuser">Richiede accesso superuser</string>
- <string name="pref_select_apps">Seleziona app</string>
- <string name="pref_select_apps_summary">Scegli le applicazioni da utilizzare attraverso Tor</string>
- <string name="pref_node_configuration">Configurazione nodo</string>
- <string name="pref_node_configuration_summary">Questi sono parametri di configurazione avanzati che possono ridurre il vostro anonimato</string>
- <string name="pref_entrance_node">Nodi di entrata</string>
- <string name="pref_entrance_node_summary">Identificativi, nicknames, paesi ed indirizzi del primo hop</string>
- <string name="pref_entrance_node_dialog">Inserisci nodi di entrata</string>
- <string name="pref_allow_background_starts_title">Permetti Avvii in Background</string>
- <string name="pref_allow_background_starts_summary">Permetti a qualsiasi app di comunicare ad Orbot di avviare Tor e servizi relativi</string>
- <string name="button_proxy_all">Proxa tutto</string>
- <string name="button_proxy_none">Non proxare niente</string>
- <string name="button_invert_selection">Inverti selezione</string>
- <string name="pref_proxy_title">Proxy di Rete in Uscita (Facoltativo)</string>
- <string name="pref_proxy_type_title">Tipo proxy</string>
- <string name="pref_proxy_type_summary">Protocolli da utilizzare per i server proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Inserisci tipo proxy</string>
- <string name="pref_proxy_host_title">Host proxy</string>
- <string name="pref_proxy_host_summary">Hostname server proxy</string>
- <string name="pref_proxy_host_dialog">Inserire l\'host del proxy</string>
- <string name="pref_proxy_port_title">Porta proxy</string>
- <string name="pref_proxy_port_summary">Porta del server proxy</string>
- <string name="pref_proxy_port_dialog">Inserire la porta del proxy</string>
- <string name="pref_proxy_username_title">Nome Utente del Proxy in Uscita</string>
- <string name="pref_proxy_username_summary">Nome Utente del Proxy (Facoltativo)</string>
- <string name="pref_proxy_username_dialog">Inserisci Nome Utente del Proxy</string>
- <string name="pref_proxy_password_title">Password del Proxy in Uscita</string>
- <string name="pref_proxy_password_summary">Password del Proxy (Facoltativo)</string>
- <string name="pref_proxy_password_dialog">Inserisci Password Proxy</string>
- <string name="status">Stato</string>
- <string name="setting_up_full_transparent_proxying_">Configurazione del proxying completamente trasparente...</string>
- <string name="setting_up_app_based_transparent_proxying_">Configurazione del proxying trasparente basato su applicazione...</string>
- <string name="transparent_proxying_enabled">Proxying trasparente ABILITATO</string>
- <string name="transproxy_enabled_for_tethering_">Proxying trasparente abilitato per il tethering</string>
- <string name="warning_error_starting_transparent_proxying_">AVVERTIMENTO: errore nell\'avvio del TransProxy!</string>
- <string name="transproxy_rules_cleared">Regole del TransProxy cancellate</string>
- <string name="couldn_t_start_tor_process_">Impossibile avviare il processo Tor:</string>
- <string name="privoxy_is_running_on_port_">Polipo è in esecuzione sulla porta:</string>
- <string name="setting_up_port_based_transparent_proxying_">Configurazione del proxying trasparente basato su porta...</string>
- <string name="bridge_error">Errore bridge</string>
- <string name="bridge_requires_ip">Al fine di utilizzare la funzionalità bridge, è necessario inserire almeno l\'indirizzo IP di un bridge.</string>
- <string name="send_email_for_bridges">Si consiglia di inviare una email a bridges@xxxxxxxxxxxxxx con la linea \"get bridges\" da sola nel corpo del messaggio da un account gmail.</string>
- <string name="error">Errore</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">La tua configurazione dell\'indirizzo raggiungibile ha causato un\'eccezione!</string>
- <string name="your_relay_settings_caused_an_exception_">La configurazione del tuo relay ha causato un\'eccezione!</string>
- <string name="exit_nodes">Nodi di uscita</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Identificatori, nicknames, paesi ed indirizzi per l\'ultimo hop</string>
- <string name="enter_exit_nodes">Inserire i nodi d\'uscita</string>
- <string name="exclude_nodes">Escludere i nodi</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Identificatori, nicknames, paesi ed indirizzi da escludere</string>
- <string name="enter_exclude_nodes">Inserire i nodi da escludere</string>
- <string name="strict_nodes">Nodi specifici</string>
- <string name="use_only_these_specified_nodes">Utilizza *solo* i nodi specificati</string>
- <string name="bridges">Ponti</string>
- <string name="use_bridges">Utilizza i bridge</string>
- <string name="bridges_obfuscated">Bridge mascherati</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Abilita nodi alternati in entrata nella rete Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Attiva se i Bridge configurati sono mascherati</string>
- <string name="ip_address_and_port_of_bridges">Indirizzo IP e porta dei bridge</string>
- <string name="enter_bridge_addresses">Inserire gli indirizzi dei bridge</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relaying</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Abilita il tuo dispositivo per essere un relay non di uscita</string>
- <string name="relay_port">Porta del relay</string>
- <string name="listening_port_for_your_tor_relay">Porta in ascolto per il proprio Tor relay</string>
- <string name="enter_or_port">Inserire la porta OR</string>
- <string name="relay_nickname">Nickname del relay</string>
- <string name="the_nickname_for_your_tor_relay">Il nickname per il proprio relay Tor</string>
- <string name="enter_a_custom_relay_nickname">Inserire un nickname personalizzato per il relay</string>
- <string name="reachable_addresses">Indirizzo raggiungibile</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Esegui come un client dietro un firewall con politiche restrittive</string>
- <string name="reachable_ports">Porte raggiungibili</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porte raggiungibili dietro un firewall restrittivo</string>
- <string name="enter_ports">Inserisci porte</string>
- <string name="enable_hidden_services">Abilita servizi nascosti</string>
- <string name="run_servers_accessible_via_the_tor_network">esegui server accessibili attraverso la rete Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">inserire la porta per l\'host locale per i servizi nascosti</string>
- <string name="hidden_service_ports">Porta per i servizi nascosti</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">il nome di indirizzamento per i propri servizi nascosti (generato automaticamente)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">abilita i log di debug in output (richiede l\'uso di adb o aLogCat per esser visualizzato)</string>
- <string name="project_home">Home progetto:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Licenza Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software di terze parti:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Un applicazione ha richiesto di aprire la porta per servizi nascosti %S alla rete Tor. Questo è sicuro se ci si fida dell\'applicazione.</string>
- <string name="found_existing_tor_process">trovato un processo Tor esistente...</string>
- <string name="something_bad_happened">E\' accaduto un evento indesiderato. Controllare i log.</string>
- <string name="hidden_service_on">servizio nascosto attivo:</string>
- <string name="unable_to_read_hidden_service_name">Impossibile leggere il nome del servizio nascosto.</string>
- <string name="unable_to_start_tor">Impossibile avviare Tor:</string>
- <string name="unable_to_reset_tor">Riavvia il tuo dispositivo, impossibile resettare Tor!</string>
- <string name="pref_use_sys_iptables_title">Utilizza Iptables di default</string>
- <string name="pref_use_sys_iptables_summary">utilizza il binario di iptables installato invece di quello fornito con Orbot</string>
- <string name="error_installing_binares">Non è stato possibile installare o aggiornare i binari di Tor.</string>
- <string name="pref_use_persistent_notifications">Mantieni sempre l\'icona nella barra degli strumenti quando Orbot è connesso.</string>
- <string name="pref_use_persistent_notifications_title">Notifiche sempre attive</string>
- <string name="pref_use_expanded_notifications">Visualizza notifica espansa con nazione e ip dell\'nodo d\'uscita Tor</string>
- <string name="pref_use_expanded_notifications_title">Espandi notifiche</string>
- <string name="notification_using_bridges">Bridge attivati!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Lingua</string>
- <string name="set_locale_summary">Scegli le impostazioni internazionali e la lingua di Orbot</string>
- <string name="wizard_locale_title">Scegli Lingua</string>
- <string name="wizard_locale_msg">Lasciare la predefinita o cambiare la lingua corrente</string>
- <string name="powered_by">powered by Tor</string>
- <string name="btn_save_settings">Salva impostazioni</string>
- <string name="no_internet_connection_tor">Nessuna connessione ad internet; Tor è in standby...</string>
- <string name="bandwidth_">Larghezza di Banda:</string>
- <string name="down">giù</string>
- <string name="up">su</string>
- <string name="pref_disable_network_title">impedire spegnimento automatico della rete</string>
- <string name="pref_disable_network_summary">Stand-by di Tor quando non c\'è un collegamento a internet disponibile</string>
- <string name="newnym">Sei passato a una nuova identità Tor!</string>
- <string name="menu_verify_browser">Browser</string>
- <string name="menu_use_chatsecure">Usa ChatSecure</string>
- <string name="permission_manage_tor_label">Gestisci Tor</string>
- <string name="permission_manage_tor_description">Abilita questa app per controllare il servizio Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Non sembra che tu abbia Orfox installato. Necessiti di aiuto, o apro semplicemente il browser?</string>
- <string name="install_apps_">Installare applicazioni?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nessuna connettività di rete. Mettendo Tor a riposo...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Connettività di rete buona. Svegliando Tor...</string>
- <string name="updating_settings_in_tor_service">aggiornamento impostazioni nel servizio Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Porta sulla quale Tor offre il proxy SOCKS (default: 9050 o 0 per disabilitare)</string>
- <string name="pref_socks_dialog">Configurazione Porta SOCKS</string>
- <string name="pref_transport_title">Porta TransProxy Tor</string>
- <string name="pref_transport_summary">Porta sulla quale Tor offre il Proxy Trasparente (default: 9040 o 0 per disabilitare)</string>
- <string name="pref_transport_dialog">Configurazione Porta TransProxy</string>
- <string name="pref_dnsport_title">Porte Tor DNS</string>
- <string name="pref_dnsport_summary">Porta sulla quale Tor offre i DNS (default: 5400 o 0 per disabilitare)</string>
- <string name="pref_dnsport_dialog">Configurazione porte DNS</string>
- <string name="pref_torrc_title">Configurazioni personalizzate di Torrc</string>
- <string name="pref_torrc_summary">SOLO ESPERTI: inserisci direttamente configurazioni torrc</string>
- <string name="pref_torrc_dialog">Torrc personalizzate</string>
- <string name="wizard_tips_martus">Mobile Martus - App per la Documentazione dei Diritti Umani Benetech</string>
- <string name="your_tor_public_ips_">Il tuo Tor IP pubblico è:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Perfavore disabilita quest\'app in Android->Impostazioni->Apps se stai avendo problemi con Orbot: </string>
- <string name="app_conflict">Conflitto app</string>
- <string name="pref_transproxy_refresh_title">Auto-Refresh TransProxy</string>
- <string name="pref_transproxy_refresh_summary">Ri-applica regole Transproxy quando cambia lo stato della rete</string>
- <string name="pref_transproxy_flush_title">FORZA RIMOZIONE Transproxy</string>
- <string name="pref_transproxy_flush_summary">Clicca qui per eliminare tutte le regole di rete Transproxy IMMEDIATAMENTE</string>
- <string name="transparent_proxy_rules_flushed_">Regole Proxy Trasparente eliminate!</string>
- <string name="you_do_not_have_root_access_enabled">Non ci sono i permessi di ROOT abilitati</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Potrebbe essere necessario riavviare Orbot per applicare i cambiamenti delle impostazioni.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridge attivati</string>
- <string name="restart_orbot_to_use_this_bridge_">Per favore riavvia Orbot per rendere effettive le modifiche</string>
- <string name="menu_qr">Codici QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se la tua rete cellulare blocca attivamente Tor puoi utilizzare un Bridge per accedere alla rete. Seleziona uno dei tipi di bridge da sopra per attivare i bridge</string>
- <string name="bridge_mode">Modalità Bridge</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Attiva</string>
- <string name="apps_mode">Modalità VPN per le applicazioni</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Puoi configurare tutte le app del tuo dispositivo per connettersi attraverso la rete Tor usando la modalità VPN di Android.\n\n*ATTENZIONE* Questa è una funzione nuova e sperimentale, in alcuni potrebbe non avviarsi in automatico o fermarsi. NON dovrebbe essere usata per l\'anonimato ma solo per bypassare filtri e firewall.</string>
- <string name="send_email">Invia email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Tu poi ricevere un indirizzo bridge via email, web o scansionando un codice QR. Seleziona \'Email\' o \'Web\' per richiedere un indirizzo bridge.\n\nUna volta che hai un indirizzo, copialo & incollalo nell\'opzione \"Bridges\" delle impostazioni di Orbot e riavvialo.</string>
- <string name="install_orweb">Installa Orfox</string>
- <string name="standard_browser">Browser standard</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Solo i Tor Bridges standard funzionano sui dispositivi Intel x86/Atom</string>
- <string name="vpn_default_world">Mondo</string>
-</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
deleted file mode 100644
index e894ce3..0000000
--- a/res/values-iw/strings.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot ×?×?× ×? ×?פ×?×?קצ×?×?ת פר×?קס×? ×?×?× ×?×?ת ×?×?×?פשרת ×?×?פ×?×?קצ×?×?ת ×?×?ר×?ת ×?×?שת×?ש ×?×?×?× ×?×¨× ×? ×?×?×?×?×?. Orbot × ×¢×?רת ×?-Tor ×?×?×? ×?×?צפ×?×? ×?ת תע×?×?רת ×?×?×?× ×?×¨× ×? ש×?×? ×?×?×?ס×?×?ת×? ×?×?×?צע×?ת×? × ×?ת×?×?×? ×?ר×? ×?ספר ×?×?ש×?×?×? ×?ר×?×?×? ×?×¢×?×?×?. Tor ×?×?×? ת×?×?× ×? ×?×?פש×?ת ×?רשת פת×?×?×? ×?×?ס×?×?עת ×?×? ×?×?ת×?×?× ×? ×?×¤× ×? ס×?×?×?×? ×?ס×?×?×?×?×? ש×? ×?×?צע×? × ×?×?×?ר ×?×?עק×? ×?×?ר רשת ×?×?×?× ×?×¨× ×? ×?×?×?×?×?×?×?×? ×¢×? ×?פר×?×?×?ת, ×?×?×?ר×?ת ×?×?×?ש×?ת, פע×?×?×?×?×?ת עסק×?×?ת ×?×?ער×?×?ת ×?×?ס×?×? ×?ש×?×?×?ת.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">×?ת×?×? ×?עצ×?ר ×?ת Tor</string>
- <string name="tor_proxy_service_process">ש×?ר×?ת פר×?קס×? Tor</string>
- <string name="status_starting_up">Orbot ×?ת×?×?×?â?¦</string>
- <string name="status_activated">×?×?×?×?ר ×?רשת Tor</string>
- <string name="status_disabled">Orbot ×?×?×?×?</string>
- <string name="tor_process_starting">×?ת×?×?×? ×?ק×?×? Tor...</string>
- <string name="tor_process_complete">×?×?ש×?×?.</string>
- <string name="tor_process_waiting">×?×?×?×?.</string>
- <string name="not_anonymous_yet">×?×?×?ר×?: ×?תע×?×?ר×? ש×?×? ×?×?× ×? ×?× ×?× ×?×?×?ת ×¢×?×?×?×?! ×?×?קש×? ×?×?×?ר ×?ת ×?×?פ×?×?קצ×?×?ת ש×?×? ×?×? ש×?ת×?פשר ש×?×?×?ש ×?פר×?קס×? HTTP (קר×? 127.0.0.1:8118) ×?×? SOCKS4A ×?×? SOCKS5 (קר×? 127.0.0.1:9050)</string>
- <string name="menu_home">×?×?ת</string>
- <string name="menu_browse">×?פ×?×£</string>
- <string name="menu_settings">×?×?×?ר×?ת</string>
- <string name="menu_log">ר×?ש×?×?</string>
- <string name="menu_info">×¢×?ר×?</string>
- <string name="menu_start">×?ת×?×?</string>
- <string name="menu_stop">עצ×?ר</string>
- <string name="menu_about">×?×?×?×?ת</string>
- <string name="main_layout_download">×?×?ר×?×?</string>
- <string name="main_layout_upload">×?×¢×?×?×?</string>
- <string name="button_help">×¢×?ר×?</string>
- <string name="button_close">ס×?×?ר</string>
- <string name="button_about">×?×?×?×?ת</string>
- <string name="button_clear_log">× ×§×? ר×?ש×?×?</string>
- <string name="menu_verify">×?×?×?ק</string>
- <string name="menu_exit">×?צ×?×?×?</string>
- <string name="menu_scan">סר×?ק BridgeQR</string>
- <string name="menu_share_bridge">שתף BridgeQR</string>
- <string name="press_to_start">-× ×?×?×¢×? ×?ר×?×?×? ×?×?ת×?×?×?-</string>
- <string name="pref_trans_proxy_group">פר×?קס×? שק×?×£ (ש×?רש × ×?רש)</string>
- <string name="pref_trans_proxy_title">פר×?קס×? שק×?×£</string>
- <string name="pref_trans_proxy_summary">×¢×?×?×?×? ×?×?×?×?×?×?×?ת ×¢×? ×?פ×?×?קצ×?×?ת ×?ר×? Tor</string>
- <string name="pref_transparent_all_title">×?×?×? ×?ר×? Tor</string>
- <string name="pref_transparent_all_summary">תע×?×?ר ×?ר×? פר×?קס×? ×¢×?×?ר ×?×? ×?×?פ×?×?קצ×?×?ת ×?ר×? Tor</string>
- <string name="pref_transparent_port_fallback_title">×?פ×?×? פ×?ר×? פר×?קס×?</string>
- <string name="pref_transparent_port_fallback_summary">×?×?×?ר×?: עק×?×£ פ×?ר×?×?×? × ×¤×?צ×?×? (80,443 ×?×?×?\'). *×?שת×?ש רק* ×?×? ×?×?×?×¤× ×?×? \'All\' ×?×? \'App\' ×?×? ×¢×?×?×?×?×?.</string>
- <string name="pref_transparent_port_title">רש×?×?ת פ×?ר×?×?×?</string>
- <string name="pref_transparent_port_summary">רש×?×?ת פ×?ר×?×?×? ×?פר×?קס×?. *×?שת×?ש רק* ×?×? ×?×?×?×¤× ×?×? \'All\' ×?×? \'App\' ×?×? ×¢×?×?×?×?×?.</string>
- <string name="pref_transparent_port_dialog">×?×?×? פ×?ר×?×?×? ×?פר×?קס×?</string>
- <string name="pref_has_root">×?ר×?ש×? ×?×?שת ש×?רש</string>
- <string name="pref_has_root_summary">×?קש ×?×?ש×? ×¢×?×?×?× ×? ×¢×?×?ר ש×?×?×?ש ×?פר×?קס×? שק×?×£</string>
- <string name="status_install_success">ק×?צ×?×? ×?ר×? ×?רצ×? ש×? Tor ×?×?×ª×§× ×? ×?×?צ×?×?×?!</string>
- <string name="status_install_fail">×?ק×?צ×?×? ×?ר×? ×?×?רצ×? ש×? Tor ×?×? × ×?×ª× ×? ×?×?×ª×§× ×?. ×?×?קש×? ×?×?×?ק ×?ת ×?×?×?×? ×?×?×?×?×¢ ×?
-tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">ש×?×?×?ת ×?פ×?×?קצ×?×?</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">×?×?×?×?ת Orbot</string>
- <string name="btn_next">×?×?×?</string>
- <string name="btn_back">×?ק×?×?×?</string>
- <string name="btn_finish">ס×?×?×?</string>
- <string name="btn_okay">×?×?ש×?ר</string>
- <string name="btn_cancel">×?×?×?×?×?</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">פר×?×?×? ×?ס×?×?×?×?×? ש×? Orbot </string>
- <string name="wizard_details_msg">Orbot ×?×?×? ×?פ×?×?קצ×?×?ת ק×?×? פת×?×? ×?×?×?×?×?ת ×?ת Tor, LibEvent ×?-Polipo. ×?×?×? ×?ת×?×?ר ×?רשת Tor ×?×?×?צע×?ת שרת פר×?קס×? HTTP ×?ק×?×?×? (8118) ×?שרת פר×?קס×? SOCKS (פ×?ר×? 9050). Orbot ×?×?×?×?×? ×?× ×?סף ×¢×? ×?רש×?×?ת ר×?×? ×?× ×ª×? ×?ת ×?×? תע×?×?רת ×?×?×?× ×?×¨× ×? ש×? ×?×?×?ש×?ר ×?ר×? Tor ×?×?ר×?רת ×?×?×?×?.</string>
- <string name="wizard_permissions_root">× ×?×ª× ×? ×?רש×?×?</string>
- <string name="wizard_permissions_stock">×?רש×?×?ת Orbot</string>
- <string name="wizard_premissions_msg_root">×?צ×?×?×?! ×?×?×?×?× ×? ×?×? ×?ש ×?×? ×?רש×?×?ת ש×?רש ×?×?×?פשר×?ת ×?ש×?×?×? Orbot. ×?× ×?× ×? × ×©×ª×?ש ×?×?×?×? ×?×?×? ×?×?×?×?×?×?.</string>
- <string name="wizard_permissions_msg_stock">×?×?×?×? ש×?×? ×?×? × ×?רש, Orbot ×?×?×?×?×? ×?×?פ×?×? ×?×?×?×?ת ×?×?×? ×?×?ק ×?×?תר ×?×? ×?×?×?ש×?ר ש×?×? ×?ש ×?×?ש×? ×¢×?×?×?× ×?. תשת×?ש ×?×?פת×?ר ×?×?×?×? ×?×?×? ×?ק×?×? ×?×?×?×?ת ×¢×? ש×? Orbot !</string>
- <string name="wizard_permissions_no_root">×?×? ×?×?×? ×?×? ×?×?ש×? ×¢×?×?×?× ×? ×?×? ×?×?×? ×?×? ×?×?ש×? ×¢×? ×?×? ×?× ×?× ×? ×?×?×?ר×?×?, רק ת×?×?×?×? שתשת×?ש ×?×?פ×?×?קצ×?×?ת ×©× ×?×¢×?×? ×?×¢×?×?×? ×¢×? Orbot.</string>
- <string name="wizard_permissions_consent">×?×?× ×ª×? ×?×?× ×? ×?×¢×?×?×£ ×?×?×?ש×?×? ×?×?×? Superuser</string>
- <string name="wizard_permission_enable_root">×?פשר ×?×?שת ש×?רש ×¢×?×?ר Orbot</string>
- <string name="wizard_configure">×?×?×?ר ×¢×?×?×?×? ×?×?×?צע×?ת Tor</string>
- <string name="wizard_configure_msg">Orbot × ×?×ª× ×ª ×?×? ×?פשר×?ת ×?×?×?×?×? ×?ת ×?×? תע×?×?רת ×?×?פ×?×?קצ×?×?ת ×?ר×? Tor ×?×? ×?×?×?×?ר ×?ת ×?×?פ×?×?קצ×?×?ת ש×?×? ×?× ×¤×¨×?.</string>
- <string name="wizard_configure_all">×?שת×?ש ×?פר×?קס×? ×?×?×? ×?×?פ×?×?קצ×?×?ת ×?ר×? Tor</string>
- <string name="wizard_configure_select_apps">×?×?ר ×?פ×?×?קצ×?×?ת ×?ס×?×?×?×?ת ×¢×?×?ר Tor</string>
- <string name="wizard_tips_tricks">Orbot ×?ת×?פשר ×¢×? ×?×?×? ×?פ×?×?קצ×?×?ת</string>
- <string name="wizard_tips_msg">×?×?פ×?×?קצ×?×?ת ×?ת×?ת פ×?ת×?×? ×?×¢×?×?×?×? ×¢×? Orbot. ×?×?×¥ ×¢×? ×?×? ×?פת×?ר ×?×?×ª×§× ×? ×?×?×?×?×?ת, ×?×? ש×?ת×? ×?×?×?×? ×?×?צ×?×? ×?×?ת×? ×?×?ר ×?×? ×? Google Play, ×?×?תר GuardianProject.info ×?×?
-×?ר×? F-Droid.org</string>
- <string name="wizard_tips_otrchat">ChatSecure - ת×?×?× ×ª ×?סר×?×? ×?×?×?×?×?×? ×?×?×?×?×?×?ת ×?×?× ×?ר×?×?×?×?</string>
- <string name="wizard_tips_proxy">×?×?×?ר×?ת פר×?קס×? - ×?×?×? ×?×?×? ×?×?×?×?×?ר ×?פ×?×?קצ×?×?ת ×?×¢×?×?×? ×¢×? Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo ×?פ×?×?קצ×?×?ת ×?× ×?×¢ ×?×?פ×?ש</string>
- <string name="wizard_tips_twitter">ק×?×¢ פר×?קס×? Twitter ×?×?×?ר×? \"localhost\" ×?×?פ×?ר×? 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - ×?ער×? ש×?×¢×?ר×?×? ×?×¢×?ת×?× ×?×?×? ×¢×? ש×?×?×?ש ×?-Tor ×?×?×?× ×? ×¢×? ×¢×?×?×?ת×?.</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">×?×?×?ר×?ת פר×?קס×?</string>
- <string name="wizard_proxy_help_msg">×?×? ×?פ×?×?קצת ×?×?× ×?ר×?×?×?×? ש×?ת×? ×?שת×?ש ת×?×?×?ת ×?פר×?קס×? ×?×?×?סס HTTP ×?×? SOCKS, ת×?×?×? ×?×?×?×?×?ר ×?×?ת×? ×?×¢×?×?×? ×¢×? Orbot ת×?ת Tor. \n\n\n ×?×?×?×?ר×?ת ×?×?: ש×? ×?שרת ×?×?×? 127.0.0.1 ×?×? \"localhost\". ×¢×?×?ר HTTP, ×?פ×?ר×? ×?×?×? 8118. ×¢×?×?ר SOCKS, ×?פ×?ר×? ×?×?×? 9050. ×¢×?×?×? ×?×?שת×?ש ×?SOCKS4A ×?×? SOCKS5 ×?×? ×?פשר.\n \n\n\n ת×?×?×? ×?×?×?×?×? ×¢×?×? ×?×?×?×?ת פר×?קס×? ×?×?× ×?ר×?×?×?×? ת×?ת ×¢×?×?×? ×?ש×?×?×?ת ×?× ×¤×?צ×?ת ש×?× ×? ×?×?ת×?×?ת: http://tinyurl.com/proxyandroid </string>
- <string name="wizard_final">Orbot ×?×?×?×?!</string>
- <string name="wizard_final_msg">×?×?×?×?×?× ×? ×?× ×©×?×? ×?ר×?×?×? ×?×¢×?×?×? ×?שת×?ש×?×? ×?Tor ×?ס×?×?×?ת ר×?×?ת.\n\n ×¢×?ת×?× ×?×?×? ×?×?×?×?×?ר×?×?, פע×?×?×? ×?×?×?×?×?ת ×?×?×?, ש×?×?ר×?×?, ×?×?×?×?×?×?, ת×?×?×?×?×?×?, ×?×?ר×?×? ×?×?ש×?ר×?×? ×?×?×?×?×?×?×? ×?×?×? ×?×?ר×?×?×? פש×?×?×?×?... ×?×¢×?ש×?×? ×?×? ×?ת×?!</string>
- <string name="wizard_exit_at_first_screen_toast">×?× ×? ×?×?×?ר ×?ת Orbot ×?×¤× ×? שת×?×?×? ×?×?ת×?×?×? ×?×?שת×?ש ×?×?!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">×?×?ר ×?×? ×?×?×?×?×? ×?ת ×?פ×?פ×? ×?רשת ש×?×? ×?×?×?×? https://check.torproject.org ×?×?×? ×?ר×?×?ת ×?×? Orbot ×?×?×?×?ר×? ×?ר×?×?×? ×?×?×? ×?×? ×?ת×? ×?×?×?×?ר ×?רשת Tor.</string>
- <string name="pref_hs_group">×?×?×?ס×?×? ש×?ר×?ת×?×? × ×¡×ª×¨×?×?</string>
- <string name="pref_general_group">×?×?×?×?</string>
- <string name="pref_start_boot_title">×?ת×?×? ×?ת Orbot ×?×?×?×?קת ×?×?×?ש×?ר</string>
- <string name="pref_start_boot_summary">×?ת×?×? ×?ת Orbot ×?×?ת×?×?ר ×?רשת Tor ×?×?×?×?×?×?×?ת ×?×?שר ×?×?×?ש×?ר × ×?×?ק</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">×?×?×?ר×?</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">×?רש×?×?ת</string>
- <string name="wizard_permissions_root_msg1">×?ת×? ×?×?×?×? ×?×?×¢× ×?ק ×?×?פ×?×?קצ×?×? Orbot ×?×?שת \'Superuser\' ×?×?×? ×?×?פשר ×?×?פ×?×?× ×?×? ×?תק×?×?×?×? ×?×?×? ×?×?ש×?, פר×?קס×? שק×?×£.</string>
- <string name="wizard_permissions_root_msg2">×?×? ×?ת×? ×?×? ר×?צ×? ×?עש×?ת ×?ת ×?×?, ×?× ×? ×?קפ×? ×?×?שת×?ש ×?×?פ×?×?קצ×?×?ת ש×?×?×¢×?×? ×?×¢×?×?×? ×¢×? Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-×?×?ש×?×?×?×? ×?×?פע×?×?×?</string>
- <string name="wizard_tips_gibberbot">ChatSecure: ×?פ×?×?קצ×?×?ת ×?סר×?×? ×¢×? ×?×¦×¤× ×ª Off-the-Record</string>
- <string name="wizard_tips_play">×?צ×? ×?ת ×?×? ×?פ×?×?צ×?×?ת Guardian Project ×?צ×? Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">פר×?קס×? שק×?×£</string>
- <string name="wizard_transproxy_msg">×?×? ×?×?פשר ×?×?פ×?×?קצ×?×?ת ש×?×? ×?ר×?×¥ ×?×?×?פ×? ×?×?×?×?×?×?×? ×?ר×? רשת Tor ×?×?×? ×?×? תצ×?ר×?.</string>
- <string name="wizard_transproxy_hint">(ס×?×? ת×?×?×? ×?×? ×?×? ×?×?×? ×?×? ×?×?ש×? ×¢×? ×?×? ×?× ×?× ×? ×?×?×?ר×?×?)</string>
- <string name="wizard_transproxy_none">×?×?×?×?</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">×?×?פשר ×¢×?×?×?×? ×¢×? פר×?קס×? שק×?×£ ×¢×?×?ר רשת ×?×?×?×?×?×?ת ×?×?×?ש×?ר×? USB Tethered (×?×?רש ×?ת×?×?×? ×?×?×?ש)</string>
- <string name="button_grant_superuser">×?ר×?ש ×?×?ש×?ר Superuser</string>
- <string name="pref_select_apps">×?×?ר ×?פ×?קצ×?×?ת</string>
- <string name="pref_select_apps_summary">×?×?ר ×?פ×?קצ×?×?ת</string>
- <string name="pref_node_configuration">×?×?×?ר×?ת Node</string>
- <string name="pref_node_configuration_summary">ק×?×?×?×?ת ×?×?×?ר×?ת ×?תק×?×?×?ת ש×?×?×?×?×?ת ×?×?פ×?×?ת ×?ת ×?×?× ×?× ×?×?×?×?ת ש×?×?</string>
- <string name="pref_entrance_node">Entrance Nodes</string>
- <string name="pref_entrance_node_summary">×?×?×?×¢×?ת ×?צ×?×¢, ×?×?× ×?×?×?×?, ×?רצ×?ת ×?×?ת×?×?×?ת ×¢×?×?ר ×?×?×¢×?ר ×?ר×?ש×?×?</string>
- <string name="pref_entrance_node_dialog">×?×?× ×¡ Entrance Nodes</string>
- <string name="button_proxy_all">×?×¢×?ר ×?×?×? ×?ר×? פר×?קס×?</string>
- <string name="button_proxy_none">×?×? תשת×?ש ×?פר×?קס×?</string>
- <string name="button_invert_selection">×?פ×?×? ×?×?×?ר×?</string>
- <string name="pref_proxy_type_title">Outbound Proxy Type</string>
- <string name="pref_proxy_type_summary">פר×?×?×?ק×?×? ש×?×?×?ש ×?שרת פר×?קס×?: HTTP, HTTPS, Socks4,Socks5</string>
- <string name="pref_proxy_type_dialog">ס×?×? ×?פר×?קס×?</string>
- <string name="pref_proxy_host_title">×?×?ר×? ש×? Outbound Proxy</string>
- <string name="pref_proxy_host_summary">ש×? ×?×?ר×? שרת פר×?קס×?</string>
- <string name="pref_proxy_host_dialog">×?×?× ×¡ ×?×?ר×? פר×?קס×?</string>
- <string name="pref_proxy_port_title">פ×?ר×? ש×? Outbound Proxy</string>
- <string name="pref_proxy_port_summary">פ×?ר×? שרת פר×?קס×?</string>
- <string name="pref_proxy_port_dialog">×?×?× ×¡ פ×?ר×? ש×? פר×?קס×?</string>
- <string name="pref_proxy_username_title">ש×? ×?שת×?ש ש×? Outbound Proxy</string>
- <string name="pref_proxy_username_summary">ש×? ×?שת×?ש פר×?קס×? (רש×?ת)</string>
- <string name="pref_proxy_username_dialog">×?×?×? ש×? ×?שת×?ש פר×?קס×?</string>
- <string name="pref_proxy_password_title">ס×?ס×?×? ש×? Outbound Proxy</string>
- <string name="pref_proxy_password_summary">ס×?ס×?ת פר×?קס×? (רש×?ת)</string>
- <string name="pref_proxy_password_dialog">×?×?×? ס×?ס×?ת פר×?קס×?</string>
- <string name="status">ס×?×?×?ס</string>
- <string name="setting_up_full_transparent_proxying_">×?×?× ×? ש×? ×?פר×?קס×? ×?שק×?×£...</string>
- <string name="setting_up_app_based_transparent_proxying_">×?×?× ×? ש×? ×?פר×?קס×? ×?שק×?×£ ×?×?×?סס ×?פ×?×?קצ×?×?ת...</string>
- <string name="transparent_proxying_enabled">פר×?קס×? שק×?×£ ×?×?×?פשר</string>
- <string name="transproxy_enabled_for_tethering_">פר×?קס×? שק×?×£ ×?×?×?פשר ×? Tathering!</string>
- <string name="warning_error_starting_transparent_proxying_">×?×?×?ר×?: ש×?×?×?×? ×?ת×?×?×?×? ×?ת ×?פר×?קס×? ×?שק×?×£!</string>
- <string name="transproxy_rules_cleared">×?×?×?×? TransProxy ×?×?×?ר×?</string>
- <string name="couldn_t_start_tor_process_">×?×?×? ×?פשר×?ת ×?×?ת×?×?×? ת×?×?×?×? Tor:</string>
- <string name="privoxy_is_running_on_port_">Polipo רץ ×¢×? פ×?ר×?:</string>
- <string name="setting_up_port_based_transparent_proxying_">×?×?× ×? ש×? ×?פר×?קס×? ×?שק×?×£ ×?×?×?סס פ×?ר×?...</string>
- <string name="bridge_error">ש×?×?×?ת ×?שר</string>
- <string name="error">ש×?×?×?×?</string>
- <string name="exit_nodes">צ×?ת×? ×?צ×?×?×?</string>
- <string name="enter_exit_nodes">×?×?×? צ×?ת×? ×?צ×?×?×?</string>
- <string name="exclude_nodes">צ×?ת×?×? ×?×?צ×?×?×?</string>
- <string name="enter_exclude_nodes">×?×?×? צ×?ת×?×? ×?×?צ×?×?×?</string>
- <string name="strict_nodes">צ×?ת×?×? קפ×?× ×?×?</string>
- <string name="use_only_these_specified_nodes">×?שת×?ש *רק* ×?צ×?ת×?×? ×?צ×?×?× ×?×? ×?×?×?</string>
- <string name="bridges">×?שר×?×?</string>
- <string name="use_bridges">×?שת×?ש ×?×?שר×?×?</string>
- <string name="bridges_obfuscated">×?שר×?×? ×?×¢×?רפ×?×?×?</string>
- <string name="ip_address_and_port_of_bridges">×?ת×?×?ת ×?-IP ×?×?צ×?×?×? ש×? ×?×?שר×?×?</string>
- <string name="enter_bridge_addresses">×?×?× ×¡ ×?ת×?×?×?ת ×?שר</string>
- <string name="relays">×?×?סר×?×?</string>
- <string name="relaying">×?×?ס×?ר</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">×?פשר ×?×?×?ש×?ר ש×?×? ×?×?×?×?ת ת×?× ×ª ×?×?סר ש×?×?× × ×? ×?צ×?×?×?</string>
- <string name="relay_port">פ×?ר×? ×?×?×?סר</string>
- <string name="listening_port_for_your_tor_relay">פ×?ר×? ×?×?×?×?×? ×¢×?×?ר Tor relay</string>
- <string name="enter_or_port"> ×?×?× ×¡ ×?צ×?×?ת OR</string>
- <string name="relay_nickname">×?×?× ×?×? ×?×?×?סר</string>
- <string name="the_nickname_for_your_tor_relay">×?×?×?× ×?×? ×?×?×?סר Tor ש×?×?</string>
- <string name="enter_a_custom_relay_nickname">×?×?×? ×?×?× ×?×? ×¢×?×?ר ×?×?סר</string>
- <string name="reachable_addresses">×?ת×?×?×?ת ×?×?×?ש×? ×?×?</string>
- <string name="reachable_ports">פ×?ר×?×?×? ×?×?×?ש×? ×?×?</string>
- <string name="enter_ports">×?×?×? פ×?ר×?×?×?</string>
- <string name="enable_hidden_services">×?×?ס×?×? ש×?ר×?ת×?×? × ×¡×ª×¨×?×?</string>
- <string name="enter_localhost_ports_for_hidden_services">×?×?×? פ×?ר×?×?×? ש×? localhost ×¢×?×?ר ש×?ר×?ת×?×? × ×¡×ª×¨×?×?</string>
- <string name="hidden_service_ports">פ×?ר×? ×?ש×?ר×?ת×?×? ×?× ×¡×ª×¨×?×?</string>
- <string name="project_home">×?תר×? ×?פר×?×?ק×?:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">×?רש×?×?×? ש×? Tor</string>
- <string name="https_torproject_org">https://torproject.org/</string>
- <string name="third_party_software">ת×?×?× ×?-צ×?-×?׳: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="found_existing_tor_process">× ×?צ×? ת×?×?×?×? Tor ק×?×?×?â?¦</string>
- <string name="something_bad_happened">×?ש×?×? רע ×?תר×?ש. ×?×?×?ק ×?ת ×?×?×?×?×?</string>
- <string name="hidden_service_on">ש×?ר×?ת × ×¡×ª×¨ ×?:</string>
- <string name="unable_to_read_hidden_service_name">×?×? ×?ס×?×?×? ×?קר×?×? ש×? ש×?ר×?ת × ×¡×ª×¨</string>
- <string name="unable_to_start_tor">×?×? ×?ס×?×?×? ×?×?ת×?×?×? ×?ת Tor:</string>
- <string name="unable_to_reset_tor">×?ת×?×? ×?ת ×?×?×?ש×?ר ש×?×?, ×?×?×? ×?פשר×?ת ×?×?פע×?×? ×?×?×?ש ×?ת Tor!</string>
- <string name="pref_use_sys_iptables_title">×?שת×?ש ×?×?ר×?ר×?ת ×?×?×?×?×? ש×? iptables</string>
- <string name="pref_use_persistent_notifications">×?ש×?×?ר ת×?×?×? ×?ת ×?×?×?ק×?×? ×?סר×?×? ×?×?×?×? ×?ש×?×?ר×?×?×? ×?×?×?×?ר</string>
- <string name="notification_using_bridges">×?שר×?×? ×?×?×?פשר×?×?!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">שפ×?</string>
- <string name="set_locale_summary">×?×?ר ×?ת ×?×?ק×?×?×?×?ת ×?×?שפ×? ש×? Orbot</string>
- <string name="wizard_locale_title">×?×?ר שפ×?</string>
- <string name="wizard_locale_msg">×?ש×?ר ×?ר×?רת ×?×?×?×? ×?×? ×?×?×?×£ ×?שפ×? ×?× ×?×?×?×?ת</string>
- <string name="powered_by">×?×?פע×? ×?×?×?צע×?ת Tor</string>
- <string name="btn_save_settings">ש×?×?רת ×?×?×?ר×?ת</string>
- <string name="no_internet_connection_tor">×?×?×? ×?×?×?×?ר ×?×?×?× ×?×¨× ×?; ת×?ר ×?×?ת×?×?...</string>
- <string name="bandwidth_">ר×?×?×? פס:</string>
- <string name="down">×?×?×?</string>
- <string name="up">×?×¢×?×?</string>
- <string name="pref_disable_network_summary">×?×?×? ×?ת Tor ×?×?שר ×?×?×? ×?×?×?×?ר ×?×?×?× ×?×¨× ×?</string>
- <string name="newnym">×?×?×?פת ×?×? ×?×?×?ת Tor ×?×?ש×?!</string>
- <string name="menu_use_chatsecure">×?פע×? ×?ת ChatSecure</string>
- <string name="permission_manage_tor_label">× ×?×? Tor</string>
- <string name="permission_manage_tor_description">×?פשר ×?ת ×?פ×?×?קצ×?×? ×?×? ×?×?×? ×?ש×?×?×? ×?ש×?ר×?ת Tor</string>
- <string name="install_apps_">×?×?תק×?×? ×?פ×?×?קצ×?×??</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">×?×?×? ×?×?×?×?ר ×?רשת. ×?×?×?×? ×?ת Tor....</string>
- <string name="network_connectivity_is_good_waking_tor_up_">×?×?×?×?×?ר ×¢×?×?×? ×?×?×?. ×?×¢×?ר ×?ת Tor...</string>
- <string name="updating_settings_in_tor_service">×?×¢×?×?×? ×?×?×?ר×?ת Tor ×?×?×?ש×?ר</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_dialog">×?×?×?ר×?ת SOCKS Port </string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_dialog">×?×?×?רת ×?פ×?ר×? ש×? TransProxy</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="your_tor_public_ips_">×?IPs ×?×?×?צ×?× ×?×?×? ש×?×? ×¢×? Tor:</string>
- <string name="you_do_not_have_root_access_enabled">×?×?×? ×?×? ×?×?שת ר×?×? ×?×?×?פשרת</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">תצ×?ר×? ×?×?×?×?ת ×?×?×?פע×?×? ×?ת Orbot ×¢×? ×?× ×ª ×?×?×?×?×? ×?ת ×?ש×?× ×?×? ×?×?×?×?ר×?ת.</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="menu_qr">ק×?×? QR</string>
- <string name="get_bridges_email">×?×?×?\"×?</string>
- <string name="get_bridges_web">×?תר</string>
- <string name="activate">×?פע×?</string>
- <string name="send_email">ש×?×? ×?×?×?\"×?</string>
- <string name="standard_browser">×?פ×?פ×? ר×?×?×?</string>
-</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
deleted file mode 100644
index c666f49..0000000
--- a/res/values-ja/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbotã?¯ä»?ã?®ã?¢ã??ã?ªã??ã?¤ã?³ã?¿ã?¼ã??ã??ã??ã??ã??ã??å®?å?¨ã?«ä½¿ã??ã??ã?¨ã??å?¯è?½ã?«ã??ã??ã??ã?ªã?¼ã?®ã??ã?ã?ã?·ã?¢ã??ã?ªã?§ã??ã??Orbotã?§ã?¯ã??Torã??ç?¨ã??ã?¦ã??ã?ªã??ã?®ç«¯æ?«ã?®ã??ã?©ã??ã?£ã??ã?¯ã??æ??å?·å??ã??ã??ä¸?ç??ä¸ã?®ã?³ã?³ã??ã?¥ã?¼ã?¿ã?¼ã??ä¸ç¶?ã??ã??ã??ã?¨ã?§ã??ã??ã?®ã??ã?©ã??ã?£ã??ã?¯ã??é? ã??ã?¾ã??ã??Torã?¯ã??ã?ªã?¼ã?®ã?½ã??ã??ã?¦ã?§ã?¢ã?¨ã?ªã?¼ã??ã?³ã?ªã??ã??ã??ã?¯ã?¼ã?¯ã?§ã??ã??ã??ã?¦ã?¼ã?¶ã?¼ã?®è?ªç?±ã?¨ã??ã?©ã?¤ã??ã?·ã?¼ã??è??ã??ã??ç?£è¦?æ´»å??ã??ã??æ©?å¯?ã?®ã??ã?¸ã??ã?¹æ´»å??ã??å?½å®¶ã?«ã??ã??ã??ã?©ã??ã?£ã??ã?¯å??æ??ã??ã??身ã??å®?ã??ã??ã?¨ã??å?©ã??ã?¦ã??ã??ã?¾ã??ã??</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Torã??èµ·å??ã?»å??æ¢ã??ã??</string>
- <string name="tor_proxy_service_process">Torã??ã?ã?¯ã?·ã?µã?¼ã??ã?¹</string>
- <string name="status_starting_up">Orbotã??é??å§?ã??ã??ã?¦ã??ã?¾ã??...</string>
- <string name="status_activated">Torã??ã??ã??ã?¯ã?¼ã?¯ã?«æ?¥ç¶?ã??ã?¦ã??ã?¾ã??</string>
- <string name="status_disabled">\"Orbotã??解é?¤ã??ã??ã?¾ã??ã??</string>
- <string name="status_shutting_down">TorServiceã??çµ?äº?ã??ã?¦ã??ã?¾ã??</string>
- <string name="tor_process_starting">Torã?¯ã?©ã?¤ã?¨ã?³ã??ã??é??å§?ã??ã?¦ã??ã?¾ã??...</string>
- <string name="tor_process_complete">��</string>
- <string name="tor_process_waiting">ã??å¾?ã?¡ã??ã? ã??ã??</string>
- <string name="not_anonymous_yet">è¦å??:ã??ã?®é??ä¿¡ã?¯ã?¾ã? å?¿å??å??ã??ã??ã?¦ã??ã?¾ã??ã??ï¼?ã??HTTP proxy 127.0.0.1:8118ã??ã??ã?? SOCKS4A ã?¾ã??ã?¯ SOCKS5 proxy 127.0.0.1:9050ã??ã??å?©ç?¨ã??ã??ã??ã??ã?«ã?¢ã??ã?ªã?±ã?¼ã?·ã?§ã?³å?´ã?§è¨å®?ã??ã?¦ã??ã? ã??ã??</string>
- <string name="menu_home">ã??ã?¼ã? </string>
- <string name="menu_browse">�覧</string>
- <string name="menu_settings">è¨å®?</string>
- <string name="menu_log">å±¥æ´</string>
- <string name="menu_info">ã??ã?«ã??</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">ã?¹ã?¿ã?¼ã??</string>
- <string name="menu_stop">å??æ¢</string>
- <string name="menu_about">æ??å ±</string>
- <string name="menu_promo_apps">ã?¢ã??ã?ªã??å?¥æ??â?¦</string>
- <string name="main_layout_download">ã??ã?¦ã?³ã?ã?¼ã??</string>
- <string name="main_layout_upload">ã?¢ã??ã??ã?ã?¼ã??</string>
- <string name="button_help">ã??ã?«ã??</string>
- <string name="button_close">é??ã??ã??</string>
- <string name="button_about">ã?«ã?¤ã??ã?¦</string>
- <string name="button_clear_log">ã?ã?°ã??å??é?¤ã??ã??</string>
- <string name="menu_verify">確�</string>
- <string name="menu_exit">��</string>
- <string name="menu_scan">ã??ã?ªã??ã?¸QRã??ã?¹ã?ã?£ã?³</string>
- <string name="menu_share_bridge">ã??ã?ªã??ã?¸QRã??å?±æ??</string>
- <string name="press_to_start">- é?·æ?¼ã??ã??ã?¦èµ·å?? -</string>
- <string name="pref_trans_proxy_group">é??é??ã??ã?ã?ã?· (è¦?root)</string>
- <string name="pref_trans_proxy_title">é??é??ã??ã?ã?ã?·</string>
- <string name="pref_trans_proxy_summary">ã?¢ã??ã?ªã?®è?ªå??Torå??ä¸</string>
- <string name="pref_transparent_all_title">å?¨ã?¦ã??Torå??</string>
- <string name="pref_transparent_all_summary">å?¨ã?¦ã?®ã?¢ã??ã?ªã??Torçµ?ç?±ã?§ä½¿ã??</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
- <string name="pref_transparent_port_fallback_summary">è¦å??:é??常ã?®ã??ã?¼ã??(80,443ç?)ã??è¿?å??ã??ã??å?¨ã?¦ã??ã??ã??æ??å®?ã?¢ã??ã?ªã??ã?¢ã?¼ã??ã??å??ä½?ã??ã?ªã??å ´å??ã?«ã?®ã?¿ä½¿ç?¨ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="pref_transparent_port_title">ã??ã?¼ã??ä¸?覧</string>
- <string name="pref_transparent_port_summary">ã??ã?ã?ã?·ã??é??ã??ã??ã?¼ã??ã??*è¦å??*ã??ã??å?¨ã?¦ã??ã??ã??æ??å®?ã?¢ã??ã?ªã??ã??å??ä½?ã??ã?ªã??å ´å??ã?«ã?®ã?¿ä½¿ç?¨ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="pref_transparent_port_dialog">ã??ã?ã?ã?·ã?®ã??ã?¼ã??ç?ªå?·ã??å?¥å??</string>
- <string name="pref_has_root">ã?«ã?¼ã??ã?¢ã?¯ã?»ã?¹ã?®è¨±å?¯ã??è¦?æ±?ã??ã?¾ã??</string>
- <string name="pref_has_root_summary">é??é??ã??ã?ã?ã?·ã?®ã??ã??ã?«root権é??ã??å¿?è¦?ã?§ã??</string>
- <string name="status_install_success">Torã??ã?¤ã??ã?ªã?¤ã?³ã?¹ã??ã?¼ã?«ã??æ??å??ã??ã?¾ã??ã??</string>
- <string name="status_install_fail">Torã??ã?¤ã??ã?ªã??ã?¡ã?¤ã?«ã??ã?¤ã?³ã?¹ã??ã?¼ã?«ã?§ã??ã?¾ã??ã??ã?§ã??ã??ã??ã?ã?°ã??調ã?¹ã?¦ã??é??ç?¥ã??tor-assistants@xxxxxxxxxxxxxxã?«é??ä¿¡ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="title_error">ã?¢ã??ã?ªã?±ã?¼ã?·ã?§ã?³ã?¨ã?©ã?¼</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orbotã?«ã?¤ã??ã?¦</string>
- <string name="btn_next">次</string>
- <string name="btn_back">æ?»ã??</string>
- <string name="btn_finish">��</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">ã?ã?£ã?³ã?»ã?«</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbot詳細</string>
- <string name="wizard_details_msg">Orbot ã?¯Torã??LibEventã??Privoxyã??å?«ã??ã?ªã?¼ã??ã?³ã?½ã?¼ã?¹ ã?¢ã??ã?ªã?±ã?¼ã?·ã?§ã?³ã?§ã??ã??ã?ã?¼ã?«ã?«ã?®HTTPã??ã?ã?ã?· (8118) ã?¨SOCKSã??ã?ã?ã?· (9050) ã??æ??ä¾?ã??ã?¦Toræ?¥ç¶?ã??ã?¾ã??ã??rootå??ã??ã??ã??端æ?«ã?§ã?¯ã??Orbotã?¯å?¨ã?¦ã?®ã?¤ã?³ã?¿ã?¼ã??ã??ã??é??ä¿¡ã??Torã??é??ã??ã?¦é??ä¿¡ã??ã??ã??ã?¨ã??ã?§ã??ã?¾ã??ã??</string>
- <string name="wizard_permissions_root">権é??ã??å??å¾?å®?äº?</string>
- <string name="wizard_permissions_stock">Orbotã?®æ¨©é??</string>
- <string name="wizard_premissions_msg_root">Orbotã??root権é??ã??å??å¾?ã??ã??ã??ã?¨ã??確èª?ã??ã?¾ã??ã??ã??å?¨ã?¦ã?®æ©?è?½ã??å?©ç?¨ã?§ã??ã?¾ã??ã??</string>
- <string name="wizard_permissions_msg_stock">Orbotã?¯rootå??ã??ã??ã??端æ?«ã?§ã?¯å?¨ã?¦ã?®æ©?è?½ã??æ´»ç?¨ã?§ã??ã?¾ã??ã??ä¸?ã?®ã??ã?¿ã?³ã??æ?¼ã??ã?¦Orbotã?«ç®¡ç??è??権é??ã??ä¸?ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="wizard_permissions_no_root">rootå??ã??ã?¦ã??ã?ªã??ã?£ã??ã??ã??ã??ã??ã??ã??rootå??ã??ä½?ã?®ã??ã?¨ã? ã??ã??ã??ã??ã?ªã??æ?¹ã?¯ã??Orbotä¸?ã?§å??ä½?確èª?ã??å??ã??ã?¦ã??ã??ã?¢ã??ã?ªã? ã??ã??使ç?¨ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="wizard_permissions_consent">Superuserã??å?©ç?¨ã??ã??ã?«ç¶?è¡?</string>
- <string name="wizard_permission_enable_root">Orbotã?«root権é??ã??ä¸?ã??ã??</string>
- <string name="wizard_configure">Torã??ã?½ã??ã??ã?¦ã?§ã?¢ã?«ä½¿ç?¨ã??ã??è¨å®?</string>
- <string name="wizard_configure_msg">Orbotã?§ã?¯å?¨ã?¦ã?®ã?¢ã??ã?ªã?«Torã??ã?ã?ã?·ã??é??ã??ã??ã??Torã?¢ã??ã?ªã??使ã??å??ã??ã?®ã?¢ã??ã?ªã??æ??å®?ã?§ã??ã?¾ã??ã??</string>
- <string name="wizard_configure_all">å?¨ã?¦ã?®ã?¢ã??ã?ªã?«Torã??ã?ã?ã?·ã??é??ã??</string>
- <string name="wizard_configure_select_apps">æ??å®?ã??ã??ã?¢ã??ã?ªã? ã??ã?«Torã??ã?ã?ã?·ã??é??ã??</string>
- <string name="wizard_tips_tricks">Orbotã??æ??å?¹å??ã??ã??ã??ã?¢ã??ã?ª</string>
- <string name="wizard_tips_msg">以ä¸?ã?®ã?¢ã??ã?ªã?¯Orbotç?¨ã?«ä½?ã??ã??ã?¦ã??ã?¾ã??ã??ã??ã??ã??ã??ã?®ã??ã?¿ã?³ã??æ?¼ã??ã?¨ä»?ã??ã??ã?¤ã?³ã?¹ã??ã?¼ã?«ã?§ã??ã?¾ã??ã??Google Playã??ã??ã??å??ã??ã??ã?®ã??æ?¢ã??ã?¾ã??ã??</string>
- <string name="wizard_tips_otrchat">ChatSecure - Android ç?¨ã?®ã?»ã?ã?¥ã?¢ã?ªã?¤ã?³ã?¹ã?¿ã?³ã??ã?¡ã??ã?»ã?¼ã?¸ã?¯ã?©ã?¤ã?¢ã?³ã??</string>
- <string name="wizard_tips_proxy">Proxy Settings - Orbotã?§ã?¢ã??ã?ªã??å??ã??ã??ã??ã??ã?®æ??é ?æ?¸</string>
- <string name="wizard_tips_duckgo">DuckDuckGo æ¤?ç´¢ã?¨ã?³ã?¸ã?³ã?¢ã??ã?ª</string>
- <string name="wizard_tips_twitter">Twitter proxyã??ã??localhostã??ã?¨8118ç?ªã??ã?¼ã??ã?«å??ã??ã??ã??</string>
- <string name="wizard_tips_story_maker">StoryMaker - ã?¹ã??ã?¼ã?ªã?¼ã??ä½?æ??ã??ã?¦ã??ã?»ã?ã?¥ã?ªã??ã?£ã?®ã??ã??Torã?§æ®?ã??ã?¾ã??!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">ã??ã?ã?ã?·è¨å®?</string>
- <string name="wizard_proxy_help_msg">Androidã?¢ã??ã?ªã??HTTPã??SOCKSã??ã?ã?ã?·ã??å?©ç?¨ã?§ã??ã??å ´å??ã??Orbotã??使ã?£ã?¦Toræ?¥ç¶?ã??ã??ã??ã??ã?¨ã??å?¯è?½ã?§ã??ã??\n\n\n ã??ã?¹ã??è¨å®?ã?¯127.0.0.1ã?¾ã??ã?¯localhostã?§ã??ã??HTTPã?§ã?¯ä½¿ç?¨ã??ã?¼ã??ã?¯8118ã?§ã??ã??SOCKSã?§ã?¯9050ã?§ã??ã??å?¯è?½ã?§ã??ã??ã?°SOCKS4Aã??SOCKS5ã?®å?©ç?¨ã??æ?¨å¥¨ã??ã?¾ã??ã??\n \n\n\n Androidä¸?ã?®ã??ã?ã?ã?·ã?«ã?¤ã??ã?¦å¦ã?³ã??ã??å ´å??ã?¯ http://tinyurl.com/proxyandroid ã?®FAQã??å??ç?§ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="wizard_final">Orbotã?®æº?å??ã??å®?äº?ã??ã?¾ã??ã??</string>
- <string name="wizard_final_msg">ä¸?ç??ä¸ã?§æ?°ç?¾ä¸?人ã??æ§?ã??ã?ªç??ç?±ã?§Torã??å?©ç?¨ã??ã?¦ã??ã?¾ã??ã??\n\nã?¸ã?£ã?¼ã??ã?ªã?¹ã??ã??ã??ã?ã?¬ã?¼ã??人権å?£ä½?ã??æ³?ç??æ©?é?¢ã??è»?é??ã??ä¼?æ¥ã??ç?¬è£?å?½å®¶ã?®å¸?æ°?ã??æ?®é??ã?®å¸?æ°?ã??â?¦ ã??ã??ã?¦ã??ã?ªã??ã??å??ã??ã??ã??ã?«å?©ç?¨ã??ã??ã??ã?¨ã??ã?§ã??ã?¾ã??!</string>
- <string name="wizard_exit_at_first_screen_toast">使ç?¨ã??é??å§?ã??ã??å??ã?«Orbotã??è¨å®?ã??ã?¦ã??ã? ã??ã??!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Torã??ã??ã??ã?¯ã?¼ã?¯ã?«æ£å¸¸ã?«æ?¥ç¶?ã??ã?¾ã??ã?? - ã??ã??ã??ã??使ã??ã?®ç«¯æ?«ã??å®?å?¨ã? ã?¨ã?¯é??ã??ã?¾ã??ã??ã??ã??ã??ã?©ã?¦ã?¶ã??ã??ã?¿ã?³ã??使ç?¨ã??ã?¦æ?¥ç¶?ã?®ã??ã?¹ã??ã??ã?§ã??ã?¾ã??ã?? \n\nã??ã??ã?«è©³ç´°ã?¯https://guardianproject.info/apps/orbot ã??å??ç?§ã??ã??ã??ã??help@xxxxxxxxxxxxxxxxxxxx ã?«ã?¡ã?¼ã?«ã??é??ä¿¡ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="tor_check">ã??ã?©ã?¦ã?¶ã??é??ã??ã?¦https://check.torproject.org ã?«Toræ?¥ç¶?ã??ã??Orbotã?®è¨å®?ã??æ??å??ã??ã??ã??ã??試ã??ã?¾ã??ã??</string>
- <string name="pref_hs_group">Hidden Services</string>
- <string name="pref_general_group">��</string>
- <string name="pref_start_boot_title">èµ·å??æ??ã?«Orbotã??å®?è¡?ã??ã??</string>
- <string name="pref_start_boot_summary">Android端æ?«ã?®èµ·å??æ??ã?«Orbotã??è?ªå??å®?è¡?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Androidã?§ã??Orbotã?§Torã??使ã??ã?¾ã??!\n\nTorã?¯ã??ã?³ã?³ã??ã?³ã??ã??ã?£ã?«ã?¿ã?ªã?³ã?°ã??ã??ã?©ã??ã?£ã??ã?¯å??æ??ã??ã??ã??ã?¦ã??ã?©ã?¤ã??ã?·ã?¼ã??æ©?å¯?æ??å ±ã??å??人ç??ã?ªé?¢ä¿?ã??è??ã??ã??ã??ã??ã??ã?¯ã?¼ã?¯ç?£è¦?ã??ã??å®?ã??ã??ã?¨ã??ã?§ã??ã?¾ã??ã??\n\nã??ã?®ã?¦ã?£ã?¶ã?¼ã??ã?¯ã??使ã??ã?®ç«¯æ?«ã?§Orbotã?¨Torã?®è¨å®?ã??ã?§ã??ã?¾ã??ã??</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">注æ??</string>
- <string name="wizard_warning_msg">Orbotã??ã?¤ã?³ã?¹ã??ã?¼ã?«ã??ã??ã? ã??ã?§ã?¯é??ä¿¡ã?¯å?¿å??å??ã??ã??ã?¾ã??ã??ã??\n\nOrbotã??Android端æ?«ã??ã?¢ã??ã?ªã?®å?¨ã?¦ã??æ£ã??ã??è¨å®?ã??ã?ªã??ã?¨Torã?¯ä½¿ã??ã?¾ã??ã??ã??</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">許�</string>
- <string name="wizard_permissions_root_msg1">ã?ªã??ã?·ã?§ã?³ã?¨ã??ã?¦Orbotã?«ã?¹ã?¼ã??ã?¼ã?¦ã?¼ã?¶ã?¼æ¨©é??ã??ä¸?ã??ã??ã??ã?¨ã?§é??é??ã??ã?ã?ã?·ã?ªã?©ã?®è¿½å? æ©?è?½ã??使ã??ã?¾ã??ã??</string>
- <string name="wizard_permissions_root_msg2">ã??ã??ã??å®?è¡?ã??ã?ªã??å ´å??ã??Orbotç?¨ã?«ä½?ã??ã??ã??ã?¢ã??ã?ªã? ã??ã??使ã?£ã?¦ã??ã? ã??ã??ã??</string>
- <string name="wizard_permissions_no_root_msg">ã??使ã??ã?®ç«¯æ?«ã?¯rootå??ã??ã??ã?¦ã??ã?ªã??ã??ã??rootã?¾ã??ã?¯ã??Superuserã??ã?«ã?¢ã?¯ã?»ã?¹ã?§ã??ã?ªã??ã??ã??ã?§ã??ã?? \n\n代ã??ã??ã?«ã??ã?¡ã?¤ã?³ç?»é?¢ã?®ã??ã?¢ã??ã?ªã??ã?¢ã?¼ã??ã??試ã??ã?¦ã??ã? ã??ã??ã?? </string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbotã??æ??å?¹å??ã??ã??ã??ã?¢ã??ã?ª</string>
- <string name="wizard_tips_gibberbot">ChatSecure: é??è¨?é?²å¼?æ??å?·ã?«ã??ã??ã?»ã?ã?¥ã?¢ã?ªã??ã?£ã??ã??ã?¢ã??ã?ª</string>
- <string name="wizard_tips_orweb">Orfox: Torã??ä»?ã??ã?¦å??ä½?ã??ã??ã??ã?©ã?¤ã??ã?·ã?¼ã??å¼·å??ã??ã??ã??ã?©ã?¦ã?¶</string>
- <string name="wizard_tips_play">Google Playã?§å?¨ã?¦ã?®Guardian Projectã?®ã?¢ã??ã?ªã??è¦?ã?¤ã??ã??</string>
- <string name="wizard_tips_fdroid">F-Droidã?§å?¨ã?¦ã?®Guardian Projectã?®ã?¢ã??ã?ªã??è¦?ã?¤ã??ã??</string>
- <string name="wizard_tips_fdroid_org">https://f-droid.org ã?§å?¨ã?¦ã?®Guardian Projectã?®ã?¢ã??ã?ªã??è¦?ã?¤ã??ã??</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">é??é??ã??ã?ã?ã?·</string>
- <string name="wizard_transproxy_msg">ã??ã??ã?¯ã??ã?ªã??ã?®ã?¢ã??ã?ªã??è?ªå??ç??ã?«Torçµ?ç?±ã?§é??ä¿¡ã??ã??ã?¾ã??ã??</string>
- <string name="wizard_transproxy_hint">(ä½?ã??è¨?ã?£ã?¦ã??ã??ã?®ã??ã??ã??ã??ã?ªã??ã?¨ã??ã?¯ã??ã??ã??ã??ã?§ã??ã?¯ã??ã?¦ã??ã? ã??ã??)</string>
- <string name="wizard_transproxy_none">ç?¡ã??</string>
- <string name="pref_transparent_tethering_title">Torã??ã?¶ã?ªã?³ã?°</string>
- <string name="pref_transparent_tethering_summary">Toré??é??ã??ã?ã?¯ã?·ã??Wifiã??USBã??ã?¶ã?ªã?³ã?°ã??ã??ã??ã??ã??ã?¤ã?¹ã?«å¯¾ã??ã?¦æ??å?¹å??(å??èµ·å??ã??å¿?è¦?)</string>
- <string name="button_grant_superuser">管ç??許å?¯ã?¢ã?¯ã?»ã?¹ã??è¦?æ±?ã??ã?¾ã??</string>
- <string name="pref_select_apps">ã?¢ã??ã?ªã?±ã?¼ã?·ã?§ã?³ã??é?¸æ??ã??ã?¾ã??</string>
- <string name="pref_select_apps_summary">Torã??çµ?ç?±ã??ã??ã??ã?¢ã??ã?ªã??é?¸æ??</string>
- <string name="pref_node_configuration">ã??ã?¼ã??è¨å®?</string>
- <string name="pref_node_configuration_summary">ã??注æ??ã??å??é?²è¨å®?ã??å?¿å??ã?¬ã??ã?«ã??縮å°?ã??ã?¾ã??</string>
- <string name="pref_entrance_node">å?¥ã??å?£ã??ã?¼ã??</string>
- <string name="pref_entrance_node_summary">æ??å??ã?®ã??ã??ã??ã?®ã??ã??ã?®ã??ã?¸ã?¿ã?«æ??ç´?ã??ã??ã??ã?¯ã??ã?¼ã? ã??å?½ã?¨IPã?¢ã??ã?¬ã?¹</string>
- <string name="pref_entrance_node_dialog">å?¥ã??å?£ã??ã?¼ã??ã??å?¥å??</string>
- <string name="pref_allow_background_starts_title">ã??ã??ã?¯ã?°ã?©ã?¦ã?³ã??ã?®é??å§?ã??許å?¯</string>
- <string name="pref_allow_background_starts_summary">Orbotã??Torã?¨é?¢é?£ã?µã?¼ã??ã?¹ã??é??å§?ã??ã??ã??ã??ã?«ã??ä»»æ??ã?®ã?¢ã??ã?ªã?«ä¼?ã??ã?¾ã??</string>
- <string name="button_proxy_all">ã??ã?¹ã?¦ã??ã?ã?ã?·</string>
- <string name="button_proxy_none">ã??ã?ã?ã?·ã?ªã??</string>
- <string name="button_invert_selection">é?¸æ??ã?®å??転</string>
- <string name="pref_proxy_title">å¤?æ?¹å??ã??ã??ã??ã?¯ã?¼ã?¯ã??ã?ã?ã?· (ã?ªã??ã?·ã?§ã?³)</string>
- <string name="pref_proxy_type_title">å¤?æ?¹å??ã??ã?ã?ã?·ã?®ç¨®é¡?</string>
- <string name="pref_proxy_type_summary">HTTP,HTTPS,Socks4,Socks5ã?§ä½¿ç?¨ã??ã??ã??ã?ã??ã?³ã?«</string>
- <string name="pref_proxy_type_dialog">ã??ã?ã?ã?·ã?®ç¨®é¡?ã??å?¥å??ã??ã?¦ã??ã? ã??ã??</string>
- <string name="pref_proxy_host_title">å¤?æ?¹å??ã??ã?ã?ã?·ã?®ã??ã?¹ã??</string>
- <string name="pref_proxy_host_summary">ã??ã?ã?ã?·ã?µã?¼ã??ã?®ã??ã?¹ã??å??</string>
- <string name="pref_proxy_host_dialog">ã??ã?ã?¯ã?·ã??ã??ã?¹ã??ã??å?¥å??</string>
- <string name="pref_proxy_port_title">å¤?æ?¹å??ã??ã?ã?ã?·ã?®ã??ã?¼ã??</string>
- <string name="pref_proxy_port_summary">ã??ã?ã?ã?·ã?µã?¼ã??ã?®ã??ã?¼ã??</string>
- <string name="pref_proxy_port_dialog">ã??ã?ã?ã?·ã?®ã??ã?¼ã??ã??å?¥å??ã??ã?¦ã??ã? ã??ã??</string>
- <string name="pref_proxy_username_title">å¤?æ?¹å??ã??ã?ã?ã?·ã?®ã??ã?¼ã??</string>
- <string name="pref_proxy_username_summary">ã??ã?ã?ã?·ã?¦ã?¼ã?¶ã?¼å?? (ã?ªã??ã?·ã?§ã?³)</string>
- <string name="pref_proxy_username_dialog">ã??ã?ã?ã?·ã?®ã?¦ã?¼ã?¶ã?¼å??ã??å?¥å??ã??ã?¦ã??ã? ã??ã??</string>
- <string name="pref_proxy_password_title">å¤?æ?¹å??ã??ã?ã?ã?·ã?®ã??ã?¹ã?¯ã?¼ã??</string>
- <string name="pref_proxy_password_summary">ã??ã?ã?ã?·ã?®ã??ã?¹ã?¯ã?¼ã?? (ã?ªã??ã?·ã?§ã?³)</string>
- <string name="pref_proxy_password_dialog">ã??ã?ã?ã?·ã?®ã??ã?¹ã?¯ã?¼ã??ã??å?¥å??ã??ã?¦ã??ã? ã??ã??</string>
- <string name="status">ç?¶æ??</string>
- <string name="setting_up_full_transparent_proxying_">å®?å?¨ã?ªé??é??ã??ã?ã?ã?·ã??ã?»ã??ã??ã?¢ã??ã??ä¸...</string>
- <string name="setting_up_app_based_transparent_proxying_">ã?¢ã??ã?ªã??ã?¼ã?¹ã?®é??é??ã??ã?ã?ã?·ã??ã?»ã??ã??ã?¢ã??ã??ä¸...</string>
- <string name="transparent_proxying_enabled">é??é??ã??ã?ã?ã?·ã??æ??å?¹</string>
- <string name="transproxy_enabled_for_tethering_">ã??ã?¶ã?ªã?³ã?°ã?§ã?®é??é??ã??ã?ã?ã?·æ??å?¹</string>
- <string name="warning_error_starting_transparent_proxying_">è¦å??: é??é??ã??ã?ã?ã?·ã?®é??å§?æ??ã?«ã?¨ã?©ã?¼ç?ºç??</string>
- <string name="transproxy_rules_cleared">é??é??ã??ã?ã?ã?·ã??ã?«ã?¼ã?«ã??æ¶?å?»å®?äº?</string>
- <string name="couldn_t_start_tor_process_">Torã??ã?ã?»ã?¹ã?®èµ·å??ã?«å¤±æ??:</string>
- <string name="privoxy_is_running_on_port_">Polipoã??å®?è¡?ä¸ã?®ã??ã?¼ã??: </string>
- <string name="setting_up_port_based_transparent_proxying_">ã??ã?¼ã??ã??ã?¼ã?¹ã?®é??é??ã??ã?ã?ã?·ã??ã?»ã??ã??ã?¢ã??ã??ä¸...</string>
- <string name="bridge_error">ã??ã?ªã??ã?¸ã??ã?¨ã?©ã?¼</string>
- <string name="bridge_requires_ip">ã??ã?ªã??ã?¸æ©?è?½ã??å?©ç?¨ã??ã??ã?«ã?¯ã??æ??ä½?ä¸?ã?¤ã?®ã??ã?ªã??ã?¸IPã?¢ã??ã?¬ã?¹ã?®å?¥å??ã??å¿?è¦?ã?§ã??ã??</string>
- <string name="send_email_for_bridges">gmailã??使ã?£ã?¦ã??æ?¬æ??ã?«ã??get bridgesã??ã?¨æ?¸ã??ã??ã?¡ã?¼ã?«ã??bridges@xxxxxxxxxxxxxxã?«é??ä¿¡ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="error">���</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">ã??ã?ªã??ã?®ReachableAddressesè¨å®?ã?«ã??ã??ä¾?å¤?ã??ç?ºç??ã??ã?¾ã??ã??!</string>
- <string name="your_relay_settings_caused_an_exception_">ã??ã?ªã??ã?®ã?ªã?¬ã?¼è¨å®?ã?«ã??ã??ä¾?å¤?ã??ç?ºç??ã??ã?¾ã??ã??!</string>
- <string name="exit_nodes">å?ºå?£ã??ã?¼ã??</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">æ??å¾?ã?®ã??ã??ã??ã?®ã??ã??ã?®ã??ã?¸ã?¿ã?«æ??ç´?ã??ã??ã??ã?¯ã??ã?¼ã? ã??å?½ã?¨IPã?¢ã??ã?¬ã?¹</string>
- <string name="enter_exit_nodes">å?ºå?£ã??ã?¼ã??ã??å?¥å??</string>
- <string name="exclude_nodes">é?¤å¤?ã??ã?¼ã??</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">é?¤å¤?ã??ã??ã??ã?¸ã?¿ã?«æ??ç´?ã??ã??ã??ã?¯ã??ã?¼ã? ã??å?½ã?¨IPã?¢ã??ã?¬ã?¹</string>
- <string name="enter_exclude_nodes">é?¤å¤?ã??ã?¼ã??ã??å?¥å??</string>
- <string name="strict_nodes">Strictã??ã?¼ã??</string>
- <string name="use_only_these_specified_nodes">ã??ã??ã?«æ??å®?ã??ã??ã??ã?¼ã??ã?®ã?¿ã??使ç?¨</string>
- <string name="bridges">ã??ã?ªã??ã?¸</string>
- <string name="use_bridges">ã??ã?ªã??ã?¸ã??使ã??</string>
- <string name="bridges_obfuscated">Obfuså??ã??ã??ã??ã??ã?ªã??ã?¸</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">代æ?¿å?¥ã??å?£ã??ã?¼ã??ã??æ??å?¹å??</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">è¨å®?ã??ã??ã??ã?ªã??ã?¸ã??Obfuså??ã??ã??ã??ã??ã?ªã??ã?¸ã?§ã??ã??ã?°æ??å?¹</string>
- <string name="ip_address_and_port_of_bridges">ã??ã?ªã??ã?¸ã?®IPã?¢ã??ã?¬ã?¹ã?¨ã??ã?¼ã??</string>
- <string name="enter_bridge_addresses">ã??ã?ªã??ã?¸ã?®ã?¢ã??ã?¬ã?¹ã??å?¥å??</string>
- <string name="relays">���</string>
- <string name="relaying">ã?ªã?¬ã?¼ä¸</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">ã??ã?®ç«¯æ?«ã??é??å?ºå?£ã?ªã?¬ã?¼ã?«ã??ã??</string>
- <string name="relay_port">ã?ªã?¬ã?¼ã??ã??ã?¼ã??</string>
- <string name="listening_port_for_your_tor_relay">ã??ã?®Torã?ªã?¬ã?¼ã?®ã?ªã?¹ã??ã?³ã?°ã??ã?¼ã??</string>
- <string name="enter_or_port">ORã??ã?¼ã??ã??å?¥å??</string>
- <string name="relay_nickname">ã?ªã?¬ã?¼ã?®ã??ã??ã?¯ã??ã?¼ã? </string>
- <string name="the_nickname_for_your_tor_relay">ã??ã?®Torã?ªã?¬ã?¼ã?®ã??ã??ã?¯ã??ã?¼ã? </string>
- <string name="enter_a_custom_relay_nickname">ã?ªã?¬ã?¼ã?®ã?«ã?¹ã?¿ã? ã??ã??ã?¯ã??ã?¼ã? ã??å?¥å??</string>
- <string name="reachable_addresses">å?°é??å?¯è?½ã?¢ã??ã?¬ã?¹</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">å?¶é??è¨å®?ã?®ã??ã?¡ã?¤ã?¢ã?¦ã?©ã?¼ã?«ã??é??ã??ã?¦ã?¯ã?©ã?¤ã?¢ã?³ã??ã?¨ã??ã?¦å®?è¡?</string>
- <string name="reachable_ports">å?°é??å?¯è?½ã??ã?¼ã??</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">å?¶é??è¨å®?ã?®ã??ã?¡ã?¤ã?¢ã?¦ã?©ã?¼ã?«ã??é??ã??ã?¦å?°é??å?¯è?½ã?ªã??ã?¼ã??</string>
- <string name="enter_ports">ã??ã?¼ã??ã??å?¥å??</string>
- <string name="enable_hidden_services">Hidden Serviceã?®ã??ã?¹ã??ã?£ã?³ã?°</string>
- <string name="run_servers_accessible_via_the_tor_network">ã??ã??ã?¤ã?¹ä¸?ã?®ã?µã?¼ã??ã?¼ã??Torçµ?ç?±ã?§ã?¢ã?¯ã?»ã?¹å?¯è?½ã?«ã??ã??</string>
- <string name="enter_localhost_ports_for_hidden_services">Hidden Serviceç?¨ã?®localhostã?®ã??ã?¼ã??ã??å?¥å??</string>
- <string name="hidden_service_ports">Hidden Serviceã?®ã??ã?¼ã??</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ã??ã?ªã??ã?®Hidden Serviceã?®ã?¢ã??ã?¬ã?¹(è?ªå??ç??æ??ã??ã??ã?¾ã??)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ã??ã??ã??ã?°ã?ã?°ã?®å?ºå??ã??æ??å?¹å??(é?²è¦§ã?«ã?¯adbã??aLogCatã??å¿?è¦?)</string>
- <string name="project_home">ã??ã?ã?¸ã?§ã?¯ã??ã?®ã??ã?¼ã? :</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor ã?©ã?¤ã?»ã?³ã?¹æ??æ?¸</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">第ä¸?è??製ã?®ã?½ã??ã??ã?¦ã?§ã?¢</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">ã?¢ã??ã?ªã??hidden serverã?® port %Sã??ã??Torã??ã??ã??ã?¯ã?¼ã?¯ã?«é??æ?¾ã??ã??ã??ã?¨ã??ã?¦ã??ã?¾ã??ã??ä¿¡é ¼ã?§ã??ã??ã?¢ã??ã?ªã?§ã??ã??ã?°ã??ã??ã?¯å®?å?¨ã?§ã??ã??</string>
- <string name="found_existing_tor_process">Torã??ã?ã?»ã?¹ã??ç?ºè¦?</string>
- <string name="something_bad_happened">ä½?ã??ã??èµ·ã??ã??ã?¾ã??ã??ã??ã?ã?°ã??確èª?ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="hidden_service_on">hidden service æ??å?¹:</string>
- <string name="unable_to_read_hidden_service_name">hidden serviceã?®å??å??èªè¾¼ä¸?è?½</string>
- <string name="unable_to_start_tor">Torã??å®?è¡?ã?§ã??ã?¾ã??ã??ã?§ã??ã??</string>
- <string name="unable_to_reset_tor">Torã??ã?ªã?»ã??ã??ã?§ã??ã?¾ã??ã??ã??ã??使ã??ã?®ã??ã??ã?¤ã?¹ã??å??èµ·å??ã??ã?¦ã??ã? ã??ã??!</string>
- <string name="pref_use_sys_iptables_title">ã??ã??ã?©ã?«ã??ã?®lptablesã??使ã??</string>
- <string name="pref_use_sys_iptables_summary">Orbotã??ã?³ã??ã?«ç??ã?§ã?¯ã?ªã??å??è?µã?®iptablesã??使ã??</string>
- <string name="error_installing_binares">Torã??ã?¤ã??ã?ªã?®ã?¤ã?³ã?¹ã??ã?¼ã?«ã?¾ã??ã?¯ã?¢ã??ã??ã?°ã?¬ã?¼ã??ã?¯ä¸?å?¯è?½ã?§ã??ã??ã??</string>
- <string name="pref_use_persistent_notifications">Orbotã??æ?¥ç¶?ä¸ã?¯ã?¢ã?¤ã?³ã?³ã??常ã?«ã??ã?¼ã?«ã??ã?¼ã?«è¡¨ç¤º</string>
- <string name="pref_use_persistent_notifications_title">é??ç?¥ã??常ã?«æ??å?¹å??</string>
- <string name="pref_use_expanded_notifications">æ?¡å¼µé??ç?¥ã?§ã??Torã?®å?ºå?£ã?®å?½ã?¨IPã??表示ã??ã?¾ã??</string>
- <string name="pref_use_expanded_notifications_title">æ?¡å¼µé??ç?¥</string>
- <string name="notification_using_bridges">ã??ã?ªã??ã?¸ã??æ??å?¹ã?§ã??ï¼?</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">��</string>
- <string name="set_locale_summary">Orbotã?®å?°å??ã?¨è¨?èª?ã??é?¸æ??</string>
- <string name="wizard_locale_title">è¨?èª?ã??é?¸æ??</string>
- <string name="wizard_locale_msg">ä»?ã?®è¨?èª?ã??å¤?æ?´ã??ã??ã??ã??ã??ã?®ã?¾ã?¾ã?«ã??ã??</string>
- <string name="powered_by">powered by Tor</string>
- <string name="btn_save_settings">è¨å®?ã??ä¿?å?</string>
- <string name="no_internet_connection_tor">ã?¤ã?³ã?¿ã?¼ã??ã??ã??æ?¥ç¶?ã?ªã??ã??Torã?¯å¾?æ©?ä¸ã?§ã??...</string>
- <string name="bandwidth_">帯å??å¹?:</string>
- <string name="down">ã??ã?¦ã?³</string>
- <string name="up">ã?¢ã??ã??</string>
- <string name="pref_disable_network_title">ã??ã??ã??ã?¯ã?¼ã?¯ã?ªã??æ??ã?ªã?¼ã??ã?¹ã?ªã?¼ã??</string>
- <string name="pref_disable_network_summary">ã??ã??ã??æ?¥ç¶?ã??ã?ªã??æ?? Tor ã??ã?¹ã?ªã?¼ã??ã??ã??ã??</string>
- <string name="newnym">æ?°ã??ã?ª Tor ã?®èº«å??ã?«å??ã??æ?¿ã??ã?¾ã??ã??ã??</string>
- <string name="menu_verify_browser">ã??ã?©ã?¦ã?¶</string>
- <string name="menu_use_chatsecure">ChatSecure ã??使ç?¨</string>
- <string name="permission_manage_tor_label">Tor ã??管ç??</string>
- <string name="permission_manage_tor_description">ã??ã?®ã?¢ã??ã?ªã?? Tor ã?µã?¼ã??ã?¹ã??ã?³ã?³ã??ã?¼ã?«ã?§ã??ã??ã??ã??ã?«ã??ã??</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox ã??ã?¤ã?³ã?¹ã??ã?¼ã?«ã??ã?¦ã??ã?ªã??ã??ã??ã?§ã??ã??ã??ã??ã?«ã?¤ã??ã?¦å?©ã??ã??å¿?è¦?ã?§ã??ã??ã??ã??ã??ã??ã?¯ã??ã? ã??ã?©ã?¦ã?¶ã??é??ã??ã?¹ã??ã?§ã??ã??ï¼?</string>
- <string name="install_apps_">ã?¢ã??ã?ªã??ã?¤ã?³ã?¹ã??ã?¼ã?«ã??ã?¾ã??ã??ï¼?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">ã??ã??ã??ã?¯ã?¼ã?¯æ?¥ç¶?ã??ã??ã??ã?¾ã??ã??ã??Torã?¯ã?¹ã?ªã?¼ã??ã??ã?¾ã??â?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">ã??ã??ã??ã?¯ã?¼ã?¯æ?¥ç¶?ã?¯è?¯å¥½ã?§ã??ã??Torã??æ??å?¹ã?«ã??ã?¾ã??â?¦</string>
- <string name="updating_settings_in_tor_service">Torã?µã?¼ã??ã?¹ã?®è¨å®?ã??æ?´æ?°ä¸</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Torã??SOCKSã??ã?ã?ã?·ã??æ??ä¾?ã??ã??ã??ã?¼ã?? (ã??ã??ã?©ã?«ã??: 9050ã??0ã?«ã??ã??ã?¨ç?¡å?¹)</string>
- <string name="pref_socks_dialog">SOCKS ã??ã?¼ã??è¨å®?</string>
- <string name="pref_transport_title">Toré??é??ã??ã?ã?ã?·ã??ã?¼ã??</string>
- <string name="pref_transport_summary">Torã??é??é??ã??ã?ã?ã?·ã??æ??ä¾?ã??ã??ã??ã?¼ã?? (ã??ã??ã?©ã?«ã??: 9040ã??0ã?«ã??ã??ã?¨ç?¡å?¹)</string>
- <string name="pref_transport_dialog">é??é??ã??ã?ã?ã?·ã??ã?¼ã??è¨å®?</string>
- <string name="pref_dnsport_title">Tor DNS ã??ã?¼ã??</string>
- <string name="pref_dnsport_summary">Torã??DNSã??æ??ä¾?ã??ã??ã??ã?¼ã?? (ã??ã??ã?©ã?«ã??: 5400ã??0ã?«ã??ã??ã?¨ç?¡å?¹)</string>
- <string name="pref_dnsport_dialog">DNS ã??ã?¼ã??è¨å®?</string>
- <string name="pref_torrc_title">Torrc ã?«ã?¹ã?¿ã? è¨å®?</string>
- <string name="pref_torrc_summary">ä¸?ç´?è??家ã?®ã?¿: ç?´æ?¥torrcè¨å®?è¡?ã??å?¥å??ã??ã?¾ã??</string>
- <string name="pref_torrc_dialog">Torrcã??ã?«ã?¹ã?¿ã? </string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech 人権æ??æ?¸ã?¢ã??ã?ª</string>
- <string name="your_tor_public_ips_">ã??ã?ªã??ã?®Torå?¬é??IP:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Orbotã?§å??é¡?ã??ç?ºç??ã??ã??å ´å??ã?¯ã??Android->è¨å®?->ã?¢ã??ã?ª ã?§ã??ã??ã?®ã?¢ã??ã?ªã??ç?¡å?¹ã?«ã??ã?¦ã??ã? ã??ã??: </string>
- <string name="app_conflict">ã?¢ã??ã?ªã?®ç«¶å??</string>
- <string name="pref_transproxy_refresh_title">é??é??ã??ã?ã?ã?·è?ªå??ã?ªã??ã?¬ã??ã?·ã?¥</string>
- <string name="pref_transproxy_refresh_summary">ã??ã??ã??ã?¯ã?¼ã?¯ã?®ç?¶æ??ã??å¤?å??ã??ã??ã?¨ã??ã??é??é??ã??ã?ã?ã?·ã?®ã?«ã?¼ã?«ã??å??é?©ç?¨ã??ã?¾ã??</string>
- <string name="pref_transproxy_flush_title">é??é??ã??ã?ã?ã?·å¼·å?¶å??é?¤</string>
- <string name="pref_transproxy_flush_summary">ã??ã??ã??ã?¿ã??ã??ã??ã??ã?¨ã??ä»?ã??ã??ã??ã?¹ã?¦ã?®é??é??ã??ã?ã?ã?· ã??ã??ã??ã?¯ã?¼ã?¯ã?«ã?¼ã?«ã??ã??ã?©ã??ã?·ã?¥ã??ã?¾ã??</string>
- <string name="transparent_proxy_rules_flushed_">é??é??ã??ã?ã?ã?·ã?®ã?«ã?¼ã?«ã??ã??ã?©ã??ã?·ã?¥ã??ã?¾ã??ã??!</string>
- <string name="you_do_not_have_root_access_enabled">ROOT ã?¢ã?¯ã?»ã?¹ã??æ??å?¹ã?§ã?¯ã??ã??ã?¾ã??ã??</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">å¤?æ?´ã??ã??è¨å®?ã??æ??å?¹ã?«ã??ã??ã??ã??ã?«ã??Orbotã??å??æ¢ã??ã?¦é??å§?ã??ã??å¿?è¦?ã??ã??ã??ã??ã??ã??ã??ã?¾ã??ã??ã??</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">ã??ã?ªã??ã?¸ã??æ?´æ?°ã??ã?¾ã??ã??</string>
- <string name="restart_orbot_to_use_this_bridge_">å¤?æ?´ã??æ??å?¹ã?«ã??ã??ã?«ã?¯Orbotã??å??èµ·å??ã??ã?¦ã??ã? ã??ã??</string>
- <string name="menu_qr">QRã?³ã?¼ã??</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">ã?¢ã??ã?¤ã?«ã??ã??ã??ã?¯ã?¼ã?¯ã??ç©?極ç??ã?«Torã??ã??ã?ã??ã?¯ã??ã??å ´å??ã??ã??ã?ªã??ã?¸ã??使ç?¨ã??ã?¦ã??ã??ã??ã?¯ã?¼ã?¯ã?«ã?¢ã?¯ã?»ã?¹ã??ã??ã??ã?¨ã??ã?§ã??ã?¾ã??ã??\n\nã??ã?ªã??ã?¸ã??æ??å?¹ã?«ã??ã??ã??ã??ã??ä¸?ã?®ã??ã??ã??ã??ã?®ã??ã?ªã??ã?¸ã?¿ã?¤ã??ã??é?¸æ??ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="bridge_mode">ã??ã?ªã??ã?¸ ã?¢ã?¼ã??</string>
- <string name="get_bridges_email">���</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">ã?¢ã?¯ã??ã?£ã??å??</string>
- <string name="apps_mode">ã?¢ã??ã?ª VPN ã?¢ã?¼ã??</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Androidã?®VPNæ©?è?½ã??使ç?¨ã??ã?¦ã??ã??ã??ã?¤ã?¹ä¸?ã?®ã??ã?¹ã?¦ã?®ã?¢ã??ã?ªã??Torã??ã??ã??ã?¯ã?¼ã?¯ã??ä»?ã??ã??ã??ã??ã?«ã??ã??ã??ã?¨ã??ã?§ã??ã?¾ã??\n\nå??*è¦å??* ã??ã??ã?¯æ?°ã??ã??ã??å®?é¨?ç??ã?ªæ©?è?½ã?§ã??ã??ã??ã??ã??ã?¤ã??ã?®ã?±ã?¼ã?¹ã?§è?ªå??ç??ã?«èµ·å??ã??ã?ªã??ã??ã?¨ã??ã?¾ã??ã?¯å??æ¢ã??ã??ã??ã?¨ã??ã??ã??ã?¾ã??ã??ã??ã??ã?¯å?¿å??ã?®ã??ã??ã?«ä½¿ç?¨ã??ã?ªã??ã?§ã??ã? ã??ã??ã??ã??ã?¡ã?¤ã?¢ã?¦ã?©ã?¼ã?«ã??ã??ã?£ã?«ã?¿ã?¼ã??é??ã??ã??ã??ã?«ã?®ã?¿ä½¿ç?¨ã??ã?¦ã??ã? ã??ã??ã??</string>
- <string name="send_email">ã?¡ã?¼ã?«é??ä¿¡</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">ã??ã?ªã??ã?¯ã??ã?¡ã?¼ã?«ã??ã?¦ã?§ã??ã??ä»?ã??ã?¦ã??ã?¾ã??ã?¯ã??ã?ªã??ã?¸QRã?³ã?¼ã??ã??ã?¹ã?ã?£ã?³ã??ã?¦ã??ã?ªã??ã?¸ã?¢ã??ã?¬ã?¹ã??å??å¾?ã??ã??ã??ã?¨ã??ã?§ã??ã?¾ã??ã??ã??ã?ªã??ã?¸ã?¢ã??ã?¬ã?¹ã??è¦?æ±?ã??ã??ã??ã??ã??ä¸?ã?®ã??ã?¡ã?¼ã?«ã??ã?¾ã??ã?¯ã??ã?¦ã?§ã??ã??ã??é?¸æ??ã??ã?¦ã??ã? ã??ã??ã??\n\nã?¢ã??ã?¬ã?¹ã??å?¥æ??ã??ã??ã??ã??ã??ã??ã??Orbotè¨å®?ã?®ã??ã??ã?ªã??ã?¸ã??è¨å®?ã?«ã?³ã??ã?¼& è²¼ã??ä»?ã??ã??ã?¦ã??Orbotã??å??èµ·å??ã??ã?¾ã??ã??</string>
- <string name="install_orweb">Orfoxã??ã?¤ã?³ã?¹ã??ã?¼ã?«</string>
- <string name="standard_browser">æ¨?æº?ã??ã?©ã?¦ã?¶</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">注: æ¨?æº?ã?®Torã??ã?ªã??ã?¸ã?¯ã??Intel X86/ATOM ã??ã??ã?¤ã?¹ä¸?ã?§ã?®ã?¿å??ä½?ã??ã?¾ã??</string>
- <string name="vpn_default_world">ã?¯ã?¼ã?«ã??</string>
-</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-kn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
deleted file mode 100644
index f5361d0..0000000
--- a/res/values-ko/strings.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Tor ì??ì?? ë°? ì¤?ì§?</string>
- <string name="tor_proxy_service_process">Tor í??ë¡?ì?? ì??ë¹?ì?¤</string>
- <string name="status_starting_up">Orbot ì??ì?? ì¤?â?¦</string>
- <string name="status_activated">Tor ë?¤í?¸ì??í?¬ì?? ì?°ê²°ë?¨</string>
- <string name="status_disabled">Orbotì?´ ë¹?í??ì?±í??ë??ì?´ ì??ì?µë??ë?¤</string>
- <string name="tor_process_starting">Tor í?´ë?¼ì?´ì?¸í?¸ ì??ì?? ì¤?â?¦</string>
- <string name="tor_process_complete">ì??ë£?.</string>
- <string name="tor_process_waiting">ë??기 ì¤?.</string>
- <string name="not_anonymous_yet">ê²½ê³ : ê·?í??ì?? í?¸ë??í?½ì?? ì??ì§? ì?µëª?ì?´ ì??ë??ë??ë?¤! HTTP í??ë¡?ì?? 127.0.0.1:8118 ë??ë?? SOCKS4A ë??ë?? SOCKS5 í??ë¡?ì?? 127.0.0.1:9050ì?? ì?¬ì?©í??ì?¬ ì??ì?© í??ë¡?ê·¸ë?¨ì?? 구ì?±í??ì?ì??ì?¤</string>
- <string name="menu_home">í??</string>
- <string name="menu_browse">í??ì??</string>
- <string name="menu_settings">ì?¤ì ?</string>
- <string name="menu_log">ë¡?ê·¸</string>
- <string name="menu_info">ë??ì??ë§?</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">ì??ì??</string>
- <string name="menu_stop">��</string>
- <string name="menu_about">ì ?ë³´</string>
- <string name="main_layout_download">ë?¤ì?´ë¡?ë??</string>
- <string name="main_layout_upload">ì??ë¡?ë??</string>
- <string name="button_help">ë??ì??ë§?</string>
- <string name="button_close">�기</string>
- <string name="button_about">ì ?ë³´</string>
- <string name="button_clear_log">�그 ��기</string>
- <string name="menu_verify">í??ì?¸</string>
- <string name="menu_exit">��</string>
- <string name="menu_scan">ë¸?릿ì§? QRì½?ë?? ì?¤ìº?í??기</string>
- <string name="menu_share_bridge">ë¸?릿ì§? QRì½?ë?? ê³µì? í??기</string>
- <string name="press_to_start">- 길ê²? ë??ë?¬ì?? ì??ì??í??기 -</string>
- <string name="pref_trans_proxy_group">í?¬ëª?í?? í??ë¡?ì?? (루í?? í??ì??)</string>
- <string name="pref_trans_proxy_title">í?¬ëª?í?? í??ë¡?ì??</string>
- <string name="pref_trans_proxy_summary">ì?±ì?? ì??ë??ì ?ì?¸ í? 르í??</string>
- <string name="pref_transparent_all_title">모ë?? í? 르í??</string>
- <string name="pref_transparent_all_summary">í? 르를 í?µí?? 모ë? ì??ì?© í??ë¡?ê·¸ë?¨ì?? ë??í?? í??ë¡?ì?? í?¸ë??í?½</string>
- <string name="pref_transparent_port_fallback_title">ë??ì²´ í??ë¡?ì?? í?¬í?¸</string>
- <string name="pref_transparent_port_fallback_summary">ê²½ê³ : í??í?? í?¬í?¸(80,443 ë?±)ë§? ì??í??. ì ?ì²´ 모ë??ë?? ì?± 모ë??ê°? ì??ë??í??ì§? ì??ì?? ê²½ì?°ì??ë§? ì?¬ì?©í? ê²?.</string>
- <string name="pref_transparent_port_title">�� 목�</string>
- <string name="pref_transparent_port_summary">í??ë¡?ì?? ì²?리í? í?¬í?¸ 목ë¡?. ë§?ì?½ ì ?ì²´ 모ë??ë?? ì?± 모ë??ê°? ì??ë??í??ì§? ì??ì?? ê²½ì?°ì??ë§? ì?¬ì?©í? ê²?.</string>
- <string name="pref_transparent_port_dialog">í??ë¡?ì?? í?¬í?¸ ì??ë ¥</string>
- <string name="pref_has_root">루í?¸ ê¶?í??ì?? ë??í?? ì ?ê·¼ í??ì??</string>
- <string name="pref_has_root_summary">ëª?ë°±í?? í??ë¡?ì??를 ì??í?´ 루í?¸ ê¶?í?? ì??구</string>
- <string name="status_install_success">Tor ë°?ì?´ë??리ê°? ì?±ê³µì ?ì?¼ë¡? ì?¤ì¹?ë??ì??ì?µë??ë?¤!</string>
- <string name="status_install_fail">í? 르 ë°?ì?´ë??리 í??ì?¼ì?? ì?¤ì¹?í? ì?? ì??ì?µë??ë?¤. ë¡?그를 í??ì?¸í?´ 주ì??ê³ tor-assistants@xxxxxxxxxxxxxx ì?? ì??ë ¤ 주ì?ì??ì?¤.</string>
- <string name="title_error">ì? í??리ì¼?ì?´ì?? ì?¤ë¥?</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orbot ì ?ë³´</string>
- <string name="btn_next">ë?¤ì??</string>
- <string name="btn_back">��</string>
- <string name="btn_finish">�침</string>
- <string name="btn_okay">í??ì?¸</string>
- <string name="btn_cancel">ì·¨ì??</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbotì?? ë??í?? ëª?ëª? ì??ì?¸ì?¬í?</string>
- <string name="wizard_details_msg">Orbotì?? Torì??, LibEvent, Polipo를 í??ì?¬í?? ì?¤í??ì??ì?¤ ì?´í??리ì¼?ì?´ì??ì??ë??ë?¤. ë?¤ì?´ ì?±ì?? Tor ë?¤í?¸ì??í?¬ë¡? ì?°ê²°ë??ë?? HTTP í??ë¡?ì?? (8118)ì?? SOCKS í??ë¡?ì?? (9050) ì?? ì ?ê³µí?©ë??ë?¤. Orbotì?? ë??í??, 루í??ë?? í?°ì?? ê²½ì?°, 모ë? í?¸ë??í?½ì?? Tor를 í?µí? ì?? ì??ë??ë¡? í?©ë??ë?¤.</string>
- <string name="wizard_permissions_root">ì?¬ì?© ê¶?í?? ë¶?ì?¬</string>
- <string name="wizard_permissions_stock">Orbot ì?¬ì?© ê¶?í??</string>
- <string name="wizard_premissions_msg_root">ì??ë²½í?©ë??ë?¤! Orbotì?? ì??í?´ 루í?¸ ê¶?í??ì?´ í??ì?±í??ë??ê²?ì?? ê°?ì§?í??ì?µë??ë?¤. ì?°ë¦¬ë?? ì?´ í??ì?? í??ëª?í??ê²? ì?¬ì?©í? ê²?ì??ë??ë?¤.</string>
- <string name="wizard_permissions_msg_stock">ì?´ê²?ì?? í??ì??ê°? ì??ë?? ë°?ë©´, ê·?í??ì?? ì?¥ì¹?ê°? 루í?¸ ê¶?í??ì?? ê°?ì§?ê³ ì??ë?¤ë©´ Orbotì?? ë?? ê°?ë ¥í?? ë??구ê°? ë? ì?? ì??ì?µë??ë?¤. Orbotì??ê²? ì??í?¼ì? ì ? ê¶?í??ì?? ë¶?ì?¬í??ë ¤ë©´ ì??ë?? ë²?í?¼ì?? ë??르ì?ì??ì?¤.</string>
- <string name="wizard_permissions_no_root">루í?¸ ê¶?í??ì?? ê°?ì§?ê³ ì??ì§? ì??ê±°ë?? 무ì??ì?? ë§?í??ë?? ê²?ì?¸ì§? ëª¨ë¥´ê² ë?¤ë©´, Orbotê³¼ ë??ì??í??ë?? ì? í??리ì¼?ì?´ì??ë§?ì?? ì?¬ì?©í??ì?ì??ì?¤.</string>
- <string name="wizard_permissions_consent">ë?´ì?©ì?? ì?´í?´í??ì??ì?¼ë©°, ì??í?¼ì? ì ? ê¶?í?? ì??ì?´ ê³?ì?? ì§?í??í?©ë??ë?¤.</string>
- <string name="wizard_permission_enable_root">Orbotì??ê²? 루í?¸ê¶?í?? ë¶?ì?¬</string>
- <string name="wizard_configure">í? 르í?? ì?¤ì ?</string>
- <string name="wizard_configure_msg">Orbotì?? 모ë? ì? í??리ì¼?ì?´ì?? ë??ë?? ì? í??ë?? ì? í??리ì¼?ì?´ì??ì?? Tor를 í?µí?´ í?µì? í??ë??ë¡? í? ì?? ì??ì?µë??ë?¤.</string>
- <string name="wizard_configure_all">모ë? ì?±ì?? í? 르 í??ë¡?ì??ë¡? ì?°ê²°í??기</string>
- <string name="wizard_configure_select_apps">Tor를 ì??í?´ ê°?ê°?ì?? ì?± ì? í??</string>
- <string name="wizard_tips_tricks">Orbotì?´ í??ì?±í??ë?? ì?±</string>
- <string name="wizard_tips_msg">ì??ë??ì?? ì?±ì?? Orbotê³¼ ì??ë??ë??ë??ë¡? ê°?ë°?ë??ì??ì?µë??ë?¤. ì§?ê¸? ì?¤ì¹?í??ë ¤ë©´ ê°?ê°?ì?? ë²?í?¼ì?? ë??르ì?ì??ì?¤. ë??ë?? ë??ì¤?ì?? Google Play, GuardianProject.info, F-Droid.org ì??ì?? ì°¾ì?? ì?? ì??ì?µë??ë?¤.</string>
- <string name="wizard_tips_otrchat">ChatSecure - ì??ë??ë¡?ì?´ë??를 ì??í?? ì??ì ?í?? ì?¸ì?¤í?´í?¸ ë©?ì?¸ì§? í?´ë?¼ì?´ì?¸í?¸</string>
- <string name="wizard_tips_proxy">Proxy Settings - Orbotê³¼ ì??ë??í??ë??ë¡? ì?±ì?? ì?¤ì ?í??ë?? ë°©ë²?ì?? ë°°ì?°ê¸°</string>
- <string name="wizard_tips_duckgo">DuckDuckGo ê²?ì?? ì??ì§? ì?±</string>
- <string name="wizard_tips_twitter">í?¸ì??í?° í??ë¡?ì??를 localhost:8118ë¡? ì?¤ì ?</string>
- <string name="wizard_tips_story_maker">StoryMaker - ì?¤í? 리ë?? ë?¹ì? ì?´ ë§?ë?¤ê³ ë³´ì??ì?? Torì?? ë§?기ì?¸ì??!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">í??ë¡?ì?? ì?¤ì ?</string>
- <string name="wizard_final">Orbotì?´ ì¤?ë¹?ë??ì??ì?µë??ë?¤!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Orbotì?´ ì ?ì??ì ?ì?¼ë¡? ì?¤ì ?ë??ì??ê³ Torì?? ì?°ê²°ë??ì??ë??ì§? í??ì?¸í??기 ì??í?´ https://check.torproject.org ì?? ê·?í??ì?? ì?¹ ë¸?ë?¼ì?°ì ?ì?? ì?´ ê²?ì??ë??ë?¤.</string>
- <string name="pref_hs_group">ì?¨ê²¨ì§? ì??ë¹?ì?¤ í?¸ì?¤í??</string>
- <string name="pref_general_group">��</string>
- <string name="pref_start_boot_title">ë¶?í?? í?? Orbot ì??ì??</string>
- <string name="pref_start_boot_summary">ì??ë??ë¡?ì?´ë?? ì?¥ì¹?ê°? ì??ì??í? ë?? ì??ë??ì ?ì?¼ë¡? Orbotì?? ì??ì??í??ê³ Torì?? ì?°ê²°í?©ë??ë?¤</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">ê²½ê³ </string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">ê¶?í??</string>
- <string name="wizard_permissions_root_msg1">í?¬ëª? í??ë¡?ì?? ê°?ì?? ê³ ê¸? 기ë?¥ì?? í??ì?±í??í??기 ì??í?´ ê·?í??ë?? ì? í??ì ?ì?¼ë¡? Orbotì??ê²? \'ì??í?¼ì? ì ?\' ê¶?í??ì?? ì¤? ì?? ì??ì?µë??ë?¤.</string>
- <string name="wizard_permissions_root_msg2">ì?´ê²?ì?? ì??í??ì§? ì??ì?¼ì? ë?¤ë©´, Orbotê³¼ ì??ë??í??ë??ë¡? ë§?ë?¤ì?´ì§? ì?±ë§?ì?? ì?¬ì?©í??ì?ì??ì?¤.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbotì?? ì?¬ì?©í??ë?? ì?±</string>
- <string name="wizard_tips_gibberbot">ChatSecure: ì?¤í?? ë?? ë ?ì½?ë?? ì??í?¸í??를 ì ?ì?©í?? ì??ì ?í?? ì±?í?? ì?±</string>
- <string name="wizard_tips_play">구ê¸? í??ë ?ì?´ì??ì?? 모ë? ê°?ë??ì?¸ í??ë¡?ì ?í?¸ ì?± 찾기</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">í?¬ëª? í??ë¡?ì??</string>
- <string name="wizard_transproxy_msg">ì?´ê²?ì?? ì?´ë? í?? ì?¤ì ? ì??ì?´ë?? ê·?í??ì?? ì?±ì?´ ì??ë??ì ?ì?¼ë¡? í? 르 ë?¤í?¸ì??í?¬ë¥¼ í?µí?´ ì??ë??í??ë??ë¡? í?´ ì¤?ë??ë?¤.</string>
- <string name="wizard_transproxy_hint">(ì?? ë?´ì?©ì?? ì?´í?´í? ì?? ì??ë?¤ë©´ ì?´ê²?ì?? ì? í??í?´ì£¼ì?ì??ì?¤.)</string>
- <string name="wizard_transproxy_none">ì??ì??</string>
- <string name="pref_transparent_tethering_title">í? 르 í??ë??ë§?</string>
- <string name="pref_transparent_tethering_summary">í??ë??ë§? ë?? ì??ì?´í??ì?´ì?? USB ì?¥ì¹?ì?? í? 르 í?¬ëª? í??ë¡?ì?? í??ì?±í?? (ì?¬ì??ì?? í??ì??)</string>
- <string name="button_grant_superuser">ì??í?¼ì? ì ? ê¶?í?? ì??ì²</string>
- <string name="pref_select_apps">ì?± ì? í??</string>
- <string name="pref_select_apps_summary">Tor를 í?µí?? í?µì? ì?? ì?¬ì?©í? ì?± ì? í??</string>
- <string name="pref_node_configuration">ë?¸ë?? ì?¤ì ?</string>
- <string name="pref_node_configuration_summary">ê·?í??ì?? ì?µëª?ì?±ì?? ê°?ì??ì??í?¬ ì?? ì??ë?? ê³ ê¸? ì?¤ì ?ì?´ ì??ì?µë??ë?¤.</string>
- <string name="pref_entrance_node">ì??구 ë?¸ë??</string>
- <string name="pref_entrance_node_summary">첫ë²?째 Hopì?? ì??í??í??ê±°í??린í?¸, ë³?ì¹, ë??ë?¼ì?? 주ì??</string>
- <string name="pref_entrance_node_dialog">ì??구 ë?¸ë?? ì??ë ¥</string>
- <string name="pref_proxy_title">ì?¸ë¶? ë?¤í?¸ì??í?¬ í??ë¡?ì?? (ì? í??)</string>
- <string name="pref_proxy_type_title">ì?¸ë¶? í??ë¡?ì?? ì? í??</string>
- <string name="pref_proxy_type_summary">í??ë¡?ì?? ì??ë²?를 ì??í?? ì?¬ì?©ë??ë?? í??ë¡?í? ì½? : HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">í??ë¡?ì?? í??ì?? ì??ë ¥</string>
- <string name="pref_proxy_host_title">ì?¸ë¶? í??ë¡?ì?? í?¸ì?¤í?¸</string>
- <string name="pref_proxy_host_summary">í??ë¡?ì?? ì??ë²? í?¸ì?¤í?¸ë?¤ì??</string>
- <string name="pref_proxy_host_dialog">í??ë¡?ì?? í?¸ì?¤í?¸ ì??ë ¥</string>
- <string name="pref_proxy_port_title">ì?¸ë¶? í??ë¡?ì?? í?¬í?¸</string>
- <string name="pref_proxy_port_summary">ì??ë²? í?¬í?¸ ì??ë ¥</string>
- <string name="pref_proxy_port_dialog">í??ë¡?ì?? í?¬í?¸ ì??ë ¥</string>
- <string name="pref_proxy_username_title">ì?¸ë¶? í??ë¡?ì?? ì?¬ì?©ì??ëª?</string>
- <string name="pref_proxy_username_summary">í??ë¡?ì?? ì?¬ì?©ì??ëª? (ì? í??)</string>
- <string name="pref_proxy_username_dialog">í??ë¡?ì?? ì?¬ì?©ì??ëª? ì??ë ¥</string>
- <string name="pref_proxy_password_title">ì?¸ë¶? í??ë¡?ì?? ë¹?ë°?ë²?í?¸</string>
- <string name="pref_proxy_password_summary">í??ë¡?ì?? ë¹?ë°?ë²?í?¸ (ì? í??)</string>
- <string name="pref_proxy_password_dialog">í??ë¡?ì?? ë¹?ë°?ë²?í?¸ ì??ë ¥</string>
- <string name="status">ì??í??</string>
- <string name="setting_up_full_transparent_proxying_">ì ?ì²´ í?¬ëª? í??ë¡?ì?? ì?¤ì ?ì¤?...</string>
- <string name="setting_up_app_based_transparent_proxying_">ì?±ì?? 기ë°?í?? í?¬ëª? í??ë¡?ì?? ì?¤ì ?ì¤?...</string>
- <string name="transparent_proxying_enabled">í?¬ëª? í??ë¡?ì?? í??ì?±í??ë?¨</string>
- <string name="transproxy_enabled_for_tethering_">í??ë??ë§?ì?? ì??í?? TransProxy í??ì?±í??ë?¨</string>
- <string name="warning_error_starting_transparent_proxying_">ê²½ê³ : í?¬ëª? í??ë¡?ì?? ì??ì?? ì?¤ë¥?</string>
- <string name="transproxy_rules_cleared">TransProxy ê·?ì¹? 모ë?? ì?ì ?ë?¨</string>
- <string name="couldn_t_start_tor_process_">Tor í??ë¡?ì?¸ì?¤ ì??ì?? ë¶?ê°?ë?¥: </string>
- <string name="setting_up_port_based_transparent_proxying_">í?¬í?¸ì?? 기ë°?í?? í?¬ëª? í??ë¡?ì?? ì?¤ì ?</string>
- <string name="bridge_error">�릿� ��</string>
- <string name="bridge_requires_ip">ë¸?릿ì§? 기ë?¥ì?? ì?¬ì?©í??기 ì??í?´ì??, ìµ?ì??í?? 1ê°? ì?´ì??ì?? ë¸?릿ì§? IP 주ì??ê°? í??ì??í?©ë??ë?¤.</string>
- <string name="send_email_for_bridges">ë©?ì?¼ 본문ì?? get bridgesë?¼ê³ ì ?ì?´ì?? Gmailë¡? bridges@xxxxxxxxxxxxxxì?? ë©?ì?¼ì?? ë³´ë?´ì?ì??ì?¤.</string>
- <string name="error">��</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">ê·?í??ì?? ReachableAddress ì?¤ì ?ì?? ì??ì?¸ë¥¼ ë°?ì??ì??ì¼°ì?µë??ë?¤!</string>
- <string name="your_relay_settings_caused_an_exception_">ê·?í??ì?? ì¤?ê³?ì??ë²? ì?¤ì ?ì?? ì??ì?¸ë¥¼ ë°?ì??ì??ì¼°ì?µë??ë?¤!</string>
- <string name="exit_nodes">ì¶?구 ë?¸ë??</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">ë§?ì§?ë§? Hopì?? ì??í??í??ê±°í??린í?¸, ë³?ì¹, ë??ë?¼ì?? 주ì??</string>
- <string name="enter_exit_nodes">ì¶?구 ë?¸ë?? ì??ë ¥</string>
- <string name="exclude_nodes">ì°¨ë?¨í? ë?¸ë??</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">ì°¨ë?¨í? í??ê±°í??린í?¸, ë³?ì¹, ë??ë?¼ì?? 주ì??</string>
- <string name="enter_exclude_nodes">ì°¨ë?¨í? ë?¸ë?? ì??ë ¥</string>
- <string name="strict_nodes">ë?¸ë?? ì? í??</string>
- <string name="use_only_these_specified_nodes">ì?´ í?¹ì ?í?? ë?¸ë??*ë§?* ì?¬ì?©í?©ë??ë?¤.</string>
- <string name="bridges">ì¤?ê³?ì??ë²?</string>
- <string name="use_bridges">ì¤?ê³?ì??ë²? ì?¬ì?©</string>
- <string name="bridges_obfuscated">Obfuscated Bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor ë?¤í?¸ì??í?¬ë¡? ë?¤ì?´ê°?ë?? ë??ì??ì?? ì??구 ë?¸ë?? í??ì?±í??</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">ì?¤ì ?ë?? bridgeê°? obfsproxy bridgeë©´ í??ì?±í??</string>
- <string name="ip_address_and_port_of_bridges">ì¤?ê³?ì??ë²?ì?? IP 주ì??ì?? </string>
- <string name="enter_bridge_addresses">ì¤?ê²?ì??ë²? 주ì?? ì??ë ¥</string>
- <string name="relays">ì¤?ê³?ì??ë²?</string>
- <string name="relaying">��</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">ê·?í??ì?? ì?¥ì¹?를 ì¶?구ê°? ì??ë?? ì¤?ê³?ì??ë²?ë¡? í??ì?±í??</string>
- <string name="relay_port">�� ��</string>
- <string name="listening_port_for_your_tor_relay">ê·?í??ì?? Tor ì¤?ê³?ì??ë²?를 ì??í?? Listening í?¬í?¸</string>
- <string name="enter_or_port">OR í?¬í?¸ ì??ë ¥</string>
- <string name="relay_nickname">ì¤?ê³?ì??ë²? ë³?ëª?</string>
- <string name="the_nickname_for_your_tor_relay">ê·?í??ì?? ì¤?ê³?ì??ë²?를 ì??í?? ë³?ëª?</string>
- <string name="enter_a_custom_relay_nickname">ì??ì??ì?? ì¤?ê³?ì??ë²? ë³?ëª?ì?? ì??ë ¥</string>
- <string name="reachable_addresses">ë??ë?¬ ê°?ë?¥í?? 주ì??</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">ì??격í?? ì ?ì±?ì?? ê°?ì§? ë°©í??ë²½ ë?¤ì??ì?? í?´ë?¼ì?´ì?¸í?¸ ê°?ë??</string>
- <string name="reachable_ports">ë??ë?¬ ê°?ë?¥í?? í?¬í?¸</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">ì??격í?? ë°©í??ë²½ ë?¤ì??ì?? ì ?ê·¼ ê°?ë?¥í?? í?¬í?¸</string>
- <string name="enter_ports">í?¬í?¸ ì??ë ¥</string>
- <string name="enable_hidden_services">í??ë? ì??ë¹?ì?¤ í?¸ì?¤í??</string>
- <string name="run_servers_accessible_via_the_tor_network">ì?¥ì¹? ë?´ì?? ì??ë²?ê°? Tor ë?¤í?¸ì??í?¬ë¥¼ í?µí?´ ì ?ê·¼ ê°?ë?¥í??ë??ë¡? í??ì?©</string>
- <string name="enter_localhost_ports_for_hidden_services">í??ë? ì??ë¹?ì?¤ë¥¼ ì??í?? localhost í?¬í?¸ ì??ë ¥</string>
- <string name="hidden_service_ports">í??ë? ì??ë¹?ì?¤ í?¬í?¸</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ê·?í??ì?? í??ë? ì??ë¹?ì?¤ë¥¼ ì??í?? 주ì??í??ë?? ì?´ë¦?(ì??ë??ì?¼ë¡? ì??ì?±ë?¨)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ë??ë²?ê·¸ ë¡?ê·¸ ì¶?ë ¥ í??ì?±í?? (보기 ì??í?´ì??ë?? adbë?? aLogCatì?? ì?¬ì?©í?´ì?¼ í?¨)</string>
- <string name="project_home">í??ë¡?ì ?í?¸ í?? í??ì?´ì§?:</string>
- <string name="the_tor_license">The Tor License</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software: </string>
- <string name="hidden_service_request">ì?±ì?´ Tor ë?¤í?¸ì??í?¬ë¡? í??ë? ì??ë²? í?¬í?¸ë¥¼ ì?´ê³ ì?¶ì?´í?©ë??ë?¤. ì?±ì?? 믿ë??ë?¤ë©´ ì??ì ?í?©ë??ë?¤.</string>
- <string name="found_existing_tor_process">ì¡´ì?¬í??ê³ ì??ë?? Tor í??ë¡?ì?¸ì?¤ ë°?견</string>
- <string name="something_bad_happened">ì?´ë?¤ ë??ì?? ê²?ì?´ ë°?ì??. ë¡?ê·¸ í??ì?¸í??ì?¸ì??.</string>
- <string name="hidden_service_on">í??ë? ì??ë¹?ì?¤ 목ë¡? :</string>
- <string name="unable_to_read_hidden_service_name">í??ë? ì??ë¹?ì?¤ ì?´ë¦?ì?? ì?½ì?? ì?? ì??ì??</string>
- <string name="unable_to_start_tor">Tor ì??ì?? ë¶?ê°?ë?¥</string>
- <string name="pref_use_sys_iptables_title">기본 iptables ��</string>
- <string name="pref_use_sys_iptables_summary">Orbotì?? ë??ë´?ë?? ê²? ë??ì? ì?? ë¹?í?¸ì?¸ë?? iptables ë°?ì?´ë??리 ì?¬ì?©</string>
- <string name="error_installing_binares">Tor ë°?ì?´ë??리ë?? ì?¤ì¹?ë??ê±°ë?? ì??ê·¸ë ?ì?´ë?? ë? ì?? ì??ì??ì?µë??ë?¤.</string>
- <string name="pref_use_persistent_notifications">Orbotì?´ ì?°ê²°ë??ì??ì?? ë?? í?´ë°?ì?? ì??ì?´ì½? ë³´ì?´ê¸°</string>
- <string name="pref_use_persistent_notifications_title">í?ì?? ì¼?ì§? ì??림</string>
- <string name="notification_using_bridges">bridge í??ì?±í??ë?¨</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Orbotì?? ì??í?? ë¡?ì¼?ì?¼ê³¼ ì?¸ì?´ ì? í??</string>
- <string name="wizard_locale_title">ì?¸ì?´ ì? í??</string>
- <string name="wizard_locale_msg">기본ê°?ì?¼ë¡? ë??ê±°ë?? í??ì?¬ ì?¸ì?´ ë°?꾸기</string>
- <string name="btn_save_settings">ì?¤ì ? ì ?ì?¥</string>
- <string name="bandwidth_">ë??ì?í?:</string>
- <string name="down">ì??ë??ë¡?</string>
- <string name="up">ì??ë¡?</string>
- <string name="pref_disable_network_title">ë?¤í?¸ì??í?¬ê°? ì??ì?? ë??ì?? ì??ë?? ì?¬ë¦½</string>
- <string name="pref_disable_network_summary">ì?¸í?°ë?·ì?´ ë¶?ê°?ë?¥í??ë?¤ë©´ Tor를 ì?¬ë¦½ 모ë??ë¡? ë??ì?ì??ì?¤</string>
- <string name="newnym">ì??ë¡?ì?´ Tor ì? ì??ì?¼ë¡? ì ?í??ë??ì??ì?µë??ë?¤!</string>
- <string name="menu_use_chatsecure">ChatSecure ��</string>
- <string name="permission_manage_tor_label">Tor �리</string>
- <string name="permission_manage_tor_description">Tor ì??ë¹?ì?¤ë¥¼ ì ?ì?´í??기 ì??í?´ ì?´ ì?±ì?? í??ì?±í??í??ì?ì??ì?¤</string>
- <string name="install_apps_">ì?±ì?? ì?¤ì¹?í? ê¹?ì???</string>
- <string name="menu_vpn">VPN</string>
-</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
deleted file mode 100644
index 73cc98f..0000000
--- a/res/values-ky/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_settings">ЫÑ?аÑ?Ñ?оолоÑ?</string>
- <string name="menu_info">Ð?аÑ?дам</string>
- <string name="menu_about">Ð?Ñ?огÑ?амма жөнүндө</string>
- <string name="button_help">Ð?аÑ?дам</string>
- <string name="button_about">Ð?Ñ?огÑ?амма жөнүндө</string>
- <string name="menu_exit">ЧÑ?гÑ?Ñ?</string>
- <string name="btn_cancel">Ð?йнÑ?Ñ?</string>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="status">Ð?бал</string>
- <string name="error">Ð?аÑ?а</string>
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-lt-rLT/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
deleted file mode 100644
index 515fd23..0000000
--- a/res/values-lt/strings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_browse">Naršyti</string>
- <string name="menu_settings">Nustatymai</string>
- <string name="menu_info">Pagalba</string>
- <string name="menu_about">Apie</string>
- <string name="button_help">Pagalba</string>
- <string name="button_close">Uždaryti</string>
- <string name="button_about">Apie</string>
- <string name="menu_exit">IÅ¡eiti</string>
- <string name="btn_back">Atgal</string>
- <string name="btn_cancel">Atsisakyti</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Proxy nustatymai</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Ä®spÄ?jimas</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Joks</string>
- <string name="status">Statusas</string>
- <string name="error">Klaida</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">IÅ¡saugoti nustatymus</string>
-</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
deleted file mode 100644
index 6aeabd6..0000000
--- a/res/values-lv/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot ir starpniekserveru bezmaksas lietotne, kas sniedz iespÄ?ju citÄ?m lietotnÄ?m droÅ¡Ä?k lietot internetu. Orbot izmanto Tor, lai Å¡ifrÄ?tu JÅ«su interneta datplÅ«smu, tad to paslÄ?pj, pÄ?rsÅ«tot to caur daudziem datoriem visÄ? pasaulÄ?. Tor ir bezmaksas programmatÅ«ra un atvÄ?rts tÄ«kls, kas palÄ«dz Jums aizsargÄ?ties pret tÄ«kla uzraudzÄ«bas veidu - datplÅ«smas analÄ«zi -, ar kuras palÄ«dzÄ«bu tiek apdraudÄ?ta personiskÄ? brÄ«vÄ«ba un privÄ?tums, konfidenciÄ?las lietiÅ¡Ä·as darbÄ«bas un attiecÄ«bas, kÄ? arÄ« valsts droÅ¡Ä«ba. </string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">startÄ?t un apturÄ?t Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot startÄ?...</string>
- <string name="status_activated">Izveidots savienojums ar tīklu Tor</string>
- <string name="status_disabled">Orbot ir deaktivÄ?ts</string>
- <string name="tor_process_starting">StartÄ? Tor klientu...</string>
- <string name="tor_process_complete">pabeidz.</string>
- <string name="tor_process_waiting">gaida.</string>
- <string name="not_anonymous_yet">BRĪDINÄ?JUMS: JÅ«su datplÅ«sma vÄ?l nav anonÄ«ma! LÅ«dzu konfigurÄ?jiet savas lietotnes, lai tÄ?s izmantotu HTTP starpnieku 127.0.0.1:8118 vai SOCKS4A , vai SOCKS5 starpnieku 127.0.0.1:9050</string>
- <string name="menu_home">MÄ?jas</string>
- <string name="menu_browse">PÄ?rlÅ«kot</string>
- <string name="menu_settings">Iestatījumi</string>
- <string name="menu_log">ŽurnÄ?ls</string>
- <string name="menu_info">Palīdzība</string>
- <string name="menu_start">StartÄ?t</string>
- <string name="menu_stop">ApturÄ?t</string>
- <string name="menu_about">Par</string>
- <string name="main_layout_download">LejupielÄ?de</string>
- <string name="main_layout_upload">AugÅ¡upielÄ?de</string>
- <string name="button_help">Palīdzība</string>
- <string name="button_close">AizvÄ?rt</string>
- <string name="button_about">Par</string>
- <string name="button_clear_log">NotÄ«rÄ«t žurnÄ?lu</string>
- <string name="menu_verify">PÄ?rbaudÄ«t</string>
- <string name="menu_exit">Iziet</string>
- <string name="menu_scan">SkenÄ?t BridgeQR</string>
- <string name="menu_share_bridge">Koplietot BridgeQR</string>
- <string name="press_to_start">Lai startÄ?tu, nospiediet ilgi</string>
- <string name="pref_trans_proxy_group">PÄ?rredzama starpniekoÅ¡ana (nepiecieÅ¡amas saknes pilnvaras)</string>
- <string name="pref_trans_proxy_title">PÄ?rredzama starpniekoÅ¡ana</string>
- <string name="pref_trans_proxy_summary">LietotÅ?u automÄ?tiska torificÄ?Å¡ana</string>
- <string name="pref_transparent_all_title">Tor\'Ä?t visu</string>
- <string name="pref_transparent_all_summary">Visu lietotÅ?u starpnieku datplÅ«sma caur Tor</string>
- <string name="pref_transparent_port_fallback_title">Porta starpnieka atkÄ?pnorÄ?de</string>
- <string name="pref_transparent_port_fallback_summary">BRĪDINÄ?JUMS: Apiet parastos portus (80., 443., u.tml.). *IZMANTOJIET VIENĪGI* ja nestrÄ?dÄ? \'All\' vai \'App\' režīmi.</string>
- <string name="pref_transparent_port_title">Portu saraksts</string>
- <string name="pref_transparent_port_summary">Saraksts portiem uz starpnieku. *IZMANTOJIET VIENĪGI* ja nestrÄ?dÄ? \'All\' vai \'App\' režīmi.</string>
- <string name="pref_transparent_port_dialog">Ievadiet portus uz starpnieku</string>
- <string name="pref_has_root">Pieprasīt piekļuves saknes tiesības</string>
- <string name="pref_has_root_summary">PieprasÄ«t piekļuves saknes tiesÄ«bas pÄ?rredzamai starniekoÅ¡anai</string>
- <string name="status_install_success">SekmÄ«gi instalÄ?tas Tor binÄ?rÄ?s datnes!</string>
- <string name="status_install_fail">Nebija iespÄ?jams instalÄ?t Tor binÄ?rÄ?s datnes. LÅ«dzu pÄ?rbaudiet žurnÄ?lu, un informÄ?jiet tor-assistants@xxxxxxxxxxxxxx </string>
- <string name="title_error">Lietojumprogrammas kļūda</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Par Orbot</string>
- <string name="btn_next">TÄ?lÄ?k</string>
- <string name="btn_back">Atpakaļ</string>
- <string name="btn_finish">Beigt</string>
- <string name="btn_okay">Labi</string>
- <string name="btn_cancel">Atcelt</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">VairÄ?k informÄ?cijas par Orbot</string>
- <string name="wizard_details_msg">Orbot ir atvÄ?rta koda lietojumprogramma, kura ietver Tor, LibEvent un Polipo. Programma nodroÅ¡ina vietÄ?ju HTTP starpniekseveri (8118) un SOCKS starpniekserveri (9050) uz Tor tÄ«klu. TurklÄ?t saknes tiesÄ«bu lÄ«menÄ« strÄ?dÄ?joÅ¡Ä? ierÄ«cÄ?, Orbot spÄ?j pÄ?rsÅ«tÄ«t visu interneta datplÅ«smu caur Tor.</string>
- <string name="wizard_permissions_root">Tiesības piešķirtas</string>
- <string name="wizard_permissions_stock">Orbot tiesības</string>
- <string name="wizard_premissions_msg_root">Ä»oti labi! MÄ?s konstatÄ?jÄ?m, ka Orbot\'am ir iespÄ?jotas saknes tiesÄ«bas. MÄ?s apdomÄ«gi izmantosim Å¡Ä«s tiesÄ«bas.</string>
- <string name="wizard_permissions_msg_stock">Lai gan tas nav obligÄ?ti, Orbot kļūst par vÄ?l ietekmÄ«gÄ?ku rÄ«ku, ja JÅ«su ierÄ«cei ir saknes piekļuves tiesÄ«bas. Izmantojiet zemÄ?k atrodoÅ¡os pogu, lai pieÅ¡Ä·irtu Orbot\'am Ä«paÅ¡u spÄ?ku! </string>
- <string name="wizard_permissions_no_root">Ja Jums nav saknes piekļuves tiesÄ«bu vai Jums nav nojausmas par ko te ir runa, pÄ?rliecinieties, ka izmantojat lietotnes, kuras paredzÄ?tas darbam ar Orbot.</string>
- <string name="wizard_permissions_consent">Es saprotu un vÄ?los turpinÄ?t bez superlietotÄ?ja tiesÄ«bÄ?m.</string>
- <string name="wizard_permission_enable_root">Piešķirt Orbot saknes tiesības</string>
- <string name="wizard_configure">KonfigurÄ?t torifikÄ?ciju</string>
- <string name="wizard_configure_msg">Orbot sniedz iespÄ?ju marÅ¡rutÄ?t visu lietojumu datplÅ«smu caur Tor\'u vai izvÄ?lÄ?ties lietojumprogrammas tÄ?s norÄ?dot individuÄ?li.</string>
- <string name="wizard_configure_all">Visas lietotnes izmantot starpniecÄ«bas režīmÄ? caur Tor</string>
- <string name="wizard_configure_select_apps">IzvÄ?lÄ?ties individuÄ?las lietotnes Tor\'am</string>
- <string name="wizard_tips_tricks">Orbot-iespÄ?jotas lietotnes</string>
- <string name="wizard_tips_msg">ZemÄ?k norÄ?dÄ«tÄ?s lietotnes ir izveidotas darbam ar Orbot. NoklikÅ¡Ä·iniet katru no pogÄ?m, lai instalÄ?tu tÅ«liÅ?, vai varat tÄ?s uzmeklÄ?t vÄ?lÄ?k Android TirgÅ«.</string>
- <string name="wizard_tips_otrchat">ChatSecure - DroÅ¡s Android\'a tÅ«lÄ«tÄ?jÄ?s ziÅ?ojumapmaiÅ?as klients</string>
- <string name="wizard_tips_proxy">Starpnieka iestatÄ«jumi - Uzzini kÄ? konfigurÄ?t lietotnes, lai tÄ?s strÄ?dÄ?tu ar Orbot</string>
- <string name="wizard_tips_duckgo">MeklÄ?tÄ?jprogrammas Duckduckgo lietotne</string>
- <string name="wizard_tips_twitter">Twitter atbalsta http starpnieku \"localhost:8118\"</string>
- <string name="wizard_tips_story_maker">StoryMaker - Sagatavojiet stÄ?stu un, lai uzlabotu droÅ¡Ä«bu, atstÄ?jiet to Tor!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Starpnieka iestatījumi</string>
- <string name="wizard_proxy_help_msg">Ja JÅ«su lietotÄ? Android lietotne spÄ?j nodroÅ¡inÄ?t HTTP vai SOCKS starpniekserveri, tad varat to nokonfigurÄ?t tÄ?, lai tÄ? savienotos ar Orbot un lietotu Tor. ViesotÄ?ja iestatÄ«jumi ir 127.0.0.1 vai â??localhostâ??. HTTP porta iestatÄ«jums ir 8118. SOCKS starpniekserveris ir 9050. PÄ?c iespÄ?jas izmantojiet SOCKS4A vai SOCKS5. Uzziniet vairÄ?k par starpniekoÅ¡anu Android platformÄ? un tÄ«mekļa vietnÄ? lasiet atbildes, kuras sagatavotas biežÄ?k uzdotiem jautÄ?jumiem jeb FAQ: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot ir gatavs darbam!</string>
- <string name="wizard_final_msg">Miljoniem ļaužu visÄ? pasaulÄ? lieto Tor dažÄ?diem mÄ?rÄ·iem. ŽurnÄ?listi un emuÄ?ru autori, cilvÄ?ktiesÄ«bu aizstÄ?vji, likumsargi, karavÄ«ri, korporÄ?cijas, apspiestÄ«bÄ? dzÄ«vojuÅ¡i iedzÄ«votÄ?ji, un vienkÄ?rÅ¡i parasti cilvÄ?ki ... un tagad arÄ« JÅ«s esat tam gatavs!</string>
- <string name="wizard_exit_at_first_screen_toast">LÅ«dzu nokonfigurÄ?jiet Orbot pirms sÄ?kat to lietot!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Å Ä« darbÄ«ba tÄ«mekļa pÄ?rlÅ«kÄ? atvÄ?rs https://check.torproject.org , lai redzÄ?tu vai Orbot ir konfigurÄ?ts un esat izveidojies savienojumu ar Tor.</string>
- <string name="pref_hs_group">SlÄ?ptu pakalpojumu viesoÅ¡ana</string>
- <string name="pref_general_group">VispÄ?rÄ«gi</string>
- <string name="pref_start_boot_title">StartÄ?t Orbot, kad ielÄ?dÄ?jas</string>
- <string name="pref_start_boot_summary">AutomÄ?tiski startÄ?t Orbot, un veidot savienojumu ar Tor, kad JÅ«su Android ierÄ«ce ielÄ?dÄ?jas</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot ieved Tor Android\'u pasaulÄ?! Tor palÄ«dz aizsargÄ?ties pret satura filtrÄ?Å¡anu, datplÅ«smas analÄ«zi un tÄ«kla novÄ?roÅ¡anu, kuras apdraud privÄ?tumu, konfidenciÄ?lu informÄ?ciju un personiskÄ?s attiecÄ«bas. Å is vednis palÄ«dzÄ?s JÅ«su iekÄ?rtÄ? nokonfigurÄ?t Orbot\'u un Tor\'u.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">BrÄ«dinÄ?jums</string>
- <string name="wizard_warning_msg">Pati Orbot instalÄ?Å¡ana vÄ?l nepadarÄ«s anonÄ«mu JÅ«su mobilo datplÅ«smu.\n\nJums pareizi jÄ?nokonfigurÄ? Orbot, sava ierÄ«ce un citas lietotnes, lai sekmÄ«gi lietotu Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Tesības</string>
- <string name="wizard_permissions_root_msg1">PÄ?c izvÄ?les variet pieÅ¡Ä·irt Orbot\'am \'SuperlietotÄ?ja\' piekļuves tiesÄ«bas, lai iespÄ?ju lietpratÄ«gus lÄ«dzekļus, tÄ?dus kÄ? Transparent Proxying jeb PÄ?rredzamÄ? .</string>
- <string name="wizard_permissions_root_msg2">Ja nevÄ?laties Å¡o darÄ«t, lÅ«dzu, pÄ?rliecinieties, ka izmantojat lietotnes, kuras paredzÄ?tas darbam ar Orbot</string>
- <string name="wizard_permissions_no_root_msg">Å Ä·iet, ka JÅ«su ierÄ«ce nav saknÄ?ta vai arÄ« nenodroÅ¡ina saknes jeb superlietotÄ?ja piekļuvi.\n\nLÅ«dzu pamÄ?Ä£iniet citÄ?di - galvenajÄ? ekrÄ?nÄ? lietojiet režīmu â??Lietotnesâ??.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot\'a iespÄ?jotas lietotnes</string>
- <string name="wizard_tips_gibberbot">ChatSecure: PadarÄ«t tÄ?rzÄ?Å¡anas lietotni droÅ¡Ä?ku ar Off-the-Record Å¡ifrÄ?Å¡anu</string>
- <string name="wizard_tips_play">Visas Guardian Project\'a lietotnes atrodamas Google Play\'Ä?</string>
- <string name="wizard_tips_fdroid">Atrodiet visas Guardian Project lietotnes F-Droid\'Ä?</string>
- <string name="wizard_tips_fdroid_org">Atrodiet visas Guardian Project lietotnes https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">PÄ?rredzama starpniekoÅ¡ana</string>
- <string name="wizard_transproxy_msg">Å is ļauj JÅ«su lietotnÄ?m automÄ?tiski, bez jebkÄ?das papildu konfigurÄ?cijas darboties caur Tor tÄ«klu.</string>
- <string name="wizard_transproxy_hint">(AtzÄ«mÄ?jiet Å¡o kastÄ«ti gadÄ«jumÄ? ja Jums nav ne mazÄ?kÄ?s nojausmas par to, ko mÄ?s te runÄ?jam)</string>
- <string name="wizard_transproxy_none">Neviens</string>
- <string name="pref_transparent_tethering_title">Tor valgošana</string>
- <string name="pref_transparent_tethering_summary">IespÄ?jot Tor PÄ?rredzamo starpniekoÅ¡anu Wifi\'m un USB valgoÅ¡anas ierÄ«cÄ?m (nepiecieÅ¡ams pÄ?rstartÄ?t)</string>
- <string name="button_grant_superuser">PieprasÄ«t superlietotÄ?ja piekļuvi</string>
- <string name="pref_select_apps">IzvÄ?lÄ?ties lietotnes</string>
- <string name="pref_select_apps_summary">IzvÄ?lÄ?ties lietotnes, lai marÅ¡rutÄ?tu caur Tor</string>
- <string name="pref_node_configuration">Mezglu konfigurÄ?cija</string>
- <string name="pref_node_configuration_summary">Å ie it lietpratÄ«gie iestatÄ«jumi, kuri var samazinÄ?t JÅ«su anonimitÄ?ti</string>
- <string name="pref_entrance_node">Ieejas mezgli</string>
- <string name="pref_entrance_node_summary">Ciparvirknes, segvÄ?rdi, valstis un adreses pirmajam lÄ?kumam</string>
- <string name="pref_entrance_node_dialog">Ievadiet ieejas mezglus</string>
- <string name="button_proxy_all">Lietot starpniekserveri visam</string>
- <string name="button_proxy_none">Nekam nelietot starpniekserveri</string>
- <string name="button_invert_selection">MainÄ«t atlasi uz pretÄ?jo</string>
- <string name="pref_proxy_title">TÄ«kla Ä?rejoÅ¡ais starpnieks (neobligÄ?ts)</string>
- <string name="pref_proxy_type_title">Ä?rvÄ?rstÄ? starpnieka tips</string>
- <string name="pref_proxy_type_summary">Starpnieka serverim izmantojamais protokols: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ievadiet starpnieka tipu</string>
- <string name="pref_proxy_host_title">Ä?rvÄ?rstÄ? starpnieka viesotÄ?js</string>
- <string name="pref_proxy_host_summary">Starpniekservera mitinÄ?tÄ?jvÄ?rds</string>
- <string name="pref_proxy_host_dialog">Ievadiet starpnieka viesotÄ?ju</string>
- <string name="pref_proxy_port_title">Ä?rvÄ?rstÄ? starpnieka ports</string>
- <string name="pref_proxy_port_summary">Starpniekservera ports</string>
- <string name="pref_proxy_port_dialog">Ievadiet starpnieka portu</string>
- <string name="pref_proxy_username_title">Ä?rvÄ?rstÄ? starpnieka lietotÄ?jvÄ?rds</string>
- <string name="pref_proxy_username_summary">Starpnieka lietotÄ?jvÄ?rds (neobligÄ?ts)</string>
- <string name="pref_proxy_username_dialog">IevadÄ«t starpnieka lietotÄ?jvardu</string>
- <string name="pref_proxy_password_title">Ä?rvÄ?rstÄ? starpnieka parole</string>
- <string name="pref_proxy_password_summary">Starpnieka parole (neobligÄ?ti)</string>
- <string name="pref_proxy_password_dialog">Ievadīt starpnieka paroli</string>
- <string name="status">Statuss</string>
- <string name="setting_up_full_transparent_proxying_">Iestata pilnÄ«bÄ? pÄ?rredzamu starpniekoÅ¡anu...</string>
- <string name="setting_up_app_based_transparent_proxying_">Iestata lietotÅ?u nodroÅ¡inÄ?tu starpniekoÅ¡anu...</string>
- <string name="transparent_proxying_enabled">PÄ?rredzama starpniekoÅ¡ana IESPÄ?JOTA</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy iespÄ?jots valgoÅ¡anai!</string>
- <string name="warning_error_starting_transparent_proxying_">BRĪDINÄ?JUMS: kļūda uzsÄ?kot pÄ?rredzamu starpniekoÅ¡anu!</string>
- <string name="transproxy_rules_cleared">TransProxy kÄ?rtulas notÄ«rÄ«tas</string>
- <string name="couldn_t_start_tor_process_">NeizdevÄ?s palaist Tor\'a procesu:</string>
- <string name="privoxy_is_running_on_port_">Polipo strÄ?dÄ? caur portu: </string>
- <string name="setting_up_port_based_transparent_proxying_">Iestata portu nodroÅ¡inÄ?tu pÄ?rredzamu starpniekoÅ¡anu...</string>
- <string name="bridge_error">Tilta kļūda</string>
- <string name="bridge_requires_ip">Lai izmantotu tilta lÄ«dzekli, jÄ?ievada vismaz viena tilta IP adrese.</string>
- <string name="send_email_for_bridges">No Gmail konta sÅ«tiet e-pastu uz bridges@xxxxxxxxxxxxxx ar rindu \"get bridges\" e-pasta ziÅ?ojuma korpusÄ?.</string>
- <string name="error">Kļūda</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">JÅ«su ReachableAddresses iestatÄ«jumi izraisÄ«ja izÅ?Ä?muma stÄ?vokli!</string>
- <string name="your_relay_settings_caused_an_exception_">JÅ«su retranslatora iestatÄ«jumi izraisÄ«ja izÅ?Ä?muma situÄ?ciju!</string>
- <string name="exit_nodes">Izejas mezgli</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">PÄ?dÄ?jÄ? lÄ?kuma ciparvirknes, segvÄ?rdi, valstis un adreses</string>
- <string name="enter_exit_nodes">Ievadiet izejas mezglus</string>
- <string name="exclude_nodes">Neiekļautie mezgli</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">IzslÄ?dzamÄ?s ciparvirknes, segvÄ?rdi, valstis un adreses</string>
- <string name="enter_exclude_nodes">Ievadīt Neiekļaujamos mezglus</string>
- <string name="strict_nodes">Precīzie mezgli</string>
- <string name="use_only_these_specified_nodes">Izmantojiet *vienÄ«gi* Å¡os norÄ?dÄ«tos mezglus</string>
- <string name="bridges">Tilti</string>
- <string name="use_bridges">Lietot tiltus</string>
- <string name="bridges_obfuscated">NomaskÄ?tie tilti</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">IespÄ?jot alternatÄ«vus tÄ«kla Tor ieejas mezglus </string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">IespÄ?jot, ja konfigurÄ?tie tilti ir nomaskÄ?tie tilti</string>
- <string name="ip_address_and_port_of_bridges">Tiltu ports un IP addrese</string>
- <string name="enter_bridge_addresses">Ievadiet tiltu adreses</string>
- <string name="relays">Retranslatori</string>
- <string name="relaying">RetranslÄ?Å¡ana</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">IespÄ?jot JÅ«su iekÄ?rtu par bezapstÄ?jas retranslatoru</string>
- <string name="relay_port">Retranslatora ports</string>
- <string name="listening_port_for_your_tor_relay">JÅ«su Tor retranslatora klausÄ«Å¡anÄ?s ports</string>
- <string name="enter_or_port">Ievadiet OR portu</string>
- <string name="relay_nickname">Retranslatora segvÄ?rds</string>
- <string name="the_nickname_for_your_tor_relay">JÅ«su Tor\'a retranslatora segvÄ?rds</string>
- <string name="enter_a_custom_relay_nickname">Ievadiet brÄ«vi izraudzÄ«tu rertranslatora segvÄ?rdu</string>
- <string name="reachable_addresses">SasniedzamÄ?s adreses</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">IzpildÄ«t kÄ? klientprogrammu aiz ugunsmÅ«ra, kurÅ¡ nodroÅ¡ina ierobežojoÅ¡u kÄ?rtÄ«bu</string>
- <string name="reachable_ports">Sasniedzamie porti</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porti, kuri sasniedzami otrpus ierobežojoša ugunsmūra</string>
- <string name="enter_ports">Ievadiet portus</string>
- <string name="enable_hidden_services">SlÄ?ptu pakalpojumu viesoÅ¡ana</string>
- <string name="run_servers_accessible_via_the_tor_network">ļaut no tÄ«kla Tor piekļūt serverim, kurÅ¡ ir ierÄ«cÄ?. </string>
- <string name="enter_localhost_ports_for_hidden_services">ievadiet slÄ?pto pakalpojumu localhost portus</string>
- <string name="hidden_service_ports">SlÄ?ptu pakalpojumu porti</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">JÅ«su slÄ?ptÄ? pakalpojuma adresÄ?jams vÄ?rds (tiek Ä£enerÄ?ts automÄ?tiski)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">iespÄ?jot atkļūdoÅ¡anas žurnÄ?lu izvadei (jÄ?lieto adb vai aLogCat , lai skatÄ«tu)</string>
- <string name="project_home">Projekta mÄ?jas:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor licence</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Trešo personu programmatūra:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Lietotne vÄ?las atvÄ?rt slÄ?ptu servera portu %S uz tÄ«klu Tor. Tas ir droÅ¡i, ja uzticaties lietotnei.</string>
- <string name="found_existing_tor_process">Atrada esošu Tor procesu...</string>
- <string name="something_bad_happened">Nav labi. PÄ?rbaudiet žurnÄ?lu</string>
- <string name="hidden_service_on">SlÄ?pts pakalpojums uz:</string>
- <string name="unable_to_read_hidden_service_name">NespÄ?j lasÄ«t slÄ?pta pakalpojuma nosaukumu</string>
- <string name="unable_to_start_tor">Nevar startÄ?t Tor:</string>
- <string name="unable_to_reset_tor">NespÄ?ja atiestatÄ«t Tor, sÄ?knÄ?jiet ierÄ«ci atkÄ?rtoti!</string>
- <string name="pref_use_sys_iptables_title">Izmantot noklusÄ?juma Iptables</string>
- <string name="pref_use_sys_iptables_summary">lietot iebÅ«vÄ?to binÄ?ro datni iptables nevis to, kura ir Orbot komplektÄ?cijÄ?</string>
- <string name="error_installing_binares">Tor binÄ?rÄ?s datnes nebija iespÄ?jams ne instalÄ?t, ne jauninÄ?t.</string>
- <string name="pref_use_persistent_notifications">VienmÄ?r paturÄ?t ikonu rÄ«kjoslÄ?, kad Orbot ir savienots</string>
- <string name="pref_use_persistent_notifications_title">VienmÄ?r ieslÄ?gtie paziÅ?ojumi</string>
- <string name="pref_use_expanded_notifications">RÄ?dÄ«t paplaÅ¡inÄ?tus paziÅ?ojumus, kur norÄ?dÄ«ts IP un Tor izejas valsts</string>
- <string name="pref_use_expanded_notifications_title">PaplaÅ¡inÄ?ti paziÅ?ojumi</string>
- <string name="notification_using_bridges">Tilti ir iespÄ?joti!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Valoda</string>
- <string name="set_locale_summary">Iestatiet Orbot lokalizÄ?ciju un valodu</string>
- <string name="wizard_locale_title">IzvÄ?lÄ?ties valodu</string>
- <string name="wizard_locale_msg">AtstÄ?jiet noklusÄ?juma vÄ?rtÄ«bas, vai pÄ?rslÄ?dziet paÅ¡reizÄ?jo valodu.</string>
- <string name="powered_by">strÄ?dÄ? ar Tor</string>
- <string name="btn_save_settings">SaglabÄ?t iestatÄ«jumus</string>
- <string name="no_internet_connection_tor">Nav interneta savienojuma; Tor ir gaidstÄ?vÄ?...</string>
- <string name="bandwidth_">Joslas platums:</string>
- <string name="down">lejup</string>
- <string name="up">augšup</string>
- <string name="pref_disable_network_title">Neizmantot tÄ«kla automÄ?tiskÄ? miega režīmu</string>
- <string name="pref_disable_network_summary">Kad nav interneta, pÄ?rslÄ?gt Tor\'u uz miega režīmu</string>
- <string name="newnym">JÅ«s pÄ?rslÄ?dzÄ?ties uz jaunu Tor\'a identitÄ?ti!</string>
- <string name="menu_use_chatsecure">Lietot ChatSecure</string>
- <string name="permission_manage_tor_label">PÄ?rvaldÄ«t Tor\'u</string>
- <string name="permission_manage_tor_description">IespÄ?jot Å¡o lietotni kontrolÄ?t pakalpojumu Tor</string>
- <string name="install_apps_">Vai instalÄ?t lietotnes?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nav tīkla savienojuma. Tor\'am iestata miega režīmu...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Labs tÄ«kla savienojums. AktivizÄ? Tor\'u...</string>
- <string name="updating_settings_in_tor_service">atjaunina Tor pakalpojuma iestatījumus </string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ports, uz kura Tor piedÄ?vÄ? savu SOCKS starpniekserveri (noklusÄ?jumvÄ?rtÄ«ba: 9050 vai 0 lai atspÄ?jotu)</string>
- <string name="pref_socks_dialog">SOCKS Port Config</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Ports, uz kura Tor piedÄ?vÄ? savu Transparent starpniekserveri (noklusÄ?jumvÄ?rtÄ«ba: 9040 vai 0 lai atspÄ?jotu)</string>
- <string name="pref_transport_dialog">TransProxy Port Config</string>
- <string name="pref_dnsport_title">Tor DNS Ports</string>
- <string name="pref_dnsport_summary">Ports, uz kura Tor piedÄ?vÄ? savu DNS (noklusÄ?jumvÄ?rtÄ«ba: 5400 vai 0 lai atspÄ?jotu)</string>
- <string name="pref_dnsport_dialog">DNS Port konfigurÄ?Å¡ana</string>
- <string name="pref_torrc_title">Torrc pielÄ?gota konfigurÄ?Å¡ana</string>
- <string name="pref_torrc_summary">VIENĪGI EKSPERTIEM: tieÅ¡i ievadÄ«t torrc konfigurÄ?Å¡anas rindas</string>
- <string name="pref_torrc_dialog">PielÄ?got Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech\'a cilvÄ?ktiesÄ«bu dokumentÄ?cijas lietotne</string>
- <string name="your_tor_public_ips_">JÅ«su Tor publiskÄ?s IP:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">LÅ«dzu atspÄ?jojiet Å¡o lietotni Android->Settings->Apps , ja rodas ar Orbot saistÄ«tas problÄ?mas: </string>
- <string name="app_conflict">LietotÅ?u konflikts</string>
- <string name="pref_transproxy_refresh_title">PÄ?rredzamÄ? starpniekservera automÄ?tiska atsvaidzinÄ?Å¡ana</string>
- <string name="pref_transproxy_refresh_summary">Kad mainÄ?s tÄ«kla stÄ?voklis, atkÄ?rtoti lietot PÄ?rredzamÄ? starpniekserva kÄ?rtulas</string>
- <string name="pref_transproxy_flush_title">PÄ?rredzamÄ? starpniekservera PIESPIEDU NOÅ?EMÅ ANA</string>
- <string name="pref_transproxy_flush_summary">Pieskarties te, lai TŪLĪT iztÄ«rÄ«tu visas pÄ?rredzamÄ? starpniekservera tÄ«kla kÄ?rtulas</string>
- <string name="transparent_proxy_rules_flushed_">PÄ?rredzamÄ? starpniekservera kÄ?rtulas ir iztÄ«rÄ«tas!</string>
- <string name="you_do_not_have_root_access_enabled">SAKNES piekļuve nav iespÄ?jota</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Lai iestatÄ«jumu maiÅ?a tiktu iespÄ?jota, Jums var nÄ?kties apturÄ?t un startÄ?t Orbot.</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Tilti ir atjauninÄ?ti</string>
- <string name="restart_orbot_to_use_this_bridge_">LÅ«dzu pÄ?rstartÄ?jiet Orbot, lai iespÄ?jotu izmaiÅ?as</string>
- <string name="menu_qr">QR kodi</string>
- <string name="bridge_mode">Tiltu režīms</string>
- <string name="get_bridges_email">E-pasts</string>
- <string name="get_bridges_web">TÄ«meklis</string>
- <string name="activate">AktivizÄ?t</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">JÅ«s varat iespÄ?jot visas savas ierÄ«ces lietotnes strÄ?dÄ?t Tor tÄ«klÄ?, izmantojot Android VPN raksturiezÄ«mi.\n\n*BRĪDINÄ?JUMS* Å Ä« ir jauna, eksperimentÄ?la raksturiezÄ«me un dažos gadÄ«jumos tÄ? var nesÄ?kt darbu automÄ?tiski, bet citos tÄ? var pati pÄ?rtraukt darboties. To NEVAJAG izmantot anonimitÄ?tes nodroÅ¡inÄ?Å¡anai, bet to var izmantot VIENĪGI lai strÄ?dÄ?tu caur ugunsmÅ«riem un filtriem.</string>
- <string name="send_email">Nosūtīt e-pastu</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">JÅ«s varat saÅ?emt tiltu adreses e-pastÄ?, tÄ«meklÄ« vai skenÄ?jot tiltu QR kodu. ZemÄ?k atlasiet â??E-pastsâ?? vai â??TÄ«meklisâ??, lai pieprasÄ«tu tiltu adreses. Kad esat saÅ?Ä?mis adreses, tad tÄ?s iekopÄ?jiet un ielÄ«mÄ?jiet Orbot iestatÄ«jumu preferencÄ?s â??Tiltiâ?? un pÄ?rstartÄ?jiet.</string>
- <string name="standard_browser">Standarta pÄ?rlÅ«ks</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">PIEZĪME: Uz Intel X86/ATOM ierÄ«cÄ?m darbosies tikai standarta Tor tilti</string>
-</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
deleted file mode 100644
index 85f76a5..0000000
--- a/res/values-mk/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot е Ñ?лободна пÑ?окÑ?и апликаÑ?иÑ?а коÑ?а им овозможÑ?ва на дÑ?Ñ?гиÑ?е апликаÑ?ии да го коÑ?иÑ?Ñ?аÑ? инÑ?еÑ?неÑ?оÑ? побезбедно. Orbot коÑ?иÑ?Ñ?и Tor за Ñ?иÑ?Ñ?иÑ?аÑ?е на инÑ?еÑ?неÑ?-Ñ?ообÑ?аÑ?аÑ?оÑ?, а поÑ?оа го Ñ?окÑ?ива и го доÑ?Ñ?авÑ?ва пÑ?екÑ? неколкÑ? компÑ?Ñ?Ñ?еÑ?и во Ñ?елиоÑ? Ñ?веÑ?. Tor е Ñ?лободен Ñ?оÑ?Ñ?веÑ? и оÑ?воÑ?ена мÑ?ежа коÑ?а Ñ?е Ñ?пÑ?авÑ?ва Ñ?о вид надзоÑ? на мÑ?ежаÑ?а коÑ?а Ñ?Ñ?еÑ?и на лиÑ?наÑ?а Ñ?лобода и пÑ?иваÑ?ноÑ?Ñ?а, довеÑ?ливи деловни акÑ?ивноÑ?Ñ?и и одноÑ?и, и дÑ?жавнаÑ?а безбедноÑ?Ñ? познаÑ?а како анализа на Ñ?ообÑ?аÑ?аÑ?оÑ?.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Ñ?Ñ?аÑ?Ñ?Ñ?ваÑ? и Ñ?Ñ?опиÑ?аÑ? Ñ?а Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Ð?Ñ?боÑ? Ñ?е Ñ?Ñ?аÑ?Ñ?Ñ?ва...</string>
- <string name="status_activated">Ð?овÑ?зан на мÑ?ежаÑ?а на Tor</string>
- <string name="status_disabled">Ð?Ñ?боÑ? е деакÑ?ивиÑ?ан</string>
- <string name="tor_process_starting">СÑ?аÑ?Ñ?Ñ?ваÑ?е на клиенÑ?оÑ? на Tor...</string>
- <string name="tor_process_complete">завÑ?Ñ?ено.</string>
- <string name="tor_process_waiting">Ñ?екаÑ?е.</string>
- <string name="not_anonymous_yet">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: Ð?аÑ?иоÑ? Ñ?ообÑ?аÑ?аÑ? Ñ?è Ñ?Ñ?Ñ?е не е анонимен! Ð?оÑ?Ñ?ебно е да ги конÑ?игÑ?Ñ?иÑ?аÑ?е Ð?аÑ?иÑ?е апликаÑ?ии за да го коÑ?иÑ?Ñ?аÑ? пÑ?окÑ?иÑ?о за HTTP, 127.0.0.1:8118, или пÑ?окÑ?иÑ?о за SOCKS4A или SOCKS5, 127.0.0.1:9050</string>
- <string name="menu_home">Ð?ома</string>
- <string name="menu_browse">Ð?Ñ?елиÑ?Ñ?Ñ?ваÑ?е</string>
- <string name="menu_settings">Ð?оÑ?Ñ?авки</string>
- <string name="menu_log">Ð?невник</string>
- <string name="menu_info">Ð?омоÑ?</string>
- <string name="menu_start">СÑ?аÑ?Ñ?Ñ?ваÑ?</string>
- <string name="menu_stop">СÑ?опиÑ?аÑ?</string>
- <string name="menu_about">Ð?а</string>
- <string name="main_layout_download">Ð?Ñ?еземи</string>
- <string name="main_layout_upload">Ð?Ñ?икаÑ?и</string>
- <string name="button_help">Ð?омоÑ?</string>
- <string name="button_close">Ð?аÑ?воÑ?и</string>
- <string name="button_about">Ð?а</string>
- <string name="button_clear_log">Ð?збÑ?иÑ?и дневник</string>
- <string name="menu_verify">Ð?Ñ?овеÑ?и</string>
- <string name="menu_exit">Ð?злез</string>
- <string name="menu_scan">СкениÑ?аÑ? BridgeQR</string>
- <string name="menu_share_bridge">Сподели BridgeQR</string>
- <string name="press_to_start">- пÑ?иÑ?Ñ?иÑ?ни подолго за Ñ?Ñ?аÑ?Ñ? -</string>
- <string name="pref_trans_proxy_group">ТÑ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е (баÑ?а root пÑ?иÑ?Ñ?ап)</string>
- <string name="pref_trans_proxy_title">ТÑ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="pref_trans_proxy_summary">Ð?вÑ?омаÑ?Ñ?ко Ñ?оÑ?иÑ?иÑ?иÑ?аÑ?е на апликаÑ?ииÑ?е</string>
- <string name="pref_transparent_all_title">ЦелоÑ?но Ñ?оÑ?иÑ?иÑ?иÑ?аÑ?е</string>
- <string name="pref_transparent_all_summary">Ð?Ñ?окÑ?иÑ?аÑ? го Ñ?ообÑ?аÑ?аÑ?оÑ? на Ñ?иÑ?е апликаÑ?ии пÑ?екÑ? Tor</string>
- <string name="pref_transparent_port_fallback_title">РезеÑ?вна поÑ?Ñ?а за пÑ?окÑ?и</string>
- <string name="pref_transparent_port_fallback_summary">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: Ð?збегни ги Ñ?еÑ?Ñ?о коÑ?иÑ?Ñ?ениÑ?е поÑ?Ñ?и (80, 443, иÑ?н). *USE ONLY* ако Ñ?ежимиÑ?е \'All\' или \'App\' не Ñ?абоÑ?аÑ?.</string>
- <string name="pref_transparent_port_title">Ð?иÑ?Ñ?а на поÑ?Ñ?и</string>
- <string name="pref_transparent_port_summary">Ð?иÑ?Ñ?а на поÑ?Ñ?и за пÑ?окÑ?и. *USE ONLY* ако Ñ?ежимиÑ?е \'All\' или \'App\' не Ñ?абоÑ?аÑ?.</string>
- <string name="pref_transparent_port_dialog">Ð?неÑ?еÑ?е поÑ?Ñ?и за пÑ?окÑ?и</string>
- <string name="pref_has_root">Ð?аÑ?аÑ?е за пÑ?иÑ?Ñ?ап до root</string>
- <string name="pref_has_root_summary">Ð?аÑ?аÑ?е за пÑ?иÑ?Ñ?ап до root за Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="status_install_success">Ð?звÑ?Ñ?ниÑ?е пÑ?огÑ?ами за Tor Ñ?е Ñ?Ñ?пеÑ?но инÑ?Ñ?алиÑ?ани!</string>
- <string name="status_install_fail">Ð?звÑ?Ñ?ниÑ?е Ñ?аÑ?лови на Tor не можаÑ? да Ñ?е инÑ?Ñ?алиÑ?ааÑ?. Ð?Ñ?овеÑ?еÑ?е во дневникоÑ? и извеÑ?Ñ?еÑ?е нè на tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ð?пликаÑ?иÑ?ка гÑ?еÑ?ка</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Ð?а Ð?Ñ?боÑ?</string>
- <string name="btn_next">Следно</string>
- <string name="btn_back">Ð?азад</string>
- <string name="btn_finish">Ð?Ñ?аÑ?</string>
- <string name="btn_okay">Ð?о Ñ?ед</string>
- <string name="btn_cancel">Ð?Ñ?кажи</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ð?еколкÑ? деÑ?али за Ð?Ñ?боÑ?</string>
- <string name="wizard_details_msg">Orbot е апликаÑ?иÑ?а Ñ?о оÑ?воÑ?ен код коÑ?а ги Ñ?одÑ?жи Tor, LibEvent и Polipo. Ð?безбедÑ?ва локален HTTP пÑ?окÑ?и (8118) и SOCKS пÑ?окÑ?и (9050) во мÑ?ежаÑ?а на Tor. Orbot, иÑ?Ñ?о Ñ?ака, има опÑ?иÑ?а каÑ? оÑ?новниоÑ? Ñ?Ñ?ед да го иÑ?пÑ?аÑ?а Ñ?елиоÑ? инÑ?еÑ?неÑ?-Ñ?ообÑ?аÑ?аÑ? пÑ?екÑ? Tor.</string>
- <string name="wizard_permissions_root">Ð?озволаÑ?а е издадена</string>
- <string name="wizard_permissions_stock">Ð?озволи на Orbot</string>
- <string name="wizard_premissions_msg_root">Ð?длиÑ?но! Ð?Ñ?кÑ?ивме дека овозможивÑ?е root пÑ?иÑ?Ñ?ап за Orbot. Ð?нимаÑ?елно Ñ?е Ñ?а коÑ?иÑ?Ñ?име оваа опÑ?иÑ?а.</string>
- <string name="wizard_permissions_msg_stock">Ð?ако не е задолжиÑ?елно, Orbot може да Ñ?Ñ?ане помоÑ?на алаÑ?ка доколкÑ? ваÑ?иоÑ? Ñ?Ñ?ед има root пÑ?иÑ?Ñ?ап. Со копÑ?еÑ?о подолÑ? Orbot може да добие Ñ?Ñ?пеÑ?-моÑ?.</string>
- <string name="wizard_permissions_no_root">Ð?ко немаÑ?е root пÑ?иÑ?Ñ?ап или ако не Ñ?азбиÑ?аÑ?е за Ñ?Ñ?о збоÑ?Ñ?ваме, оÑ?игÑ?Ñ?аÑ?Ñ?е Ñ?е дека коÑ?иÑ?Ñ?иÑ?е апликаÑ?ии кои Ñ?Ñ?о Ñ?абоÑ?аÑ? Ñ?о Orbot.</string>
- <string name="wizard_permissions_consent">РазбиÑ?ам и Ñ?акам да пÑ?одолжам без админиÑ?Ñ?Ñ?аÑ?оÑ?Ñ?ки пÑ?ивилегии</string>
- <string name="wizard_permission_enable_root">Ð?одели root за Orbot</string>
- <string name="wizard_configure">Ð?онÑ?игÑ?Ñ?аÑ?иÑ?а на Ñ?оÑ?иÑ?иÑ?иÑ?аÑ?еÑ?о</string>
- <string name="wizard_configure_msg">Orbot пÑ?екÑ? Tor овозможÑ?ва да Ñ?е Ñ?Ñ?Ñ?иÑ?а Ñ?елиоÑ? Ñ?ообÑ?аÑ?аÑ? на Ñ?иÑ?е апликаÑ?ии или на Ñ?екоÑ?а апликаÑ?иÑ?а одделно.</string>
- <string name="wizard_configure_all">Ð?Ñ?окÑ?иÑ?аÑ? ги Ñ?иÑ?е апликаÑ?ии пÑ?екÑ? Tor</string>
- <string name="wizard_configure_select_apps">Ð?збеÑ?и поÑ?ебни апликаÑ?ии за Tor</string>
- <string name="wizard_tips_tricks">Ð?пликаÑ?ии кои го поддÑ?жÑ?вааÑ? Orbot</string>
- <string name="wizard_tips_msg">Ð?пликаÑ?ииÑ?е подолÑ? Ñ?е кÑ?еиÑ?ани да Ñ?абоÑ?аÑ? Ñ?о Orbot. Ð?Ñ?иÑ?иÑ?ни го Ñ?екое копÑ?е за инÑ?Ñ?алаÑ?иÑ?а или може да Ñ?е наÑ?даÑ? на Google Play, на веб-локаÑ?иÑ?аÑ?а GuardianProject.info или пÑ?екÑ? F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Ð?езбедноÑ?ен инÑ?Ñ?анÑ? клиенÑ? за Ñ?азговоÑ? за Android</string>
- <string name="wizard_tips_proxy">Ð?оÑ?Ñ?авки за пÑ?окÑ?и - Ð?ознаÑ? како да Ñ?е конÑ?игÑ?Ñ?иÑ?ааÑ? апликаÑ?ииÑ?е да Ñ?абоÑ?аÑ? Ñ?о Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo апликаÑ?иÑ?а за пÑ?ебаÑ?Ñ?ваÑ?е</string>
- <string name="wizard_tips_twitter">Ð?одеÑ?еÑ?е Twitter пÑ?окÑ?и на компÑ?Ñ?Ñ?еÑ?оÑ? \"localhost\" и поÑ?Ñ?а 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Ð?апÑ?ави пÑ?иказна и оÑ?Ñ?ави Ñ?а неÑ?зинаÑ?а безбедноÑ?Ñ? на Tor!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ð?оÑ?Ñ?авки за пÑ?окÑ?и</string>
- <string name="wizard_proxy_help_msg">Ð?околкÑ? Android апликаÑ?иÑ?аÑ?а Ñ?Ñ?о Ñ?е коÑ?иÑ?Ñ?и поддÑ?жÑ?ва HTTP или SOCKS пÑ?окÑ?и, Ñ?огаÑ? може да Ñ?е конÑ?игÑ?Ñ?иÑ?а да Ñ?е повÑ?зе Ñ?о Orbot и да коÑ?иÑ?Ñ?и Tor.\n\n\n Ð?оÑ?Ñ?авкиÑ?е за компÑ?Ñ?Ñ?еÑ?оÑ? Ñ?е 127.0.0.1 или \"localhost\". Ð?а HTTP подеÑ?Ñ?ваÑ?аÑ?а на поÑ?Ñ?а Ñ?е 8118. Ð?а SOCKS пÑ?окÑ?иÑ?о е 9050. Ð?околкÑ? е возможно Ñ?Ñ?еба да Ñ?е коÑ?иÑ?Ñ?и SOCKS4A или SOCKS5.\n \n\n\n Ð?оже да дознаеÑ?е повеÑ?е за пÑ?окÑ?иÑ?аÑ?е на Android пÑ?екÑ? ЧÐ?Ð? на: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Orbot е Ñ?пÑ?емен!</string>
- <string name="wizard_final_msg">Ð?илиони лÑ?Ñ?е низ Ñ?елиоÑ? Ñ?веÑ? го коÑ?иÑ?Ñ?аÑ? Tor за Ñ?азлиÑ?ни пÑ?иÑ?ини.\n\nÐ?овинаÑ?и и блогеÑ?и, боÑ?Ñ?и за Ñ?овекови пÑ?ава, адвокаÑ?и, воÑ?ниÑ?и, коÑ?поÑ?аÑ?ии, гÑ?аÑ?аниÑ?е на Ñ?епÑ?еÑ?ивниÑ?е Ñ?ежими и обиÑ?ниÑ?е гÑ?аÑ?ани ... а од Ñ?ега и вие!</string>
- <string name="wizard_exit_at_first_screen_toast">Ð?е молиме конÑ?игÑ?Ñ?иÑ?аÑ?Ñ?е го Ð?Ñ?боÑ? пÑ?ед да запоÑ?неÑ?е да го коÑ?иÑ?Ñ?иÑ?е!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Ð?ва Ñ?е Ñ?а оÑ?воÑ?и Ñ?Ñ?Ñ?аниÑ?аÑ?а https://check.torproject.org во Ð?аÑ?иоÑ? веб-пÑ?елиÑ?Ñ?Ñ?ваÑ? за да видеÑ?е дали Orbot е пÑ?авилно конÑ?игÑ?Ñ?иÑ?ан и дали Ñ?Ñ?е повÑ?зани на ТоÑ?.</string>
- <string name="pref_hs_group">СкÑ?иени Ñ?еÑ?виÑ?и за Ñ?оÑ?Ñ?иÑ?аÑ?е</string>
- <string name="pref_general_group">Ð?пÑ?Ñ?о</string>
- <string name="pref_start_boot_title">СÑ?аÑ?Ñ?Ñ?ваÑ? го Orbot за бÑ?Ñ?иÑ?аÑ?е</string>
- <string name="pref_start_boot_summary">Ð?вÑ?омаÑ?Ñ?ки Ñ?Ñ?аÑ?Ñ?Ñ?ваÑ? го Orbot и повÑ?зи го Tor кога Ñ?воÑ?оÑ? Android Ñ?Ñ?ед Ñ?е Ñ?Ñ?аÑ?Ñ?Ñ?ва</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot го овозможÑ?ва Tor за Android!\n\nTor помага пÑ?оÑ?ив Ñ?илÑ?Ñ?иÑ?аÑ?е на Ñ?одÑ?жинаÑ?а, анализа на Ñ?ообÑ?аÑ?аÑ?оÑ? и надзоÑ? на мÑ?ежаÑ?а кои Ñ?Ñ?еÑ?аÑ? на пÑ?иваÑ?ноÑ?Ñ?а, довеÑ?ливи инÑ?омаÑ?ии и лиÑ?ни одноÑ?и.\n\nÐ?воÑ? волÑ?ебник помага за конÑ?игÑ?Ñ?аÑ?иÑ?а на Orbot и Tor на ваÑ?иоÑ? Ñ?Ñ?ед.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ð?нимание</string>
- <string name="wizard_warning_msg">Само инÑ?Ñ?алиÑ?аÑ?е на Orbot нема авÑ?омаÑ?Ñ?ки да го анонимизиÑ?а ваÑ?иоÑ? мобилен Ñ?ообÑ?аÑ?аÑ?.\n\nÐ?оÑ?аÑ?е пÑ?авилно да ги конÑ?игÑ?Ñ?иÑ?аÑ?е Orbot, ваÑ?иоÑ? Ñ?Ñ?едоÑ? и дÑ?Ñ?ги апликаÑ?ии, за да Ñ?Ñ?пеÑ?но го коÑ?иÑ?Ñ?иÑ?е Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ð?озволи</string>
- <string name="wizard_permissions_root_msg1">Ð?пÑ?ионално може да Ñ?е добие админиÑ?Ñ?Ñ?аÑ?оÑ?Ñ?ки пÑ?иÑ?Ñ?ап за Orbot коÑ? овозможÑ?ва напÑ?едни Ñ?Ñ?нкÑ?ии, како Ñ?Ñ?о е Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е.</string>
- <string name="wizard_permissions_root_msg2">Ð?околкÑ? не Ñ?акаÑ?е да го напÑ?авиÑ?е ова, оÑ?игÑ?Ñ?аÑ?Ñ?е Ñ?е дека ваÑ?иÑ?е апликаÑ?ии Ñ?абоÑ?аÑ? Ñ?о Orbot</string>
- <string name="wizard_permissions_no_root_msg">Ð?аÑ?иоÑ? Ñ?Ñ?ед не е оÑ?новен или не дозволÑ?ва пÑ?иÑ?Ñ?ап до оÑ?новен Ñ?Ñ?ед или админиÑ?Ñ?Ñ?аÑ?оÑ?Ñ?ки пÑ?иÑ?Ñ?ап.\n\nÐ?Ñ?обаÑ?Ñ?е го Ñ?ежимоÑ? \'Ð?пликаÑ?ии\' на главниоÑ? екÑ?ан.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Ð?пликаÑ?ии кои го поддÑ?жÑ?вааÑ? Orbot</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Ð?езбедноÑ?на апликаÑ?иÑ?а за Ñ?азговоÑ? Ñ?о енкÑ?ипÑ?иÑ?а \'Off-the-Record\' </string>
- <string name="wizard_tips_play">Ð?аÑ?ди ги Ñ?иÑ?е Guardian Project апликаÑ?ии на Google Play</string>
- <string name="wizard_tips_fdroid">Ð?аÑ?ди ги Ñ?иÑ?е Guardian Project апликаÑ?ии на F-Droid</string>
- <string name="wizard_tips_fdroid_org">Ð?аÑ?ди ги Ñ?иÑ?е Guardian Project апликаÑ?ии на https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">ТÑ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="wizard_transproxy_msg">Ð?ва овозможÑ?ва ваÑ?иÑ?е апликаÑ?ии авÑ?омаÑ?Ñ?ки да Ñ?е Ñ?Ñ?аÑ?Ñ?Ñ?вааÑ? пÑ?екÑ? мÑ?ежаÑ?а Tor без конÑ?игÑ?Ñ?аÑ?иÑ?а.</string>
- <string name="wizard_transproxy_hint">(СелекÑ?иÑ?аÑ?Ñ?е го ова поле ако не Ñ?азбиÑ?аÑ?е за Ñ?Ñ?о збоÑ?Ñ?ваме)</string>
- <string name="wizard_transproxy_none">Ð?иÑ?Ñ?о</string>
- <string name="pref_transparent_tethering_title">Tor повÑ?зÑ?ваÑ?е</string>
- <string name="pref_transparent_tethering_summary">Ð?возможи Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е на Tor за Ñ?Ñ?еди повÑ?зани пÑ?екÑ? Wifi и USB (баÑ?а Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?аÑ?е)</string>
- <string name="button_grant_superuser">Ð?аÑ?аÑ?е за пÑ?иÑ?Ñ?ап до админиÑ?Ñ?Ñ?аÑ?оÑ? на Ñ?иÑ?Ñ?емоÑ?</string>
- <string name="pref_select_apps">Ð?збеÑ?еÑ?е апликаÑ?ии</string>
- <string name="pref_select_apps_summary">Ð?дбеÑ?и апликаÑ?ии кои Ñ?е Ñ?е повÑ?зÑ?вааÑ? пÑ?екÑ? ТоÑ?</string>
- <string name="pref_node_configuration">Ð?онÑ?игÑ?Ñ?аÑ?иÑ?а на Ñ?азол</string>
- <string name="pref_node_configuration_summary">Ð?ва Ñ?е напÑ?едниÑ?е поÑ?Ñ?авÑ?ваÑ?а кои можаÑ? да Ñ?а намалаÑ? ваÑ?аÑ?а анонимноÑ?Ñ?</string>
- <string name="pref_entrance_node">Ð?лезни Ñ?азли</string>
- <string name="pref_entrance_node_summary">Ð?Ñ?пеÑ?аÑ?оÑ?и од пÑ?Ñ?Ñ?и, пÑ?екаÑ?и, земÑ?и и адÑ?еÑ?и за пÑ?виоÑ? Ñ?кок.</string>
- <string name="pref_entrance_node_dialog">Ð?неÑ?еÑ?е влезни Ñ?азли</string>
- <string name="button_proxy_all">Се за пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="button_proxy_none">Ð?иÑ?Ñ?о за пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="button_invert_selection">Ð?Ñ?евÑ?Ñ?и го избоÑ?оÑ?</string>
- <string name="pref_proxy_title">Ð?злезен пÑ?окÑ?и на мÑ?ежаÑ?а (незадолжиÑ?елно)</string>
- <string name="pref_proxy_type_title">Тип на излезен пÑ?окÑ?и</string>
- <string name="pref_proxy_type_summary">Ð?Ñ?оÑ?окол за коÑ?иÑ?Ñ?еÑ?е на пÑ?окÑ?и-Ñ?еÑ?веÑ?: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ð?неÑ?еÑ?е го Ñ?ипоÑ? на пÑ?оÑ?ки</string>
- <string name="pref_proxy_host_title">Ð?злезен домаÑ?ин на пÑ?окÑ?и</string>
- <string name="pref_proxy_host_summary">Ð?ме на домаÑ?ин на Ñ?еÑ?веÑ?оÑ? на пÑ?окÑ?и</string>
- <string name="pref_proxy_host_dialog">Ð?неÑ?еÑ?е домаÑ?ин на пÑ?окÑ?и</string>
- <string name="pref_proxy_port_title">Ð?злезна поÑ?Ñ?а на пÑ?окÑ?и</string>
- <string name="pref_proxy_port_summary">Ð?оÑ?Ñ?а на Ñ?еÑ?веÑ?оÑ? на пÑ?окÑ?и</string>
- <string name="pref_proxy_port_dialog">Ð?неÑ?еÑ?е поÑ?Ñ?а на пÑ?окÑ?и</string>
- <string name="pref_proxy_username_title">KоÑ?иÑ?ниÑ?ко име на излезен пÑ?окÑ?и</string>
- <string name="pref_proxy_username_summary">Ð?оÑ?иÑ?ниÑ?ко име на пÑ?окÑ?и (незадолжиÑ?елно)</string>
- <string name="pref_proxy_username_dialog">Ð?неÑ?еÑ?е коÑ?иÑ?ниÑ?ко име на пÑ?окÑ?и</string>
- <string name="pref_proxy_password_title">Ð?озинка на излезен пÑ?окÑ?и</string>
- <string name="pref_proxy_password_summary">Ð?озинка на пÑ?окÑ?и (незадолжиÑ?елно)</string>
- <string name="pref_proxy_password_dialog">Ð?неÑ?еÑ?е лозинка на пÑ?окÑ?и</string>
- <string name="status">СÑ?аÑ?Ñ?Ñ?</string>
- <string name="setting_up_full_transparent_proxying_">Ð?оÑ?Ñ?авÑ?ваÑ?е на Ñ?елоÑ?но Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ð?оÑ?Ñ?авÑ?ваÑ?е Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е базиÑ?ано на апликаÑ?иÑ?а...</string>
- <string name="transparent_proxying_enabled">TÑ?анÑ?паÑ?енÑ?ноÑ?о пÑ?окÑ?иÑ?аÑ?е е Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy е овозможен за повÑ?зÑ?ваÑ?е!</string>
- <string name="warning_error_starting_transparent_proxying_">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: Ð?Ñ?еÑ?ка пÑ?и Ñ?Ñ?аÑ?Ñ?Ñ?ваÑ?е на Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е!</string>
- <string name="transproxy_rules_cleared">Ð?збÑ?иÑ?ани пÑ?авила за TransProxy </string>
- <string name="couldn_t_start_tor_process_">Ð?е може да Ñ?е запоÑ?не Tor-пÑ?оÑ?еÑ?оÑ?:</string>
- <string name="privoxy_is_running_on_port_">Polipo Ñ?абоÑ?и на поÑ?Ñ?а: </string>
- <string name="setting_up_port_based_transparent_proxying_">Ð?оÑ?Ñ?авÑ?ваÑ?е на Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е базиÑ?ано на поÑ?Ñ?а...</string>
- <string name="bridge_error">Ð?Ñ?еÑ?ка во моÑ?Ñ?оÑ?</string>
- <string name="bridge_requires_ip">Ð?а да Ñ?а коÑ?иÑ?Ñ?иÑ?е Ñ?Ñ?нкÑ?иÑ?аÑ?а на моÑ?Ñ?оÑ?, моÑ?аÑ?е да внеÑ?еÑ?е баÑ?ем една Ð?Ð?-адÑ?еÑ?а на моÑ?Ñ?.</string>
- <string name="send_email_for_bridges">Ð?Ñ?пÑ?аÑ?еÑ?е е-поÑ?Ñ?а од ваÑ?аÑ?а gmail Ñ?меÑ?ка на bridges@xxxxxxxxxxxxxx Ñ?о Ñ?одÑ?жина \"get bridges\".</string>
- <string name="error">Ð?Ñ?еÑ?ка</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ð?аÑ?иÑ?е поÑ?Ñ?авки за доÑ?Ñ?апниÑ?е адÑ?еÑ?и пÑ?едизвикаа гÑ?еÑ?ка!</string>
- <string name="your_relay_settings_caused_an_exception_">Ð?аÑ?иÑ?е поÑ?Ñ?авки за Ñ?еле пÑ?едизвикаа гÑ?еÑ?ка!</string>
- <string name="exit_nodes">Ð?злезни Ñ?азли</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ð?Ñ?пеÑ?аÑ?оÑ?и од пÑ?Ñ?Ñ?и, пÑ?екаÑ?и, земÑ?и и адÑ?еÑ?и за поÑ?ледниоÑ? Ñ?кок.</string>
- <string name="enter_exit_nodes">Ð?неÑ?еÑ?е излезни Ñ?азли</string>
- <string name="exclude_nodes">Ð?Ñ?клÑ?Ñ?и Ñ?азли</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ð?Ñ?пеÑ?аÑ?оÑ?и од пÑ?Ñ?Ñ?и, пÑ?екаÑ?и, земÑ?и и адÑ?еÑ?и кои Ñ?Ñ?еба да Ñ?е иÑ?клÑ?Ñ?аÑ?</string>
- <string name="enter_exclude_nodes">Ð?неÑ?еÑ?е ги Ñ?азлиÑ?е кои Ñ?Ñ?еба да Ñ?е иÑ?клÑ?Ñ?аÑ?</string>
- <string name="strict_nodes">Ð?адолжиÑ?елни Ñ?азли</string>
- <string name="use_only_these_specified_nodes">Ð?оÑ?иÑ?Ñ?еÑ?е ги *Ñ?амо* овие наведени Ñ?азли</string>
- <string name="bridges">Ð?оÑ?Ñ?ови</string>
- <string name="use_bridges">Ð?оÑ?иÑ?Ñ?и моÑ?Ñ?ови</string>
- <string name="bridges_obfuscated">СкÑ?иени моÑ?Ñ?ови</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ð?возможи алÑ?еÑ?наÑ?ивни влезни Ñ?азли во мÑ?ежаÑ?а Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ð?возможи, ако моÑ?Ñ?овиÑ?е Ñ?е Ñ?кÑ?иени моÑ?Ñ?ови</string>
- <string name="ip_address_and_port_of_bridges">Ð?Ð?-адÑ?еÑ?а и поÑ?Ñ?а на моÑ?Ñ?овиÑ?е</string>
- <string name="enter_bridge_addresses">Ð?неÑ?еÑ?е адÑ?еÑ?и на моÑ?Ñ?овиÑ?е</string>
- <string name="relays">Релеа</string>
- <string name="relaying">Ð?Ñ?енеÑ?Ñ?ваÑ?е</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Ð?возможи го Ñ?Ñ?едоÑ? да биде Ñ?еле без излез </string>
- <string name="relay_port">Ð?оÑ?Ñ?а на Ñ?еле</string>
- <string name="listening_port_for_your_tor_relay">Ð?оÑ?Ñ?а за Ñ?лÑ?Ñ?аÑ?е на ваÑ?иоÑ? Ñ?еле на Tor</string>
- <string name="enter_or_port">Ð?неÑ?еÑ?е OR поÑ?Ñ?а</string>
- <string name="relay_nickname">Ð?азив на Ñ?елеÑ?о</string>
- <string name="the_nickname_for_your_tor_relay">Ð?азив на ваÑ?еÑ?о Ñ?еле за Tor</string>
- <string name="enter_a_custom_relay_nickname">Ð?неÑ?еÑ?е пÑ?оизволно име за Ñ?елеÑ?о</string>
- <string name="reachable_addresses">Ð?оÑ?Ñ?апни адÑ?еÑ?и</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">СÑ?аÑ?Ñ?Ñ?ваÑ?Ñ?е го како клиенÑ? зад безбедноÑ?ен Ñ?ид Ñ?о огÑ?аниÑ?ени полиÑ?и</string>
- <string name="reachable_ports">Ð?оÑ?Ñ?апни поÑ?Ñ?и</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ð?оÑ?Ñ?и доÑ?Ñ?апни зад Ñ?еÑ?Ñ?Ñ?екÑ?ивен заÑ?Ñ?иÑ?ен Ñ?ид(firewall)</string>
- <string name="enter_ports">Ð?неÑ?еÑ?е поÑ?Ñ?и</string>
- <string name="enable_hidden_services">СкÑ?иени Ñ?еÑ?виÑ?и за Ñ?оÑ?Ñ?иÑ?аÑ?е</string>
- <string name="run_servers_accessible_via_the_tor_network"> Ð?возможи on-device Ñ?еÑ?веÑ?оÑ? да Ñ?е пÑ?иÑ?Ñ?апи пÑ?екÑ? мÑ?ежаÑ?а на Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">Ð?неÑ?и ги поÑ?Ñ?иÑ?е за localhost за Ñ?кÑ?иени Ñ?еÑ?виÑ?и </string>
- <string name="hidden_service_ports">Ð?оÑ?Ñ?и на Ñ?кÑ?иени Ñ?еÑ?виÑ?и</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ð?оÑ?Ñ?апно име за ваÑ?иоÑ? Ñ?кÑ?иен Ñ?еÑ?виÑ? (Ñ?е генеÑ?иÑ?а авÑ?омаÑ?Ñ?ки)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ð?кÑ?ивиÑ?аÑ? го дневникоÑ? за оÑ?Ñ?Ñ?Ñ?анÑ?ваÑ?е гÑ?еÑ?ки за излез (за да Ñ?е пÑ?икаже моÑ?а да Ñ?е коÑ?иÑ?Ñ?и adb или aLogCat)</string>
- <string name="project_home">Ð?оÑ?еÑ?на Ñ?Ñ?Ñ?аниÑ?а:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Ð?иÑ?енÑ?а за Tor </string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">СоÑ?Ñ?веÑ? од дÑ?Ñ?г пÑ?оизводиÑ?ел:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Ð?пликаÑ?иÑ?а Ñ?ака да оÑ?воÑ?и Ñ?кÑ?иена поÑ?Ñ?а на Ñ?еÑ?веÑ?оÑ? %S на мÑ?ежаÑ?а на Tor. Ð?ва е безбедно, ако и\' веÑ?Ñ?ваÑ? на апликаÑ?иÑ?аÑ?а.</string>
- <string name="found_existing_tor_process">Ð?Ñ?онаÑ?ден поÑ?Ñ?оеÑ?ки Tor-пÑ?оÑ?еÑ? ...</string>
- <string name="something_bad_happened">Ð?аÑ?Ñ?ана гÑ?еÑ?ка. Ð?Ñ?овеÑ?еÑ?е во дневникоÑ?</string>
- <string name="hidden_service_on">Ð?клÑ?Ñ?ен е Ñ?кÑ?иениоÑ? Ñ?еÑ?виÑ?:</string>
- <string name="unable_to_read_hidden_service_name">не може да Ñ?е пÑ?оÑ?иÑ?а имеÑ?о на Ñ?кÑ?иениоÑ? Ñ?еÑ?виÑ?</string>
- <string name="unable_to_start_tor">Tor не може да Ñ?е Ñ?Ñ?аÑ?Ñ?Ñ?ва:</string>
- <string name="unable_to_reset_tor">РеÑ?Ñ?аÑ?Ñ?иÑ?аÑ?Ñ?е го ваÑ?иоÑ? Ñ?Ñ?ед, Tor не може да Ñ?е Ñ?еÑ?еÑ?иÑ?а! </string>
- <string name="pref_use_sys_iptables_title">Ð?оÑ?иÑ?Ñ?и Ñ?Ñ?андаÑ?ден Iptables</string>
- <string name="pref_use_sys_iptables_summary">Ð?оÑ?иÑ?Ñ?и ги вгÑ?адениÑ?е бинаÑ?ни Ð?Ð? Ñ?абели намеÑ?Ñ?о Ñ?аа Ñ?Ñ?о оди Ñ?о Orbot</string>
- <string name="error_installing_binares">Ð?звÑ?Ñ?ниÑ?е даÑ?оÑ?еки на Tor не можаÑ? да Ñ?е инÑ?Ñ?алиÑ?ааÑ? или надгÑ?адаÑ?</string>
- <string name="pref_use_persistent_notifications">СекогаÑ? Ñ?Ñ?ваÑ?Ñ?е ja иконаÑ?а во ленÑ?аÑ?а Ñ?о алаÑ?ки кога Orbot е повÑ?зан</string>
- <string name="pref_use_persistent_notifications_title">Ð?звеÑ?Ñ?Ñ?ваÑ?а Ñ?екогаÑ? вклÑ?Ñ?ени</string>
- <string name="pref_use_expanded_notifications">Ð?Ñ?икажи пÑ?оÑ?иÑ?ено извеÑ?Ñ?Ñ?ваÑ?е Ñ?о излезнаÑ?а земÑ?а и Ð?Ð? на Tor</string>
- <string name="pref_use_expanded_notifications_title">Ð?Ñ?оÑ?иÑ?и извеÑ?Ñ?Ñ?ваÑ?а</string>
- <string name="notification_using_bridges">Ð?клÑ?Ñ?ени моÑ?Ñ?ови!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Ð?азик</string>
- <string name="set_locale_summary">Ð?збеÑ?и локални поÑ?Ñ?авки и Ñ?азик за Orbot</string>
- <string name="wizard_locale_title">Ð?збеÑ?и Ñ?азик</string>
- <string name="wizard_locale_msg">Ð?Ñ?Ñ?ави го Ñ?Ñ?андаÑ?дниоÑ? или пÑ?омени го поÑ?Ñ?оеÑ?киоÑ? Ñ?азик</string>
- <string name="powered_by">Ð?возможено од Tor</string>
- <string name="btn_save_settings">СоÑ?Ñ?ваÑ? поÑ?Ñ?авки</string>
- <string name="no_internet_connection_tor">Ð?ема инÑ?еÑ?неÑ?-вÑ?Ñ?ка; Tor е во миÑ?Ñ?ваÑ?е...</string>
- <string name="bandwidth_">Ð?Ñ?оÑ?ок:</string>
- <string name="down">долÑ?</string>
- <string name="up">гоÑ?е</string>
- <string name="pref_disable_network_title">Ð?ема Auto-Sleep на мÑ?ежаÑ?а</string>
- <string name="pref_disable_network_summary">СÑ?ави го ТоÑ? на sleep кога инÑ?еÑ?неÑ?оÑ? не е доÑ?Ñ?апен</string>
- <string name="newnym">Се пÑ?еÑ?Ñ?ливÑ?е на нов иденÑ?иÑ?еÑ? на Tor!</string>
- <string name="menu_use_chatsecure">Ð?оÑ?иÑ?Ñ?и ChatSecure</string>
- <string name="permission_manage_tor_label">УпÑ?авÑ?ваÑ? Ñ?о Tor</string>
- <string name="permission_manage_tor_description">Ð?озволи оваа апликаÑ?иÑ?а да го Ñ?пÑ?авÑ?ва Ñ?о Ñ?еÑ?виÑ?оÑ? на Tor</string>
- <string name="install_apps_">Ð?нÑ?Ñ?алиÑ?аÑ? апликаÑ?ии?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ð?ема мÑ?ежно повÑ?зÑ?ваÑ?е. СÑ?авеÑ?е го ТоÑ? на Ñ?ежимоÑ? на Ñ?пиеÑ?е...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Ð?Ñ?ежноÑ?о повÑ?зÑ?ваÑ?е е добÑ?о. Ð?о бÑ?ди Tor...</string>
- <string name="updating_settings_in_tor_service">ажÑ?Ñ?иÑ?аÑ?е на поÑ?Ñ?авкиÑ?е во Ñ?еÑ?виÑ?оÑ? Tor </string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ð?оÑ?Ñ?а на коÑ?а ТоÑ? и\' го нÑ?ди Ñ?воÑ?оÑ? SOCKS-пÑ?окÑ?и (Ñ?Ñ?андаÑ?дно: 9050 или 0 за да Ñ?е иÑ?клÑ?Ñ?и)</string>
- <string name="pref_socks_dialog">KонÑ?игÑ?Ñ?иÑ?аÑ?е на поÑ?Ñ?аÑ?а за SOCKS</string>
- <string name="pref_transport_title">Tor TransProxy поÑ?Ñ?а</string>
- <string name="pref_transport_summary">Ð?оÑ?Ñ?а на коÑ?а Tor и го нÑ?ди Ñ?воÑ?оÑ? Ñ?Ñ?анÑ?паÑ?енÑ?ен пÑ?окÑ?и (Ñ?Ñ?андаÑ?дно: 9040 или 0 за да Ñ?е иÑ?клÑ?Ñ?и)</string>
- <string name="pref_transport_dialog">KонÑ?игÑ?Ñ?иÑ?аÑ?е на поÑ?Ñ?аÑ?а за TransProxy</string>
- <string name="pref_dnsport_title">DNS-поÑ?Ñ?а за Tor </string>
- <string name="pref_dnsport_summary">Ð?оÑ?Ñ?а на коÑ?а Tor го нÑ?ди DNS (Ñ?Ñ?андаÑ?дно: 5400 или 0 за да Ñ?е иÑ?клÑ?Ñ?и)</string>
- <string name="pref_dnsport_dialog">конÑ?игÑ?Ñ?иÑ?аÑ?е на DNS-поÑ?Ñ?аÑ?а </string>
- <string name="pref_torrc_title">Ð?Ñ?оизволно конÑ?игÑ?Ñ?иÑ?аÑ?е на torrc</string>
- <string name="pref_torrc_summary">СÐ?Ð?Ð? Ð?Ð? Ð?Ð?СÐ?Ð?РТÐ?: внеÑ?еÑ?е диÑ?екÑ?ни команди за конÑ?игÑ?Ñ?иÑ?аÑ?е на torrc</string>
- <string name="pref_torrc_dialog">Ð?Ñ?оизволен torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech апликаÑ?иÑ?а за докÑ?менÑ?иÑ?аÑ?е на Ñ?овековиÑ?е пÑ?ава</string>
- <string name="your_tor_public_ips_">Ð?аÑ?аÑ?а Ñ?авна Ð?Ð? за Tor</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ð?е молиме иÑ?клÑ?Ñ?еÑ?е Ñ?а оваа апликаÑ?иÑ?а во Android->Settings->Apps ако имаÑ?е пÑ?облем Ñ?о Orbot:</string>
- <string name="app_conflict">Ð?онÑ?ликÑ? Ñ?о апликаÑ?иÑ?аÑ?а</string>
- <string name="pref_transproxy_refresh_title">Ð?вÑ?омаÑ?Ñ?ко оÑ?вежÑ?ваÑ?е на Transproxy </string>
- <string name="pref_transproxy_refresh_summary">Ð?Ñ?имени ги повÑ?оÑ?но пÑ?авилаÑ?а за TransProxy кога Ñ?е менÑ?ва Ñ?оÑ?Ñ?оÑ?баÑ?а на мÑ?ежаÑ?а</string>
- <string name="pref_transproxy_flush_title">Ð?Ð Ð?СÐ?Ð?Ð?Ð? Ð?ТСТРÐ?Ð?УÐ?Ð?Ð?Ð? на Transproxy </string>
- <string name="pref_transproxy_flush_summary">Ð?опÑ?еÑ?е овде за да Ñ?е избÑ?иÑ?аÑ? Ñ?иÑ?е transproxy пÑ?авила на мÑ?ежаÑ?а СÐ?Ð?Ð? </string>
- <string name="transparent_proxy_rules_flushed_">Ð?збÑ?иÑ?ани Ñ?Ñ?анÑ?паÑ?енÑ?ни пÑ?окÑ?и пÑ?авила</string>
- <string name="you_do_not_have_root_access_enabled">Ð?емаÑ?е вклÑ?Ñ?ено пÑ?иÑ?Ñ?ап до коÑ?ен</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ð?оже би Ñ?е Ñ?Ñ?еба да Ñ?е Ñ?Ñ?опиÑ?а и Ñ?Ñ?аÑ?Ñ?Ñ?ва Orbot за да бидаÑ? овозможени пÑ?омениÑ?е во поÑ?Ñ?авкиÑ?е.</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Ð?жÑ?Ñ?иÑ?ани моÑ?Ñ?ови</string>
- <string name="restart_orbot_to_use_this_bridge_">Ð?е молиме Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?аÑ?Ñ?е го Orbot за да Ñ?е овозможаÑ? пÑ?омениÑ?е</string>
- <string name="menu_qr">QR-кодови</string>
- <string name="bridge_mode">Режим на Ñ?абоÑ?а на моÑ?Ñ?оÑ?</string>
- <string name="get_bridges_email">Ð?-поÑ?Ñ?а</string>
- <string name="get_bridges_web">Ð?еб</string>
- <string name="activate">Ð?кÑ?ивиÑ?аÑ?</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ð?ожеÑ?е да ги овозможиÑ?е Ñ?иÑ?е апликаÑ?ии на ваÑ?иоÑ? Ñ?Ñ?ед да Ñ?абоÑ?аÑ? низ мÑ?ежаÑ?а Tor коÑ?иÑ?Ñ?еÑ?Ñ?и VPN-Ñ?Ñ?нкÑ?иÑ?а на Ð?ндÑ?оид.\n\n*Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?* нова, екÑ?пеÑ?именÑ?ална Ñ?Ñ?нкÑ?иÑ?а и во некои Ñ?лÑ?Ñ?аи нема да Ñ?Ñ?аÑ?Ñ?Ñ?ва авÑ?омаÑ?Ñ?ки, или може да Ñ?е Ñ?Ñ?опиÑ?а. Ð?е Ñ?Ñ?еба да Ñ?е коÑ?иÑ?Ñ?и за анонимноÑ?Ñ?, и СÐ?Ð?Ð? да Ñ?е коÑ?иÑ?Ñ?и за минÑ?ваÑ?е низ заÑ?Ñ?иÑ?ни Ñ?идови и Ñ?илÑ?Ñ?и.</string>
- <string name="send_email">Ð?Ñ?пÑ?аÑ?и е-поÑ?Ñ?а</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">AдÑ?еÑ?а на моÑ?Ñ?ови можеÑ?е да добиваÑ?е пÑ?екÑ? е-поÑ?Ñ?а, веб или Ñ?о Ñ?кениÑ?аÑ?е на QR код. Ð?збеÑ?еÑ?е подолÑ? \'Ð?-поÑ?Ñ?а\' или \'Web\', за да побаÑ?аÑ?е адÑ?еÑ?а за моÑ?Ñ?оÑ?. \n\nÐ?Ñ?како Ñ?е Ñ?а добиеÑ?е адÑ?еÑ?аÑ?а, копиÑ?аÑ?Ñ?е го & и залепеÑ?е го во делоÑ? \"Ð?оÑ?Ñ?ови\" во подеÑ?Ñ?ваÑ?еÑ?о на Orbot и Ñ?еÑ?Ñ?аÑ?Ñ?иÑ?аÑ?Ñ?е.</string>
- <string name="standard_browser">СÑ?андаÑ?ден пÑ?елиÑ?Ñ?Ñ?ваÑ?</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Ð?Ð?Ð?Ð?Ð?Ð?ШÐ?Ð?: Само Ñ?Ñ?андаÑ?дниÑ?е моÑ?Ñ?ови на Tor Ñ?Ñ?нкÑ?иониÑ?ааÑ? на Ñ?Ñ?едиÑ?е Intel X86/ATOM</string>
-</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ml/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-mn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 4b1355c..0000000
--- a/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">mula dan henti Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot telah dimulakan..</string>
- <string name="status_activated">Bersambung ke rangkaian Tor</string>
- <string name="status_disabled">\"Orbot telah dinyah-aktifkan</string>
- <string name="tor_process_starting">Memulakan klien Tor..</string>
- <string name="tor_process_complete">selesai.</string>
- <string name="tor_process_waiting">menunggu.</string>
- <string name="not_anonymous_yet">AMARAN: Trafik anda tidak anonymous lagi! Sila tetapkan aplikasi anda untuk menggunakan proxy HTTP 127.0.0.1:8118 atau proxy SOCKS4A atau SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Rumah</string>
- <string name="menu_browse">Carian</string>
- <string name="menu_settings">Tetapan</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Bantuan</string>
- <string name="menu_start">Mula</string>
- <string name="menu_stop">Henti</string>
- <string name="menu_about">Tentang</string>
- <string name="main_layout_download">Muat turun</string>
- <string name="main_layout_upload">Muat naik</string>
- <string name="button_help">Bantuan</string>
- <string name="button_close">Tutup</string>
- <string name="button_about">Tentang</string>
- <string name="button_clear_log">Padam Log</string>
- <string name="menu_verify">Semak</string>
- <string name="menu_exit">Keluar</string>
- <string name="press_to_start">- Tekan lama untuk mulakan - </string>
- <string name="pref_trans_proxy_group">Proxy Telus (Memerlukan akses Root)</string>
- <string name="pref_trans_proxy_title">Proxy Telus</string>
- <string name="pref_trans_proxy_summary">Tetapan Automatik Tor pada Apps</string>
- <string name="pref_transparent_all_title">Tor segalanya</string>
- <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi yang melalui Tor</string>
- <string name="pref_transparent_port_fallback_title">Port proxy undur</string>
- <string name="pref_transparent_port_fallback_summary">AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi.</string>
- <string name="pref_transparent_port_title">Senarai Port</string>
- <string name="pref_transparent_port_summary">Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi</string>
- <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
- <string name="pref_has_root">Minta Akses Root</string>
- <string name="pref_has_root_summary">Minta akses root untuk proxy telus</string>
- <string name="status_install_success">Tor berjaya dipasang!</string>
- <string name="status_install_fail">Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ralat Aplikasi</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
- <string name="btn_next">Seterusnya</string>
- <string name="btn_back">Kembali</string>
- <string name="btn_finish">Tamat</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Batal</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Maklumat Orbot</string>
- <string name="wizard_permissions_root">Kebenaran disahkan</string>
- <string name="wizard_permissions_stock">Kebenaran Orbot</string>
- <string name="wizard_premissions_msg_root">Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak.</string>
- <string name="wizard_permissions_msg_stock">Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower!</string>
- <string name="wizard_permissions_no_root">Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot.</string>
- <string name="wizard_permissions_consent">Saya faham dan mahu teruskan tanpa Superuser</string>
- <string name="wizard_permission_enable_root">Beri akses Root pada Orbot</string>
- <string name="wizard_configure">Konfigurasi Torification</string>
- <string name="wizard_configure_msg">Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual.</string>
- <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
- <string name="wizard_configure_select_apps">Pilih Aplikasi Untuk Tor</string>
- <string name="wizard_tips_tricks">Aplikasi Yang Dibenar Menggunakan Orbot</string>
- <string name="wizard_tips_msg">Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market.</string>
- <string name="wizard_tips_proxy">Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Enjin Carian</string>
- <string name="wizard_tips_twitter">Tetapkan proxy twitter kepada hos \"localhost\" dan pada port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Tetapan proxy</string>
- <string name="wizard_final">Orbot sudah sedia!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor.</string>
- <string name="pref_hs_group">Perkhidmatan tersembunyi</string>
- <string name="pref_general_group">Umum</string>
- <string name="pref_start_boot_title">Mulakan Orbot semasa Boot</string>
- <string name="pref_start_boot_summary">Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Amaran</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">kebenaran</string>
- <string name="wizard_permissions_root_msg1">Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus.</string>
- <string name="wizard_permissions_root_msg2">Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplikasi yang membenarkan Orbot</string>
- <string name="wizard_tips_play">Cari semua projek Guardian di Google play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy Telus</string>
- <string name="wizard_transproxy_msg">Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi</string>
- <string name="wizard_transproxy_hint">(Tanda kotak ini jika anda belen)</string>
- <string name="wizard_transproxy_none">Tiada</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart)</string>
- <string name="button_grant_superuser">Minta Akses Superuser</string>
- <string name="pref_select_apps">Pilih Aplikasi</string>
- <string name="pref_select_apps_summary">Pilih Aplikasi untuk dihalakan melalui Tor</string>
- <string name="pref_node_configuration">Konfigurasi Nod</string>
- <string name="pref_node_configuration_summary">Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda</string>
- <string name="pref_entrance_node">Nod Kemasukan</string>
- <string name="pref_entrance_node_summary">Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama</string>
- <string name="pref_entrance_node_dialog">Masukkan Nod Kemasukan</string>
- <string name="pref_proxy_title">Laluan keluar jaringan proxy (tambahan)</string>
- <string name="pref_proxy_type_title">Jenis Proxy</string>
- <string name="pref_proxy_type_summary">Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5</string>
- <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
- <string name="pref_proxy_host_title">Hos Proxy</string>
- <string name="pref_proxy_host_summary">Nama hos pelayan proxy</string>
- <string name="pref_proxy_host_dialog">Masukkan Hos Proxy</string>
- <string name="pref_proxy_port_title">Port Proxy</string>
- <string name="pref_proxy_port_summary">Port pelayan proxy</string>
- <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
- <string name="pref_proxy_username_title">Laluan keluar kata nama proxy</string>
- <string name="pref_proxy_username_summary">Kata nama proxy (tambahan)</string>
- <string name="pref_proxy_username_dialog">Masukkan kata nama proxy</string>
- <string name="pref_proxy_password_title">Laluan keluar kata laluan proxy</string>
- <string name="pref_proxy_password_summary">Kata laluan proxy (tambahan)</string>
- <string name="pref_proxy_password_dialog">Masukkan kata laluan proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Tetapkan proxy telus secara keseluruhan</string>
- <string name="setting_up_app_based_transparent_proxying_">Tetapkan proxy telus berdasarkan aplikasi</string>
- <string name="transparent_proxying_enabled">Proxy telus dibolehkan</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy dibolehkan untuk Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">AMARAN: ralat semasa memulakan proxy telus!</string>
- <string name="transproxy_rules_cleared">Peraturan TransProxy dipadam</string>
- <string name="couldn_t_start_tor_process_">Tidak boleh memulakan proses Tor:</string>
- <string name="setting_up_port_based_transparent_proxying_">Menetap proxy telus berdasarkan port..</string>
- <string name="bridge_error">Ralat jambatan</string>
- <string name="bridge_requires_ip">Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan.</string>
- <string name="send_email_for_bridges">Hantar e-mel kepada bridges@xxxxxxxxxxxxxx dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail.</string>
- <string name="error">Ralat</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Tetapan ReachableAddresses anda menyebabkan pengecualian!</string>
- <string name="your_relay_settings_caused_an_exception_">Tetapan relay anda menyebabkan pengecualian!</string>
- <string name="exit_nodes">Keluar Nod</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir</string>
- <string name="enter_exit_nodes">Masukkan Nod Keluar</string>
- <string name="exclude_nodes">Keluarkan Nod</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Cap jari, nama samaran, negara dan alamat untuk dikeluarkan</string>
- <string name="enter_exclude_nodes">Masukkan Nod Keluar</string>
- <string name="strict_nodes">Nod Ketat</string>
- <string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
- <string name="bridges">Jambatan</string>
- <string name="use_bridges">Guna Jambatan</string>
- <string name="bridges_obfuscated">Jambatan Keliru</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Membolehkan nod pintu masuk ganti ke Rangkaian Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Benarkan jika konfigurasi jambatan adalah jambatan keliru</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
- <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relaying</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
- <string name="relay_port">Relay Port</string>
- <string name="listening_port_for_your_tor_relay">Mendapatkan port untuk tetapan relay Tor anda</string>
- <string name="enter_or_port">Masukkan port OR</string>
- <string name="relay_nickname">Nama samaran relay</string>
- <string name="the_nickname_for_your_tor_relay">Nama samaran ini untuk relay Tor anda</string>
- <string name="enter_a_custom_relay_nickname">Masukkan nama samaran gantian untuk relay</string>
- <string name="reachable_addresses">Alamat yang dapat dicapai</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalan sebagai klien dibelakang firewall dengan peraturan ketat</string>
- <string name="reachable_ports">Port yang dapat dicapai</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Port yang dapat dicapai dibelakang firewall dengan kawalan ketat</string>
- <string name="enter_ports">Masukkan port</string>
- <string name="enable_hidden_services">Benarkan Servis Tersembunyi</string>
- <string name="run_servers_accessible_via_the_tor_network">Jalankan pelayan boleh diakses melalui rangkaian Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">Masuk port localhost untuk servis tersembunyi</string>
- <string name="hidden_service_ports">Port servis tersembunyi</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Nama beralamat untuk servis tersembunyi anda (dijana secara automatik)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat)</string>
- <string name="project_home">Rumah Projek(s):</string>
- <string name="the_tor_license">Lesen Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software: </string>
- <string name="hidden_service_request">Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu.</string>
- <string name="found_existing_tor_process">Proses Tor sedia ada ditemui..</string>
- <string name="something_bad_happened">Sesuatu yang buruk berlaku. Semak log.</string>
- <string name="hidden_service_on">port tersembunyi pada:</string>
- <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama servis tersembunyi</string>
- <string name="unable_to_start_tor">Tidak dapat memulakan Tor:</string>
- <string name="pref_use_sys_iptables_title">Guna default Iptables</string>
- <string name="pref_use_sys_iptables_summary">Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot</string>
- <string name="error_installing_binares">Tor binari tidak boleh dipasang atau dinaiktaraf</string>
- <string name="pref_use_persistent_notifications">Sentiasa biar ikon pada toolbar apabila Orbot bersambung</string>
- <string name="pref_use_persistent_notifications_title">Sentiasa On Notifikasi</string>
- <string name="notification_using_bridges">Jambatan dibenarkan!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Pilihan tempatan dan bahasa untuk Orbot</string>
- <string name="wizard_locale_title">Pilih Bahasa</string>
- <string name="wizard_locale_msg">Biar default atau ubah ke bahasa sekarang</string>
- <string name="btn_save_settings">Simpan Tetapan</string>
-</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
deleted file mode 100644
index 32f8aa7..0000000
--- a/res/values-ms/strings.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">mula dan henti Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot telah dimulakan..</string>
- <string name="status_activated">Bersambung ke rangkaian Tor</string>
- <string name="status_disabled">\"Orbot telah dinyah-aktifkan</string>
- <string name="status_shutting_down">Orbot sedang ditutup</string>
- <string name="tor_process_starting">Memulakan klien Tor..</string>
- <string name="tor_process_complete">selesai.</string>
- <string name="tor_process_waiting">menunggu.</string>
- <string name="not_anonymous_yet">AMARAN: Trafik anda tidak anonymous lagi! Sila tetapkan aplikasi anda untuk menggunakan proxy HTTP 127.0.0.1:8118 atau proxy SOCKS4A atau SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Rumah</string>
- <string name="menu_browse">Carian</string>
- <string name="menu_settings">Tetapan</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Bantuan</string>
- <string name="menu_apps">Apps</string>
- <string name="menu_start">Mula</string>
- <string name="menu_stop">Henti</string>
- <string name="menu_about">Tentang</string>
- <string name="button_help">Bantuan</string>
- <string name="button_close">Tutup</string>
- <string name="button_about">Tentang</string>
- <string name="button_clear_log">Padam Log</string>
- <string name="menu_verify">Semak</string>
- <string name="menu_exit">Keluar</string>
- <string name="press_to_start">- Tekan lama untuk mulakan - </string>
- <string name="pref_trans_proxy_group">Proxy Telus (Memerlukan akses Root)</string>
- <string name="pref_trans_proxy_title">Proxy Telus</string>
- <string name="pref_trans_proxy_summary">Tetapan Automatik Tor pada Apps</string>
- <string name="pref_transparent_all_title">Tor segalanya</string>
- <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi yang melalui Tor</string>
- <string name="pref_transparent_port_fallback_title">Port proxy undur</string>
- <string name="pref_transparent_port_fallback_summary">AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi.</string>
- <string name="pref_transparent_port_title">Senarai Port</string>
- <string name="pref_transparent_port_summary">Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi</string>
- <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
- <string name="pref_has_root">Minta Akses Root</string>
- <string name="pref_has_root_summary">Minta akses root untuk proxy telus</string>
- <string name="status_install_success">Tor berjaya dipasang!</string>
- <string name="status_install_fail">Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ralat Aplikasi</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
- <string name="btn_next">Seterusnya</string>
- <string name="btn_back">Kembali</string>
- <string name="btn_finish">Tamat</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Batal</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Maklumat Orbot</string>
- <string name="wizard_details_msg">Orbot merupakan aplikasi sumber terbuka yang mengandungi Tor, LibEvent dan Privoxy. Ia menyediakan seorang proksi HTTP tempatan (8118) dan proksi SOCKS (9050) ke dalam rangkaian Tor. Orbot juga mempunyai keupayaan, pada peranti berakar umbi, untuk menghantar semua trafik internet melalui Tor.</string>
- <string name="wizard_permissions_root">Kebenaran disahkan</string>
- <string name="wizard_permissions_stock">Kebenaran Orbot</string>
- <string name="wizard_premissions_msg_root">Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak.</string>
- <string name="wizard_permissions_msg_stock">Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower!</string>
- <string name="wizard_permissions_no_root">Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot.</string>
- <string name="wizard_permissions_consent">Saya faham dan mahu teruskan tanpa Superuser</string>
- <string name="wizard_permission_enable_root">Beri akses Root pada Orbot</string>
- <string name="wizard_configure">Konfigurasi Torification</string>
- <string name="wizard_configure_msg">Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual.</string>
- <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
- <string name="wizard_configure_select_apps">Pilih Aplikasi Untuk Tor</string>
- <string name="wizard_tips_tricks">Aplikasi Yang Dibenar Menggunakan Orbot</string>
- <string name="wizard_tips_msg">Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market.</string>
- <string name="wizard_tips_otrchat">Gibberbot - Klien mesej ringkas selamat untuk Android</string>
- <string name="wizard_tips_proxy">Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot</string>
- <string name="wizard_proxy_help_info">Tetapan proxy</string>
- <string name="wizard_proxy_help_msg">Jika aplikasi Android yang anda gunakan boleh menyokong penggunaan proksi HTTP atau SOCKS, kemudian anda boleh menatarajah untuk menyambung kepada Orbot dan menggunakan Tor. â??\nâ??\nâ??\n Tetapan tuan rumah adalah 127.0.0.1 atau \"localhost\". Untuk HTTP, tetapan pelabuhan 8118. Untuk SOCKS, proksi adalah 9050. Anda harus menggunakan SOCKS4A atau socks5 jika boleh. â??\n â??\nâ??\nâ??\n Anda boleh mengetahui lebih lanjut tentang proxying pada Android melalui FAQ di: http://tinyurl.com/proxyandroid â??</string>
- <string name="wizard_final">Orbot sudah sedia!</string>
- <string name="wizard_final_msg">Beratus-ratus ribu orang di seluruh dunia menggunakan Tor untuk pelbagai sebab-sebab yang luas. â??\nâ??\nWartawan dan blogger, pembela hak asasi manusia, pegawai penguatkuasa undang-undang, tentera, perbadanan, rakyat rejim menindas, dan warganegara sahaja, biasa â?¦ dan kini anda bersedia untuk, juga!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Anda telah berjaya disambungkan kepada rangkaian Tor - tetapi ini bukanlah bermakna peranti anda adalah selamat. Anda boleh menggunakan pilihan \'Check\' daripada menu untuk menguji pelayar anda. â??\nâ??\nMelawat kami pada https://guardianproject.info/apps/orbot atau menghantar e-mel ke help@xxxxxxxxxxxxxxxxxxxx untuk mengetahui lebih lanjut.</string>
- <string name="tor_check">Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor.</string>
- <string name="pref_hs_group">Perkhidmatan tersembunyi</string>
- <string name="pref_general_group">Umum</string>
- <string name="pref_start_boot_title">Mulakan Orbot semasa Boot</string>
- <string name="pref_start_boot_summary">Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot membawa Tor untuk Android! â??\nâ??\nTor membantu anda mempertahankan terhadap penapisan kandungan, analisis dan pengawasan trafik rangkaian yang mengancam privasi, maklumat sulit dan hubungan peribadi. â??\nâ??\nWizard ini akan membantu anda mengkonfigurasi Orbot dan Tor pada peranti anda.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Amaran</string>
- <string name="wizard_warning_msg">Hanya memasang Orbot tidak secara automatik akan anonymize trafik mudah alih anda. â??\nâ??\nAnda betul mesti menatarajah Orbot, peranti anda dan aplikasi lain untuk berjaya menggunakan Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">kebenaran</string>
- <string name="wizard_permissions_root_msg1">Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus.</string>
- <string name="wizard_permissions_root_msg2">Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot</string>
- <string name="wizard_permissions_no_root_msg">Peranti anda tidak perlu berakar umbi atau menyediakan \'SuperUser\' akses. â??\nâ??\nDalam untuk anda mendapat manfaat daripada Tor, anda akan perlu menggunakan aplikasi yang dibina untuk bekerja dengan Orbot, atau yang HTTP sokongan atau tetapan proksi SOCKS. â??\n</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplikasi yang membenarkan Orbot</string>
- <string name="wizard_tips_gibberbot">Gibberbot: sembang app selamat dengan Penyulitan Off-the-Rekod</string>
- <string name="wizard_tips_orweb">Orweb: Privasi ditambah penyemak imbas yang bekerja melalui Tor</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy Telus</string>
- <string name="wizard_transproxy_msg">Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi</string>
- <string name="wizard_transproxy_hint">(Tanda kotak ini jika anda belen)</string>
- <string name="wizard_transproxy_none">Tiada</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart)</string>
- <string name="button_grant_superuser">Minta Akses Superuser</string>
- <string name="pref_select_apps">Pilih Aplikasi</string>
- <string name="pref_select_apps_summary">Pilih Aplikasi untuk dihalakan melalui Tor</string>
- <string name="pref_node_configuration">Konfigurasi Nod</string>
- <string name="pref_node_configuration_summary">Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda</string>
- <string name="pref_entrance_node">Nod Kemasukan</string>
- <string name="pref_entrance_node_summary">Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama</string>
- <string name="pref_entrance_node_dialog">Masukkan Nod Kemasukan</string>
- <string name="pref_proxy_type_title">Jenis Proxy</string>
- <string name="pref_proxy_type_summary">Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5</string>
- <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
- <string name="pref_proxy_host_title">Hos Proxy</string>
- <string name="pref_proxy_host_summary">Nama hos pelayan proxy</string>
- <string name="pref_proxy_host_dialog">Masukkan Hos Proxy</string>
- <string name="pref_proxy_port_title">Port Proxy</string>
- <string name="pref_proxy_port_summary">Port pelayan proxy</string>
- <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Tetapkan proxy telus secara keseluruhan</string>
- <string name="setting_up_app_based_transparent_proxying_">Tetapkan proxy telus berdasarkan aplikasi</string>
- <string name="transparent_proxying_enabled">Proxy telus dibolehkan</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy dibolehkan untuk Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">AMARAN: ralat semasa memulakan proxy telus!</string>
- <string name="transproxy_rules_cleared">Peraturan TransProxy dipadam</string>
- <string name="couldn_t_start_tor_process_">Tidak boleh memulakan proses Tor:</string>
- <string name="privoxy_is_running_on_port_">Privoxy sedang berjalan pada port:</string>
- <string name="setting_up_port_based_transparent_proxying_">Menetap proxy telus berdasarkan port..</string>
- <string name="bridge_error">Ralat jambatan</string>
- <string name="bridge_requires_ip">Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan.</string>
- <string name="send_email_for_bridges">Hantar e-mel kepada bridges@xxxxxxxxxxxxxx dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail.</string>
- <string name="error">Ralat</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Tetapan ReachableAddresses anda menyebabkan pengecualian!</string>
- <string name="your_relay_settings_caused_an_exception_">Tetapan relay anda menyebabkan pengecualian!</string>
- <string name="exit_nodes">Keluar Nod</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir</string>
- <string name="enter_exit_nodes">Masukkan Nod Keluar</string>
- <string name="exclude_nodes">Keluarkan Nod</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Cap jari, nama samaran, negara dan alamat untuk dikeluarkan</string>
- <string name="enter_exclude_nodes">Masukkan Nod Keluar</string>
- <string name="strict_nodes">Nod Ketat</string>
- <string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
- <string name="bridges">Jambatan</string>
- <string name="use_bridges">Guna Jambatan</string>
- <string name="bridges_obfuscated">Jambatan Keliru</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Membolehkan nod pintu masuk ganti ke Rangkaian Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Benarkan jika konfigurasi jambatan adalah jambatan keliru</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
- <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relaying</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
- <string name="relay_port">Relay Port</string>
- <string name="listening_port_for_your_tor_relay">Mendapatkan port untuk tetapan relay Tor anda</string>
- <string name="enter_or_port">Masukkan port OR</string>
- <string name="relay_nickname">Nama samaran relay</string>
- <string name="the_nickname_for_your_tor_relay">Nama samaran ini untuk relay Tor anda</string>
- <string name="enter_a_custom_relay_nickname">Masukkan nama samaran gantian untuk relay</string>
- <string name="reachable_addresses">Alamat yang dapat dicapai</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalan sebagai klien dibelakang firewall dengan peraturan ketat</string>
- <string name="reachable_ports">Port yang dapat dicapai</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Port yang dapat dicapai dibelakang firewall dengan kawalan ketat</string>
- <string name="enter_ports">Masukkan port</string>
- <string name="enable_hidden_services">Benarkan Servis Tersembunyi</string>
- <string name="run_servers_accessible_via_the_tor_network">Jalankan pelayan boleh diakses melalui rangkaian Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">Masuk port localhost untuk servis tersembunyi</string>
- <string name="hidden_service_ports">Port servis tersembunyi</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Nama beralamat untuk servis tersembunyi anda (dijana secara automatik)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat)</string>
- <string name="project_home">Rumah Projek(s):</string>
- <string name="project_urls">https://www.torproject.org/docs/androidâ;?? https://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Lesen Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software: </string>
- <string name="hidden_service_request">Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu.</string>
- <string name="found_existing_tor_process">Proses Tor sedia ada ditemui..</string>
- <string name="something_bad_happened">Sesuatu yang buruk berlaku. Semak log.</string>
- <string name="hidden_service_on">port tersembunyi pada:</string>
- <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama servis tersembunyi</string>
- <string name="unable_to_start_tor">Tidak dapat memulakan Tor:</string>
- <string name="pref_use_sys_iptables_title">Guna default Iptables</string>
- <string name="pref_use_sys_iptables_summary">Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot</string>
- <string name="error_installing_binares">Tor binari tidak boleh dipasang atau dinaiktaraf</string>
- <string name="pref_use_persistent_notifications">Sentiasa biar ikon pada toolbar apabila Orbot bersambung</string>
- <string name="pref_use_persistent_notifications_title">Sentiasa On Notifikasi</string>
- <string name="notification_using_bridges">Jambatan dibenarkan!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Tetapan Tempatan</string>
- <string name="set_locale_summary">Pilihan tempatan dan bahasa untuk Orbot</string>
- <string name="wizard_locale_title">Pilih Bahasa</string>
- <string name="wizard_locale_msg">Biar default atau ubah ke bahasa sekarang</string>
- <string name="powered_by">Dijana oleh Projek Tor</string>
- <string name="btn_save_settings">Simpan Tetapan</string>
- <string name="menu_vpn">Apps</string>
-</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
deleted file mode 100644
index c7c4e75..0000000
--- a/res/values-my/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_home">á??á??á?ºá?? á??á?¬á??á?»á??á?ºá??á?¾á?¬</string>
- <string name="menu_browse">á??á?½á??á?ºá?·á??á?¼á??á?ºá?·á??á??á?º</string>
- <string name="menu_settings">á??á?»á?á??á?ºá??á?¾á?á??á?»á??á?ºá??á?»á?¬á?¸</string>
- <string name="menu_info">á?¡á??á?°á?¡á??á?®</string>
- <string name="menu_about">á?¡á??á?¼á?±á?¬á??á?ºá?¸</string>
- <string name="button_help">á?¡á??á?°á?¡á??á?®</string>
- <string name="button_close">á??á?á??á?ºá??á??á?º</string>
- <string name="button_about">á?¡á??á?¼á?±á?¬á??á?ºá?¸</string>
- <string name="menu_exit">á??á?½á??á?ºá??á??á?º</string>
- <string name="btn_back">á??á?±á?¬á??á?ºá??á?á?¯á?·</string>
- <string name="btn_cancel">á??á?»á??á?ºá??á?á??á?ºá?¸á??á??á?º</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">á??á??á?±á?¬á??á?ºá??á?® á??á?»á?á??á?ºá??á?¾á?á??á?»á??á?ºá??á?»á?¬á?¸</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">á??á?±á??á?¯á??á?»</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">á??á??á?á??á?±á?¸á??á?»á??á?º</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">á??á?¬á??á?¾á??á??á?¾á?</string>
- <string name="status">á?¡á??á?±á?¡á??á?¬á?¸</string>
- <string name="error">á??á?»á?á?¯á?·á??á?½á??á?ºá?¸á??á?»á??á?º</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">á??á?»á?á??á?ºá??á?¾á?á??á?»á??á?ºá??á?»á?¬á?¸á??á?á?¯ á??á?á??á?ºá?¸á??á??á?ºá?¸á??á??á?º</string>
-</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
deleted file mode 100644
index 1c0ce16..0000000
--- a/res/values-nb/strings.xml
+++ /dev/null
@@ -1,258 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot er en gratis proxy app som gjør det mulig for andre apps å bruke internett mer sikkert. Orbot bruker Tor for å kryptere din Internettrafikk, og skjuler da din trafikk ved å sende trafikken gjennom en lang rekke datamaskiner over hele verden. Tor er et gratis dataprogram, og et åpent nettverk som hjelper deg å forsvare deg mot en form for nettverksovervåking som truer din personlige frihet og privatliv, konfidensiell bedriftsvirksomhet og relasjoner, og statlig sikkerhet kjent som trafikkanalyse.</string>
- <string name="internal_web_url">https://torproject.org</string>
- <string name="default_web_url">https://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">start, og stopp Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot starter...</string>
- <string name="status_activated">Koblet til Tor-nettverket</string>
- <string name="status_disabled">Orbot er deaktivert</string>
- <string name="tor_process_starting">Starter Tor klient...</string>
- <string name="tor_process_complete">fullført.</string>
- <string name="tor_process_waiting">venter.</string>
- <string name="not_anonymous_yet">ADVARSEL: Trafikken din er enda ikke anonym! Vær vennlig og konfigurer applikasjonene dine til å bruke HTTP proxy 127.0.0.1:8118, eller SOCKS4A, eller SOCKS5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Hjem</string>
- <string name="menu_browse">Surfe</string>
- <string name="menu_settings">Innstillinger</string>
- <string name="menu_log">Logg</string>
- <string name="menu_info">Hjelp</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stopp</string>
- <string name="menu_about">Om</string>
- <string name="main_layout_download">Nedlast</string>
- <string name="main_layout_upload">Last opp</string>
- <string name="button_help">Hjelp</string>
- <string name="button_close">Steng</string>
- <string name="button_about">Om</string>
- <string name="button_clear_log">Tøm logg</string>
- <string name="menu_verify">Kontroller</string>
- <string name="menu_exit">Avslutt</string>
- <string name="press_to_start">- langt trykk for å starte -</string>
- <string name="pref_trans_proxy_group">Transparent Proxying (Krever Root)</string>
- <string name="pref_trans_proxy_title">Transparent Proxying</string>
- <string name="pref_trans_proxy_summary">Automatisk Torifisering av applikasjoner</string>
- <string name="pref_transparent_all_title">Tor alt</string>
- <string name="pref_transparent_all_summary">Proxy trafikk for alle applikasjoner via Tor</string>
- <string name="pref_transparent_port_fallback_title">Tilbakestill proxyport</string>
- <string name="pref_transparent_port_fallback_summary">ADVARSEL: Omgår vanlige porter (80, 443, osv). *BRUKES KUN* hvis \'alle\', eller \'Applikasjon\'-modus ikke virker.</string>
- <string name="pref_transparent_port_title">Port Liste</string>
- <string name="pref_transparent_port_summary">Liste over porter som skal gå gjennom proxy. *BRUKES KUN* hvis \'Alle\', eller \'Applikasjon\'-modus ikke virker.</string>
- <string name="pref_transparent_port_dialog">Angi porter som skal gå gjennom proxy</string>
- <string name="pref_has_root">Be om Root tilgang</string>
- <string name="pref_has_root_summary">Be om root-tilgang for transparent proxying</string>
- <string name="status_install_success">Tor binære filer vellykket installert!</string>
- <string name="status_install_fail">Tor-binære filer kunne ikke installeres. Vennligst sjekk loggen og varsle tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Applikasjonsfeil</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Om Orbot</string>
- <string name="btn_next">Neste</string>
- <string name="btn_back">Tilbake</string>
- <string name="btn_finish">Ferdig</string>
- <string name="btn_okay">Ok</string>
- <string name="btn_cancel">Avbryt</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Noen Orbot detaljer</string>
- <string name="wizard_permissions_root">Tillatelse gitt</string>
- <string name="wizard_permissions_stock">Orbot tillatelser</string>
- <string name="wizard_premissions_msg_root">Utmerket! Vi har oppdaget at du har root rettigheter aktivert for Orbot. Vi vil bruke denne makten med omhu.</string>
- <string name="wizard_permissions_msg_stock">Selv om det ikke er er nødvendig, kan Orbot bli et mer kraftig verktøy hvis enheten har root-tilgang. Bruk knappen nedenfor til å innvilge Orbot superkrefter!</string>
- <string name="wizard_permissions_no_root">Hvis du ikke har root-tilgang, eller ikke har noen anelse om hva vi snakker om, bare sørg for å bruke programmer laget for å fungere med Orbot.</string>
- <string name="wizard_permissions_consent">Jeg forstår, og ønsker å fortsette uten superbruker</string>
- <string name="wizard_permission_enable_root">Gi Orbot root-tilgang</string>
- <string name="wizard_configure">Konfigurer Torification</string>
- <string name="wizard_configure_msg">Orbot gir deg muligheten til å rute all applikasjonstrafikk gjennom Tor, ELLER å velge applikasjonene individuelt.</string>
- <string name="wizard_configure_all">Bruk proxy for alle applikasjoner gjennom Tor</string>
- <string name="wizard_configure_select_apps">Velg individuelle applikasjoner som skal brukes med Tor</string>
- <string name="wizard_tips_tricks">Orbot aktiverte applikasjoner</string>
- <string name="wizard_tips_msg">Applikasjonene nedenfor ble utviklet for å fungere med Orbot. Klikk på hver knapp for å installere nå, eller du kan finne dem senere på Google Play, på GuardianProject.info nettsiden, eller via F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Sikret lynmeldingsklient for Android</string>
- <string name="wizard_tips_proxy">Proxy-innstillinger - Lær hvordan du konfigurerer applikasjoner til å fungere med Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo søkemotor applikasjon</string>
- <string name="wizard_tips_twitter">Sett Twitters proxy til \"localhost\", og port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxyinnstillinger</string>
- <string name="wizard_final">Orbot er klar!</string>
- <string name="wizard_final_msg">Millioner av mennesker over hele verden bruker Tor for en rekke grunner.\n\ nJournalists og bloggere, menneskerettighetsforkjempere, politi, soldater, bedrifter, borgere i undertrykkende regimer, og bare vanlige borgere ... og nå er du klar til å , også!</string>
- <string name="wizard_exit_at_first_screen_toast">Vennligst konfigurere Orbot før du bruker det!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Dette vil åpne nettleseren din med adressen https://check.torproject.org for å se om Orbot er korrekt konfigurert, og at du er koblet til Tor.</string>
- <string name="pref_hs_group">Skjult Service Hosting</string>
- <string name="pref_general_group">Generelt</string>
- <string name="pref_start_boot_title">Start Orbot ved oppstart</string>
- <string name="pref_start_boot_summary">Start Orbot automatisk, og koble til Tor når din Android-enhet starter opp</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot bringer Tor til Android!\n\nTor hjelper deg å forsvare seg mot innholdsfiltrering, trafikk analyse og overvåking som truer personvern, konfidensiell informasjon og personlige relasjoner. \ N \ nDenne veiviseren vil hjelpe deg med å konfigurere Orbot og Tor på enheten.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Advarsel</string>
- <string name="wizard_warning_msg">Ganske enkelt å installere Orbot vil ikke automatisk anonymmobiltrafikk .\n\nDu må konfigurere Orbot, enheten og andre applikasjoner for å kunne bruke Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Tillatelser</string>
- <string name="wizard_permissions_root_msg1">Du kan eventuelt gi Orbot \'Superbruker\' adgang til å aktivere avanserte funksjoner, for eksempel Transparent proxy.</string>
- <string name="wizard_permissions_root_msg2">Hvis du ikke ønsker å gjøre dette, må du sørge for å bruke applikasjoner som er laget for å fungere med Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Enheten ser ikke ut til å være forankret eller gi root eller \"superbruker\" tilgang.\n\nVennligst prøve \"apps\" modus på hovedskjermen i stedet.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot aktiverte applikasjoner</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Sikret sludreprogram med OTR-kryptering</string>
- <string name="wizard_tips_play">Finn alle Guardian Prosjekt sine applikasjoner på Google Play</string>
- <string name="wizard_tips_fdroid">Finn alle Guardian Project applikasjoner på F-Droid</string>
- <string name="wizard_tips_fdroid_org">Finn alle Guardian Project applikasjoner på https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparent Proxying</string>
- <string name="wizard_transproxy_msg">Dette tillater dine applikasjoner å kjøre automatisk gjennom Tor-nettverket uten noen konfigurasjon.</string>
- <string name="wizard_transproxy_hint">(Marker denne boksen hvis du ikke har noen anelse om hva vi snakker om)</string>
- <string name="wizard_transproxy_none">Ingen</string>
- <string name="pref_transparent_tethering_title">Tor-deling</string>
- <string name="pref_transparent_tethering_summary">Aktiver Tor Transparent proxyer for WiFi, og USB delte enheter (krever omstart)</string>
- <string name="button_grant_superuser">Be om Superbruker tilgang</string>
- <string name="pref_select_apps">Velg applikasjoner</string>
- <string name="pref_select_apps_summary">Velg applikasjoner som skal rutes gjennom Tor</string>
- <string name="pref_node_configuration">Node-konfigurasjon</string>
- <string name="pref_node_configuration_summary">Dette er avanserte innstillinger som kan redusere din anonymitet</string>
- <string name="pref_entrance_node">Inngangsnoder</string>
- <string name="pref_entrance_node_summary">Fingeravtrykk, kallenavn, land, og adresser til det første hopp</string>
- <string name="pref_entrance_node_dialog">Skriv inn inngangsnoder</string>
- <string name="button_proxy_all">Mellomtjen alt</string>
- <string name="button_proxy_none">Mellomtjen ingenting</string>
- <string name="pref_proxy_title">Utgående nettverksproxy (Valgfritt)</string>
- <string name="pref_proxy_type_title">Utgående proxytype</string>
- <string name="pref_proxy_type_summary">Protokoll for proxy-server: HTTP, HTTPS, SOCKS4, SOCKS5</string>
- <string name="pref_proxy_type_dialog">Skriv inn proxytype</string>
- <string name="pref_proxy_host_title">Utgående proxyvert</string>
- <string name="pref_proxy_host_summary">Proxyserver vertsnavn</string>
- <string name="pref_proxy_host_dialog">Skriv inn proxyvert</string>
- <string name="pref_proxy_port_title">Utgående proxyport</string>
- <string name="pref_proxy_port_summary">Proxyserver port</string>
- <string name="pref_proxy_port_dialog">Skriv inn proxyport</string>
- <string name="pref_proxy_username_title">Utgående Proxy Brukernavn</string>
- <string name="pref_proxy_username_summary">Proxy Brukernavn (valgfritt)</string>
- <string name="pref_proxy_username_dialog">Skriv inn Proxy Brukernavn</string>
- <string name="pref_proxy_password_title">Utgående Proxy Passord</string>
- <string name="pref_proxy_password_summary">Proxy Passord (valgfritt)</string>
- <string name="pref_proxy_password_dialog">Skriv inn Proxy Passord</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Konfigurerer full transparent proxying...</string>
- <string name="setting_up_app_based_transparent_proxying_">Konfigurerer applikasjonsbasert transparent proxying...</string>
- <string name="transparent_proxying_enabled">Transparent proxying AKTIVERT</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy aktivert for nettdeling!</string>
- <string name="warning_error_starting_transparent_proxying_">ADVARSEL: Feil under oppstart av transparent proxying!</string>
- <string name="transproxy_rules_cleared">TransProxy regler fjernet</string>
- <string name="couldn_t_start_tor_process_">Kunne ikke starte Tor prosessen:</string>
- <string name="privoxy_is_running_on_port_">Polipo kjører på port:</string>
- <string name="setting_up_port_based_transparent_proxying_">Konfigurerer portbasert transparent proxying...</string>
- <string name="bridge_error">Brofeil</string>
- <string name="bridge_requires_ip">For å kunne bruke bro-funksjonen, må du oppgi minst én bro IP-adresse.</string>
- <string name="send_email_for_bridges">Send en epost til bridges@xxxxxxxxxxxxxx med teksten \"get bridges\" alene som eneste tekst i selve eposten fra en Gmail-konto.</string>
- <string name="error">Feil</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Dine \"adresser som kan nås\"-innstillinger forårsaket et unntak!</string>
- <string name="your_relay_settings_caused_an_exception_">Dine relé-innstillinger forårsaket et unntak!</string>
- <string name="exit_nodes">Avslutt noder</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeravtrykk, kallenavn, land og adresser for siste hopp</string>
- <string name="enter_exit_nodes">Skriv inn utgående noder</string>
- <string name="exclude_nodes">Ekskluder noder</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fineravtrykk, kallenavn, land og adresser som skal ekskluderes</string>
- <string name="enter_exclude_nodes">Skriv inn ekskluderte noder</string>
- <string name="strict_nodes">Strict noder</string>
- <string name="use_only_these_specified_nodes">Bruk *bare* disse angitte nodene</string>
- <string name="bridges">Broer</string>
- <string name="use_bridges">Bruk broer</string>
- <string name="bridges_obfuscated">Maskerte broer</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktiver alternative inngangsnoder til Tor-nettverket</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktiver hvis de konfigurerte broene er maskerte broer</string>
- <string name="ip_address_and_port_of_bridges">IP-adresser og broporter</string>
- <string name="enter_bridge_addresses">Skriv inn broadresser</string>
- <string name="relays">Reléer</string>
- <string name="relaying">Videresending</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Aktiver enheten din som et relé uten utgående trafikk</string>
- <string name="relay_port">Relé-port</string>
- <string name="listening_port_for_your_tor_relay">Porten Tor-reléet ditt lytter på</string>
- <string name="enter_or_port">Skriv inn OR-port</string>
- <string name="relay_nickname">Reléets kallenavn</string>
- <string name="the_nickname_for_your_tor_relay">Kallenavnet på ditt Tor-relé</string>
- <string name="enter_a_custom_relay_nickname">Skriv inn et egendefinert kallenavn på reléet</string>
- <string name="reachable_addresses">Antreffbare adresser</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kjør som en klient bak en brannmur med restriktive regler</string>
- <string name="reachable_ports">Antreffbare porter</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Antreffbare porter bak en restriktiv brannmur</string>
- <string name="enter_ports">Skriv inn porter</string>
- <string name="enable_hidden_services">Skjult Service Hosting</string>
- <string name="run_servers_accessible_via_the_tor_network">Tillat enhetsserveren å være tilgjengelig via Tor-nettverket</string>
- <string name="enter_localhost_ports_for_hidden_services">Skriv inn localhost porter for skjulte tjenester</string>
- <string name="hidden_service_ports">Skjulte tjenesteporter</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Det adresserbare navnet på din skjulte tjeneste (generert automatisk)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">aktiver feilsøkingslogg for output (må bruke adb eller aLogCat for å vise)</string>
- <string name="project_home">Prosjektets nettside(r):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor-lisensen</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Tredjepartsprogramvare:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">En applikasjon vil åpne den skjulte tjenesteporten %S til Tor-nettverket. Dette er trygt hvis du stoler på applikasjonen. </string>
- <string name="found_existing_tor_process">fant eksisterende Tor-prosess...</string>
- <string name="something_bad_happened">Noe alvorlig skjedde. Sjekk loggen.</string>
- <string name="hidden_service_on">skjult tjeneste på:</string>
- <string name="unable_to_read_hidden_service_name">klarte ikke å lese skjult tjenestenavn</string>
- <string name="unable_to_start_tor">Klarte ikke å starte Tor:</string>
- <string name="unable_to_reset_tor">Gjør en omstart av din enhet, kan ikke tilbakestille Tor!</string>
- <string name="pref_use_sys_iptables_title">Bruk standard Iptables</string>
- <string name="pref_use_sys_iptables_summary">bruk de innebygde binære-iptables istedenfor de som kommer med Orbot</string>
- <string name="error_installing_binares">Tor-binærfilene var ikke i stand til å bli installert, eller oppgradert.</string>
- <string name="pref_use_persistent_notifications">Alltid behold ikonet i verktøyslinjen når Orbot er tilkoblet</string>
- <string name="pref_use_persistent_notifications_title">Alltid-PÃ¥ Varslinger</string>
- <string name="pref_use_expanded_notifications_title">Utvidede varsler</string>
- <string name="notification_using_bridges">Broer slått på!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Språk</string>
- <string name="set_locale_summary">Velg nasjonale innstillinger, og språk for Orbot</string>
- <string name="wizard_locale_title">Velg språk</string>
- <string name="wizard_locale_msg">Bruk standard, eller endre det gjeldende språket</string>
- <string name="powered_by">Levert av Tor</string>
- <string name="btn_save_settings">Lagre Inntillinger</string>
- <string name="no_internet_connection_tor">Ingen Internett-tilkobling; Tor er i ventemodus... </string>
- <string name="bandwidth_">BÃ¥ndbredde:</string>
- <string name="down">ned</string>
- <string name="up">opp</string>
- <string name="pref_disable_network_title">Inget automatisk hvilemodus for nettverk</string>
- <string name="pref_disable_network_summary">Legg Tor i hvilemodus når nettilkobling til internett ikke er tilgjengelig</string>
- <string name="newnym">Du har byttet til en ny Tor-identitet!</string>
- <string name="menu_verify_browser">Nettleser</string>
- <string name="menu_use_chatsecure">Bruk ChatSecure</string>
- <string name="permission_manage_tor_label">HÃ¥ndter Tor</string>
- <string name="permission_manage_tor_description">La dette programmet kontrollere Tor-tjenesten</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Det ser ikke ut til at du har Orfox installert. �nsker du hjelp med dette, eller skal vi bare åpne nettleseren?</string>
- <string name="install_apps_">Installere programmer?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ingen nettverkstilkobling. Putting Tor å sove ...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Nettverkstilkobling er bra. VÃ¥kne Tor opp ...</string>
- <string name="updating_settings_in_tor_service">Oppdaterer innstillinger i Tor service</string>
- <string name="pref_socks_summary">Port som Tor tilbyr er SOCKS proxy på (standard: 9050 eller 0 for å slå av)</string>
- <string name="pref_socks_dialog">SOCKS Port Konfigurasjon</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_dialog">TransProxy Port Konfigurasjon</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_dialog">DNS Port Configurer</string>
- <string name="your_tor_public_ips_">Din Tor offentlige IP:</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Broer oppdatert</string>
- <string name="restart_orbot_to_use_this_bridge_">Gjør omstart av Orbot før endringer trer i kraft</string>
- <string name="menu_qr">QR-koder</string>
- <string name="get_bridges_email">E-post</string>
- <string name="get_bridges_web">Vev</string>
- <string name="activate">Aktiver</string>
- <string name="send_email">Send e-post</string>
- <string name="install_orweb">Installer Orfox</string>
- <string name="standard_browser">Forvalgt nettleser</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Merk: Bare vanlige Tor-broer fungerer på Intel X86/Atom-enheter</string>
-</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
deleted file mode 100644
index 51c4892..0000000
--- a/res/values-nl/strings.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot is een gratis en vrije proxy-app die het andere apps mogelijk maakt het internet veiliger te gebruiken. Orbot gebruikt Tor om je internetverkeer te coderen en het vervolgens te verhullen het door het door een serie computers over de hele wereld te routeren. Tor is vrije software en een open netwerk dat je helpt te verdedigen tegen een vorm van netwerktoezicht die persoonlijke vrijheid en privacy, vertrouwelijke bedrijfsactiviteiten en relaties en staatsveiligheid genaamd \'traffic analyse\' bedreigt.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">start en stop Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot is bezig met startenâ?¦</string>
- <string name="status_activated">Verbonden met het Tor-netwerk</string>
- <string name="status_disabled">Orbot is uitgeschakeld</string>
- <string name="status_shutting_down">TorService wordt afgesloten</string>
- <string name="tor_process_starting">Bezig met Tor client startenâ?¦</string>
- <string name="tor_process_complete">klaar.</string>
- <string name="tor_process_waiting">bezig met wachten.</string>
- <string name="not_anonymous_yet">WAARSCHUWING: je verkeer is nog niet anononiem! Stel je programma\'s in om gebruik te maken van HTTP-proxy 127.0.0.1:8118 of SOCKS4A- of SOCKS5-proxy 127.0.0.1:9050</string>
- <string name="menu_home">Thuis</string>
- <string name="menu_browse">Bladeren</string>
- <string name="menu_settings">Instellingen</string>
- <string name="menu_log">Logboek</string>
- <string name="menu_info">Hulp</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">Over</string>
- <string name="menu_promo_apps">Apps ophalen...</string>
- <string name="main_layout_download">Download</string>
- <string name="main_layout_upload">Upload</string>
- <string name="button_help">Hulp</string>
- <string name="button_close">Afsluiten</string>
- <string name="button_about">Over</string>
- <string name="button_clear_log">Logboek wissen</string>
- <string name="menu_verify">Controleren</string>
- <string name="menu_exit">Sluiten</string>
- <string name="menu_scan">BridgeQR scannen</string>
- <string name="menu_share_bridge">BridgeQR delen</string>
- <string name="press_to_start">- lang indrukken om te starten -</string>
- <string name="pref_trans_proxy_group">Transparant proxyen (vereist root)</string>
- <string name="pref_trans_proxy_title">Transparant proxyen</string>
- <string name="pref_trans_proxy_summary">Automatisch Torificeren van apps</string>
- <string name="pref_transparent_all_title">Tor alles</string>
- <string name="pref_transparent_all_summary">Proxy verkeer van alle apps door Tor</string>
- <string name="pref_transparent_port_fallback_title">Poort proxy fallback</string>
- <string name="pref_transparent_port_fallback_summary">WAARSCHUWING: omzeilt veel voorkomende poorten (80, 443, etc). *GEBRUIK ENKEL* indien de \'Alles\' of \'Apps\'-modus niet werkt.</string>
- <string name="pref_transparent_port_title">Poortlijst</string>
- <string name="pref_transparent_port_summary">Lijst van poorten om te proxyen. *GEBRUIK ENKEL* indien \'Alles\' of \'Apps\'-modus niet werkt</string>
- <string name="pref_transparent_port_dialog">Voer poorten in voor proxy</string>
- <string name="pref_has_root">Vraag root-toegang aan</string>
- <string name="pref_has_root_summary">Vraag root-toegang aan voor transparant proxyen</string>
- <string name="status_install_success">Binaire bestanden van Tor succesvol geïnstalleerd!</string>
- <string name="status_install_fail">De binaire bestanden konden niet worden geïnstalleerd. Gelieve de log te raadplegen en tor-assistants@xxxxxxxxxxxxxx op de hoogte te stellen</string>
- <string name="title_error">Toepassingsfout</string>
- <string name="wizard_title">Welkom bij Orbot</string>
- <string name="wizard_btn_tell_me_more">Over Orbot</string>
- <string name="btn_next">Volgende</string>
- <string name="btn_back">Vorige</string>
- <string name="btn_finish">Einde</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Annuleren</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Enkele Orbot-gegevens</string>
- <string name="wizard_details_msg">Orbot is een open-bron-applicatie die Tor, LibEvent en Polipo bevat. Het biedt een lokale HTTP-proxy (8118) en een SOCKS-proxy (9050) naar het Tor-netwerk. Orbot heeft ook de mogelijkheid om op een toestel met root-toegang alle internetverkeer door Tor te sturen.</string>
- <string name="wizard_permissions_root">Rechten toegewezen</string>
- <string name="wizard_permissions_stock">Orbot-rechten</string>
- <string name="wizard_premissions_msg_root">Uitstekend! We hebben gedetecteerd dat je root-rechten hebt aangezet voor Orbot. We gebruiken deze kracht met verstand.</string>
- <string name="wizard_permissions_msg_stock">Hoewel het niet noodzakelijk is kan Orbot nog krachtiger worden als je toestel root-rechten heeft. Gebruik de knop onderaan om Orbot superkrachten te geven!</string>
- <string name="wizard_permissions_no_root">Als je niet over root-toegang beschikt en geen idee hebt waarover we bezig zijn, let er dan op dat je apps gebruikt die geschikt zijn voor Orbot.</string>
- <string name="wizard_permissions_consent">Ik begrijp dit en wil verdergaan zonder Superuser</string>
- <string name="wizard_permission_enable_root">Root toestaan voor Orbot</string>
- <string name="wizard_configure">Torificatie instellen</string>
- <string name="wizard_configure_msg">Orbot geeft je de mogelijkheid om al het verkeer via Tor te laten gaan OF om individueel je applicaties te kiezen.</string>
- <string name="wizard_configure_all">Proxy alle apps door Tor</string>
- <string name="wizard_configure_select_apps">Selecteer individuele apps voor Tor</string>
- <string name="wizard_tips_tricks">Orbot-geschikte apps</string>
- <string name="wizard_tips_msg">De apps hieronder zijn gemaakt om met Orbot te werken. Klik op de knoppen om ze te installeren, of vind ze later op GuardianProject.info, F-Droid.org of Google Play.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Beveiligde instant messaging-cliënt voor Android</string>
- <string name="wizard_tips_proxy">Proxy-instellingen - Leer hoe je apps te configureren voor Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo zoekmachine-app</string>
- <string name="wizard_tips_twitter">Stel Twitter-proxy in als host \"localhost\" en poort 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Maak een verhaal en laat de veiligheid aan Tor over!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy-instellingen</string>
- <string name="wizard_proxy_help_msg">Als de Android-applicatie die je gebruikt het gebruik van een HTTP- of SOCKS-proxy ondersteunt kan je het instellen om te verbinden met Orbot en Tor te gebruiken.\n\n\n De hostinstelling is 127.0.0.1 of \"localhost\". Voor HTTP is de poort 8118, voor SOCKS is de proxy 9050. Indien mogelijk zou je SOCKS4A of SOCKS5 moeten gebruiken.\n \n\n\n Je kan meer te weten komen over proxyen op Android in de VGV op: http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Orbot is klaar!</string>
- <string name="wizard_final_msg">Miljoenen mensen de wereld rond gebruiken Tor voor uiteenlopende redenen.\n\nJournalisten en bloggers, verdedigers van mensenrechten, politie, soldaten, bedrijven, burgers van onderdrukkende regimes, en gewone burgersâ?¦ en nu ben jij er ook klaar voor!</string>
- <string name="wizard_exit_at_first_screen_toast">Je moet Orbot eerst configureren vooraleer je het kan gebruiken!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">De verbinding met het Tor netwerk is gelukt - maar dit betekent NIET dat je apparaat veilig is. Je kunt de \'Browser\' knop gebruiken om je verbinding te testen. \n\nBezoek ons op https://guardianproject.info/apps/orbot of stuur een email aan help@xxxxxxxxxxxxxxxxxxxx om meer te weten te komen.</string>
- <string name="tor_check">Dit opent je standaardbrowser naar https://check.torproject.org om te controleren of Orbot succesvol is geconfigureerd om te verbinden met het Tor-netwerk.</string>
- <string name="pref_hs_group">Verborgen diensten hosten</string>
- <string name="pref_general_group">Algemeen</string>
- <string name="pref_start_boot_title">Start Orbot bij opstarten</string>
- <string name="pref_start_boot_summary">Start Orbot en verbind automatisch met Tor wanneer je Android-toestel opstart</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot brengt Tor naar Android!\n\nTor helpt je te verdedigen tegen het filteren van inhoud, verkeersanalyse en netwerktoezicht die je privacy, vertrouwelijke informatie en persoonlijke relaties bedreigt.\n\nDeze wizard helpt je bij het instellen van Orbot en Tor op je toestel.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Waarschuwing</string>
- <string name="wizard_warning_msg">Gewoonweg Orbot installeren zal je mobiele verkeer niet automatisch anonimiseren.\n\nJe moet Orbot, je toestel en andere applicaties juist instellen om Tor succesvol te gebruiken.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Rechten</string>
- <string name="wizard_permissions_root_msg1">Je kan optioneel Orbot \'Superuser\'-toegang geven om geavanceerde functies beschikbaar te stellen, zoals transparant proxyen.</string>
- <string name="wizard_permissions_root_msg2">Als je dit niet wil doen, let er dan op dat je apps gebruikt die geschikt zijn voor Orbot</string>
- <string name="wizard_permissions_no_root_msg">Je toestel is niet geroot of biedt geen root of \'Superuser\'-toegang.\n\nProbeer de \'Apps\'-modus op het hoofdscherm.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-geschikte apps</string>
- <string name="wizard_tips_gibberbot">ChatSecure: beveiligde chat-applicatie met Off-the-Record-versleuteling</string>
- <string name="wizard_tips_orweb">Orfox: Browser met pricavy functies die werkt met Tor</string>
- <string name="wizard_tips_play">Vind alle Guardian Project-applicaties op Google Play</string>
- <string name="wizard_tips_fdroid">Vind alle Guardian Project-applicaties op F-Droid</string>
- <string name="wizard_tips_fdroid_org">Vind alle Guardian Project-applicaties op https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparant proxyen</string>
- <string name="wizard_transproxy_msg">Dit maakt het mogelijk voor jouw applicaties om automatisch via het Tor-netwerk te draaien zonder enige configuratie.</string>
- <string name="wizard_transproxy_hint">(Vink dit aan als je geen idee hebt waarover we het hebben)</string>
- <string name="wizard_transproxy_none">Geen</string>
- <string name="pref_transparent_tethering_title">Tor tetheren</string>
- <string name="pref_transparent_tethering_summary">Schakel Tor transparante proxy voor WiFi en USB-getheterde toestellen in (vereist herstart)</string>
- <string name="button_grant_superuser">Vraag Superuser-toegang aan</string>
- <string name="pref_select_apps">Kies applicaties</string>
- <string name="pref_select_apps_summary">Kies applicaties om via Tor te draaien</string>
- <string name="pref_node_configuration">Node-configuratie</string>
- <string name="pref_node_configuration_summary">Dit zijn geavanceerde instellingen die je anonimiteit kunnen verminderen</string>
- <string name="pref_entrance_node">Toegangsnodes</string>
- <string name="pref_entrance_node_summary">Vingerafdrukken, nicks, landen en adressen voor de eerste hop</string>
- <string name="pref_entrance_node_dialog">Voer toegangsnodes in</string>
- <string name="pref_allow_background_starts_title">Sta starten op de achtergrond toe</string>
- <string name="pref_allow_background_starts_summary">Sta elke app toe om Orbot de Tor verbinding en diensten te laten starten </string>
- <string name="button_proxy_all">Proxy alles</string>
- <string name="button_proxy_none">Proxy niets</string>
- <string name="button_invert_selection">Selectie omkeren</string>
- <string name="pref_proxy_title">Uitgaande netwerk-proxy (facultatief)</string>
- <string name="pref_proxy_type_title">Proxy-type</string>
- <string name="pref_proxy_type_summary">Protocol om te gebruiken voor proxyserver: HTTP, HTTPS, SOCKS4, SOCKS5</string>
- <string name="pref_proxy_type_dialog">Voer proxy-type in</string>
- <string name="pref_proxy_host_title">Proxyhost</string>
- <string name="pref_proxy_host_summary">Proxyserverhostnaam</string>
- <string name="pref_proxy_host_dialog">Voer proxyhost in</string>
- <string name="pref_proxy_port_title">Proxypoort</string>
- <string name="pref_proxy_port_summary">Proxyserverpoort</string>
- <string name="pref_proxy_port_dialog">Voer proxy poort in</string>
- <string name="pref_proxy_username_title">Uitgaande proxygebruikersnaam</string>
- <string name="pref_proxy_username_summary">Proxygebruikersnaam (facultatief)</string>
- <string name="pref_proxy_username_dialog">Voer proxygebruikersnaam in</string>
- <string name="pref_proxy_password_title">Uitgaande proxywachtwoord</string>
- <string name="pref_proxy_password_summary">Proxywachtwoord (facultatief)</string>
- <string name="pref_proxy_password_dialog">Voer proxywachtwoord in</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Bezig met opzetten van volledig transparante proxyâ?¦</string>
- <string name="setting_up_app_based_transparent_proxying_">Bezig met opzetten van per-app transparante proxyâ?¦</string>
- <string name="transparent_proxying_enabled">Transparante proxy INGESCHAKELD</string>
- <string name="transproxy_enabled_for_tethering_">Transparante proxy ingeschakeld voor tetheren!</string>
- <string name="warning_error_starting_transparent_proxying_">WAARSCHUWING: fout tijdens starten van transparante proxy!</string>
- <string name="transproxy_rules_cleared">TransProxy-regels gewist</string>
- <string name="couldn_t_start_tor_process_">Kon Tor-proces niet starten: </string>
- <string name="privoxy_is_running_on_port_">Polipo wordt uitgevoerd op poort:</string>
- <string name="setting_up_port_based_transparent_proxying_">Bezig met opzetten van per-poort transparante proxyâ?¦</string>
- <string name="bridge_error">Bridge-fout</string>
- <string name="bridge_requires_ip">Om de bridge-functie te gebruiken moet je minstens één bridge IP-adres invoeren.</string>
- <string name="send_email_for_bridges">Stuur een e-mail met een GMail-account naar bridges@xxxxxxxxxxxxxx met enkel de regel \"get bridges\" in de body van de e-mail.</string>
- <string name="error">Fout</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Je ReachableAddresses-instellingen veroorzaakten een fout!</string>
- <string name="your_relay_settings_caused_an_exception_">Je relay-instellingen veroorzaakten een fout!</string>
- <string name="exit_nodes">Exitnodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Vingerafdrukken, nicks, landen en adressen voor de laatste hop</string>
- <string name="enter_exit_nodes">Voer exitnode in</string>
- <string name="exclude_nodes">Uitgesloten nodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Vingerafdrukken, nicks, landen en adressen om uit te sluiten</string>
- <string name="enter_exclude_nodes">Voer uitgesloten nodes in</string>
- <string name="strict_nodes">Strikte nodes</string>
- <string name="use_only_these_specified_nodes">Gebruik *enkel* deze opgegeven nodes</string>
- <string name="bridges">Bridges</string>
- <string name="use_bridges">Gebruik bridges</string>
- <string name="bridges_obfuscated">Versluierde bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Gebruik alternatieve toegangsnodes naar het Tor-etwerk</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Schakel in als de geconfigureerde bridges versluierde bridges zijn</string>
- <string name="ip_address_and_port_of_bridges">IP-adres en poort van bridges</string>
- <string name="enter_bridge_addresses">Voer bridge-adres in</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relayen</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Stel je toestel in staat om een non-exit relay te zijn</string>
- <string name="relay_port">Relay-poort</string>
- <string name="listening_port_for_your_tor_relay">Luisterpoort van jouw Tor-relay</string>
- <string name="enter_or_port">Voer OR-poort in</string>
- <string name="relay_nickname">Relay-bijnaam</string>
- <string name="the_nickname_for_your_tor_relay">De bijnaam voor jouw Tor-relay</string>
- <string name="enter_a_custom_relay_nickname">Voer een eigen relay-bijnaam in</string>
- <string name="reachable_addresses">Bereikbare adressen</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Draai als een cliënt achter een firewall met beperkend beleid</string>
- <string name="reachable_ports">Bereikbare poorten</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Poorten bereikbaar achter een beperkende firewall</string>
- <string name="enter_ports">Voer poorten in</string>
- <string name="enable_hidden_services">Verborgen diensten hosten</string>
- <string name="run_servers_accessible_via_the_tor_network">maak server-op-toestel toegankelijk via het Tor-netwerk</string>
- <string name="enter_localhost_ports_for_hidden_services">voer localhost-poorten in voor verborgen diensten</string>
- <string name="hidden_service_ports">Verborgen dienst-poort</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">de adresseerbare naam voor je verborgen dienst (automatisch gegenereerd)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">schakel debug log naar uitvoer in (adb of aLogCat is nodig om dit te bekijken)</string>
- <string name="project_home">Project homepagina(\'s): </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">De Tor-licentie</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software van 3e partijen: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Een applicatie wil verborgen dienst-poort %S openen naar het Tor-netwerk. Dit is veilig als je de applicatie vertrouwt.</string>
- <string name="found_existing_tor_process">bestaand Tor-proces gevondenâ?¦</string>
- <string name="something_bad_happened">Er is een fout opgetreden. Controleer de log</string>
- <string name="hidden_service_on">verborgen dienst op:</string>
- <string name="unable_to_read_hidden_service_name">Kan verborgen dienst-naam niet lezen</string>
- <string name="unable_to_start_tor">Kan Tor niet starten:</string>
- <string name="unable_to_reset_tor">Herstart je toestel, kan Tor niet opnieuw instellen!</string>
- <string name="pref_use_sys_iptables_title">Gebruik standaard iptables</string>
- <string name="pref_use_sys_iptables_summary">gebruik de ingebouwde iptables-binary in plaats van de in Orbot geïntegreerde</string>
- <string name="error_installing_binares">De Tor-binaries konden niet worden geïnstalleerd of bijgewerkt.</string>
- <string name="pref_use_persistent_notifications">Houd icoon in taakbalk zolang Orbot verbonden is</string>
- <string name="pref_use_persistent_notifications_title">Meldingen altijd aan</string>
- <string name="pref_use_expanded_notifications">Toon uitgebreide melding met Tor-exitland en IP</string>
- <string name="pref_use_expanded_notifications_title">Uitgebreide meldingen</string>
- <string name="notification_using_bridges">Bridges ingeschakeld!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Taal</string>
- <string name="set_locale_summary">Kies de landsinstellingen en taal voor Orbot</string>
- <string name="wizard_locale_title">Kies taal</string>
- <string name="wizard_locale_msg">Laat standaard of schakel over naar huidige taal</string>
- <string name="powered_by">aangedreven door Tor</string>
- <string name="btn_save_settings">Sla instellingen op</string>
- <string name="no_internet_connection_tor">Geen internetverbinding; Tor is op stand-byâ?¦</string>
- <string name="bandwidth_">Bandbreedte:</string>
- <string name="down">omlaag</string>
- <string name="up">omhoog</string>
- <string name="pref_disable_network_title">Geen netwerk automatisch slapen</string>
- <string name="pref_disable_network_summary">Laat Tor slapen als er geen internetverbinding beschikbaar is</string>
- <string name="newnym">Je bent naar een nieuwe Tor identiteit gewisseld!</string>
- <string name="menu_verify_browser">Browser</string>
- <string name="menu_use_chatsecure">Gebruik ChatSecure</string>
- <string name="permission_manage_tor_label">Tor beheren</string>
- <string name="permission_manage_tor_description">Deze applicatie toestaan om de Tor-dienst te bedienen</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox lijkt niet geïnstalleerd te zijn, Wil je daar hulp bij, of wil je gewoon de browser openen?</string>
- <string name="install_apps_">Applicaties installeren?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Geen internetverbinding. Tor wordt te slapen gelegdâ?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Netwerkverbinding is in orde. Tor wordt wakker gemaaktâ?¦</string>
- <string name="updating_settings_in_tor_service">instellingen in Tor-dienst worden bijgewerkt</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Poort waarop Tor de SOCKS-proxy aanbiedt (standaard: 9050 of 0 om uit te schakelen)</string>
- <string name="pref_socks_dialog">SOCKS-poortconfiguratie</string>
- <string name="pref_transport_title">Tor TransProxy-poort</string>
- <string name="pref_transport_summary">Poort waarop Tor de transparante proxy aanbiedt (standaard: 9040 of 0 om uit te schakelen)</string>
- <string name="pref_transport_dialog">TransProxy-poortconfiguratie</string>
- <string name="pref_dnsport_title">Tor DNS-poort</string>
- <string name="pref_dnsport_summary">Poort waarop Tor de DNS aanbiedt (standaard: 5400 of 0 om uit te schakelen)</string>
- <string name="pref_dnsport_dialog">DNS-poortconfiguratie</string>
- <string name="pref_torrc_title">Torrc aangepaste configuratie</string>
- <string name="pref_torrc_summary">ENKEL VOOR GEVORDERDEN: voer rechtstreeks torrc-configuratieregels in</string>
- <string name="pref_torrc_dialog">Aangepaste Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
- <string name="your_tor_public_ips_">Je Tor publieke IP\'s:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Schakel deze applicatie uit in Android->Instellingen->Applicaties als je problemen ondervindt met Orbot:</string>
- <string name="app_conflict">App-conflict</string>
- <string name="pref_transproxy_refresh_title">Transproxy automatisch verversen</string>
- <string name="pref_transproxy_refresh_summary">Transproxy-regels opnieuw toepassen wanneer de status van het netwerk verandert</string>
- <string name="pref_transproxy_flush_title">Transproxy VERWIJDEREN DWINGEN</string>
- <string name="pref_transproxy_flush_summary">Tik hier om alle transproxy-netwerkregels NU te spoelen</string>
- <string name="transparent_proxy_rules_flushed_">Transparante proxy-regels gespoeld!</string>
- <string name="you_do_not_have_root_access_enabled">Je hebt ROOT-toegang niet ingeschakeld</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Het kan nodig zijn Orbot te stoppen en opnieuw te starten opdat wijzigingen in de instellingen worden ingeschakeld.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridges bijgewerkt</string>
- <string name="restart_orbot_to_use_this_bridge_">Herstart Orbot om de wijzigingen in te schakelen</string>
- <string name="menu_qr">QR-codes</string>
- <string name="bridge_mode">Bridge-modus</string>
- <string name="get_bridges_email">E-mail</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Activeren</string>
- <string name="apps_mode">Apps VPN Modus</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Je kan instellen dat alle applicaties op je toestel gebruik maken van het Tor-netwerk met de VPN-functie van Android.\n\n*WAARSCHUWING* Dit is een nieuwe, experimentele functie die in sommige gevallen niet automatisch kan starten, of zou kunnen stoppen. Het moet NIET worden gebruikt voor anonimiteit en ENKEL om firewalls en filters te omzeilen.</string>
- <string name="send_email">E-mail versturen</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Je kan een bridge-adres verkrijgen door e-mail, het web of door een bridge-QR-code te scannen. Kies \'E-mail\' of \'Web\' hieronder om een bridge-adres aan te vragen.\n\nEenmaal je een adres hebt kopieer en plak je het in de \"Bridges\"-optie in de Orbot-instellingen, waarna je Orbot herstart.</string>
- <string name="install_orweb">Orfox installeren</string>
- <string name="standard_browser">Standaardbrowser</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">LET OP: enkel standaard Tor-bridges werken op Intel x86/Atom-toestellen</string>
- <string name="vpn_default_world">Wereld</string>
-</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
deleted file mode 100644
index fc1d130..0000000
--- a/res/values-pa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_browse">�ਰਨਾ</string>
- <string name="menu_settings">ਪਰਿਸਥਿਤ�</string>
- <string name="menu_info">ਸਹਾ�ਤਾ</string>
- <string name="button_help">ਸਹਾ�ਤਾ</string>
- <string name="btn_cancel">ਰੱਦ �ਰ�</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">ਪਰਾ�ਸ� ਸ��ਿੰ�</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">�ਾਲ�</string>
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
deleted file mode 100644
index 14f254c..0000000
--- a/res/values-pl/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot jest darmowÄ? aplikacjÄ? proxy która wspomaga inne aplikacje do używania internetu bezpiecznie. Orbot używa Tora do szyfrowania Twojego ruchu internetowego i nastÄ?pnie przepuszczania go przez wiele innych komputereów pororzucanych na caÅ?ym Å?wiecie. Tor jest darmowym oprogramowaniem i otwartÄ? sieciÄ? która pomaga Tobie w obronie przed monitoringiem sieci która zagrarza osobistej wolnoÅ?ci i prywatnoÅ?ci, poufnym biznesowym aktywnoÅ?ciom.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">wÅ?Ä?cz i wyÅ?Ä?cz Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot startuje...</string>
- <string name="status_activated">PodÅ?Ä?czony do sieci Tor</string>
- <string name="status_disabled">Orbot wyÅ?Ä?czony</string>
- <string name="status_shutting_down">TorService wyÅ?Ä?cza siÄ?</string>
- <string name="tor_process_starting">Uruchamianie klienta sieci Tor...</string>
- <string name="tor_process_complete">gotowe.</string>
- <string name="tor_process_waiting">czekaj.</string>
- <string name="not_anonymous_yet">UWAGA: Twoja komunikacja nie jest jeszcze anonimowa! ProszÄ? skonfiguruj aplikacje aby używaÅ?y serwera proxy HTTP 127.0.0.1:8118 lub SOCKS4A lub SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Start</string>
- <string name="menu_browse">PrzeglÄ?daj</string>
- <string name="menu_settings">Ustawienia</string>
- <string name="menu_log">Logi</string>
- <string name="menu_info">Pomoc</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">O programie</string>
- <string name="menu_promo_apps">ZdobÄ?dź aplikacje</string>
- <string name="main_layout_download">Pobieranie (prÄ?dkoÅ?Ä?/suma)</string>
- <string name="main_layout_upload">WysyÅ?anie (prÄ?dkoÅ?Ä?/suma)</string>
- <string name="button_help">Pomoc</string>
- <string name="button_close">Zamknij</string>
- <string name="button_about">O programie</string>
- <string name="button_clear_log">CzyÅ?Ä? dziennik</string>
- <string name="menu_verify">Sprawdź</string>
- <string name="menu_exit">WyjÅ?cie</string>
- <string name="menu_scan">Skanuj BridgeQR</string>
- <string name="menu_share_bridge">Podziel siÄ? BridgeQR</string>
- <string name="press_to_start">- wciÅ?nij na dÅ?użej, by uruchomiÄ? -</string>
- <string name="pref_trans_proxy_group">Przekierowanie przezroczyste (Wymaga uprawnieÅ? administratora)</string>
- <string name="pref_trans_proxy_title">Przekierowanie przezroczyste</string>
- <string name="pref_trans_proxy_summary">Automatyczne toryfikowanie aplikacji</string>
- <string name="pref_transparent_all_title">PrzepuÅ?Ä? wszystko przez Tora</string>
- <string name="pref_transparent_all_summary">Przekierowanie ruchu wszystkich aplikacji przez Tora</string>
- <string name="pref_transparent_port_fallback_title">Zapasowy Port Proxy</string>
- <string name="pref_transparent_port_fallback_summary">UWAGA: Unika powszechnych portów (80, 443, etc). *UÅ»YWAÄ? TYLKO* gdy \'All\' lub tryb \'App\' nie dziaÅ?a.</string>
- <string name="pref_transparent_port_title">Lista Portów</string>
- <string name="pref_transparent_port_summary">Lista portów, które przechwytywaÄ?. *UÅ»YWAÄ? TYLKO* gdy \'All\' lub tryb \'App\' nie dziaÅ?a.</string>
- <string name="pref_transparent_port_dialog">Wpisz porty do przechwytywania</string>
- <string name="pref_has_root">Å»Ä?daj dostÄ?pu administratora</string>
- <string name="pref_has_root_summary">Å»Ä?daj dostÄ?pu administratora dla przezroczystego przekierowania</string>
- <string name="status_install_success">Binarki Tora pomyÅ?lnie zainstalowane!</string>
- <string name="status_install_fail">Nie można zainstalowaÄ? plików binarnych Tora. Zajrzyj do dziennika i powiadom tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">BÅ?Ä?d Aplikacji</string>
- <string name="wizard_title">Witamy w Orbocie</string>
- <string name="wizard_btn_tell_me_more">O Orbocie</string>
- <string name="btn_next">Dalej</string>
- <string name="btn_back">wstecz</string>
- <string name="btn_finish">Koniec</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Anuluj</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Niektóre szczegóÅ?y o Orbocie</string>
- <string name="wizard_details_msg">Orbot jest otwartÄ? aplikacjÄ? zawierajÄ?cÄ? Tor, LibEvent i Polipo. Dostarcza lokalnego proxy HTTP (8118) i SOCKS proxy (9050) do sieci Tora. Orbot ma możliwoÅ?Ä?, na urzÄ?dzeniu uruchomionym z prawami administratora, wysyÅ?aÄ? caÅ?y ruch internetowy przez Tora.</string>
- <string name="wizard_permissions_root">DostÄ?p zezwolony</string>
- <string name="wizard_permissions_stock">Prawa dostepu Orbota</string>
- <string name="wizard_premissions_msg_root">Doskonale! OdkryliÅ?my, że masz uprawnienia administratora wÅ?Ä?czone dla Orbota. BÄ?dziemy mÄ?drze korzystaÄ? z tej wÅ?adzy.</string>
- <string name="wizard_permissions_msg_stock">Podczas gdy nie jest to wymagane, Orbot może staÄ? siÄ? znacznie potÄ?żniejszym narzÄ?dziem, gdy masz prawa administratora na swoim urzÄ?dzeniu. Użyj przycisku poniżej, by daÄ? Orbotowi duży uprawnienia.</string>
- <string name="wizard_permissions_no_root">JeÅ?li nie masz uprawnieÅ? administratora lub nie masz pojÄ?cia, o czym mówimy, używaj aplikacji skonfigurowanych do pracy z Orbotem.</string>
- <string name="wizard_permissions_consent">Rozumiem i chcÄ? kontynuowaÄ? bez uprawnieÅ? administratora</string>
- <string name="wizard_permission_enable_root">Nadaj uprawnienia administratora Orbotowi</string>
- <string name="wizard_configure">Skonfiguruj ToryfikacjÄ?</string>
- <string name="wizard_configure_msg">Orbot daje Ci możliwoÅ?Ä? przekierowania caÅ?ego ruchu aplikacji przez Tora albo wybrania aplikacji pojedynczo.</string>
- <string name="wizard_configure_all">Przekierowuj wszystkie aplikacje przez Tora</string>
- <string name="wizard_configure_select_apps">Wybierz poszczególne aplikacje dla Tora</string>
- <string name="wizard_tips_tricks">Aplikacje skonfigurowane dla Orbota</string>
- <string name="wizard_tips_msg">ZachÄ?camy do pobierania i używania aplikacji, które wiedzÄ?, jak Å?Ä?czyÄ? siÄ? bezpoÅ?rednio z Orbotem. Kliknij na poniższe przyciski, by zainstalowaÄ?.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Bezpieczny komunikator pod Androida</string>
- <string name="wizard_tips_proxy">Ustawienia Proxy - Dowiedz siÄ?, jak konfigurowaÄ? aplikacje do wspóÅ?pracy z Orbotem</string>
- <string name="wizard_tips_duckgo">Aplikacja Duckduckgo Search Engine</string>
- <string name="wizard_tips_twitter">Twitter obsÅ?uguje proxy http \"localhost:8118\"</string>
- <string name="wizard_tips_story_maker">StoryMaker - Napisz artukuÅ?, historiÄ?, a bezpieczeÅ?stwo pozostaw Torowi.</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ustawienia Proxy</string>
- <string name="wizard_proxy_help_msg">JeÅ?li aplikacja na Androida, której używasz obsÅ?uguje proxy HTTP lub SOCKS proxy, to możesz skonfigurowaÄ? jÄ? do Å?Ä?czenia siÄ? z Orbotem i używania Tora. Ustawienie hosta to 127.0.0.1 lub \"localhost\". Dla HTTP, numer portu to 8118. Dla SOCKS proxy to 9050. Powinno siÄ? używaÄ? SOCKS4A lub SOCKS5, jeÅ?li to możliwe.\n \n\n\n Możesz dowiedzieÄ? siÄ? wiÄ?cej o przekierowaniu ruchu na Androidzie z FAQ pod adresem: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Orbot jest gotowy!</string>
- <string name="wizard_final_msg">Miliony ludzi na caÅ?ym Å?wiecie używajÄ? Tora z różnych powodów.\n\nDziennikarze i blogerzy, dziaÅ?acze na rzecz praw czÅ?owieka, stróże prawa, żoÅ?nierze, korporacje, obywatele represyjnych reżimów i zwykli obywatele... teraz Ty też możesz!</string>
- <string name="wizard_exit_at_first_screen_toast">ProszÄ? skonfiguruj Orbot zanim zaczniesz go uzywaÄ?!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">PomyÅ?lnie poÅ?Ä?czyÅ?eÅ? siÄ? do sieci Tor - ale to nie oznacza, że Twoje urzÄ?dzenie jest bezpieczne. Możesz użyÄ? przycisku \'PrzeglÄ?darka\' aby sprawdziÄ? swoje poÅ?Ä?czenie. \n\nOdwiedź nas na https://guardianproject.info/apps/orbot lub wyÅ?lij nam maila na help@xxxxxxxxxxxxxxxxxxxx aby dowiedzieÄ? siÄ? wiÄ?cej.</string>
- <string name="tor_check">To otworzy TwojÄ? domyÅ?lnÄ? przeglÄ?darkÄ? na adresie https://check.torproject.org w celu sprawdzenia, czy Orbot jest skonfigurowany i jest poÅ?Ä?czenie z Torem.</string>
- <string name="pref_hs_group">UsÅ?ugi ukryte</string>
- <string name="pref_general_group">Ogólne</string>
- <string name="pref_start_boot_title">Uruchamiaj Orbota przy starcie</string>
- <string name="pref_start_boot_summary">Automatycznie uruchamiaj Orbota i Å?Ä?cz siÄ? z Torem, gdy Twoje urzÄ?dzenie z Androidem siÄ? uruchomi</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot daje Tora Androidowi! Tor pomaga broniÄ? siÄ? przed podsÅ?uchem sieci znanym jako analiza ruchu, który zagraża wolnoÅ?ci osobistej i prywatnoÅ?ci, poufnym dziaÅ?aniom biznesowym i relacjami.\n\nTen kreator pomoże Ci skonfigurowaÄ? Orbota i Tora na Twoim urzÄ?dzeniu.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ostrzeżenie</string>
- <string name="wizard_warning_msg">Sama instalacja Orbota nie sprawi, że Twój mobilny ruch bÄ?dzie caÅ?kiem anonimowy.\n\nMusisz wykonaÄ? poprawnÄ? konfiguracjÄ? Orbota, Twojego urzÄ?dzenia i innych aplikacji, aby skutecznie używaÄ? Tora.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Uprawnienia</string>
- <string name="wizard_permissions_root_msg1">Możesz opcjonalnie przekazaÄ? darowiznÄ? Orbotowi i otrzymaÄ? dostÄ?p \'Superużytkownika\' aby wÅ?Ä?czyÄ? zaawansowane funkcje, jak np. Transparentne Proxy.</string>
- <string name="wizard_permissions_root_msg2">JeÅ?li nie chcesz tego robiÄ?, upewnij siÄ? by używaÄ? aplikacji stworzonych do pracy z Orbotem</string>
- <string name="wizard_permissions_no_root_msg">WyglÄ?da na to, że Twoje urzÄ?dzenie nie ma praw administratora, lub nie posiada opcji \'Super użytkownika\'.\n\nZamiast tego prosimy o spróbowanie opcji \'Aplikacje\' na gÅ?ównym ekranie.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-WÅ?Ä?czone Aplikacje</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Bezpieczny komunikator z szyfrowaniem Off-the-Record</string>
- <string name="wizard_tips_orweb">Orfox: PrzeglÄ?darka, która dziaÅ?a przez Tora</string>
- <string name="wizard_tips_play">Znajdź wszystkie aplikacje Guardian Project na Google Play</string>
- <string name="wizard_tips_fdroid">Zobacz wszystkie aplikacje Guardian Project na F-Droid</string>
- <string name="wizard_tips_fdroid_org">Zobacz wszystkie aplikacje Guardian Project na https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparentne Proxy</string>
- <string name="wizard_transproxy_msg">To pozwala Twojej aplikacji na automatyczne poÅ?Ä?czenie przez SieÄ? Tor bez żadnej konfiguracji.</string>
- <string name="wizard_transproxy_hint">(Sprawdź tutaj, jeÅ?li nie masz pojÄ?cia o czym mówimy)</string>
- <string name="wizard_transproxy_none">Brak</string>
- <string name="pref_transparent_tethering_title">PrzywiÄ?zywanie Tora</string>
- <string name="pref_transparent_tethering_summary">WÅ?Ä?cz Transparentne Proxy Tora dla Wifi i USB (wymaga restartu)</string>
- <string name="button_grant_superuser">Å»Ä?danie dostÄ?pu Superużytkownika</string>
- <string name="pref_select_apps">Wybierz aplikacje</string>
- <string name="pref_select_apps_summary">Wybierz aplikacje do przejÅ?cia przez Tor</string>
- <string name="pref_node_configuration">Konfiguracja wÄ?zÅ?a</string>
- <string name="pref_node_configuration_summary">SÄ? to zaawansowane ustawienia, które mogÄ? zmniejszyÄ? TwojÄ? anonimowoÅ?Ä?</string>
- <string name="pref_entrance_node">WÄ?zÅ?y wejÅ?ciowe</string>
- <string name="pref_entrance_node_summary">Odciski palców, nicki, paÅ?stwa i adresy na pierwszy raz</string>
- <string name="pref_entrance_node_dialog">Wpisz WÄ?zÅ?y WejÅ?ciowe</string>
- <string name="pref_allow_background_starts_title">Pozwól na start z tle</string>
- <string name="pref_allow_background_starts_summary">Pozwól każdej aplikacji powiedzieÄ?, aby Orbot uruchomiÅ? Tor i inne zwiÄ?zane z nim usÅ?ugi</string>
- <string name="button_proxy_all">Przepuszczaj wszystko przez proxy</string>
- <string name="button_proxy_none">Nie przepuszczaj niczego przez proxy</string>
- <string name="button_invert_selection">OdwróÄ? zaznaczone</string>
- <string name="pref_proxy_title">WychodzÄ?cy serwer sieciowy proxy</string>
- <string name="pref_proxy_type_title">WychodzÄ?ce Typy Proxy</string>
- <string name="pref_proxy_type_summary">ProtokóÅ? używany dla serwera proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Wpis Typ Proxy</string>
- <string name="pref_proxy_host_title">WychodzÄ?cy Proxy Host</string>
- <string name="pref_proxy_host_summary">Nazwa hosta serwera proxy</string>
- <string name="pref_proxy_host_dialog">Wpisz Hosta Proxy</string>
- <string name="pref_proxy_port_title">WychodzÄ?ce Porty Proxy</string>
- <string name="pref_proxy_port_summary">Port serwera Proxy</string>
- <string name="pref_proxy_port_dialog">Wpisz port Proxy</string>
- <string name="pref_proxy_username_title">Nazwa użytkownika WychodzÄ?cego Proxy</string>
- <string name="pref_proxy_username_summary">Nazwa użytkownika proxy (opcjonalna)</string>
- <string name="pref_proxy_username_dialog">Wpisz nazwÄ? użytkownika Proxy</string>
- <string name="pref_proxy_password_title">HasÅ?o WychodzÄ?cego Proxy</string>
- <string name="pref_proxy_password_summary">HasÅ?o Proxy (opcjonalne)</string>
- <string name="pref_proxy_password_dialog">Wpisz hasÅ?o Proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Ustawianie w peÅ?ni transparentnego proxy...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ustawianie bazujÄ?cego na aplikacji transparentnego proxy</string>
- <string name="transparent_proxying_enabled">Transparentne proxy WÅ?Ä?CZONE</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy podÅ?Ä?czone do modemu!</string>
- <string name="warning_error_starting_transparent_proxying_">OSTRZEÅ»ENIE: bÅ?Ä?d w uruchamianiu transparentnego proxy!</string>
- <string name="transproxy_rules_cleared">TransProxy dziaÅ?a czysto</string>
- <string name="couldn_t_start_tor_process_">Nie można byÅ?o zainicjowaÄ? procesu Tora:</string>
- <string name="privoxy_is_running_on_port_">Polipo dziaÅ?a na porcie:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ustawianie bazujÄ?cego na porcie transparentnego proxy</string>
- <string name="bridge_error">BÅ?Ä?d mostka</string>
- <string name="bridge_requires_ip">Aby użyÄ? funkcji mostka, musisz wpisaÄ? przynajmniej jeden adres IP mostka.</string>
- <string name="send_email_for_bridges">WyÅ?lij e-mail do bridges@xxxxxxxxxxxxxx piszÄ?c w treÅ?ci \"get bridges\" z konta gmail.</string>
- <string name="error">BÅ?Ä?d</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Twoje ustawienia dostÄ?pnych adresów spowodowaÅ?y wyjÄ?tek!</string>
- <string name="your_relay_settings_caused_an_exception_">Ustawienia Twojego przekaźnika spowodowaÅ?y wyjÄ?tek!</string>
- <string name="exit_nodes">WÄ?zÅ?y WyjÅ?ciowe</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Odciski palców, nicki, paÅ?stwa i adresy na ostatni skok</string>
- <string name="enter_exit_nodes">Wpisz wÄ?zÅ?y wyjÅ?ciowe.</string>
- <string name="exclude_nodes">Wyklucz wÄ?zÅ?y</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Odciski palców, nicki, paÅ?stwa i adresy do wykluczenia.</string>
- <string name="enter_exclude_nodes">Wpisz wykluczone wÄ?zÅ?y.</string>
- <string name="strict_nodes">Å?cisÅ?e wÄ?zÅ?y</string>
- <string name="use_only_these_specified_nodes">Użyj *tylko* tych okreÅ?lonych wÄ?zÅ?ów</string>
- <string name="bridges">Mostki</string>
- <string name="use_bridges">Użyj mostków</string>
- <string name="bridges_obfuscated">UUtajnione Mostki</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Umożliw alternatywne wejÅ?ciowe wÄ?zÅ?y do Sieci Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">WÅ?Ä?cz, jeÅ?li skonfigurowane mostki sÄ? ukrytymi mostkami</string>
- <string name="ip_address_and_port_of_bridges">Adres IP i port mostków</string>
- <string name="enter_bridge_addresses">Wpisz adresy mostków</string>
- <string name="relays">Przekaźniki</string>
- <string name="relaying">Przekazywanie</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Pozwól swojemu urzÄ?dzeniu zostaÄ? bezwyjÅ?ciowym przekaźnikiem</string>
- <string name="relay_port">Port Przekaźników</string>
- <string name="listening_port_for_your_tor_relay">NasÅ?uchiwanie portu Twojego przekaźnika</string>
- <string name="enter_or_port">Wpisz port OR</string>
- <string name="relay_nickname">Nick przekaźnika</string>
- <string name="the_nickname_for_your_tor_relay">Nick Twojego przekaźnika Tora</string>
- <string name="enter_a_custom_relay_nickname">Wpisz standardowÄ? nazwÄ? przekaźnika</string>
- <string name="reachable_addresses">OsiÄ?galne adresy:</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">WÅ?Ä?cz jako klienta za firewallem z restrykcyjnÄ? politykÄ?</string>
- <string name="reachable_ports">OsiÄ?galne porty</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porty dostÄ?pne za ograniczajÄ?cym firewallem</string>
- <string name="enter_ports">Wpisz porty</string>
- <string name="enable_hidden_services">WÅ?Ä?cz Ukryte Serwisy</string>
- <string name="run_servers_accessible_via_the_tor_network">wÅ?Ä?cz serwisy dostÄ?pne przez SieÄ? Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">wpisz porty localhosta dla ukrytych serwisów</string>
- <string name="hidden_service_ports">Porty Ukrytych Serwisów</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresowana nazwa dla Twojego ukrytego serwisu (generowana automatycznie)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">wÅ?Ä?cz zdebugowany log do wydajnoÅ?ci (musisz używaÄ? adb lub aLogCat, by go zobaczyÄ?)</string>
- <string name="project_home">Strony domowe projektu:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Licencja Tora</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Oprogramowanie 3rd-Party</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Aplikacja chce otworzyÄ? port ukrytego serwera %S do Sieci Tor. Jest to bezpieczne, jeÅ?li ufasz aplikacji.</string>
- <string name="found_existing_tor_process">znaleziono istniejÄ?cy proces Tora...</string>
- <string name="something_bad_happened">CoÅ? nie poszÅ?o nie tak. Sprawdź logi</string>
- <string name="hidden_service_on">ukryty serwis:</string>
- <string name="unable_to_read_hidden_service_name">uniemożliw czytanie nazw ukrytych serwisów</string>
- <string name="unable_to_start_tor">Nie można wystartowaÄ? aplikacji Tor:</string>
- <string name="unable_to_reset_tor">Zrestartuj swoje urzÄ?dzenie, nie można zrestartowaÄ? Tora!</string>
- <string name="pref_use_sys_iptables_title">Użyj domyÅ?lnie Iptables</string>
- <string name="pref_use_sys_iptables_summary">użyj wbudowanych plików binarnych iptables zamiast tych w pakiecie z Orbotem</string>
- <string name="error_installing_binares">Pliki binarne Tora nie zostaÅ?y zainstalowane lub uaktualnione.</string>
- <string name="pref_use_persistent_notifications">Zawsze trzymaj ikonÄ? w pasku powiadomieÅ? gdy Orbot jest poÅ?Ä?czony</string>
- <string name="pref_use_persistent_notifications_title">Powiadomienia zawsze aktywne</string>
- <string name="pref_use_expanded_notifications">Pokaż rozszerzone powiadomienie z krajem Tor exit node oraz jego IP</string>
- <string name="pref_use_expanded_notifications_title">Rozszerzone Powiadomienia</string>
- <string name="notification_using_bridges">Mostki wÅ?Ä?czone!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">JÄ?zyk</string>
- <string name="set_locale_summary">Wybierz ustawienia regionalne i jÄ?zyk dla Orbota</string>
- <string name="wizard_locale_title">Wybierz jÄ?zyk</string>
- <string name="wizard_locale_msg">Zostaw domyÅ?lny albo zmieÅ? jÄ?zyk</string>
- <string name="powered_by">napÄ?dzane oprogramowaniem Projektu Tor</string>
- <string name="btn_save_settings">Zapisz ustawienia</string>
- <string name="no_internet_connection_tor">Brak poÅ?Ä?czenia internetowego; Tor jest w trybie oczekiwania...</string>
- <string name="bandwidth_">PrzepustowoÅ?Ä?:</string>
- <string name="down">pobieranie</string>
- <string name="up">wysyÅ?anie</string>
- <string name="pref_disable_network_title">Brak Auto-UÅ?pienia Sieci</string>
- <string name="pref_disable_network_summary">Ustaw Tor\'a w tryb uÅ?pienia kiedy poÅ?Ä?czenie internetowe bÄ?dzie niedostÄ?pne</string>
- <string name="newnym">Nowa tożsamoÅ?Ä? Tor\'a zostaÅ?a zmieniona!</string>
- <string name="menu_verify_browser">PrzeglÄ?darka</string>
- <string name="menu_use_chatsecure">Użyj ChatSecure</string>
- <string name="permission_manage_tor_label">Administruj Tor\'em</string>
- <string name="permission_manage_tor_description">Pozwól tej aplikacji kontrolowaÄ? serwis Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">WyglÄ?da na to, że nie masz zainstalowanej Orfoxa. Chcesz abyÅ?my Ci pomogli, czy chcesz abyÅ?my otworzyli to w przeglÄ?darce?</string>
- <string name="install_apps_">ZainstalowaÄ? aplikacje?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Brak poÅ?Ä?czenia internetowego. Tor bÄ?dzie w trybie snu...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">PoÅ?Ä?czenie internetowe jest dobre. Trwa budzenie Tora...</string>
- <string name="updating_settings_in_tor_service">aktualizowanie ustawieÅ? w serwisie Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port który oferuje SOCKS proxy (domyÅ?lnie: 9050 lub 0, aby wyÅ?Ä?czyÄ?)</string>
- <string name="pref_socks_dialog">Konfiguracja portu SOCKS</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Port który oferuje Transparent Proxy (domyÅ?lnie: 9040 lub 0, aby wyÅ?Ä?czyÄ?)</string>
- <string name="pref_transport_dialog">Konfiguracja portu TransProxy</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Port na którym Tor oferuje swój DNS (domyÅ?lnie: 5400 lub 0, aby wyÅ?Ä?czyÄ?)</string>
- <string name="pref_dnsport_dialog">Konfiguracja portu DNS</string>
- <string name="pref_torrc_title">Konfiguracja Torrc klienta</string>
- <string name="pref_torrc_summary">TYLKO DLA EKSPERTÃ?W: wpisz linijki konfiguracyjne torrc</string>
- <string name="pref_torrc_dialog">Torrc klienta</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Dokumentacja Aplikacji Praw CzÅ?owieka</string>
- <string name="your_tor_public_ips_">Twoje publiczne Tor IP:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">ProszÄ? wyÅ?Ä?cz tÄ? aplikacjÄ? w Android->Ustawienia->Aplikacje jesli masz problemy z Orbot:</string>
- <string name="app_conflict">Konflikt aplikacji</string>
- <string name="pref_transproxy_refresh_title">Transproxy Auto-OdÅ?wież</string>
- <string name="pref_transproxy_refresh_summary">Zaztosuj ustawienia Transproxy kiedy stan sieci zmieni siÄ?</string>
- <string name="pref_transproxy_flush_title">Transproxy WYMUÅ? USUNIÄ?CIE</string>
- <string name="pref_transproxy_flush_summary">Dotknij tutaj, aby wyczyÅ?ciÄ? wszystkie zasady sieciowe transproxy TERAZ</string>
- <string name="transparent_proxy_rules_flushed_">Ustawienia Transproxy zostaÅ?y wyczyszczone!</string>
- <string name="you_do_not_have_root_access_enabled">Nie masz praw użytkownika root.</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Możesz zatrzymaÄ? i uruchomiÄ? ponownie Orbota, aby zmiany ustawieÅ? weszÅ?y w życie.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Zaktualizowane Bridges</string>
- <string name="restart_orbot_to_use_this_bridge_">ProszÄ? zrestartowaÄ? Orbot, aby zmiany mogÅ?y wejÅ?Ä? w życie</string>
- <string name="menu_qr">Kody QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">JeÅ?li Twoja sieÄ? telefoniczna aktywnie blokuje Tora, to możesz używaÄ? Bridge., aby poÅ?Ä?czyÄ? siÄ? z sieciÄ?. WYBIERZ jeden typ bridge powyżej, aby wÅ?Ä?czyÄ? bridges.</string>
- <string name="bridge_mode">Tryb Bridge</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Aktywuj</string>
- <string name="apps_mode">Tryb VPN Aplikacji</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Możesz wÅ?Ä?czyÄ? opcjÄ? dla wszystkich aplikacji, tak, aby ich ruch internetowy byÅ? przepuszczany przez sieÄ? Tor używajÄ?c do tego opcji VPN w Androidzie.\n\n*UWAGA* Jest to nowa, eksperymentalana opcja i w niektórych przypadkach może ona nie uruchomiÄ? siÄ? automatycznie, lub może siÄ? zatrzymaÄ?. Opcja ta NIE POWINNA byÄ? używana w celach uzyskania anonimowoÅ?ci, a TYLKO wyÅ?Ä?cznie w celu ominiÄ?cia firewalli i filtrów.</string>
- <string name="send_email">WyÅ?lij Email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Możesz uzyskaÄ? adres Bridge poprzez email, internet, lub poprzez zeskanowanie kodu QR. Wybierz \'Email\' lub \'Internet\' poniżej, aby poprosiÄ? o adres bridge\'a.\n\nJak już bÄ?dziesz mieÄ? ten adres to skopiuj i wklej go do \"Bridges\" we wÅ?aÅ?ciwoÅ?ciach Orbota a nastÄ?pnie go zrestartuj.</string>
- <string name="install_orweb">Zainstaluj Orfox</string>
- <string name="standard_browser">Standardowa przeglÄ?darka</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">UWAGA: Tylko standardowe bridges dziaÅ?ajÄ? na urzÄ?dzeniach z Intel X86/ATOM.</string>
- <string name="vpn_default_world">Å?wiat</string>
-</resources>
diff --git a/res/values-ps/strings.xml b/res/values-ps/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ps/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 90aa6c3..0000000
--- a/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot é um aplicativo de proxy livre que capacita outros aplicativos a usar a internet com mais segurança. Orbot usa o Tor para criptografar seu tráfego na internet e então o esconde \"saltando\" entre uma série de computadores ao redor do mundo. Tor é um software livre e de rede aberta que ajuda você a se defender de certas formas de vigilância que ameaçam privacidade e liberdade pessoais, atividades e relações comerciais confidenciais e segurança estatal conhecida como análise de tráfego.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">iniciar e parar o Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot está iniciando...</string>
- <string name="status_activated">Conectado à rede Tor</string>
- <string name="status_disabled">Orbot está desativado</string>
- <string name="status_shutting_down">TorService está desligando</string>
- <string name="tor_process_starting">Iniciando cliente Tor...</string>
- <string name="tor_process_complete">completo.</string>
- <string name="tor_process_waiting">esperando.</string>
- <string name="not_anonymous_yet">AVISO: Seu tráfego não é anônimo ainda! Por favor, configure suas aplicações para usar proxy HTTP 127.0.0.1:8118 ou proxy SOCKS4A ou SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">InÃcio</string>
- <string name="menu_browse">Procurar</string>
- <string name="menu_settings">Configurações</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Ajuda</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Parar</string>
- <string name="menu_about">Sobre</string>
- <string name="menu_promo_apps">Obter aplicativos...</string>
- <string name="main_layout_download">Download</string>
- <string name="main_layout_upload">Upload</string>
- <string name="button_help">Ajuda</string>
- <string name="button_close">Fechar</string>
- <string name="button_about">Sobre</string>
- <string name="button_clear_log">Limpar Log</string>
- <string name="menu_verify">Checar</string>
- <string name="menu_exit">Sair</string>
- <string name="menu_scan">Escanear BridgeQR</string>
- <string name="menu_share_bridge">Compartilhar BridgeQR</string>
- <string name="press_to_start">- clique longo para iniciar -</string>
- <string name="pref_trans_proxy_group">Proxying Transparente (Requer Root)</string>
- <string name="pref_trans_proxy_title">Proxying Transparente</string>
- <string name="pref_trans_proxy_summary">Automaticamente Torificar Apps</string>
- <string name="pref_transparent_all_title">Tor Tudo</string>
- <string name="pref_transparent_all_summary">Tráfego proxy para todos apps através do Tor</string>
- <string name="pref_transparent_port_fallback_title">Porta do Proxy Reserva</string>
- <string name="pref_transparent_port_fallback_summary">AVISO: Evite as portas comuns (80,443, etc). *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou.</string>
- <string name="pref_transparent_port_title">Lista de Portas</string>
- <string name="pref_transparent_port_summary">Lista de portas para proxy. *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou</string>
- <string name="pref_transparent_port_dialog">Insira as portas para proxy</string>
- <string name="pref_has_root">Requer Acesso Root</string>
- <string name="pref_has_root_summary">Requer acesso root para proxy transparente</string>
- <string name="status_install_success">Binário do Tor instalados com sucesso!</string>
- <string name="status_install_fail">Os arquivos binários do Tor estão inaptos à serem instalados. Por favor, cheque o log e notifique tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Erro de Aplicação</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Sobre Orbot</string>
- <string name="btn_next">Próximo</string>
- <string name="btn_back">Voltar</string>
- <string name="btn_finish">Terminar</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Alguns detalhes do Orbot</string>
- <string name="wizard_details_msg">Orbot é uma aplicação de código aberto que contém Tor, libEvent e Polipo. Ela provê um proxy HTTP local (8118) e um proxy SOCKS (9050) dentro da rede Tor. Orbot também tem a a habilidade, num dispositivo de com acesso root, de enviar todo o tráfego de internet através do Tor.</string>
- <string name="wizard_permissions_root">Permissão Concedida</string>
- <string name="wizard_permissions_stock">Permissões do Orbot</string>
- <string name="wizard_premissions_msg_root">Excelente! Detectamos que você habilitou permissões de root para Orbot. Nós usaremos este poder com sabedoria.</string>
- <string name="wizard_permissions_msg_stock"> Enquanto não é requerido, o Orbot pode se tornar uma ferramenta mais poderosa se seu dispositivo tivesse acesso root. Use o botão abaixo para conceder superpoderes ao Orbot! </string>
- <string name="wizard_permissions_no_root">Se você não tem acesso root ou não tem idéia sobre o que estamos falando, só tenha a certeza de usar apps feitas para trabalhar com o Orbot.</string>
- <string name="wizard_permissions_consent">Eu entendo e gostaria de continuar sem o Superusuário</string>
- <string name="wizard_permission_enable_root">Conceder acesso Root ao Orbot</string>
- <string name="wizard_configure">Configurar Torificação</string>
- <string name="wizard_configure_msg">Orbot dá a você a opção de rotear todo o tráfego de aplicação através do Tor OU para escolher suas aplicações individualmente.</string>
- <string name="wizard_configure_all">Usar Proxy para Todas Apps Através do Tor</string>
- <string name="wizard_configure_select_apps">Selecionar Apps Individuais para o Tor</string>
- <string name="wizard_tips_tricks">Apps habilitadas para Orbot</string>
- <string name="wizard_tips_msg">As apps abaixo foram desenvolvidas para trabalhar com Orbot. Clique em cada botão para instalar agora, ou você pode encontrá-las posteriormente no Android Market.</string>
- <string name="wizard_tips_otrchat">ChatSecure - cliente de mensagem instantânea segura para Android</string>
- <string name="wizard_tips_proxy">Configurações de Proxy - Aprenda como configurar apps para trabalhar com Orbot</string>
- <string name="wizard_tips_duckgo">Ferramenta de Busca DuckDuckGo</string>
- <string name="wizard_tips_twitter">Define o proxy do Twitter para \"localhost\" e a porta 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Faça uma história e deixe-a para o tor por segurança!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Configurações de Proxy</string>
- <string name="wizard_proxy_help_msg">Se a app Android que você está usando puder suportar o uso de proxy HTTP ou SOCKS, então você pode configurar para conectar ao Orbot e usar o Tor. As configurações de host são 127.0.0.1 ou \"localhost\". Para HTTP, a porta configurada é 8118. Para SOCKS, o proxy é 9050. Você deve usar SOCKS4A ou SOCKS5 se possÃvel. Você pode aprender mais sobre proxy no Android através do FAQ em: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot está pronto!</string>
- <string name="wizard_final_msg">Centenas de milhares de pessoas ao redor do mundo usam o Tor por uma enorme variedade de razões. Jornalistas e bloggers, defensores dos direitos humanos, oficiais da lei, soldados, corporações, cidadãos em regimes repressivos, e somente cidadãos comuns... e agora você está pronto para usar, também! </string>
- <string name="wizard_exit_at_first_screen_toast">Por favor, configure o Orbot antes de começar a usá-lo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Você se conectou à rede Tor com sucesso - mas isto N�O significa que seu dispositivo é seguro. Você pode usar a opção \'Checar\' no menu para testar seu navegador. Visite-nos em https://guardianproject.info/apps/orbot ou envie um e-mail para help@xxxxxxxxxxxxxxxxxxxx para saber mais.</string>
- <string name="tor_check">Isto irá abrir seu navegador web em https://check.torproject.org com o intuito de ver se o Orbot está provavelmente configurado e você está conectado ao Tor.</string>
- <string name="pref_hs_group">Serviços Ocultos</string>
- <string name="pref_general_group">Geral</string>
- <string name="pref_start_boot_title">Iniciar Orbot no Boot</string>
- <string name="pref_start_boot_summary">Automaticamente iniciar o Orbot e conectar o Tor quando seu Android bootar.</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot trouxe Tor para Android!! Tor ajuda você a se defender contra filtro de conteúdo, análises de tráfego e vigilância de rede que ameaçam sua privacidade, informação confidencial e relacionamentos pessoais. Este assistente irá ajudá-lo a configurar o Orbot e Tor no seu dispositivo.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Aviso</string>
- <string name="wizard_warning_msg">Simplesmente instalando o Orbot não irá automaticamente anonimizar seu tráfego móvel. Você deve configurar apropriadamente o Orbot, seu dispositivo e outras apps para usar o Tor com sucesso.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permissões</string>
- <string name="wizard_permissions_root_msg1">Você pode opcionalmente garantir ao Orbot acesso de \'Superusuário\' para habilitar recursos avançados, como um proxy transparente.</string>
- <string name="wizard_permissions_root_msg2">Se você não quiser fazer isto, tenha certeza de usar apps feitas para trabalhar com o Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Seu dispositivo não parece ser roteado ou prover um acesso \'Superusuário\'. De maneira a você se beneficiar do Tor, você precisará usar apps criadas para trabalhar com o Orbot, ou que suportem configurações de proxy HTTP ou SOCKS. </string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Apps Orbot Habilitadas</string>
- <string name="wizard_tips_gibberbot">ChatSecure: app de chat seguro com criptografia Off-the-Record</string>
- <string name="wizard_tips_orweb">Orfox: navegador de privacidade aprimorada que funciona através do Tor</string>
- <string name="wizard_tips_play">Encontre todos os aplicativos da Guardian Project no Google Play</string>
- <string name="wizard_tips_fdroid">Encontre todos os aplicativos da Guardian Project no F-Droid </string>
- <string name="wizard_tips_fdroid_org">Encontre todos os aplicativos da Guardian Project no https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy Transparente</string>
- <string name="wizard_transproxy_msg">Isto permite à suas apps automaticamente rodarem através da rede Tor sem nenhuma configuração.</string>
- <string name="wizard_transproxy_hint">(Selecione esta caixa se você não souber do que estamos falando)</string>
- <string name="wizard_transproxy_none">Nenhum</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Habilitar Proxy Transparente para Tor Dispositivos de Toque Wifi e Usb (requer reinicialização)</string>
- <string name="button_grant_superuser">Acesso Superusuário Requerido</string>
- <string name="pref_select_apps">Selecionar Apps</string>
- <string name="pref_select_apps_summary">Escolha as Apps para Rotearem Através do Tor</string>
- <string name="pref_node_configuration">Configuração de Nó</string>
- <string name="pref_node_configuration_summary">Aqui estão as configurações avançadas que podem reduzir seu anonimato.</string>
- <string name="pref_entrance_node">Nós de Entrada</string>
- <string name="pref_entrance_node_summary">Impressões digitais, apelidos, paÃses e endereços para a primeira etapa</string>
- <string name="pref_entrance_node_dialog">Insira os Nós de Entrada</string>
- <string name="pref_allow_background_starts_title">Permitir estrelas em segundo plano</string>
- <string name="button_proxy_all">Todo o Proxy</string>
- <string name="button_proxy_none">Nenhum Proxy</string>
- <string name="button_invert_selection">Inverter Sele</string>
- <string name="pref_proxy_title">Proxy de saÃda da rede (Opcional)</string>
- <string name="pref_proxy_type_title">Tipo de Proxy</string>
- <string name="pref_proxy_type_summary">Protocolo para usar no servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Insira o Tipo de Proxy</string>
- <string name="pref_proxy_host_title">Proxy Host</string>
- <string name="pref_proxy_host_summary">Endereço do servidor Proxy</string>
- <string name="pref_proxy_host_dialog">Insira o Host do Proxy</string>
- <string name="pref_proxy_port_title">Porta do Proxy</string>
- <string name="pref_proxy_port_summary">Porta do servidor Proxy</string>
- <string name="pref_proxy_port_dialog">Insira a porta do Proxy</string>
- <string name="pref_proxy_username_title">Nome de usuário do Proxy de saÃda</string>
- <string name="pref_proxy_username_summary">Nome de usuário do Proxy (Opcional)</string>
- <string name="pref_proxy_username_dialog">Digite o nome de usuário do Proxy</string>
- <string name="pref_proxy_password_title">Senha do Proxy de saÃda</string>
- <string name="pref_proxy_password_summary">Senha do Proxy (Opcional)</string>
- <string name="pref_proxy_password_dialog">Digite a senha do Proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Configurando proxy com total transparência...</string>
- <string name="setting_up_app_based_transparent_proxying_">Configurando apps baseadas em transparência de proxy...</string>
- <string name="transparent_proxying_enabled">Proxy Transparente HABILITADO</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy habilitado para Toque!</string>
- <string name="warning_error_starting_transparent_proxying_">AVISO: erro ao iniciar o proxy transparente!</string>
- <string name="transproxy_rules_cleared">Regras TransProxy limpas</string>
- <string name="couldn_t_start_tor_process_">Não foi possÃvel iniciar o processo Tor: </string>
- <string name="privoxy_is_running_on_port_">Polipo está rodando na porta:</string>
- <string name="setting_up_port_based_transparent_proxying_">Configurando proxy transparente baseado em porta...</string>
- <string name="bridge_error">Erro na Ponte</string>
- <string name="bridge_requires_ip">Como condição para usar o recurso de ponte, você deve inserir pelo menos um endereço IP de ponte.</string>
- <string name="send_email_for_bridges">Envie um email para bridges@xxxxxxxxxxxxxx com a linha \"get bridges\" sozinha no corpo do e-mail, a partir de uma conta do gmail</string>
- <string name="error">Erro</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Suas configurações de Endereços AcessÃveis causou uma exceção!</string>
- <string name="your_relay_settings_caused_an_exception_">Suas configurações de retransmissão causaram uma exceção!</string>
- <string name="exit_nodes">Nós de SaÃda</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Impressões digitais, apelidos, paÃses e endereços para a última etapa.</string>
- <string name="enter_exit_nodes">Insira os Nós de SaÃda</string>
- <string name="exclude_nodes">Nós ExcluÃdos</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Impressões digitais, apelidos, paÃses e endereços para excluir</string>
- <string name="enter_exclude_nodes">Insira Nós ExcluÃdos</string>
- <string name="strict_nodes">Nós Estritos</string>
- <string name="use_only_these_specified_nodes">Use *somente* estes nós especÃficos</string>
- <string name="bridges">Pontes</string>
- <string name="use_bridges">Usar pontes</string>
- <string name="bridges_obfuscated">Pontes Ofuscadas</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar nós de entrada alternativos dentro da rede Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Habilitar se pontes configuradas forem pontes ofuscadas</string>
- <string name="ip_address_and_port_of_bridges">Endereço IP e porta das pontes</string>
- <string name="enter_bridge_addresses">Insira os Endereços das Pontes</string>
- <string name="relays">Retransmissores</string>
- <string name="relaying">Retransmitindo</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Habilitar seu dispositivo para não ser um retransmissor de saÃda</string>
- <string name="relay_port">Porta Retransmissora</string>
- <string name="listening_port_for_your_tor_relay">Ouvindo porta do seu retransmissor Tor</string>
- <string name="enter_or_port">Insira porta OR</string>
- <string name="relay_nickname">Apelido do Retransmissor</string>
- <string name="the_nickname_for_your_tor_relay">O apelido para seu retransmissor Tor</string>
- <string name="enter_a_custom_relay_nickname">Insira um apelido de retransmissor customizado</string>
- <string name="reachable_addresses">Endereços AtingÃveis</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Rodar como um cliente atrás de um firewall com polÃticas restritivas.</string>
- <string name="reachable_ports">Portas AtingÃveis</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Portas atingÃveis atrás de um firewall restritivo</string>
- <string name="enter_ports">Insira as portas</string>
- <string name="enable_hidden_services">Habilitar Serviços Ocultos</string>
- <string name="run_servers_accessible_via_the_tor_network">rodar servidores acessÃveis via rede Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">insira as portas local para serviços ocultos</string>
- <string name="hidden_service_ports">Portas de Serviço Oculto</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">o nome enderessável para seu serviço oculto (gerado automaticamente)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">habilitar debug log para saÃda (deve usar adb ou aLogCat para ver)</string>
- <string name="project_home">Home(s) do Projeto: </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">A Licença Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Software de Terceiros</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Uma app quer abrir a porta %S oculta do servidor para a rede Tor. Isto é seguro se você confia na app.</string>
- <string name="found_existing_tor_process">procurando processos Tor existentes...</string>
- <string name="something_bad_happened">Algo ruim aconteceu. Cheque o lo</string>
- <string name="hidden_service_on">serviço oculto em:</string>
- <string name="unable_to_read_hidden_service_name">habilitar ler o nome do serviço oculto</string>
- <string name="unable_to_start_tor">Habilitar iniciar o Tor:</string>
- <string name="unable_to_reset_tor">Reinicie seu dispositivo, incapaz de resetar Tor!</string>
- <string name="pref_use_sys_iptables_title">Usar tabelas de IP padrão:</string>
- <string name="pref_use_sys_iptables_summary">usar as tabelas ip binárias embutidas ao invés das tabelas do pacote Orbot</string>
- <string name="error_installing_binares">Os binários Tor não estão disponÃveis para serem instalados ou atualizados.</string>
- <string name="pref_use_persistent_notifications">Sempre manter o Ãcone na barra de tarefas quando o Orbot está conectado</string>
- <string name="pref_use_persistent_notifications_title">Notificações Sempre Ligadas</string>
- <string name="pref_use_expanded_notifications">Mostrar notificação expandida com Tor paÃs de saÃda e IP</string>
- <string name="pref_use_expanded_notifications_title">Notificações Expandidas</string>
- <string name="notification_using_bridges">Pontes habilitadas!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Idioma</string>
- <string name="set_locale_summary">Escolha o local e idioma para o Orbot</string>
- <string name="wizard_locale_title">Escolha o Idioma</string>
- <string name="wizard_locale_msg">Deixe o padrão ou troque o idioma atual</string>
- <string name="powered_by">distribuÃdo por Tor</string>
- <string name="btn_save_settings">Salvar Configurações</string>
- <string name="no_internet_connection_tor">Sem conexão na internet; Tor está na espera...</string>
- <string name="bandwidth_">Largura de banda:</string>
- <string name="down">down</string>
- <string name="up">up</string>
- <string name="pref_disable_network_title">Modo de espera automático</string>
- <string name="pref_disable_network_summary">Colocar o Tor em modo de espera quando não houver acesso Internet disponÃvel</string>
- <string name="newnym">Você trocou para uma nova identidade Tor!</string>
- <string name="menu_verify_browser">Navegador</string>
- <string name="menu_use_chatsecure">Usar ChatSecure</string>
- <string name="permission_manage_tor_label">Gerenciar Tor</string>
- <string name="permission_manage_tor_description">Habilitar este app a controlar o serviço Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Parece que você não tem o Orweb instalado. Quer ajuda com isso ou devemos apenas abrir o navegador?</string>
- <string name="install_apps_">Instalar apps?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Sem conectividade na rede. Colocando o Tor para dormir...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Conectividade da rede está boa. Acordando Tor</string>
- <string name="updating_settings_in_tor_service">atualizando configurações no serviço Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Porta que Tor oferece seu proxy SOCKS (padrão: 9050 ou 0 para desativar)</string>
- <string name="pref_socks_dialog">Config da Porta SOCKS</string>
- <string name="pref_transport_title">Porta TransProxy Tor</string>
- <string name="pref_transport_summary">Porta que Tor oferece seu Proxy Transparente no (padrão: 9040 ou 0 para desativar)</string>
- <string name="pref_transport_dialog">Config da Porta TransProxy</string>
- <string name="pref_dnsport_title">Porta DNS Tor</string>
- <string name="pref_dnsport_summary">Porta que Tor oferece seu DNS no (padrão: 5400 ou 0 para desativar)</string>
- <string name="pref_dnsport_dialog">Config da Porta DNS</string>
- <string name="pref_torrc_title">Config Personalizada do Torrc</string>
- <string name="pref_torrc_dialog">Torrc Personalizado</string>
- <string name="your_tor_public_ips_">Seus IPs Públicos do Tor:</string>
- <string name="app_conflict">Conflito de aplicattivo</string>
- <string name="pref_transproxy_flush_title">Transproxy FORÃ?AR REMOÃ?Ã?O</string>
- <string name="you_do_not_have_root_access_enabled">Você não tem acesso root ativado</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Você pode precisar parar e iniciar Orbot para as configurações de mudar para ser ativado.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Pontes Atualizadas</string>
- <string name="restart_orbot_to_use_this_bridge_">Por favor reinicie Orbot para habilitar as mundanças</string>
- <string name="menu_qr">QR Codes</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se a sua rede móvel ativamente blocos Tor, você pode usar uma ponte para acessar a rede. Selecione um dos tipos de pontes acima, para permitir pontes.</string>
- <string name="bridge_mode">Modo Ponte</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Atvar</string>
- <string name="apps_mode">Modo Apps VPN</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Você pode permitir que todos os aplicativos em seu dispositivo para executar através da rede Tor usando o recurso VPN do Android.\n\n*AVISO* Esta é uma caracterÃstica nova, experimental e em alguns casos pode não começar automaticamente, ou pode parar. Não deve ser usado para manter o anonimato, e serão utilizadas apenas para obter através de firewalls e filtros.</string>
- <string name="send_email">Enviar Email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Você pode obter um endereço de ponte através de e-mail, web ou lendo um código QR ponte. Selecione \'E-mail\' ou \'Web\' abaixo para solicitar uma ponte endereço. \n\nUma vez que você tem um endereço, copie & colá-lo na "Bridges" preferência na configuração e reiniciar do Orbot.</string>
- <string name="install_orweb">Instalar Orfox</string>
- <string name="standard_browser">Navegador Padrão</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Apenas pontes Tor padrão funcionam em dispositivos Atom/Intel X86</string>
- <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
deleted file mode 100644
index d580cae..0000000
--- a/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="wizard_title">Orbot</string>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
deleted file mode 100644
index a36ed0f..0000000
--- a/res/values-pt/strings.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">iniciar e parar Tor</string>
- <string name="tor_proxy_service_process">serviço proxy Tor</string>
- <string name="status_starting_up">O Orbot está a iniciar...</string>
- <string name="status_activated">Conetado à rede Tor</string>
- <string name="status_disabled">O Orbot está desativado</string>
- <string name="tor_process_starting">A iniciar o cliente Tor...</string>
- <string name="tor_process_complete">completo.</string>
- <string name="tor_process_waiting">a aguardar.</string>
- <string name="not_anonymous_yet">AVISO: O seu tráfego não está anónimo! Por favor, configure as suas aplicações para utilizarem o proxy HTTP 127.0.0.1:8118 ou o proxy SOCKS4A ou SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">InÃcio</string>
- <string name="menu_browse">Explorar</string>
- <string name="menu_settings">Configurações</string>
- <string name="menu_log">Registo</string>
- <string name="menu_info">Ajuda</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Parar</string>
- <string name="menu_about">Sobre</string>
- <string name="main_layout_download">Transferir</string>
- <string name="main_layout_upload">Enviar</string>
- <string name="button_help">Ajuda</string>
- <string name="button_close">Fechar</string>
- <string name="button_about">Sobre</string>
- <string name="button_clear_log">Limpar Registo</string>
- <string name="menu_verify">Verificar</string>
- <string name="menu_exit">Sair</string>
- <string name="menu_scan">Digitalizar BridgeQR</string>
- <string name="menu_share_bridge">Compartilhar BridgeQR</string>
- <string name="press_to_start">- pressionar longo para iniciar - </string>
- <string name="pref_trans_proxy_group">Proxy Transparente (requer \'Root\')</string>
- <string name="pref_trans_proxy_title">Proxy Transparente</string>
- <string name="pref_transparent_all_title">Tor em Tudo</string>
- <string name="pref_transparent_all_summary">Passar todo o tráfego das apps via Tor</string>
- <string name="pref_transparent_port_fallback_summary">AVISO: Rodear as portas comuns (80, 443, etc...). *USAR APENAS* se o modo \'Todas\' ou \'App\' não funcionar.</string>
- <string name="pref_transparent_port_title">Lista de Portas</string>
- <string name="pref_transparent_port_summary">Lista de portas para o proxy. *USAR APENAS* se o modo \'Todas\' ou \'App\' não funcionar.</string>
- <string name="pref_transparent_port_dialog">Insira as portas para o proxy</string>
- <string name="pref_has_root">Solicitar Acesso \'Root\'</string>
- <string name="pref_has_root_summary">Solicitar acesso \'root\' para o proxy transparente</string>
- <string name="status_install_success">Binários do Tor instalados com sucesso!</string>
- <string name="status_install_fail">Não foi possÃvel instalar os ficheiros binário do Tor. Por favor, verifique o registo de eventos e notifique tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Erro de Aplicação</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Sobre o Orbot</string>
- <string name="btn_next">Seguinte</string>
- <string name="btn_back">Voltar</string>
- <string name="btn_finish">Terminar</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Alguns Detalhes do Orbot</string>
- <string name="wizard_permissions_root">Autorização Concedida</string>
- <string name="wizard_permissions_stock">Autorizações do Orbot</string>
- <string name="wizard_permissions_consent">Eu compreendo e gostaria de continuar sem a Superuser</string>
- <string name="wizard_permission_enable_root">Conceder \'Root\' para o Orbot</string>
- <string name="wizard_configure">Configurar Acesso do Tor</string>
- <string name="wizard_configure_all">Passar Todas as Aplicações Via Tor</string>
- <string name="wizard_configure_select_apps">Selecione Individualmente as Apps para o Tor</string>
- <string name="wizard_tips_tricks">Orbot - Apps ativadas</string>
- <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensagens instantâneas seguras para Android</string>
- <string name="wizard_tips_proxy">Configurações do Proxy - Aprenda a configurar as apps para funcionarem com o Orbot</string>
- <string name="wizard_tips_duckgo">App de Mecanismo de Procura DuckDuckGo</string>
- <string name="wizard_tips_twitter">Defina o proxy do Twitter para hospedeiro \"localhost\" e porta 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Definições Proxy</string>
- <string name="wizard_final">O Orbot está pronto!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_hs_group">Serviço de Hospedagem Ocultado</string>
- <string name="pref_general_group">Geral</string>
- <string name="pref_start_boot_title">Iniciar o Orbot no Arranque</string>
- <string name="pref_start_boot_summary">Iniciar automaticamente o Orbot e conetar o Tor quando o seu dispositivo Android inicia</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Aviso</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Autorizações</string>
- <string name="wizard_permissions_root_msg1">Opcionalmente, pode conceder acesso de Administrador\' ao Orbot para ativar as funções avançadas, tais como, Proxy Transparente.</string>
- <string name="wizard_permissions_root_msg2">Se não quer isto, por favor, certifique-se que usa as apps criadas para funcionarem com a Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot - Apps Ativadas</string>
- <string name="wizard_tips_play">Encontre todas as apps do Projeto Guardian na Play Store da Google</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy Transparente</string>
- <string name="wizard_transproxy_hint">(Selecione esta caixa se não souber do que estamos a falar)</string>
- <string name="wizard_transproxy_none">Nenhum</string>
- <string name="pref_transparent_tethering_title">\"Tethering\" Tor</string>
- <string name="pref_transparent_tethering_summary">Ativar o Proxy Transparente Tor para a rede Sem Fios e Dispositivos USB \"Tethered\" (necessário reiniciar)</string>
- <string name="button_grant_superuser">Solicitar Acesso de Administrador</string>
- <string name="pref_select_apps">Selecionar Apps</string>
- <string name="pref_select_apps_summary">Escolher Apps para Encaminhar Via Tor</string>
- <string name="button_proxy_all">Tudo com o Proxy</string>
- <string name="button_proxy_none">Nenhum Proxy</string>
- <string name="button_invert_selection">Inverter Seleção</string>
- <string name="pref_proxy_title">Proxy de Rede de SaÃda (Opcional)</string>
- <string name="pref_proxy_type_title">Tipo de Proxy de SaÃda</string>
- <string name="pref_proxy_type_summary">Protocolo para usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Inserir Tipo de Proxy</string>
- <string name="pref_proxy_host_title">Anfitrião Proxy de SaÃda</string>
- <string name="pref_proxy_host_summary">Nome do Hospedeiro do Servidor Proxy</string>
- <string name="pref_proxy_host_dialog">Inserir Hospedeiro Proxy</string>
- <string name="pref_proxy_port_title">Porta Proxy de SaÃda</string>
- <string name="pref_proxy_port_summary">Porta do Servidor Proxy</string>
- <string name="pref_proxy_port_dialog">Inserir Porta do Proxy</string>
- <string name="pref_proxy_username_title">Nome do Utilizador do Proxy de SaÃda</string>
- <string name="pref_proxy_username_summary">Nome do Utilizador do Proxy (Opcional)</string>
- <string name="pref_proxy_username_dialog">Inserir Nome de Utilizador do Proxy</string>
- <string name="pref_proxy_password_title">Senha do Proxy de SaÃda</string>
- <string name="pref_proxy_password_summary">Senha do Proxy (Opcional)</string>
- <string name="pref_proxy_password_dialog">Inserir Senha do Proxy</string>
- <string name="status">Estado</string>
- <string name="couldn_t_start_tor_process_">Não foi possÃvel iniciar o processo Tor: </string>
- <string name="error">Erro</string>
- <string name="bridges">Pontes</string>
- <string name="use_bridges">Usar Pontes</string>
- <string name="ip_address_and_port_of_bridges">Endereço de IP e porta das pontes</string>
- <string name="enter_or_port">Inserir OU porta</string>
- <string name="reachable_ports">Portas alcançáveis</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Portas alcançáveis por detrás de uma Firewal restritiva</string>
- <string name="enter_ports">Insira as portas</string>
- <string name="enable_hidden_services">Hospedeiro de Serviço Ocultado</string>
- <string name="hidden_service_ports">Portas de Serviço Ocultadas</string>
- <string name="project_home">Projeto Home(s): </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">A Licença do Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Programas de Terceiros: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Uma app pretende abrir a porta %S do servidor ocultado para a rede Tor. Isto é seguro, se confiar na app.</string>
- <string name="found_existing_tor_process">encontrado o processo Tor existente...</string>
- <string name="something_bad_happened">Aconteceu algo de mau. Verifique o registo de eventos.</string>
- <string name="hidden_service_on">serviço ocultado em:</string>
- <string name="unable_to_read_hidden_service_name">não é possÃvel ler o nome do serviço ocultado</string>
- <string name="unable_to_start_tor">Não é possÃvel iniciar o Tor:</string>
- <string name="unable_to_reset_tor">Reinicie o seu dispositivo, não é possÃvel reiniciar Tor!</string>
- <string name="pref_use_sys_iptables_title">Usar Tabelas de IP Predefinidas</string>
- <string name="pref_use_persistent_notifications_title">Notificações Sempre Ativadas</string>
- <string name="pref_use_expanded_notifications_title">Notificações Estendidas</string>
- <string name="notification_using_bridges">Pontes ativadas!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Idioma</string>
- <string name="set_locale_summary">Escolha o local e o idioma para o Orbot</string>
- <string name="wizard_locale_title">Escolher Idioma</string>
- <string name="wizard_locale_msg">Deixe a predefinição ou mude o idioma atual</string>
- <string name="btn_save_settings">Guardar Definições</string>
- <string name="bandwidth_">Largura de banda:</string>
- <string name="down">para baixo</string>
- <string name="up">para cima</string>
- <string name="newnym">Mudou para uma nova identidade do Tor!</string>
- <string name="menu_use_chatsecure">Usar ChatSecure</string>
- <string name="permission_manage_tor_label">Gerir Tor</string>
- <string name="permission_manage_tor_description">Ative esta app para controlar o serviço Tor</string>
- <string name="install_apps_">Instalar apps?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nenhuma conetividade de rede. A hibernar Torâ?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">A conetividade de rede é boa. A iniciar Tor�</string>
- <string name="updating_settings_in_tor_service">a atualizar as definições no serviço Tor</string>
- <string name="pref_socks_title">SOCKS Tor</string>
- <string name="pref_dnsport_title">Porta DNS Tor</string>
- <string name="your_tor_public_ips_">Os seus IPs Públicos Tor:</string>
- <string name="app_conflict">Conflito de App</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Pontes Atualizadas</string>
- <string name="menu_qr">Códigos QR</string>
- <string name="get_bridges_email">Correio Eletrónico</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Ativar</string>
- <string name="send_email">Enviar Mensagem</string>
- <string name="standard_browser">Navegador Padrão</string>
-</resources>
diff --git a/res/values-ro-rRO/strings.xml b/res/values-ro-rRO/strings.xml
deleted file mode 100644
index d0e466c..0000000
--- a/res/values-ro-rRO/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_home">Pagina de start</string>
- <string name="menu_browse">RÄ?sfoieÅ?te</string>
- <string name="menu_settings">SetÄ?ri</string>
- <string name="menu_info">AsistenÅ£Ä?</string>
- <string name="menu_about">Despre</string>
- <string name="button_help">AsistenÅ£Ä?</string>
- <string name="button_close">Ã?nchide</string>
- <string name="button_about">Despre</string>
- <string name="menu_exit">IeÅ?ire</string>
- <string name="btn_back">Ã?napoi</string>
- <string name="btn_cancel">Revocare</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">SetÄ?ri proxy</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">General</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Avertizare</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Nimic</string>
- <string name="status">Stare</string>
- <string name="error">Eroare</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">SalveazÄ? setÄ?rile</string>
-</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
deleted file mode 100644
index 571f512..0000000
--- a/res/values-ro/strings.xml
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">porneÈ?te È?i opreÈ?te Tor</string>
- <string name="tor_proxy_service_process">serviciu proxy tor</string>
- <string name="status_starting_up">Orbot porneste...</string>
- <string name="status_activated">Conectat la reteaua Tor</string>
- <string name="status_disabled">Orbot este dezactivat</string>
- <string name="tor_process_starting">Porneste clientul Tor...</string>
- <string name="tor_process_complete">terminat.</string>
- <string name="tor_process_waiting">asteptare.</string>
- <string name="not_anonymous_yet">ATENTIE: Traficul inca nu este anonim! Configureaza aplicatile sa foloseasca proxy-ul HTTP 127.0.0.1:8118 sau SOCKS4A sau proxy-ul SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Pagina de start</string>
- <string name="menu_browse">RÄ?sfoieÅ?te</string>
- <string name="menu_settings">SetÄ?ri</string>
- <string name="menu_log">log</string>
- <string name="menu_info">AsistenÅ£Ä?</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">Despre</string>
- <string name="main_layout_download">Descarca</string>
- <string name="main_layout_upload">Incarca</string>
- <string name="button_help">AsistenÅ£Ä?</string>
- <string name="button_close">Ã?nchide</string>
- <string name="button_about">Despre</string>
- <string name="button_clear_log">Goleste log-ul</string>
- <string name="menu_verify">Verifica</string>
- <string name="menu_exit">IeÅ?ire</string>
- <string name="press_to_start">- apasa lung pentru pornire -</string>
- <string name="pref_trans_proxy_group">Proxy transparent (necesita root)</string>
- <string name="pref_trans_proxy_title">Proxy transparent</string>
- <string name="pref_trans_proxy_summary">Aplicare automata a Tor la aplicatii</string>
- <string name="pref_transparent_all_title">Tor tot</string>
- <string name="pref_transparent_all_summary">Toate aplicatile folosesc Tor pentru trafic</string>
- <string name="pref_transparent_port_fallback_title">Port proxy de rezerva</string>
- <string name="pref_transparent_port_fallback_summary">ATENTIE: Ocoleste porturile comune (80, 443, etc.). *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza</string>
- <string name="pref_transparent_port_title">Lista porturi</string>
- <string name="pref_transparent_port_summary">Lista porturi pentru proxy. *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza</string>
- <string name="pref_transparent_port_dialog">Introdu porturile pentru proxy</string>
- <string name="pref_has_root">Necesita acces root</string>
- <string name="pref_has_root_summary">Necesita acces root pentru proxy transparent</string>
- <string name="status_install_success">Fisierele binare Tor instalate cu succes!</string>
- <string name="status_install_fail">Fisierele binare Tor nu au putut fi instalate. Verificati log-ul si raportati bug-ul la tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Eroare de aplicatie</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Despre Orbot</string>
- <string name="btn_next">Urmatorul</string>
- <string name="btn_back">Ã?napoi</string>
- <string name="btn_finish">Termina</string>
- <string name="btn_okay">Ok</string>
- <string name="btn_cancel">Revocare</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Detalii Orbot</string>
- <string name="wizard_permissions_root">Permisiune acordata</string>
- <string name="wizard_permissions_stock">Permisiuni Orbot</string>
- <string name="wizard_premissions_msg_root">Excelent! Am detectat ca ai permis acces root pentru Orbot. Vom folosi aceasta putere cu raspundere.</string>
- <string name="wizard_permissions_msg_stock">Desi nu este necesar, Orbot poate fi mai puternic daca dispozitivul dumneavoastra are acces root. Foloseste butonul de mai jos pentru ai oferi superputeri lui Orbot!</string>
- <string name="wizard_permissions_no_root">Daca nu ai acces root, sau nu ai habar despre ce vorbim, asigura-te ca folosesti aplicatii facute sa functioneze cu Orbot.</string>
- <string name="wizard_permissions_consent">Inteleg si as vrea sa continui fara Superuser</string>
- <string name="wizard_permission_enable_root">Aproba root pentru Orbot</string>
- <string name="wizard_configure">Configureaza Tor</string>
- <string name="wizard_configure_msg">Orbot ofera posibilitatea sa trimita tot traficul prin Tor SAU sa alegi aplicatii individuale.</string>
- <string name="wizard_configure_all">Toate aplicatiile folosesc Tor</string>
- <string name="wizard_configure_select_apps">Alege aplicatii individuale pentru Tor</string>
- <string name="wizard_tips_tricks">Aplicatii compatibile Orbot</string>
- <string name="wizard_tips_msg">Aplicatiile de mai jos au fost create sa fie compatibile cu Orbot. Apasa pe fiecare buton pentru a instala acum, sau le poti gasi mai tarziu pe Google Play, pe site-ul GuardianProject.info sau pe F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Mesagerie instantanee securizatÄ? pentru Android</string>
- <string name="wizard_tips_proxy">Setari pentru proxy - Invata cum sa configurezi aplicatii sa fie compatibile cu Orbot</string>
- <string name="wizard_tips_duckgo">Motor de cautare DuckDuckGo</string>
- <string name="wizard_tips_twitter">Seteaza proxy-ul Twitter \"localhost\" su portul 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">SetÄ?ri proxy</string>
- <string name="wizard_final">Orbot este pregatit!</string>
- <string name="wizard_exit_at_first_screen_toast">ConfiguraÈ?i Orbot înainte de a începe sÄ?-l utilizaÈ?i!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Vom deschide pagina https://check.torproject.org pentru a verifica daca Orbot este configurat corespunzator si daca este conectat la Tor.</string>
- <string name="pref_hs_group">Serviciu de gazduire ascuns</string>
- <string name="pref_general_group">General</string>
- <string name="pref_start_boot_title">Porneste Orbot la boot-are</string>
- <string name="pref_start_boot_summary">Porneste Orbot automat si conecteaza-te la Tor cand porneste dispozitivul</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Atentie</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permisiuni</string>
- <string name="wizard_permissions_root_msg1">Optional, ii poti oferi lui Orbot acces \"Superuser\" pentru a activa optiuni avansate, cum ar fi proxy transparent.</string>
- <string name="wizard_permissions_root_msg2">Daca nu vrei sa faci asta, asigura-te ca folosesti aplicatii compatibile cu Orbot.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Aplicatii cu Orbot activat</string>
- <string name="wizard_tips_gibberbot">ChatSecure: AplicaÈ?ie sigurÄ? de chat cu codare Off-the-Record</string>
- <string name="wizard_tips_play">Gaseste toate aplicatile Guardian Project pe Google Play</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy transparent</string>
- <string name="wizard_transproxy_msg">Asta va permite aplicatilor tale sa foloseasca Tor automat fara nici o configurare.</string>
- <string name="wizard_transproxy_hint">(Bifeaza asta daca nu ai idee despre ce vorbim)</string>
- <string name="wizard_transproxy_none">Nimic</string>
- <string name="pref_transparent_tethering_title">Partajarea conexiunii Tor</string>
- <string name="pref_transparent_tethering_summary">Activeaza proxy transparent pentru conexiuni partajate prin WiFi si USB (necesita restart)</string>
- <string name="button_grant_superuser">Cere acces Superuser</string>
- <string name="pref_select_apps">Selecteaza aplicatii</string>
- <string name="pref_select_apps_summary">Alege aplicatii care sa foloseasca Tor</string>
- <string name="pref_node_configuration">Configurare nod</string>
- <string name="pref_node_configuration_summary">Setari avansate care ar putea sa iti reduca anonimitatea</string>
- <string name="pref_entrance_node">Noduri de intrare</string>
- <string name="pref_entrance_node_summary">Amprente, nick name-uri si adrese pentru primul hop</string>
- <string name="pref_entrance_node_dialog">Introdu noduri de intrare</string>
- <string name="pref_proxy_title">Proxy de retea pentru iesire (optional)</string>
- <string name="pref_proxy_type_title">Tipul proxy-ului de iesire</string>
- <string name="pref_proxy_type_summary">Tipul protocolului pentru proxy: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Introdu tipul proxy-ului</string>
- <string name="pref_proxy_host_title">Host-ul proxy-ului de iesire</string>
- <string name="pref_proxy_host_summary">Hostname-ul server-ului proxy</string>
- <string name="pref_proxy_host_dialog">Introdu host-ul proxy-ului</string>
- <string name="pref_proxy_port_title">Port-ul proxy-ului de iesire</string>
- <string name="pref_proxy_port_summary">Port-ul serverului proxy</string>
- <string name="pref_proxy_port_dialog">Introdu port-ul proxy</string>
- <string name="pref_proxy_username_title">Username-ul proxy-ului de iesire</string>
- <string name="pref_proxy_username_summary">Username-ul proxy-ului (optional)</string>
- <string name="pref_proxy_username_dialog">Introdu username-ul proxy-ului</string>
- <string name="pref_proxy_password_title">Parola pentru proxy-ul de iesire</string>
- <string name="pref_proxy_password_summary">Parola pentru proxy (optional)</string>
- <string name="pref_proxy_password_dialog">Introdu parola pentru proxy</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Configurez proxy transparent complet...</string>
- <string name="setting_up_app_based_transparent_proxying_">Configurez un proxy transparent bazat pe aplicatie...</string>
- <string name="transparent_proxying_enabled">Proxy transparent ACTIVAT</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy activat pentru partajare!</string>
- <string name="warning_error_starting_transparent_proxying_">ATENTIE: eroare la pornirea proxy-ului transparent!</string>
- <string name="transproxy_rules_cleared">Reguli TransProxy golite</string>
- <string name="couldn_t_start_tor_process_">Nu am putut porni procesul Tor:</string>
- <string name="setting_up_port_based_transparent_proxying_">Configurez proxy transparent bazat pe port...</string>
- <string name="bridge_error">Eroare de punte</string>
- <string name="bridge_requires_ip">Pentru a putea folosi optiunea de punte, trebuie introdusa cel putin o adresa IP pentru punte.</string>
- <string name="send_email_for_bridges">Trimite un e-mail la bridges@xxxxxxxxxxxxxx cu linia \"get bridges\" in continutul mail-ului de pe un cont de GMail.</string>
- <string name="error">Eroare</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Setarile tale pentru adrese accesibile au cauzat o exceptie!</string>
- <string name="your_relay_settings_caused_an_exception_">Setarile tale de relay au cauzat o exceptie!</string>
- <string name="exit_nodes">Noduri de iesire</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Amprente, nick name-uri, tari si adrese pentru ultimul hop</string>
- <string name="enter_exit_nodes">Introdu noduri de iesire</string>
- <string name="exclude_nodes">Noduri de exclus</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Amprente, nick name-uri, tari si adrese de exclus</string>
- <string name="enter_exclude_nodes">Introdu noduri de exclus</string>
- <string name="strict_nodes">Noduri stricte</string>
- <string name="use_only_these_specified_nodes">Foloseste *doar* nodurile specificate</string>
- <string name="bridges">Punti</string>
- <string name="use_bridges">Foloseste punti</string>
- <string name="bridges_obfuscated">Punti mascate</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activeaza noduri de intrare alternative in reteaua Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activeaza daca puntile configurate sunt punti mascate</string>
- <string name="ip_address_and_port_of_bridges">Adresa IP si port pentru punti</string>
- <string name="enter_bridge_addresses">Introdu adresa pentru punte</string>
- <string name="relays">Comutatoare</string>
- <string name="relaying">Comutare</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Activeaza dispozitivul sa fie un comutator fara iesire</string>
- <string name="relay_port">Port de retransmitere</string>
- <string name="listening_port_for_your_tor_relay">Port pentru comutatorul tau Tor</string>
- <string name="enter_or_port">Introdu portul OR</string>
- <string name="relay_nickname">Nick name-ul comutatorului</string>
- <string name="the_nickname_for_your_tor_relay">Nick name-ul pentru comutatorul tau Tor</string>
- <string name="enter_a_custom_relay_nickname">Introdu un nick name pentru comutator</string>
- <string name="reachable_addresses">Adresa accesibila</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ruleaza ca si client in spatele firewall-ului cu politici restrictive</string>
- <string name="reachable_ports">Porturi accesibile</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Porturi accesibile in spatele unui firewall restrictiv</string>
- <string name="enter_ports">Introdu porturi</string>
- <string name="enable_hidden_services">Serviciu de gazduire ascuns</string>
- <string name="run_servers_accessible_via_the_tor_network">permite serverului de pe dispozitiv sa fie accesibil in reteaua Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">introdu porturile localhost-ului pentru servicile ascunse</string>
- <string name="hidden_service_ports">Porturi de serviciu ascunse</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">numele serviciului tau ascuns (generat automat)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activeaza exportul log-ului (trebuie folosit adb sau LogCat pentru vizualizare)</string>
- <string name="project_home">Casa(le) proiectului:</string>
- <string name="the_tor_license">Licenta Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Aplicatii tertiare:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">O aplicatie vrea sa deschida portul ascuns %S spre reteaua Tor. Este sigur daca ai incredere in aplicatie.</string>
- <string name="found_existing_tor_process">gasit proces Tor existent...</string>
- <string name="something_bad_happened">Ceva rau s-a intamplat. Verifica log-ul</string>
- <string name="hidden_service_on">serviciu ascuns pe:</string>
- <string name="unable_to_read_hidden_service_name">nu am putut citi numele serviciului ascuns</string>
- <string name="unable_to_start_tor">Nu am reusit sa pornesc Tor:</string>
- <string name="pref_use_sys_iptables_title">Foloseste Iptables implicite</string>
- <string name="pref_use_sys_iptables_summary">foloseste fisierele binare iptables incorporate in locul celor din Orbot</string>
- <string name="error_installing_binares">Fisierele binare Tor nu au putut fi instalate sau actualizate.</string>
- <string name="pref_use_persistent_notifications">Arata tot timpul icoana in bara cand Orbot este conectat</string>
- <string name="pref_use_persistent_notifications_title">Notificari active tot timpul</string>
- <string name="notification_using_bridges">Punti activate!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">LimbÄ?</string>
- <string name="set_locale_summary">Alege localele si limba pentru Orbot</string>
- <string name="wizard_locale_title">Alege limba</string>
- <string name="wizard_locale_msg">Lasa implicit sau schimba limba curenta</string>
- <string name="btn_save_settings">SalveazÄ? setarile</string>
- <string name="no_internet_connection_tor">Nu este conexiune la internet; Tor este în aÈ?teptare...</string>
- <string name="bandwidth_">LÄ?È?ime de bandÄ?:</string>
- <string name="down">jos</string>
- <string name="up">sus</string>
- <string name="pref_disable_network_title">FÄ?rÄ? adormirea automatÄ? a reÈ?elei</string>
- <string name="pref_disable_network_summary">Pune Tor sÄ? doarmÄ? dacÄ? nu este internet disponibil</string>
- <string name="newnym">AÈ?i comutat la o nouÄ? identitate Tor!</string>
- <string name="menu_use_chatsecure">UtilizaÈ?i ChatSecure</string>
- <string name="permission_manage_tor_label">Administrare Tor</string>
- <string name="permission_manage_tor_description">ActivaÈ?i aceastÄ? aplicaÈ?ie pentru a controla serviciile Tor</string>
- <string name="install_apps_">Se instaleazÄ? aplicaÈ?ia?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Nu este conexiune la reÈ?ea. Se pune Tor în adormire...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Conexiunea la reÈ?ea este bunÄ?. Se trezeÈ?te Tor...</string>
- <string name="updating_settings_in_tor_service">se actualizeazÄ? configurÄ?rile în serviciul Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="you_do_not_have_root_access_enabled">Nu aveÈ?i activat accesul ca ROOT</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KiO</string>
- <string name="mb">MiO</string>
- <string name="menu_qr">Coduri QR</string>
- <string name="bridge_mode">Mod punte</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">ActiveazÄ?</string>
- <string name="send_email">Trimite email</string>
- <string name="standard_browser">Navigator standard</string>
-</resources>
diff --git a/res/values-rs-rAR/strings.xml b/res/values-rs-rAR/strings.xml
deleted file mode 100644
index 0f876c9..0000000
--- a/res/values-rs-rAR/strings.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">reiniciar Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot está iniciándose�</string>
- <string name="status_activated">Conectado a la red Tor</string>
- <string name="status_disabled">\"Orbot está Desactivado</string>
- <string name="status_shutting_down">Orbot se está apagando</string>
- <string name="tor_process_complete">Completar</string>
- <string name="not_anonymous_yet">CIUDADO: Tu tráfico no es anónimo aún! Por favor configura tus aplicaciones para que usen el HTTP proxy 127.0.0.1:8118 o SOCKS4A o el proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Inicio</string>
- <string name="menu_browse">Navegar</string>
- <string name="menu_settings">Configuración</string>
- <string name="menu_log">Registro</string>
- <string name="menu_info">Ayuda</string>
- <string name="menu_apps">Apps</string>
- <string name="menu_start">Iniciar</string>
- <string name="menu_stop">Detener</string>
- <string name="menu_about">Acerca de</string>
- <string name="menu_wizard">Asistente</string>
- <string name="button_help">Ayuda</string>
- <string name="button_close">Cerrar</string>
- <string name="button_about">Acerca de</string>
- <string name="button_clear_log">Borrar Registros</string>
- <string name="menu_verify">Chequear</string>
- <string name="menu_exit">Salir</string>
- <string name="pref_trans_proxy_group">Proxying Transparente (Requiere Root)</string>
- <string name="pref_trans_proxy_title">Proxying Transparente</string>
- <string name="pref_trans_proxy_summary">Torificación Automática de Aplicaciones</string>
- <string name="pref_transparent_all_title">Torear Todo</string>
- <string name="btn_next">Siguiente</string>
- <string name="btn_back">Atrás</string>
- <string name="btn_finish">Finalizar</string>
- <string name="btn_cancel">Cancelar</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_final">Orbot está listo!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">General</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
-
-
-
-
- <!--Transparent Proxy screen-->
- <!--<string name="pref_use_whispercore">Use WhisperCore</string>
-<string name="pref_use_whispercore_summary">Use the proprietary NetFilter APIs provided by WhisperSystems (required device with WhisperCore installed)</string>-->
- <string name="default_bridges"/>
- <string name="powered_by">potenciado por The Tor Project</string>
-</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
deleted file mode 100644
index 816ca1a..0000000
--- a/res/values-ru/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot - Ñ?Ñ?о Ñ?вободнаÑ? пÑ?огÑ?амма длÑ? пÑ?окÑ?и-Ñ?оединений, она позволÑ?еÑ? дÑ?Ñ?гим пÑ?иложениÑ?м более безопаÑ?но иÑ?полÑ?зоваÑ?Ñ? инÑ?еÑ?неÑ?-Ñ?оединение. Orbot иÑ?полÑ?зÑ?еÑ? Tor длÑ? Ñ?иÑ?Ñ?ованиÑ? инÑ?еÑ?неÑ?-Ñ?Ñ?аÑ?ика, коÑ?оÑ?Ñ?й заÑ?ем Ñ?кÑ?Ñ?ваеÑ?Ñ?Ñ? в Ñ?оде пеÑ?еÑ?Ñ?лки Ñ?еÑ?ез неÑ?колÑ?ко компÑ?Ñ?Ñ?еÑ?ов в Ñ?азнÑ?Ñ? Ñ?аÑ?Ñ?Ñ?Ñ? планеÑ?Ñ?. Tor Ñ?влÑ?еÑ?Ñ?Ñ? Ñ?вободнÑ?м пÑ?огÑ?аммнÑ?м пÑ?иложением, а Ñ?акже оÑ?кÑ?Ñ?Ñ?ой Ñ?еÑ?Ñ?Ñ?, помогаÑ?Ñ?ей заÑ?иÑ?иÑ?Ñ?Ñ?Ñ? оÑ? Ñ?лежки в Ñ?еÑ?Ñ?Ñ?, Ñ?гÑ?ожаÑ?Ñ?ей лиÑ?ной Ñ?вободе и Ñ?аÑ?Ñ?ной жизни, конÑ?иденÑ?иалÑ?нÑ?м бизнеÑ?-деÑ?Ñ?елÑ?ноÑ?Ñ?и и конÑ?акÑ?ам, а Ñ?акже гоÑ?Ñ?даÑ?Ñ?Ñ?венной пÑ?огÑ?амме бÐ
µÐ·Ð¾Ð¿Ð°Ñ?ноÑ?Ñ?и, извеÑ?Ñ?ной как анализ Ñ?Ñ?аÑ?ика.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Ð?апÑ?Ñ?к и оÑ?Ñ?ановка Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Ð?апÑ?Ñ?к Orbot...</string>
- <string name="status_activated">Ð?одклÑ?Ñ?Ñ?н к Ñ?еÑ?и Tor</string>
- <string name="status_disabled">Orbot оÑ?клÑ?Ñ?Ñ?н</string>
- <string name="status_shutting_down">СлÑ?жба Tor вÑ?клÑ?Ñ?аеÑ?Ñ?Ñ?</string>
- <string name="tor_process_starting">Ð?апÑ?Ñ?каеÑ?Ñ?Ñ? клиенÑ? Tor...</string>
- <string name="tor_process_complete">завеÑ?Ñ?ено.</string>
- <string name="tor_process_waiting">ожидание.</string>
- <string name="not_anonymous_yet">Ð?Ð Ð?Ð?УÐ?Ð Ð?Ð?Ð?Ð?Ð?Ð?Ð?: ваÑ? Ñ?Ñ?аÑ?ик еÑ?Ñ? не анонимен! Ð?ожалÑ?йÑ?Ñ?а, наÑ?Ñ?Ñ?ойÑ?е Ñ?вои пÑ?иложениÑ? на иÑ?полÑ?зование HTTP-пÑ?окÑ?и 127.0.0.1:8118 или же SOCKS4A или SOCKS5-пÑ?окÑ?и 127.0.0.1:9050</string>
- <string name="menu_home">Ð?омаÑ?нÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?а</string>
- <string name="menu_browse">Ð?Ñ?оÑ?моÑ?Ñ?</string>
- <string name="menu_settings">Ð?аÑ?Ñ?Ñ?ойки</string>
- <string name="menu_log">Ð?Ñ?Ñ?нал</string>
- <string name="menu_info">СпÑ?авка</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Ð?апÑ?Ñ?Ñ?иÑ?Ñ?</string>
- <string name="menu_stop">Ð?Ñ?Ñ?ановиÑ?Ñ?</string>
- <string name="menu_about">Ð? пÑ?огÑ?амме</string>
- <string name="menu_promo_apps">Ð?олÑ?Ñ?иÑ?Ñ? пÑ?иложениÑ?...</string>
- <string name="main_layout_download">Ð?агÑ?Ñ?зка</string>
- <string name="main_layout_upload">Ð?Ñ?пÑ?авка</string>
- <string name="button_help">СпÑ?авка</string>
- <string name="button_close">Ð?акÑ?Ñ?Ñ?Ñ?</string>
- <string name="button_about">Ð? пÑ?огÑ?амме</string>
- <string name="button_clear_log">Ð?Ñ?иÑ?Ñ?иÑ?Ñ? жÑ?Ñ?нал</string>
- <string name="menu_verify">Ð?Ñ?овеÑ?ка</string>
- <string name="menu_exit">Ð?Ñ?Ñ?од</string>
- <string name="menu_scan">СканиÑ?оваÑ?Ñ? QR-код моÑ?Ñ?а</string>
- <string name="menu_share_bridge">Ð?пÑ?бликоваÑ?Ñ? QR-код моÑ?Ñ?а</string>
- <string name="press_to_start">- долгое нажаÑ?ие длÑ? запÑ?Ñ?ка -</string>
- <string name="pref_trans_proxy_group">Ð?Ñ?озÑ?аÑ?нÑ?й пÑ?окÑ?и (Ñ?Ñ?ебÑ?еÑ?Ñ?Ñ? root-доÑ?Ñ?Ñ?п)</string>
- <string name="pref_trans_proxy_title">Ð?Ñ?озÑ?аÑ?нÑ?й пÑ?окÑ?и</string>
- <string name="pref_trans_proxy_summary">Ð?вÑ?омаÑ?иÑ?еÑ?каÑ? Tor-иÑ?икаÑ?иÑ? пÑ?иложений</string>
- <string name="pref_transparent_all_title">Ð?апÑ?авлÑ?Ñ?Ñ? вÑ?Ñ? Ñ?еÑ?ез Tor</string>
- <string name="pref_transparent_all_summary">Ð?апÑ?авлÑ?Ñ?Ñ? Ñ?Ñ?аÑ?ик вÑ?еÑ? пÑ?иложений Ñ?еÑ?ез Tor</string>
- <string name="pref_transparent_port_fallback_title">РезеÑ?внÑ?й поÑ?Ñ? пÑ?окÑ?и</string>
- <string name="pref_transparent_port_fallback_summary">Ð?Ð Ð?Ð?УÐ?Ð Ð?Ð?Ð?Ð?Ð?Ð?Ð?: обÑ?одиÑ? обÑ?ие поÑ?Ñ?Ñ? (80, 443, и Ñ?.д.). *Ð?СÐ?Ð?Ð?ЬÐ?Ð?Ð?Ð?ТЬ ТÐ?Ð?ЬÐ?Ð?* еÑ?ли Ñ?ежимÑ? \'Ð?Ñ?Ñ?\' или \'Ð?Ñ?иложение\' не Ñ?абоÑ?аÑ?Ñ?.</string>
- <string name="pref_transparent_port_title">СпиÑ?ок поÑ?Ñ?ов</string>
- <string name="pref_transparent_port_summary">СпиÑ?ок поÑ?Ñ?ов длÑ? пÑ?окÑ?иÑ?икаÑ?ии. *Ð?СÐ?Ð?Ð?ЬÐ?Ð?Ð?Ð?ТЬ ТÐ?Ð?ЬÐ?Ð?* еÑ?ли Ñ?ежимÑ? \'Ð?Ñ?Ñ?\' или \'Ð?Ñ?иложение\' не Ñ?абоÑ?аÑ?Ñ?.</string>
- <string name="pref_transparent_port_dialog">Ð?ведиÑ?е поÑ?Ñ?Ñ? длÑ? пÑ?окÑ?иÑ?икаÑ?ии</string>
- <string name="pref_has_root">Ð?апÑ?оÑ?иÑ?Ñ? root-доÑ?Ñ?Ñ?п</string>
- <string name="pref_has_root_summary">Ð?апÑ?оÑ?иÑ?Ñ? root-доÑ?Ñ?Ñ?п длÑ? пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии</string>
- <string name="status_install_success">Ð?Ñ?огÑ?амма Tor Ñ?Ñ?пеÑ?но Ñ?Ñ?Ñ?ановлена!</string>
- <string name="status_install_fail">Ð?е Ñ?далоÑ?Ñ? Ñ?Ñ?Ñ?ановиÑ?Ñ? пÑ?огÑ?аммÑ? Tor. Ð?ожалÑ?йÑ?Ñ?а, пÑ?овеÑ?Ñ?Ñ?е Ñ?иÑ?Ñ?емнÑ?й жÑ?Ñ?нал и Ñ?ообÑ?иÑ?е нам: tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ð?Ñ?ибка пÑ?иложениÑ?</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Ð?б Orbot</string>
- <string name="btn_next">Ð?пеÑ?Ñ?д</string>
- <string name="btn_back">Ð?азад</string>
- <string name="btn_finish">Ð?авеÑ?Ñ?иÑ?Ñ?</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Ð?Ñ?мена</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ð?екоÑ?оÑ?Ñ?е Ñ?ведениÑ? о пÑ?огÑ?амме Orbot</string>
- <string name="wizard_details_msg">Orbot â?? Ñ?Ñ?о пÑ?иложение Ñ? оÑ?кÑ?Ñ?Ñ?Ñ?м иÑ?Ñ?однÑ?м кодом, коÑ?оÑ?ое Ñ?одеÑ?жиÑ? Tor, LibEvent и Privoxy. Ð?но пÑ?едоÑ?Ñ?авлÑ?еÑ? локалÑ?нÑ?й HTTP-пÑ?окÑ?и (8118) и SOCKS-пÑ?окÑ?и (9050) в Ñ?еÑ?Ñ? Tor. Orbot Ñ?акже позволÑ?еÑ? на Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ваÑ? Ñ? пÑ?авами root пеÑ?еÑ?Ñ?лаÑ?Ñ? веÑ?Ñ? инÑ?еÑ?неÑ?-Ñ?Ñ?аÑ?ик Ñ?еÑ?ез Tor.</string>
- <string name="wizard_permissions_root">РазÑ?еÑ?ение полÑ?Ñ?ено</string>
- <string name="wizard_permissions_stock">РазÑ?еÑ?ениÑ? Orbot</string>
- <string name="wizard_premissions_msg_root">Ð?Ñ?лиÑ?но! Ð?Ñ? опÑ?еделили, Ñ?Ñ?о вÑ? пÑ?едоÑ?Ñ?авили root-пÑ?ава длÑ? Orbot. Ð?Ñ? бÑ?дем иÑ?полÑ?зоваÑ?Ñ? Ñ?Ñ?Ñ? возможноÑ?Ñ?Ñ? Ñ? Ñ?мом.</string>
- <string name="wizard_permissions_msg_stock">ХоÑ?Ñ? Ñ?Ñ?о и не Ñ?Ñ?ебÑ?еÑ?Ñ?Ñ?, Orbot можеÑ? бÑ?Ñ?Ñ? более моÑ?нÑ?м инÑ?Ñ?Ñ?Ñ?менÑ?ом, еÑ?ли ваÑ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во имееÑ? пÑ?ава root. Ð?ажмиÑ?е на кнопкÑ? ниже и пÑ?едоÑ?Ñ?авÑ?Ñ?е Orbot Ñ?Ñ?пеÑ?возможноÑ?Ñ?и!</string>
- <string name="wizard_permissions_no_root">Ð?Ñ?ли Ñ? ваÑ? неÑ? root-пÑ?ав или вÑ? не имееÑ?е пÑ?едÑ?Ñ?авлениÑ? о Ñ?Ñ?м мÑ? говоÑ?им, пÑ?оÑ?Ñ?о Ñ?бедиÑ?еÑ?Ñ?, Ñ?Ñ?о иÑ?полÑ?зÑ?еÑ?е пÑ?иложениÑ?, Ñ?азÑ?абоÑ?аннÑ?е длÑ? Orbot.</string>
- <string name="wizard_permissions_consent">Я понимаÑ? и Ñ?оÑ?Ñ? пÑ?одолжиÑ?Ñ? без пÑ?ав Ñ?Ñ?пеÑ?полÑ?зоваÑ?елÑ?</string>
- <string name="wizard_permission_enable_root">Ð?аÑ?Ñ? root-пÑ?ава Orbot</string>
- <string name="wizard_configure">Ð?аÑ?Ñ?Ñ?оиÑ?Ñ? Tor-иÑ?икаÑ?иÑ?</string>
- <string name="wizard_configure_msg">Ð?Ñ?огÑ?амма Orbot даÑ?Ñ? вам возможноÑ?Ñ?Ñ? напÑ?авлÑ?Ñ?Ñ? Ñ?Ñ?аÑ?ик вÑ?еÑ? пÑ?иложений Ñ?еÑ?ез Tor Ð?Ð?Ð? вÑ?бÑ?аÑ?Ñ? пÑ?иложениÑ? длÑ? пеÑ?енапÑ?авлениÑ? Ñ?амоÑ?Ñ?оÑ?Ñ?елÑ?но.</string>
- <string name="wizard_configure_all">Ð?апÑ?авлÑ?Ñ?Ñ? вÑ?е пÑ?иложениÑ? Ñ?еÑ?ез Tor</string>
- <string name="wizard_configure_select_apps">Ð?апÑ?авлÑ?Ñ?Ñ? вÑ?бÑ?аннÑ?е пÑ?иложениÑ? Ñ?еÑ?ез Tor</string>
- <string name="wizard_tips_tricks">Orbot-задейÑ?Ñ?вованнÑ?е пÑ?иложениÑ?</string>
- <string name="wizard_tips_msg">Ð?Ñ? Ñ?овеÑ?Ñ?ем вам Ñ?каÑ?аÑ?Ñ? и иÑ?полÑ?зоваÑ?Ñ? пÑ?иложениÑ?, коÑ?оÑ?Ñ?е Ñ?меÑ?Ñ? Ñ?абоÑ?аÑ?Ñ? напÑ?Ñ?мÑ?Ñ? Ñ?еÑ?ез Orbot. Ð?ажмиÑ?е на кнопки ниже, Ñ?Ñ?обÑ? запÑ?Ñ?Ñ?иÑ?Ñ? пÑ?оÑ?еÑ?Ñ? Ñ?Ñ?Ñ?ановки.</string>
- <string name="wizard_tips_otrchat">ChatSecure - заÑ?иÑ?Ñ?ннÑ?й обмен Ñ?ообÑ?ениÑ?ми в Android</string>
- <string name="wizard_tips_proxy">Ð?аÑ?Ñ?Ñ?ойки пÑ?окÑ?и: Ñ?знайÑ?е, как наÑ?Ñ?Ñ?оиÑ?Ñ? пÑ?иложениÑ? длÑ? Ñ?абоÑ?Ñ? Ñ? Orbot</string>
- <string name="wizard_tips_duckgo">Ð?Ñ?иложение поиÑ?ковой Ñ?иÑ?Ñ?емÑ? DuckDuckGo</string>
- <string name="wizard_tips_twitter">Twitter поддеÑ?живаеÑ? http-пÑ?окÑ?и \"localhost:8118\"</string>
- <string name="wizard_tips_story_maker">StoryMaker - напиÑ?иÑ?е Ñ?аÑ?Ñ?каз и оÑ?Ñ?авÑ?Ñ?е его Tor длÑ? обеÑ?пеÑ?ениÑ? безопаÑ?ноÑ?Ñ?и!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ð?аÑ?Ñ?Ñ?ойки пÑ?окÑ?и</string>
- <string name="wizard_proxy_help_msg">Ð?Ñ?ли иÑ?полÑ?зÑ?емое вами пÑ?иложение длÑ? Android поддеÑ?живаеÑ? HTTP или SOCKS-пÑ?окÑ?и, Ñ?о вÑ? можеÑ?е наÑ?Ñ?Ñ?оиÑ?Ñ? его на подклÑ?Ñ?ение к Orbot и иÑ?полÑ?зование Tor.\n\n\nÐ?наÑ?ение Ñ?оÑ?Ñ?а - 127.0.0.1 или \"localhost\". Ð?лÑ? HTTP номеÑ? поÑ?Ñ?а - 8118. Ð?лÑ? SOCKS-пÑ?окÑ?и - 9050. Ð?о возможноÑ?Ñ?и иÑ?полÑ?зÑ?йÑ?е SOCKS4A или SOCKS5.\n \n\n\nÐ?Ñ? можеÑ?е Ñ?знаÑ?Ñ? болÑ?Ñ?е о Ñ?абоÑ?е Ñ?еÑ?ез пÑ?окÑ?и на Android, пÑ?оÑ?иÑ?ав Ñ?Ñ?оÑ? FAQ: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Orbot гоÑ?ов к иÑ?полÑ?зованиÑ?!</string>
- <string name="wizard_final_msg">Ð?иллионÑ? лÑ?дей во вÑ?Ñ?м миÑ?е иÑ?полÑ?зÑ?Ñ?Ñ? Tor по Ñ?азлиÑ?нÑ?м пÑ?иÑ?инам. Ð?Ñ?Ñ?налиÑ?Ñ?Ñ? и блоггеÑ?Ñ?, пÑ?авозаÑ?иÑ?ники, Ñ?оÑ?Ñ?Ñ?дники пÑ?авооÑ?Ñ?аниÑ?елÑ?нÑ?Ñ? оÑ?ганов, Ñ?олдаÑ?Ñ?, коÑ?поÑ?аÑ?ии, гÑ?аждане Ñ?Ñ?Ñ?ан Ñ? Ñ?епÑ?еÑ?Ñ?ивнÑ?м Ñ?ежимом и пÑ?оÑ?Ñ?о обÑ?Ñ?нÑ?е гÑ?аждане..., а Ñ?епеÑ?Ñ? гоÑ?овÑ? и вÑ?!</string>
- <string name="wizard_exit_at_first_screen_toast">Ð?ожалÑ?йÑ?Ñ?а, наÑ?Ñ?Ñ?ойÑ?е Orbot пÑ?ежде Ñ?ем пÑ?иÑ?Ñ?Ñ?пиÑ?Ñ? к иÑ?полÑ?зованиÑ?!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Ð?Ñ? Ñ?Ñ?пеÑ?но подклÑ?Ñ?илиÑ?Ñ? к Ñ?еÑ?и Tor, но Ñ?Ñ?о Ð?Ð? знаÑ?иÑ?, Ñ?Ñ?о ваÑ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во безопаÑ?но. Ð?Ñ? можеÑ?е воÑ?полÑ?зоваÑ?Ñ?Ñ?Ñ? Ñ?Ñ?нкÑ?ией \'Ð?Ñ?овеÑ?ка\' из менÑ?, Ñ?Ñ?обÑ? пÑ?оÑ?еÑ?Ñ?иÑ?оваÑ?Ñ? ваÑ? бÑ?аÑ?зеÑ?.\n\nÐ?оÑ?еÑ?иÑ?е наÑ? Ñ?айÑ? https://guardianproject.info/apps/orbot или оÑ?пÑ?авÑ?Ñ?е пиÑ?Ñ?мо на адÑ?еÑ? help@xxxxxxxxxxxxxxxxxxxx, Ñ?Ñ?обÑ? Ñ?знаÑ?Ñ? болÑ?Ñ?е.</string>
- <string name="tor_check">ÐÑ?о пÑ?иведÑ?Ñ? к запÑ?Ñ?кÑ? бÑ?аÑ?зеÑ?а, вÑ?бÑ?анного на ваÑ?ем Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ве по Ñ?молÑ?аниÑ?, и подклÑ?Ñ?ениÑ? к Ñ?айÑ?Ñ? https://check.torproject.org Ñ? Ñ?елÑ?Ñ? пÑ?овеÑ?ки пÑ?авилÑ?ноÑ?Ñ?и Ñ?абоÑ?Ñ? Orbot и опÑ?еделениÑ?, подклÑ?Ñ?енÑ? ли вÑ? к Ñ?еÑ?и Tor.</string>
- <string name="pref_hs_group">СкÑ?Ñ?Ñ?Ñ?е Ñ?лÑ?жбÑ?</string>
- <string name="pref_general_group">Ð?бÑ?ие</string>
- <string name="pref_start_boot_title">Ð?апÑ?Ñ?каÑ?Ñ? Orbot пÑ?и загÑ?Ñ?зке</string>
- <string name="pref_start_boot_summary">Ð?вÑ?омаÑ?иÑ?еÑ?ки запÑ?Ñ?каÑ?Ñ? Orbot и подклÑ?Ñ?аÑ?Ñ?Ñ?Ñ? к Ñ?еÑ?и Tor пÑ?и загÑ?Ñ?зке ваÑ?его Android-Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ва</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot позволÑ?еÑ? иÑ?полÑ?зоваÑ?Ñ? Tor на Android!\n\nTor позволÑ?еÑ? вам заÑ?иÑ?иÑ?Ñ?Ñ?Ñ? оÑ? Ñ?илÑ?Ñ?Ñ?аÑ?ии Ñ?одеÑ?жимого, анализа Ñ?Ñ?аÑ?ика и наблÑ?дениÑ? за Ñ?еÑ?Ñ?Ñ?, коÑ?оÑ?Ñ?е Ñ?Ñ?авÑ?Ñ? под Ñ?гÑ?озÑ? пÑ?иваÑ?ноÑ?Ñ?Ñ?, конÑ?иденÑ?иалÑ?нÑ?Ñ? инÑ?оÑ?маÑ?иÑ? и лиÑ?нÑ?е оÑ?ноÑ?ениÑ?.\n\nÐÑ?оÑ? маÑ?Ñ?еÑ? поможеÑ? вам наÑ?Ñ?Ñ?оиÑ?Ñ? Orbot и Tor на ваÑ?ем Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ве.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ð?Ñ?едÑ?пÑ?еждение</string>
- <string name="wizard_warning_msg">Сама по Ñ?ебе Ñ?Ñ?Ñ?ановка Orbot не Ñ?делаеÑ? авÑ?омаÑ?иÑ?еÑ?ки ваÑ? мобилÑ?нÑ?й Ñ?Ñ?аÑ?ик анонимнÑ?м.\n\nÐ?Ñ? должнÑ? пÑ?авилÑ?но наÑ?Ñ?Ñ?оиÑ?Ñ? Orbot, ваÑ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во и дÑ?Ñ?гие пÑ?иложениÑ?, Ñ?Ñ?о бÑ? Ñ?Ñ?пеÑ?но иÑ?полÑ?зоваÑ?Ñ? Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">РазÑ?еÑ?ениÑ?</string>
- <string name="wizard_permissions_root_msg1">Ð?Ñ? Ñ?ак же можеÑ?е по желаниÑ? даÑ?Ñ? Orbot пÑ?ава \'СÑ?пеÑ?полÑ?зоваÑ?елÑ?\' длÑ? доÑ?Ñ?Ñ?па к дополниÑ?елÑ?нÑ?м возможноÑ?Ñ?Ñ?м Ñ?ипа пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии.</string>
- <string name="wizard_permissions_root_msg2">Ð?Ñ?ли вÑ? не Ñ?оÑ?иÑ?е делаÑ?Ñ? Ñ?Ñ?о, пожалÑ?йÑ?Ñ?а, Ñ?доÑ?Ñ?овеÑ?Ñ?Ñ?еÑ?Ñ?, Ñ?Ñ?о иÑ?полÑ?зÑ?еÑ?е пÑ?иложениÑ?, Ñ?озданнÑ?е длÑ? Ñ?абоÑ?Ñ? Ñ? Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Ð?оÑ?оже, ваÑ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во не имееÑ? root-пÑ?ав и не пÑ?едоÑ?Ñ?авлÑ?еÑ? доÑ?Ñ?Ñ?п \'СÑ?пеÑ?полÑ?зоваÑ?елÑ?\'.\n\nЧÑ?обÑ? иÑ?полÑ?зоваÑ?Ñ? Tor, вам надо иÑ?полÑ?зоваÑ?Ñ? пÑ?иложениÑ?, поÑ?Ñ?Ñ?оеннÑ?е длÑ? Ñ?абоÑ?Ñ? Ñ? Orbot или Ñ?е, коÑ?оÑ?Ñ?е поддеÑ?живаÑ?Ñ? иÑ?полÑ?зование HTTP или SOCKS-пÑ?окÑ?и.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Ð?Ñ?иложениÑ?, Ñ?абоÑ?аÑ?Ñ?ие Ñ? Orbot:</string>
- <string name="wizard_tips_gibberbot">ChatSecure: пÑ?иложение длÑ? безопаÑ?ной пеÑ?епиÑ?ки Ñ? конÑ?иденÑ?иалÑ?нÑ?м Ñ?иÑ?Ñ?ованием</string>
- <string name="wizard_tips_orweb">Orfox: конÑ?иденÑ?иалÑ?нÑ?й бÑ?аÑ?зеÑ?, Ñ?абоÑ?аÑ?Ñ?ий Ñ?еÑ?ез Tor</string>
- <string name="wizard_tips_play">Ð?айÑ?и вÑ?е пÑ?иложениÑ? Guardian Project на Google Play</string>
- <string name="wizard_tips_fdroid">Ð?айÑ?и вÑ?е пÑ?иложениÑ? Guardian Project на F-Droid</string>
- <string name="wizard_tips_fdroid_org">Ð?айÑ?и вÑ?е пÑ?иложениÑ? Guardian Project на Ñ?айÑ?е https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Ð?Ñ?озÑ?аÑ?ное пÑ?окÑ?иÑ?ование</string>
- <string name="wizard_transproxy_msg">ÐÑ?о позволÑ?еÑ? ваÑ?им пÑ?иложениÑ?м авÑ?омаÑ?иÑ?еÑ?ки Ñ?абоÑ?аÑ?Ñ? по Ñ?еÑ?и Tor без какого-либо конÑ?игÑ?Ñ?иÑ?ованиÑ?.</string>
- <string name="wizard_transproxy_hint">(Ð?Ñ?меÑ?Ñ?Ñ?е даннÑ?й пÑ?нкÑ?, еÑ?ли вÑ? не знаеÑ?е о Ñ?Ñ?м идÑ?Ñ? Ñ?еÑ?Ñ?)</string>
- <string name="wizard_transproxy_none">Ð?еÑ?</string>
- <string name="pref_transparent_tethering_title">ТеÑ?еÑ?инг Tor</string>
- <string name="pref_transparent_tethering_summary">Ð?клÑ?Ñ?иÑ?Ñ? пÑ?озÑ?аÑ?нÑ?Ñ? пÑ?окÑ?иÑ?икаÑ?иÑ? Tor длÑ? Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?в Ñ? Ñ?еÑ?еÑ?ингом по Wi-Fi и USB (Ñ?Ñ?ебÑ?еÑ?Ñ?Ñ? пеÑ?езапÑ?Ñ?к)</string>
- <string name="button_grant_superuser">Ð?апÑ?оÑ?иÑ?Ñ? доÑ?Ñ?Ñ?п СÑ?пеÑ?полÑ?зоваÑ?елÑ?</string>
- <string name="pref_select_apps">Ð?Ñ?бÑ?аннÑ?е пÑ?иложениÑ?</string>
- <string name="pref_select_apps_summary">Ð?Ñ?бÑ?аÑ?Ñ? пÑ?иложениÑ? длÑ? напÑ?авлениÑ? Ñ?еÑ?ез Tor</string>
- <string name="pref_node_configuration">Ð?онÑ?игÑ?Ñ?аÑ?иÑ? Ñ?зла</string>
- <string name="pref_node_configuration_summary">ÐÑ?о дополниÑ?елÑ?нÑ?е наÑ?Ñ?Ñ?ойки, коÑ?оÑ?Ñ?е могÑ?Ñ? Ñ?низиÑ?Ñ? ваÑ?Ñ? анонимноÑ?Ñ?Ñ?</string>
- <string name="pref_entrance_node">Ð?Ñ?однÑ?е Ñ?злÑ?</string>
- <string name="pref_entrance_node_summary">Ð?Ñ?пеÑ?аÑ?ки, пÑ?евдонимÑ?, Ñ?Ñ?Ñ?анÑ? и адÑ?еÑ?а длÑ? пеÑ?вого пÑ?Ñ?жка</string>
- <string name="pref_entrance_node_dialog">Ð?ведиÑ?е вÑ?однÑ?е Ñ?злÑ?</string>
- <string name="pref_allow_background_starts_title">РазÑ?еÑ?иÑ?Ñ? Ñ?оновÑ?Ñ? загÑ?Ñ?зкÑ?</string>
- <string name="pref_allow_background_starts_summary">Ð?озволиÑ?Ñ? лÑ?бомÑ? пÑ?иложениÑ? Ñ?Ñ?ебоваÑ?Ñ? оÑ? Orbot запÑ?Ñ?каÑ?Ñ? Tor и оÑ?ноÑ?Ñ?Ñ?иеÑ?Ñ? к немÑ? Ñ?еÑ?виÑ?Ñ?</string>
- <string name="button_proxy_all">Ð?Ñ?окÑ?иÑ?оваÑ?Ñ? вÑ?Ñ?</string>
- <string name="button_proxy_none">Ð?е пÑ?окÑ?иÑ?оваÑ?Ñ? </string>
- <string name="button_invert_selection">Ð?нвеÑ?Ñ?иÑ?оваÑ?Ñ? вÑ?деленное</string>
- <string name="pref_proxy_title">Ð?Ñ?Ñ?одÑ?Ñ?ий Ñ?еÑ?евой пÑ?окÑ?и (необÑ?заÑ?елÑ?но)</string>
- <string name="pref_proxy_type_title">Тип пÑ?окÑ?и</string>
- <string name="pref_proxy_type_summary">Ð?Ñ?оÑ?окол длÑ? иÑ?полÑ?зованиÑ? пÑ?окÑ?и-Ñ?еÑ?веÑ?ом: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ð?ведиÑ?е Ñ?ип пÑ?окÑ?и</string>
- <string name="pref_proxy_host_title">ХоÑ?Ñ? пÑ?окÑ?и</string>
- <string name="pref_proxy_host_summary">Ð?мÑ? Ñ?оÑ?Ñ?а пÑ?окÑ?и-Ñ?еÑ?веÑ?а</string>
- <string name="pref_proxy_host_dialog">Ð?ведиÑ?е Ñ?оÑ?Ñ? пÑ?окÑ?и</string>
- <string name="pref_proxy_port_title">Ð?оÑ?Ñ? пÑ?окÑ?и</string>
- <string name="pref_proxy_port_summary">Ð?оÑ?Ñ? пÑ?окÑ?и-Ñ?еÑ?веÑ?а</string>
- <string name="pref_proxy_port_dialog">Ð?ведиÑ?е поÑ?Ñ? пÑ?окÑ?и</string>
- <string name="pref_proxy_username_title">Ð?мÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и</string>
- <string name="pref_proxy_username_summary">Ð?мÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и-Ñ?еÑ?веÑ?а (необÑ?заÑ?елÑ?но)</string>
- <string name="pref_proxy_username_dialog">Ð?ведиÑ?е имÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и</string>
- <string name="pref_proxy_password_title">Ð?аÑ?олÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и</string>
- <string name="pref_proxy_password_summary">Ð?аÑ?олÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и-Ñ?еÑ?веÑ?а (необÑ?заÑ?елÑ?но)</string>
- <string name="pref_proxy_password_dialog">Ð?ведиÑ?е паÑ?олÑ? полÑ?зоваÑ?елÑ? пÑ?окÑ?и</string>
- <string name="status">СÑ?аÑ?Ñ?Ñ?</string>
- <string name="setting_up_full_transparent_proxying_">УÑ?Ñ?ановка обÑ?ей пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии...</string>
- <string name="setting_up_app_based_transparent_proxying_">УÑ?Ñ?ановка оÑ?нованной на пÑ?иложениÑ?Ñ? пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии...</string>
- <string name="transparent_proxying_enabled">Ð?Ñ?озÑ?аÑ?наÑ? пÑ?окÑ?иÑ?икаÑ?иÑ? Ð?Ð?Ð?ЮЧÐ?Ð?Ð?</string>
- <string name="transproxy_enabled_for_tethering_">Ð?Ñ?озÑ?аÑ?нÑ?й пÑ?окÑ?и поддеÑ?живаеÑ? Ñ?еÑ?еÑ?инг!</string>
- <string name="warning_error_starting_transparent_proxying_">Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?: оÑ?ибка запÑ?Ñ?ка пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии!</string>
- <string name="transproxy_rules_cleared">Ð?Ñ?авила пÑ?озÑ?аÑ?ного пÑ?окÑ?и Ñ?даленÑ?</string>
- <string name="couldn_t_start_tor_process_">Ð?евозможно запÑ?Ñ?Ñ?иÑ?Ñ? Tor: </string>
- <string name="privoxy_is_running_on_port_">Polipo Ñ?абоÑ?аеÑ? на поÑ?Ñ?Ñ?:</string>
- <string name="setting_up_port_based_transparent_proxying_">УÑ?Ñ?ановка оÑ?нованной на поÑ?Ñ?аÑ? пÑ?озÑ?аÑ?ной пÑ?окÑ?иÑ?икаÑ?ии...</string>
- <string name="bridge_error">Ð?Ñ?ибка моÑ?Ñ?а</string>
- <string name="bridge_requires_ip">Ð?лÑ? иÑ?полÑ?зованиÑ? необÑ?одимо задаÑ?Ñ? IP-адÑ?еÑ? как минимÑ?м одного моÑ?Ñ?а.</string>
- <string name="send_email_for_bridges">Ð?Ñ?пÑ?авÑ?Ñ?е пиÑ?Ñ?мо на адÑ?еÑ? bridges@xxxxxxxxxxxxxx Ñ?о Ñ?Ñ?Ñ?окой \"get bridges\" в Ñ?еле Ñ?ообÑ?ениÑ? из Ñ?Ñ?Ñ?Ñ?ной запиÑ?и GMail.</string>
- <string name="error">Ð?Ñ?ибка</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ð?аÑ?и наÑ?Ñ?Ñ?ойки доÑ?Ñ?Ñ?пнÑ?Ñ? адÑ?еÑ?ов вÑ?звали иÑ?клÑ?Ñ?ение!</string>
- <string name="your_relay_settings_caused_an_exception_">Ð?аÑ?Ñ?Ñ?ойки ваÑ?его Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а вÑ?звали иÑ?клÑ?Ñ?ение!</string>
- <string name="exit_nodes">Ð?Ñ?Ñ?однÑ?е Ñ?злÑ?</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ð?Ñ?пеÑ?аÑ?ки, пÑ?евдонимÑ?, Ñ?Ñ?Ñ?анÑ? и адÑ?еÑ?а длÑ? поÑ?леднего пÑ?Ñ?жка</string>
- <string name="enter_exit_nodes">Ð?ведиÑ?е вÑ?Ñ?однÑ?е Ñ?злÑ?</string>
- <string name="exclude_nodes">Ð?Ñ?клÑ?Ñ?Ñ?ннÑ?е Ñ?злÑ?</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ð?Ñ?пеÑ?аÑ?ки, пÑ?евдонимÑ?, Ñ?Ñ?Ñ?анÑ? и адÑ?еÑ?а на иÑ?клÑ?Ñ?ение</string>
- <string name="enter_exclude_nodes">Ð?ведиÑ?е иÑ?клÑ?Ñ?Ñ?ннÑ?е Ñ?злÑ?</string>
- <string name="strict_nodes">ТоÑ?нÑ?е Ñ?злÑ?</string>
- <string name="use_only_these_specified_nodes">Ð?Ñ?полÑ?зоваÑ?Ñ? *Ñ?олÑ?ко* Ñ?Ñ?и заданнÑ?е Ñ?злÑ?</string>
- <string name="bridges">Ð?оÑ?Ñ?Ñ?</string>
- <string name="use_bridges">Ð?Ñ?полÑ?зоваÑ?Ñ? моÑ?Ñ?Ñ?</string>
- <string name="bridges_obfuscated">Ð?бÑ?Ñ?Ñ?Ñ?иÑ?ованнÑ?е моÑ?Ñ?Ñ?</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ð?клÑ?Ñ?иÑ?Ñ? алÑ?Ñ?еÑ?наÑ?ивнÑ?е вÑ?однÑ?е Ñ?злÑ? в Ñ?еÑ?Ñ? Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ð?аданнÑ?е моÑ?Ñ?Ñ? обÑ?Ñ?Ñ?Ñ?иÑ?ованÑ?</string>
- <string name="ip_address_and_port_of_bridges">IP-адÑ?еÑ?а и поÑ?Ñ?Ñ? моÑ?Ñ?ов</string>
- <string name="enter_bridge_addresses">Ð?ведиÑ?е адÑ?еÑ?а моÑ?Ñ?ов</string>
- <string name="relays">РеÑ?Ñ?анÑ?лÑ?Ñ?оÑ?Ñ?</string>
- <string name="relaying">РеÑ?Ñ?анÑ?лÑ?Ñ?иÑ?</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">РазÑ?еÑ?иÑ?Ñ? ваÑ?емÑ? Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?вÑ? бÑ?Ñ?Ñ? невÑ?Ñ?однÑ?м Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?ом</string>
- <string name="relay_port">Ð?оÑ?Ñ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="listening_port_for_your_tor_relay">СлÑ?Ñ?аÑ?Ñ?ий поÑ?Ñ? длÑ? ваÑ?его Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а Tor</string>
- <string name="enter_or_port">Ð?ведиÑ?е поÑ?Ñ? OR</string>
- <string name="relay_nickname">Ð?мÑ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="the_nickname_for_your_tor_relay">Ð?мÑ? длÑ? ваÑ?его Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а Tor</string>
- <string name="enter_a_custom_relay_nickname">Ð?ведиÑ?е полÑ?зоваÑ?елÑ?Ñ?кое имÑ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="reachable_addresses">Ð?оÑ?Ñ?Ñ?пнÑ?е адÑ?еÑ?а</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ð?апÑ?Ñ?каÑ?Ñ? как клиенÑ? за межÑ?еÑ?евÑ?м Ñ?кÑ?аном Ñ? огÑ?аниÑ?иваÑ?Ñ?ими полиÑ?иками</string>
- <string name="reachable_ports">Ð?оÑ?Ñ?Ñ?пнÑ?е поÑ?Ñ?Ñ?</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ð?оÑ?Ñ?Ñ?, доÑ?Ñ?Ñ?пнÑ?е из-за огÑ?аниÑ?иÑ?елÑ?ного Ñ?еÑ?евого Ñ?кÑ?ана</string>
- <string name="enter_ports">Ð?ведиÑ?е поÑ?Ñ?Ñ?</string>
- <string name="enable_hidden_services">Ð?клÑ?Ñ?иÑ?Ñ? Ñ?кÑ?Ñ?Ñ?Ñ?е Ñ?лÑ?жбÑ?</string>
- <string name="run_servers_accessible_via_the_tor_network">Ð?апÑ?Ñ?Ñ?иÑ?Ñ? Ñ?еÑ?веÑ?а, доÑ?Ñ?Ñ?пнÑ?е Ñ?еÑ?ез Ñ?еÑ?Ñ? Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">Ð?ведиÑ?е локалÑ?нÑ?е поÑ?Ñ?Ñ? длÑ? Ñ?кÑ?Ñ?Ñ?Ñ?Ñ? Ñ?лÑ?жб</string>
- <string name="hidden_service_ports">Ð?оÑ?Ñ?Ñ? Ñ?кÑ?Ñ?Ñ?ой Ñ?лÑ?жбÑ?</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ð?дÑ?еÑ?Ñ?емое имÑ? длÑ? ваÑ?ей Ñ?кÑ?Ñ?Ñ?ой Ñ?лÑ?жбÑ? (Ñ?оздаÑ?Ñ?Ñ?Ñ? авÑ?омаÑ?иÑ?еÑ?ки)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ð?клÑ?Ñ?иÑ?Ñ? вÑ?вод жÑ?Ñ?нала оÑ?ладки (Ñ?Ñ?ебÑ?еÑ? иÑ?полÑ?зоваÑ?Ñ? adb или aLogCat длÑ? пÑ?оÑ?моÑ?Ñ?а)</string>
- <string name="project_home">Ð?омаÑ?нÑ?Ñ? Ñ?Ñ?Ñ?аниÑ?а пÑ?оекÑ?а: </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Ð?иÑ?ензиÑ? Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Ð?Ñ?огÑ?аммÑ? Ñ?Ñ?оÑ?онниÑ? Ñ?азÑ?абоÑ?Ñ?иков: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Ð?Ñ?иложение Ñ?оÑ?еÑ? оÑ?кÑ?Ñ?Ñ?Ñ? Ñ?кÑ?Ñ?Ñ?Ñ?й поÑ?Ñ? Ñ?еÑ?веÑ?а %S Ñ?еÑ?и Tor. ÐÑ?о безопаÑ?но, еÑ?ли вÑ? довеÑ?Ñ?еÑ?е данномÑ? пÑ?иложениÑ?.</string>
- <string name="found_existing_tor_process">найден Ñ?Ñ?Ñ?еÑ?Ñ?вÑ?Ñ?Ñ?ий пÑ?оÑ?еÑ?Ñ? Tor...</string>
- <string name="something_bad_happened">Ð?Ñ?оизоÑ?ла какаÑ?-Ñ?о оÑ?ибка. Ð?Ñ?овеÑ?Ñ?Ñ?е жÑ?Ñ?нал.</string>
- <string name="hidden_service_on">Ñ?кÑ?Ñ?Ñ?аÑ? Ñ?лÑ?жба на:</string>
- <string name="unable_to_read_hidden_service_name">невозможно пÑ?оÑ?иÑ?аÑ?Ñ? имÑ? Ñ?кÑ?Ñ?Ñ?ой Ñ?лÑ?жбÑ?</string>
- <string name="unable_to_start_tor">Ð?евозможно запÑ?Ñ?Ñ?иÑ?Ñ? Tor:</string>
- <string name="unable_to_reset_tor">Ð?еÑ?езагÑ?Ñ?зиÑ?е Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?во, невозможно пеÑ?еÑ?Ñ?Ñ?ановиÑ?Ñ? Tor!</string>
- <string name="pref_use_sys_iptables_title">Ð?Ñ?полÑ?зоваÑ?Ñ? Iptables по Ñ?молÑ?аниÑ?</string>
- <string name="pref_use_sys_iptables_summary">Ð?Ñ?полÑ?зоваÑ?Ñ? вÑ?Ñ?Ñ?оеннÑ?й Ñ?айл iptables вмеÑ?Ñ?о поÑ?Ñ?авлÑ?емого Ñ? Orbot</string>
- <string name="error_installing_binares">Ð?Ñ?полнÑ?емÑ?е Ñ?айлÑ? Tor не Ñ?могли Ñ?Ñ?Ñ?ановиÑ?Ñ?Ñ?Ñ? или обновиÑ?Ñ?Ñ?.</string>
- <string name="pref_use_persistent_notifications">Ð?Ñ?егда оÑ?обÑ?ажаÑ?Ñ? иконкÑ? в панели задаÑ? когда Orbot подклÑ?Ñ?ен</string>
- <string name="pref_use_persistent_notifications_title">Ð?оÑ?Ñ?оÑ?нное Ñ?ведомление о Ñ?абоÑ?е</string>
- <string name="pref_use_expanded_notifications">Ð?оказаÑ?Ñ? Ñ?аÑ?Ñ?иÑ?енное Ñ?ведомление Tor Ñ?о Ñ?Ñ?Ñ?аной вÑ?Ñ?ода и IP</string>
- <string name="pref_use_expanded_notifications_title">РаÑ?Ñ?иÑ?еннÑ?е Ñ?ведомлениÑ?</string>
- <string name="notification_using_bridges">Ð?оÑ?Ñ?Ñ? вклÑ?Ñ?енÑ?!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">ЯзÑ?к</string>
- <string name="set_locale_summary">Ð?Ñ?бÑ?аÑ?Ñ? Ñ?зÑ?к инÑ?еÑ?Ñ?ейÑ?а длÑ? Orbot</string>
- <string name="wizard_locale_title">Ð?Ñ?бÑ?аÑ?Ñ? Ñ?зÑ?к</string>
- <string name="wizard_locale_msg">Ð?Ñ?Ñ?авиÑ?Ñ? по Ñ?молÑ?аниÑ? или пеÑ?еклÑ?Ñ?иÑ?Ñ? Ñ?екÑ?Ñ?ий Ñ?зÑ?к</string>
- <string name="powered_by">оÑ?новано на Tor</string>
- <string name="btn_save_settings">СоÑ?Ñ?аниÑ?Ñ? наÑ?Ñ?Ñ?ойки</string>
- <string name="no_internet_connection_tor">Ð?Ñ?Ñ?Ñ?Ñ?Ñ?Ñ?вÑ?еÑ? подклÑ?Ñ?ение к инÑ?еÑ?неÑ?Ñ?, Tor наÑ?одиÑ?Ñ?Ñ? в Ñ?ежиме ожиданиÑ?â?¦</string>
- <string name="bandwidth_">Ð?анал:</string>
- <string name="down">к нам</string>
- <string name="up">оÑ? наÑ?</string>
- <string name="pref_disable_network_title">Ð?вÑ?озаÑ?Ñ?пание без Ñ?еÑ?и</string>
- <string name="pref_disable_network_summary">Ð?еÑ?еводиÑ?Ñ? Tor в Ñ?пÑ?Ñ?ий Ñ?ежим пÑ?и оÑ?Ñ?Ñ?Ñ?Ñ?Ñ?вии инÑ?еÑ?неÑ?а</string>
- <string name="newnym">Ð?Ñ? пеÑ?еклÑ?Ñ?илиÑ?Ñ? на новÑ?й иденÑ?иÑ?икаÑ?оÑ? Tor!</string>
- <string name="menu_verify_browser">Ð?Ñ?овеÑ?иÑ?Ñ? бÑ?аÑ?зеÑ?</string>
- <string name="menu_use_chatsecure">Ð?Ñ?полÑ?зоваÑ?Ñ? ChatSecure</string>
- <string name="permission_manage_tor_label">УпÑ?авление Tor</string>
- <string name="permission_manage_tor_description">РазÑ?еÑ?иÑ?Ñ? пÑ?иложениÑ? Ñ?пÑ?авлÑ?Ñ?Ñ? Ñ?еÑ?виÑ?ом Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Ð?е поÑ?оже, Ñ?Ñ?о Ñ? ваÑ? Ñ?Ñ?Ñ?ановлен Orfox. ХоÑ?иÑ?е Ñ?пÑ?авкÑ? на Ñ?Ñ?Ñ? Ñ?емÑ? или пÑ?оÑ?Ñ?о оÑ?кÑ?Ñ?Ñ?Ñ? бÑ?аÑ?зеÑ??</string>
- <string name="install_apps_">УÑ?Ñ?ановиÑ?Ñ? пÑ?иложениÑ??</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ð?еÑ? подклÑ?Ñ?ениÑ? к Ñ?еÑ?и. Tor вÑ?одиÑ? в Ñ?ежим Ñ?на...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Ð?одклÑ?Ñ?ение к Ñ?еÑ?и Ñ?Ñ?Ñ?ановлено. Tor пÑ?оÑ?Ñ?паеÑ?Ñ?Ñ?...</string>
- <string name="updating_settings_in_tor_service">обновление наÑ?Ñ?Ñ?оек в Ñ?еÑ?виÑ?е Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ð?оÑ?Ñ?, на коÑ?оÑ?ом Tor пÑ?едоÑ?Ñ?авлÑ?еÑ? Ñ?вой SOCKS-пÑ?окÑ?и (по Ñ?молÑ?аниÑ?: 9050, 0 - длÑ? оÑ?клÑ?Ñ?ениÑ?)</string>
- <string name="pref_socks_dialog">Ð?аÑ?Ñ?Ñ?ойка поÑ?Ñ?а SOCKS</string>
- <string name="pref_transport_title">Ð?оÑ?Ñ? пÑ?озÑ?аÑ?ного пÑ?окÑ?и Tor</string>
- <string name="pref_transport_summary">Ð?оÑ?Ñ?, на коÑ?оÑ?ом Tor пÑ?едоÑ?Ñ?авлÑ?еÑ? Ñ?вой пÑ?озÑ?аÑ?нÑ?й пÑ?окÑ?и (по Ñ?молÑ?аниÑ?: 9040, 0 - длÑ? оÑ?клÑ?Ñ?ениÑ?)</string>
- <string name="pref_transport_dialog">Ð?аÑ?Ñ?Ñ?ойка поÑ?Ñ?а пÑ?озÑ?аÑ?ного пÑ?окÑ?и</string>
- <string name="pref_dnsport_title">Ð?оÑ?Ñ? DNS Tor</string>
- <string name="pref_dnsport_summary">Ð?оÑ?Ñ?, на коÑ?оÑ?ом Tor пÑ?едоÑ?Ñ?авлÑ?еÑ? Ñ?вой DNS (по Ñ?молÑ?аниÑ?: 5400, 0 - длÑ? оÑ?клÑ?Ñ?ениÑ?)</string>
- <string name="pref_dnsport_dialog">Ð?аÑ?Ñ?Ñ?ойка поÑ?Ñ?а DNS</string>
- <string name="pref_torrc_title">Ð?олÑ?зоваÑ?елÑ?Ñ?кие наÑ?Ñ?Ñ?ойки Torrc</string>
- <string name="pref_torrc_summary">ТÐ?Ð?ЬÐ?Ð? Ð?Ð?Я ÐÐ?СÐ?Ð?РТÐ?Ð?: внеÑ?иÑ?е наÑ?Ñ?Ñ?ойки напÑ?Ñ?мÑ?Ñ? в Ñ?Ñ?Ñ?оки Ñ?айла конÑ?игÑ?Ñ?аÑ?ии torrc</string>
- <string name="pref_torrc_dialog">Ð?олÑ?зоваÑ?елÑ?Ñ?кие Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - пÑ?иложение Benetech докÑ?менÑ?аÑ?иÑ? по пÑ?авам Ñ?еловека </string>
- <string name="your_tor_public_ips_">Ð?аÑ?и пÑ?блиÑ?нÑ?е IP-адÑ?еÑ?а Tor:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ð?ожалÑ?йÑ?Ñ?а, оÑ?клÑ?Ñ?иÑ?е Ñ?Ñ?Ñ? пÑ?огÑ?аммÑ? в Android->Ð?аÑ?Ñ?Ñ?ойки->Ð?Ñ?иложениÑ?, еÑ?ли Ñ? ваÑ? возникли пÑ?облемÑ? Ñ? Orbot:</string>
- <string name="app_conflict"> Ð?онÑ?ликÑ? пÑ?иложений</string>
- <string name="pref_transproxy_refresh_title">Ð?вÑ?ообновление пÑ?озÑ?аÑ?ного пÑ?окÑ?и</string>
- <string name="pref_transproxy_refresh_summary">Ð?овÑ?оÑ?но пÑ?имениÑ?Ñ? пÑ?авила пÑ?озÑ?аÑ?ного пÑ?окÑ?и пÑ?и изменении Ñ?оÑ?Ñ?оÑ?ниÑ? Ñ?еÑ?и</string>
- <string name="pref_transproxy_flush_title">Ð?Ð Ð?Ð?УÐ?Ð?ТÐ?Ð?ЬÐ?Ð?Ð? УÐ?Ð?Ð?Ð?Ð?Ð?Ð? пÑ?озÑ?аÑ?ного пÑ?окÑ?и</string>
- <string name="pref_transproxy_flush_summary">Ð?ажмиÑ?е здеÑ?Ñ?, Ñ?Ñ?обÑ? Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð? оÑ?иÑ?Ñ?иÑ?Ñ? вÑ?е Ñ?еÑ?евÑ?е пÑ?авила пÑ?озÑ?аÑ?ного пÑ?окÑ?и</string>
- <string name="transparent_proxy_rules_flushed_">Ð?Ñ?авила пÑ?озÑ?аÑ?ного пÑ?окÑ?и Ñ?даленÑ?!</string>
- <string name="you_do_not_have_root_access_enabled">У ваÑ? не вклÑ?Ñ?Ñ?н root-доÑ?Ñ?Ñ?п</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ð?озможно, поÑ?Ñ?ебÑ?еÑ?Ñ?Ñ? оÑ?Ñ?ановиÑ?Ñ? и запÑ?Ñ?Ñ?иÑ?Ñ? Orbot заново длÑ? подклÑ?Ñ?ениÑ? изменений наÑ?Ñ?Ñ?оек.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">кбиÑ?/Ñ?</string>
- <string name="mbps">мбиÑ?/Ñ?</string>
- <string name="kb">Ð?Ð?</string>
- <string name="mb">Ð?Ð?</string>
- <string name="bridges_updated">Ð?оÑ?Ñ?Ñ? обновленÑ?</string>
- <string name="restart_orbot_to_use_this_bridge_">Ð?ожалÑ?йÑ?Ñ?а, пеÑ?езапÑ?Ñ?Ñ?иÑ?е Orbot длÑ? вÑ?Ñ?Ñ?плениÑ? изменениÑ? в Ñ?илÑ?</string>
- <string name="menu_qr">QR-кодÑ?</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ð?Ñ?ли ваÑ?а Ñ?еÑ?Ñ? мобилÑ?ной Ñ?вÑ?зи акÑ?ивно блокиÑ?Ñ?еÑ? Tor, вÑ? можеÑ?е иÑ?полÑ?зоваÑ?Ñ? моÑ?Ñ?Ñ? Tor длÑ? доÑ?Ñ?Ñ?па к Ñ?еÑ?и. Ð?Ñ?беÑ?иÑ?е один из Ñ?ипов моÑ?Ñ?ов вÑ?Ñ?е, Ñ?Ñ?обÑ? вклÑ?Ñ?иÑ?Ñ? Ñ?Ñ?Ñ? Ñ?Ñ?нкÑ?иÑ?.</string>
- <string name="bridge_mode">Режим моÑ?Ñ?а</string>
- <string name="get_bridges_email">Ðл. поÑ?Ñ?а</string>
- <string name="get_bridges_web">СайÑ?</string>
- <string name="activate">Ð?кÑ?иваÑ?иÑ?</string>
- <string name="apps_mode">VPN-Ñ?ежим пÑ?иложений</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ð?Ñ? можеÑ?е вклÑ?Ñ?иÑ?Ñ? Ñ?Ñ?нкÑ?иÑ? пеÑ?енапÑ?авлениÑ? вÑ?еÑ? пÑ?иложений на ваÑ?ем Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ве Ñ?еÑ?ез Ñ?еÑ?Ñ? Tor, иÑ?полÑ?зÑ?Ñ? Ñ?Ñ?нкÑ?иÑ? VPN в Android.\n\n* Ð?Ð Ð?Ð?УÐ?Ð Ð?Ð?Ð?Ð?Ð?Ð?Ð? * ÐÑ?о новаÑ? Ñ?кÑ?пеÑ?именÑ?алÑ?наÑ? Ñ?Ñ?нкÑ?иÑ? и в некоÑ?оÑ?Ñ?Ñ? Ñ?лÑ?Ñ?аÑ?Ñ? можеÑ? оÑ?Ñ?ановиÑ?Ñ?Ñ?Ñ? или не запÑ?Ñ?Ñ?иÑ?Ñ?Ñ?Ñ? авÑ?омаÑ?иÑ?еÑ?ки. Ð?на не должна бÑ?Ñ?Ñ? иÑ?полÑ?зована длÑ? анонимноÑ?Ñ?и, а ТÐ?Ð?ЬÐ?Ð? длÑ? пÑ?оÑ?ождениÑ? Ñ?илÑ?Ñ?Ñ?ов и межÑ?еÑ?евÑ?Ñ? Ñ?кÑ?анов.</string>
- <string name="send_email">Ð?Ñ?пÑ?авиÑ?Ñ? пиÑ?Ñ?мо</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ð?Ñ? можеÑ?е полÑ?Ñ?иÑ?Ñ? адÑ?еÑ? моÑ?Ñ?а по Ñ?лекÑ?Ñ?онной поÑ?Ñ?е, Ñ? Ñ?айÑ?а или пÑ?Ñ?Ñ?м Ñ?каниÑ?ованиÑ? QR-кода. Ð?Ñ?беÑ?иÑ?е \"Ðл. поÑ?Ñ?а\" или \"СайÑ?\" ниже, Ñ?Ñ?обÑ? запÑ?оÑ?иÑ?Ñ? адÑ?еÑ? моÑ?Ñ?а.\n\nÐ?олÑ?Ñ?еннÑ?й адÑ?еÑ? Ñ?копиÑ?Ñ?йÑ?е и вÑ?Ñ?авÑ?Ñ?е его в Ñ?азделе наÑ?Ñ?Ñ?оек Orbot \"Ð?оÑ?Ñ?Ñ?\", поÑ?ле Ñ?его пеÑ?езапÑ?Ñ?Ñ?иÑ?е пÑ?иложение.</string>
- <string name="install_orweb">УÑ?Ñ?ановиÑ?Ñ? Orfox</string>
- <string name="standard_browser">СÑ?андаÑ?Ñ?нÑ?й бÑ?аÑ?зеÑ?</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Ð?Ð Ð?Ð?Ð?ЧÐ?Ð?Ð?Ð?: Ñ?олÑ?ко Ñ?Ñ?андаÑ?Ñ?нÑ?е моÑ?Ñ?Ñ? Tor Ñ?абоÑ?аÑ?Ñ? на Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ваÑ? Intel X86/Atom</string>
- <string name="vpn_default_world">Ð?иÑ?</string>
-</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
deleted file mode 100644
index 32a0f13..0000000
--- a/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Tor à¶?රමà·?භ à¶?à·?රà·?ම à·?à·? නà·?à·?à¶à·?ම</string>
- <string name="tor_proxy_service_process">Tor නà·?යà·?à¶à·? à·?à·?à·?à·? </string>
- <string name="status_starting_up">Orbot �රම�භ �රම�න��</string>
- <string name="status_activated">Tor ජ�ලයට �බ�ද�ය�</string>
- <string name="status_disabled">Orbot à¶?à·?â??රà·?යà·?à·?à·?රà·?à·?චà¶?ර à¶?ච</string>
- <string name="tor_process_starting">Tor ද�ය�ය� �රම�භ �රම�න�...</string>
- <string name="tor_process_complete">�ම�ප�ර�ණය�.</string>
- <string name="tor_process_waiting">ර�ද� ��ට�ය�.</string>
- <string name="not_anonymous_yet">à¶?à·?à·?à·?දයයà·?: à¶?බà·? à¶?නà·?දà·?නà·? à¶à·?ම නà·?රà·?නà·?මà·?à¶? නà·?මà·?à¶. à¶?රà·?ණà·?à¶?ර à¶?බà·? යà·?දà·?මà·? à·?දà·?à·? HTTP proxy 127.0.0.1:8118 à·?à·? SOCKS4A à·?à·? SOCKS5 proxy 127.0.0.1:9050 භà·?à·?à·?à¶à·? à·?න පරà·?දà·? à·?à·?නà·?â??යà·?à·? à¶?රà¶?නà·?න.</string>
- <string name="menu_home">ම�ල�ප�ට��</string>
- <string name="menu_browse">ප�ර����න�න</string>
- <string name="menu_settings">��ට��ම�</string>
- <string name="menu_log">ල��ය </string>
- <string name="menu_info">�ද��</string>
- <string name="menu_start">�රඹන�න</string>
- <string name="menu_stop">නà·?à¶à·?à·?නà·?න</string>
- <string name="menu_about">ප���බද</string>
- <string name="main_layout_download">භ��ච�රන�න </string>
- <string name="main_layout_upload">�ඩ��ච�රන�න </string>
- <string name="button_help">�ද��</string>
- <string name="button_close">��න�න</string>
- <string name="button_about">ප���බද</string>
- <string name="button_clear_log">ල��ය ���� �රන�න </string>
- <string name="menu_verify">පර����� �රන�න</string>
- <string name="menu_exit">à¶?à·?à¶à·? à·?නà·?න</string>
- <string name="press_to_start">- à¶?රමà·?භ à¶?à·?රà·?මට ටà·?à¶? à·?à·?ලà·?à·?à¶?à·? à¶à¶¯à¶?රනà·?න -</string>
- <string name="pref_trans_proxy_group">පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? (මà·?ලය à¶?à·?à·?à·?â??ය à·?à·?)</string>
- <string name="pref_trans_proxy_title">පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·?</string>
- <string name="pref_trans_proxy_summary">යà·?මà·?නà·? à·?à·?à·?යà¶?à¶?à·?â??රà·?යà·? ටà·?රà·?à¶?රණය </string>
- <string name="pref_transparent_all_title">Tor ��යල�ල</string>
- <string name="pref_transparent_all_summary">Tor à¶à·?ල à·?à·?යà·?à·? යà·?මà·?à·?ලට පà·?à¶à·?න නà·?යà·?à¶à·?à·?à·?à·?à·? à¶à¶¯à¶¶à¶¯à¶º</string>
- <string name="pref_transparent_port_fallback_title">පà·?ට නà·?යà·?à¶à·?à·?à·?à·?à·? පà·?à·?බà·?à·?à·?ම </string>
- <string name="pref_transparent_port_fallback_summary">à¶?à·?à·?à·?දයයà·?: මà¶?à·?à·?රà·?ය යà·?à¶à·? පà·?දà·? පà·?ට (80, 443, යනà·?දà·?ය). *භà·?à·?à·?à¶à·?à·? à·?à·?දà·?à¶?à·?* \'à·?à·?යà·?à·?\' à·?à·? \'යà·?මà·?\' පà·?â??රà¶?à·?ර à·?à·?ඩ නà·?à¶?රනà·?නà·? නමà·? පමණà·?.</string>
- <string name="pref_transparent_port_title">පà·?ට ලà·?යà·?à·?à·?à¶à·?à·? </string>
- <string name="pref_transparent_port_summary">නà·?යà·?à¶à·?à·?à·?à·?à·? à·?දà·?à·? පà·?ට ලà·?යà·?à·?à·?à¶à·?à·?. *භà·?à·?à·?à¶à·?à·? à·?à·?දà·?à¶?à·?* \'à·?à·?යà·?à·?\' à·?à·? \'යà·?මà·?\' පà·?â??රà¶?à·?ර à·?à·?ඩ නà·?à¶?රනà·?නà·? නමà·? පමණà·?.</string>
- <string name="pref_transparent_port_dialog">පà·?ට නà·?යà·?à¶à·?à·?à·?à·?à·?à·?ට à¶?à¶?à·? à¶?රනà·?න</string>
- <string name="pref_has_root">මà·?ල පà·?â??රà·?à·?à·?ය à¶?ලà·?ලනà·?න </string>
- <string name="pref_has_root_summary">පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? à·?දà·?à·? මà·?ල පà·?â??රà·?à·?à·?ය à¶?ලà·?ලනà·?න </string>
- <string name="status_install_success">Tor ද���මයන� ��ර�ථ�� ��ථ�පනය �රන ලද�!</string>
- <string name="status_install_fail">Tor ද���මය ��න��න� ��ථ�පනය ��ර�මට න����� ��ය. �ර�ණ��ර ල��ය පර������ර tor-assistants@xxxxxxxxxxxxxx ට ද�න�ම� ද�න�න</string>
- <string name="title_error">ය�ද�ම� ද�� </string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orbot ප�ල�බද� </string>
- <string name="btn_next">�ල� </string>
- <string name="btn_back">ප��ප�ට</string>
- <string name="btn_finish">����නය� </string>
- <string name="btn_okay">���ය�</string>
- <string name="btn_cancel">��ල��� �රන�න</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbot පà·?à·?à·?බද à¶?à¶à·?මà·? à·?à·?à·?à·?à¶à¶» </string>
- <string name="wizard_permissions_root">à¶?නà·?මà·?à¶à·?ය ලà·?බà·? à¶?à¶.</string>
- <string name="wizard_permissions_stock">Orbot à¶?නà·?මà·?à¶à·?යනà·? </string>
- <string name="wizard_premissions_msg_root">à¶?නරà·?à¶?යà·?! à¶?බ මà·?ල Orbot à·?දà·?à·? මà·?ල à¶?නà·?මà·?à¶à·?යනà·? à·?බල à¶?ර à¶?à¶à·? බà·? à¶?පට à¶?නà·?à·?රණය à·?à·?ය. à¶?ප මà·?ම බලය නà·?ණà·?à¶à·? ලà·?à·? භà·?à·?à·?à¶à·? à¶?à·?රà·?මට පà·?රà·?නà·?දà·? à·?à·?මà·?.</string>
- <string name="wizard_permissions_msg_stock">à¶?à¶à·?â??යà·?à·?à·?â??ය නà·?à·?à·?à·?à¶à·? Orbot à·?ට මà·?ල පà·?â??රà·?à·?à·?ය ලබà·?දà·?මà·?නà·? à¶?ය බලà¶?à¶à·? මà·?à·?ලමà¶?à·? බà·?ට පà¶à·?à·?à·?. පà·?ල බà·?à¶à·?à¶à¶¸ භà·?à·?à·?à¶à¶ºà·?නà·? Orbot à·?ට à·?à·?පà·?රà·?බලය ලබà·?දà·?නà·?න!</string>
- <string name="wizard_permissions_no_root">à¶?බට මà·?ල පà·?â??රà·?à·?à·?ය à·?මà·?බනà·?ධà·? à¶?à·?à·?à·?දà·? à¶?à·?බà·?ධයà¶?à·? නà·?මà·?à¶à·? නමà·?, Orbot à·?ල à·?ඩà·? à¶?රන යà·?මà·?නà·? පමණà¶?à·? භà·?à·?à·?à¶à·? à¶?රනà·?න.</string>
- <string name="wizard_permissions_consent">මà·? à·?ට à·?à·?ටà·?à·?යà·?. à·?à·?පà·?රà·? පරà·?à·?à·?ලà¶?යà·? නà·?මà·?à¶à·?à·? දà·?à¶?ටම à¶?රà¶?à·?න යà·?මට à¶?à·?මà·?à¶à·?à¶à·?මà·?.</string>
- <string name="wizard_permission_enable_root">Orbot à·?ට මà·?ලය පà·?â??රදà·?නය à¶?රනà·?න </string>
- <string name="wizard_configure">ටà·?රà·?à¶?රණය à·?à·?නà·?â??යà·?à·? à¶?රනà·?න </string>
- <string name="wizard_configure_msg">Orbot à¶?බට à·?à·?යà·?à·? යà·?මà·?à·?ල à¶?නà·?දà·?නà·? Tor à¶à·?ලà·?නà·? යà·?à·?à·?මට à·?à·? à¶?බà·? යà·?මà·? à¶à¶±à·? à¶à¶±à·?à·? à¶à·?රà·?à¶?à·?නà·?මට à¶?à·?à¶?à·?à·? ලබà·?දà·?.</string>
- <string name="wizard_configure_all">à·?à·?යà·?à·? යà·?මà·?à·?ලට පà·?à¶à·?න නà·?යà·?à¶à·?à·?à·?à·?à·? Tor à¶à·?ලà·?නà·? යà·?නà·?න </string>
- <string name="wizard_configure_select_apps">à¶à¶±à·? යà·?මà·?නà·? Tor à·?දà·?à·? à¶à·?රà·?à¶?නà·?න </string>
- <string name="wizard_tips_tricks">Orbot �බල �ල ය�ම� </string>
- <string name="wizard_tips_msg">පà·?චයà·?මà·? à·?à·?දà·? à¶?à¶à·?à¶à·? Orbot à·?මà¶? à·?à·?ඩ à¶?à·?රà·?මට ය. à·?à·?ථà·?පනය à¶?à·?රà·?ම à·?දà·?à·? à¶?à¶?à·? à¶?à¶?à·? බà·?à¶à·?à¶à¶¸ මචà¶?à·?ලà·?à¶?à·? à¶?රනà·?න. නà·?à¶à·?à·?à¶à·? à¶?බට මà·?ම යà·?මà·? Google Play, GuardianProject.info à·?à·?බà·?à¶?ඩà·?à·?යà·?නà·? à·?à·? F-Droid.org à·?ලà·?නà·? à·?à·?යà·? à¶?චà·?à·?à¶?.</string>
- <string name="wizard_tips_proxy">නà·?යà·?à¶à·? à·?à·?à·?à·? à·?à·?ටà·?à·?මà·? - Orbot à·?මà¶? à¶?à·?â??රà·?යà·?à¶?à·?රà·?මට à¶?නà·?à¶?à·? යà·?මà·? à·?à·?නà·?â??යà·?à·? à¶?රන à¶?à¶?à·?රය à·?දà·?රනà·?න </string>
- <string name="wizard_tips_duckgo">DuckDuckGo à·?à·?à·?à·?මà·? යනà·?à¶à·?â??ර යà·?දà·?ම </string>
- <string name="wizard_tips_twitter">Twitter නà·?යà·?à¶à·?à·?à·?à·?à·?à·? \"localhost\" à·?à¶à·?à¶?à·?රà¶?යට à·?à·? පà·?ටය 8118 ට පà·?à·?à·?ටà·?à·?නà·?න </string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">නà·?යà·?à¶à·? à·?à·?à·?à·? à·?à·?ටà·?à·?මà·? </string>
- <string name="wizard_final">Orbot ��ද�නම�!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">මà·?මà¶?à·?නà·? à¶?බà·? à·?à·?බà·? බà·?â??රà·?à·?à·?රය https://check.torproject.org ට à·?à·?à·?à·?චà·?à·?. à¶?à·?à·?ට à¶?බට Orbot නà·?à·?à·? ලà·?à·? à·?à·?නà·?â??යà·?à·? à·?à·? à¶?à¶à·?දà·?යà·? à·?à·? à¶?බ Tor ජà·?ලයට à·?මà·?බනà·?ධ à·?à·? à¶?à¶à·?දà·?යà·? දà·?à¶?à¶?චà·?à·?à¶?.</string>
- <string name="pref_hs_group">à·?à·?à¶?à·?à·?ණà·? à·?à·?à·?à·? à·?à¶à·?à¶?à·?ර à¶?රමà·?නà·? </string>
- <string name="pref_general_group">ප�ද�</string>
- <string name="pref_start_boot_title">Orbot �රඹ�ම� ධ���ය� �රඹන�න </string>
- <string name="pref_start_boot_summary">Orbot à·?à·?à·?යà¶?à¶?à·?â??රà·?යà·? à¶?රමà·?භ à¶?ර, à¶?බà·? Android à¶?පà¶?රණය පටනà·?à¶?à¶à·? à·?à·?ට Tor à·?ලට à·?මà·?බනà·?ධ à¶?රà¶?නà·?න.</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">����දයය�</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">à¶?නà·?මà·?à¶à·?ය</string>
- <string name="wizard_permissions_root_msg1">à¶?බට à¶?à·?à·?à·?â??ය නමà·? Orbot à·?à·?පà·?රà·? පරà·?à·?à·?ලà¶?යà·?ට පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·? à·?à·?à·?à·? à·?à·?නà·? පà·?â??රà¶?මන à·?à·?à·?à·?à·?à·?à¶?à¶? à·?බල à¶?à·?රà·?මට à¶?à·?à·?ර ලබà·?දà·?ය à·?à·?à¶?. </string>
- <string name="wizard_permissions_root_msg2">à¶?බට මà·?ය à·?à·?දà·? à¶?à·?රà·?මට à¶?à·?à·?à·?â??යà¶à·?à·?à¶?à·? නà·?මà·?à¶à·? නමà·?, Orbot à·?ල à·?à·?ඩà·? à¶?රන යà·?මà·?නà·? පමණà¶?à·? භà·?à·?à·?à¶à·? à¶?රනà·?න.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot �බල �ල ය�ම�</string>
- <string name="wizard_tips_play">Google Play à¶à·?ලà·?නà·? Guardian Project apps à¶à·?රà·?à¶?නà·?න </string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·?</string>
- <string name="wizard_transproxy_msg">මà·?මà¶?à·?නà·? à¶?බà·? යà·?මà·?නà·?ට à¶?à·?à·?à·?දà·? à·?à·?නà·?â??යà·?à¶?රණයà¶?à·? නà·?මà·?à¶à·?à·? Tor ජà·?ලය à·?රà·?à·? à·?à·?à·?යà¶?à¶?à·?â??රà·?යà·? à¶?à·?â??රà·?යà·?à¶à·?මà¶? à·?à·?ය à·?à·?à¶?.</string>
- <string name="wizard_transproxy_hint">(à¶?බට à¶?ප à·?දà·?නà·? à¶?ල à¶?රà·?ණà·? පà·?à·?à·?බද à¶?à·?බà·?ධයà¶?à·? නà·?මà·?à¶à·? නමà·? මà·?ම à¶?à·?ටà·?à·? à·?ලà¶?à·?ණà·? à¶?රනà·?න)</string>
- <string name="wizard_transproxy_none">à¶?à·?à·?à·?à·?à¶?à·? නà·?මà·?à¶</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Wifi à·?à·? USB Tethered à¶?පà·?à¶?à¶? à·?දà·?à·? Tor පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·? à·?à·?à·?à·?à·? à·?බල à¶?රනà·?න (නà·?à·?චà¶?රමà·?භ à¶?à·?රà·?මà¶?à·? à¶?à·?à·?à·?â??යà·?à·?)</string>
- <string name="button_grant_superuser">à·?à·?පà·?රà·? පරà·?à·?à·?ලà¶?යà·?à¶?à·? පà·?â??රà·?à·?à·?ය à¶?ලà·?ලනà·?න </string>
- <string name="pref_select_apps">යà·?මà·?නà·? à¶à·?රà·?à¶?නà·?න </string>
- <string name="pref_select_apps_summary">Tor à·?රà·?à·? යà·?à·?à·?මට යà·?මà·?නà·? à¶à·?රà·?à¶?නà·?න </string>
- <string name="pref_node_configuration">නà·?ඩà·? à·?à·?නà·?â??යà·?à·?à¶?රණය </string>
- <string name="pref_node_configuration_summary">මà·?à·?à·? à¶?බà·? නà·?රà·?නà·?මà·?à¶?à¶à·?à·? à¶?ඩà·? à¶?රන පà·?â??රà¶?මන à·?à·?ටà·?à·?මà·? ය.</string>
- <string name="pref_entrance_node">à¶?à¶à·?à·?à·? à·?à·?මà·? නà·?ඩà·? </string>
- <string name="pref_entrance_node_summary">ප�ම� hop �ද�� ���ල��ල��ණ�, nicks, රට�ල� �� ල�ප�නයන� </string>
- <string name="pref_entrance_node_dialog">à¶?à¶à·?à·?à·? à·?à·?මà·? නà·?ඩà·?à·?ලට පà·?à·?à·?à·?à·?නà·?න </string>
- <string name="pref_proxy_title">Outbound ජà·?ල නà·?යà·?à¶à·? </string>
- <string name="pref_proxy_type_title">Outbound නà·?යà·?à¶à·? à·?රà·?à¶?යà¶?à·? </string>
- <string name="pref_proxy_type_summary">නà·?යà·?à¶à·? à·?à·?à·?à·?දà·?යà¶?යනà·? à·?දà·?à·? පà·?â??රà·?ටà·?à¶?à·?ල: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">නà·?යà·?à¶à·? à·?à·?à·?à·? à·?රà·?à¶?ය à¶?à¶à·?ලà¶à·? à¶?රනà·?න </string>
- <string name="pref_proxy_host_title">Outbound නà·?යà·?à¶à·? à·?à¶à·?à¶?à·?රයà¶?à·? </string>
- <string name="pref_proxy_host_summary">නà·?යà·?à¶à·? à·?à·?à·?à·?දà·?යà¶?à¶?à·? à·?à¶à·?à¶?à·?රà¶? නà·?මය </string>
- <string name="pref_proxy_host_dialog">නà·?යà·?à¶à·?à·?à·?à·?à·? à·?à¶à·?à¶?à·?රය à¶?à¶à·?ලà·? à¶?රනà·?න </string>
- <string name="pref_proxy_port_title">Outbound නà·?යà·?à¶à·? පà·?රà·?ටයà¶?à·? </string>
- <string name="pref_proxy_port_summary">නà·?යà·?à¶à·? à·?à·?à·?à·?දà·?යà¶? පà·?ටය</string>
- <string name="pref_proxy_port_dialog">නà·?යà·?à¶à·? à·?à·?à·?à·? පà·?ටය à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="status">à¶à¶à·?à·?ය</string>
- <string name="setting_up_full_transparent_proxying_">à·?මà·?පà·?රà·?ණ පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? පà·?à·?à·?ටà·?à·?à·?ම...</string>
- <string name="setting_up_app_based_transparent_proxying_">යà·?මà·? පදනමà·? à¶?රà¶?à·?න à¶?à·?â??රà·?යà·?à¶à·?මà¶? à·?න පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? පà·?à·?à·?ටà·?à·?à·?ම...</string>
- <string name="transparent_proxying_enabled">පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? à·?බල à¶?ර à¶?ච</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy Tethering à·?දà·?à·? à·?බල à¶?ර à¶?à¶!</string>
- <string name="warning_error_starting_transparent_proxying_">à¶?à·?à·?à·?දයයà·?: පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·?à·?à·?නà·? දà·?à·?යà¶?à·? à·?ටà¶?à·?න à¶?à¶!</string>
- <string name="transproxy_rules_cleared">TransProxy à¶?à·?නà·?දà·?à·?à·? à¶?à·?à¶à·? à¶?ර à¶?ච</string>
- <string name="couldn_t_start_tor_process_">Tor à¶?à·?â??රà·?යà·?à·?ලà·?නà·? à¶?රමà·?භ à¶?à·?රà·?මට නà·?à·?à·?à¶?à·? à·?à·?ය:</string>
- <string name="setting_up_port_based_transparent_proxying_">පà·?ට පදනමà·? à¶?රà¶?à·?න à¶?à·?â??රà·?යà·?à¶à·?මà¶? à·?න පà·?රදà·?à·?à·?â??ය නà·?යà·?à¶à·?à·?à·?à·?à·? පà·?à·?à·?ටà·?à·?à·?ම...</string>
- <string name="bridge_error">à·?à·?à¶à·? දà·?à·?යà¶?à·?</string>
- <string name="bridge_requires_ip">à·?à·?à¶à·? à·?à·?à·?à·?à·?à·?à¶?à¶? භà·?à·?à·?à¶à·?ය à·?දà·?à·? à¶?බ à¶?ඩà·? à¶à¶»à¶¸à·?නà·? à¶?à¶?à·? à·?à·?à¶à·? IP ලà·?පà·?නයà¶?à·? à·?à·? à¶?à¶à·?ලà¶à·? à¶?ල යà·?à¶à·?ය.</string>
- <string name="send_email_for_bridges">\"get bridges\" නමà·? පà·?ලà·?ය à·?à·?දà·?â??යà·?à¶à·? ලà·?පà·?යà·? දà·?à·?යà·? à¶?à¶à·?ලà¶à·? à¶?ර gmail à¶?à·?ණà·?මà¶?à·?නà·? bridges@xxxxxxxxxxxxxx ලà·?පà·?නයට යà·?නà·?න.</string>
- <string name="error">ද��ය��</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">à¶?බà·? à·?à·?නà·?දà·?à·?න ලà·?පà·?නයà·?à·?à·? à·?à·?ටà·?à·?මà·?à·?ල à·?à·?â??යà¶à·?රà·?à¶?යà¶?à·? à·?ටà¶?à·?න à¶?à¶!</string>
- <string name="your_relay_settings_caused_an_exception_">à¶?බà·? පà·?â??රà¶à·?යà·?ජà¶? à·?à·?ටà·?à·?මà·?à·?ල à·?à·?â??යà¶à·?රà·?à¶?යà¶?à·? à·?ටà¶?à·?න à¶?à¶!</string>
- <string name="exit_nodes">ප�ට��ම� න�ඩ�</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">ප�ම� hop �ද�� ���ල��ල��ණ�, nicks, රට�ල� �� ල�ප�නයන�</string>
- <string name="enter_exit_nodes">ප�ට��ම� න�ඩ��ලට ප�����න�න</string>
- <string name="exclude_nodes">à¶?à¶à·?à·?රà·?න නà·?ඩà·?</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">à¶?à¶à·?à·?රà·?න à¶?à¶?à·?ලà·?à·?ලà¶?à·?ණà·?, nicks, රටà·?ලà·? à·?à·? ලà·?පà·?නයනà·?</string>
- <string name="enter_exclude_nodes">à¶?à¶à·?à·?රà·?න නà·?ඩà·?ඩà·?à·?ලට පà·?à·?à·?à·?à·?නà·?න</string>
- <string name="strict_nodes">ද�ඩ� න�ඩ� </string>
- <string name="use_only_these_specified_nodes">à¶?à·?චà·?දà·?නà·? නà·?ඩà·? *පමණà¶?à·?* භà·?à·?à·?à¶à·? à¶?රනà·?න </string>
- <string name="bridges">à·?à·?à¶à·?</string>
- <string name="use_bridges">à·?à·?à¶à·? භà·?à·?à·?à¶à·? à¶?රනà·?න </string>
- <string name="bridges_obfuscated">à·?à·?à¶à·? à¶?දà·?රà·? à¶?රනà·?න </string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor ජà·?ලයට à·?à·?à¶?ලà·?ප à¶?à¶à·?à·?à·? à·?à·?මà·? නà·?ඩà·? à·?බල à¶?රනà·?න </string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">à·?à·?නà·?â??යà·?à·? à¶?ර à¶?à¶à·? à·?à·?à¶à·? à¶?දà·?රà·? à¶?ල à·?à·?à¶à·? නමà·? à¶?à·?à·? à·?බල à¶?රනà·?න </string>
- <string name="ip_address_and_port_of_bridges">IP ලà·?පà·?නය à·?à·? à·?à·?à¶à·?à·?ල පà·?ට</string>
- <string name="enter_bridge_addresses">à·?à·?à¶à·? ලà·?පà·?නයනà·? à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="relays">පà·?â??රà¶à·?යà·?ජà¶?ය</string>
- <string name="relaying">පà·?â??රà¶à·?යà·?ජනය </string>
- <string name="enable_your_device_to_be_a_non_exit_relay">à¶?බà·? à¶?පà·?à¶?à¶?ය නà·?à¶?à·?ම-නà·?යන පà·?â??රà¶à·?යà·?ජà¶?යà¶?à·? බà·?ට à·?බල à¶?රනà·?න </string>
- <string name="relay_port">පà·?â??රà¶à·?යà·?ජà¶? පà·?ටය</string>
- <string name="listening_port_for_your_tor_relay">Tor පà·?â??රà¶à·?යà·?ජà¶?යට à·?à·?නà·?දà·?න පà·?ටය </string>
- <string name="enter_or_port">OR පà·?ටය à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="relay_nickname">පà·?â??රà¶à·?යà·?ජà¶? à¶?පනà·?මය</string>
- <string name="the_nickname_for_your_tor_relay">à¶?බà·? Tor පà·?â??රà¶à·?යà·?ජà¶?යà·? à¶?පනà·?මය</string>
- <string name="enter_a_custom_relay_nickname">à·?à·?â??යà·?à·?à·?à·?රà·?à¶? පà·?â??රà¶à·?යà·?ජà¶? à¶?පනà·?මය à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="reachable_addresses">��න�ද� ��ය���� ල�ප�නය </string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">à·?à·?à·?à·?දà·?යà¶?යà·?à¶?à·? ලà·?à·? firewall පà·?ටà·?පà·? à·?à·?ට à·?à·?මà·?à¶?à·?රà·? පà·?à·?à·?à·?à·?à¶à·? à·?මà¶? à¶?à·?â??රà·?යà·?à¶?රනà·?න</string>
- <string name="reachable_ports">��න�ද� ��ය���� ප�ටයන�</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">��ම���ර� firewall ප�ට�ප� ��න�ද���ය ���� ප�ටයන�</string>
- <string name="enter_ports">පà·?ටයනà·? à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="enable_hidden_services">à·?à·?à¶?à·?à·?ණà·? à·?à·?à·?à·? à·?à¶à·?à¶?à·?ර à¶?රමà·?නà·? </string>
- <string name="run_servers_accessible_via_the_tor_network">à¶?පà·?à¶?à¶? මචදà·?à·?à·?න à·?à·?à·?à·?දà·?යà¶?යà·?ට Tor ජà·?ලයට පà·?â??රà·?à·?à·?à·?à·?මට à¶?ඩදà·?නà·?න</string>
- <string name="enter_localhost_ports_for_hidden_services">à·?à·?à¶?à·?à·?ණà·? à·?à·?à·?à·? à·?දà·?à·? à¶?à¶à·? localhost පà·?ටයනà·? à¶?à¶à·?à·?à·? à¶?රනà·?න </string>
- <string name="hidden_service_ports">�����ණ� ���� ප�ටයන�</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">à¶?බà·? à·?à·?à¶?à·?à·?ණà·? à·?à·?à·?à·? à·?දà·?à·? à¶?මà¶à¶± නà·?මය (à·?à·?à·?යà¶?à¶?à·?â??රà·?යà·? ජනනය à·?à·?)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">නà·?දà·?à·?à·? à¶?à·?රà·?මà·? ලà·?à¶?ය පà·?â??රà¶à·?දà·?නය à·?දà·?à·? à·?බල à¶?රනà·?න (නà·?රඹà·?ම à·?දà·?à·? adb or aLogCat භà·?à·?à·?à¶à·? à¶?රනà·?න)</string>
- <string name="project_home">à·?à·?â??යà·?පà·?à¶à·? නà·?à·?à·?න(නà·?):</string>
- <string name="the_tor_license">Tor බලපà¶à·?â??රය</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3 �න ප�ර��� ම�ද�����</string>
- <string name="hidden_service_request">යà·?මà·?à·?à¶?ට à·?à·?à¶?à·?à·?ණà·? à·?à·?à·?à·?දà·?යà¶? %S පà·?ටය Tor ජà·?ලයට à·?à·?à·?à·?චà¶?à·?රà·?මට à¶?à·?මනà·?ය. මà·?ය à·?à·?රà¶?à·?à·?à·?à¶à·?නà·?නà·? à¶?බ මà·?ම යà·?මà·?à·? à·?à·?à·?à·?à·?à·?à·? à¶?රනà·?à·? නමà·? පමණà·?.</string>
- <string name="found_existing_tor_process">පà·?à¶à·?න Tor à¶?à·?â??රà·?යà·?à·?ලà·? à·?මà·?à·?à·?ය...</string>
- <string name="something_bad_happened">යම� න�මන� ද�ය�� ��ද���ය. ල��ය පර����� �ර බලන�න </string>
- <string name="hidden_service_on">�����ණ� ���� ප���ටන�න�:</string>
- <string name="unable_to_read_hidden_service_name">�����ණ� ���� න�මය ��ය��මට න�����ය </string>
- <string name="unable_to_start_tor">Tor �රම�භ ��ර�මට න�����ය:</string>
- <string name="pref_use_sys_iptables_title">පà·?රනà·?මà·? IP à·?à¶?à·?à·? භà·?à·?à·?à¶à·? à¶?රනà·?න </string>
- <string name="pref_use_sys_iptables_summary">Orbot à·?à·? දà·?à·?à·?මය ip à·?à¶?à·? à·?à·?නà·?à·?ට à¶?පà·?à¶?à¶?යà·? පà·?à·?à·?ටà·? දà·?à·?à·?මය ip à·?à¶?à·? භà·?à·?à·?à¶à·? à¶?රනà·?න </string>
- <string name="error_installing_binares">Tor දà·?à·?à·?මයනà·? à·?à·?ථà·?පනයට à·?à·? à¶?à¶à·?à·?à·?â??රà·?ණà·? à¶?à·?රà·?මට නà·?à·?à·?à¶?à·? à·?à·?ය.</string>
- <string name="pref_use_persistent_notifications">Orbot à·?මà·?බනà·?ධ à·?à·? à¶?à¶à·? à·?à·?මà·?à·?ටම à·?à·?ට මà·?à·?ලමà·? à¶à·?රà·?à·?à·? නà·?රà·?පà¶?ය à¶à¶¶à·?à¶?නà·?න</string>
- <string name="pref_use_persistent_notifications_title">න���දන ල�බ�මට �ල���න�න </string>
- <string name="notification_using_bridges">à·?à·?à¶à·? à·?බල à¶?ර à¶?à¶!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Orbot à·?දà·?à·? පà·?දà·?à·?à·?ය à·?à·? භà·?à·?à·?à·? à¶à·?රනà·?න </string>
- <string name="wizard_locale_title">භà·?à·?à·?à·? à¶à·?රනà·?න </string>
- <string name="wizard_locale_msg">à·?මà·?මà¶à¶º à¶?à¶à·?à·?ර à·?රà·?à¶à¶¸à·?න භà·?à·?à·?à·?ට මà·?රà·?à·?à·?නà·?න </string>
- <string name="btn_save_settings">��ට��ම� ��ර���න�න</string>
-</resources>
diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml
deleted file mode 100644
index 5427758..0000000
--- a/res/values-sk-rSK/strings.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_info">PomocnÃk</string>
- <string name="button_help">PomocnÃk</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Nastavenia proxy</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
deleted file mode 100644
index 3943b13..0000000
--- a/res/values-sk/strings.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Å¡tart a stop Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot Å¡tartujeâ?¦</string>
- <string name="status_activated">Pripojený do Tor siete</string>
- <string name="status_disabled">Orbot je deaktivovaný</string>
- <string name="tor_process_starting">Å tartujem Tor klienta...</string>
- <string name="tor_process_complete">hotovo.</string>
- <string name="tor_process_waiting">Ä?akám.</string>
- <string name="not_anonymous_yet">VAROVANIE: Váš prenos nie je eÅ¡te anonymný! ProsÃm, nakonfigurujte aplikácie aby použÃvali HTTP proxy 127.0.0.1:8118 alebo SOCKS4A alebo SOCKS5 proxy server 127.0.0.1:9050</string>
- <string name="menu_home">Domov</string>
- <string name="menu_browse">Prehliadať</string>
- <string name="menu_settings">Nastavenia</string>
- <string name="menu_info">PomocnÃk</string>
- <string name="menu_about">O aplikáciÃ</string>
- <string name="button_help">PomocnÃk</string>
- <string name="button_close">Zatvoriť</string>
- <string name="button_about">O aplikáciÃ</string>
- <string name="menu_verify">Skontrolovať</string>
- <string name="menu_exit">UkonÄ?iÅ¥</string>
- <string name="btn_back">Späť</string>
- <string name="btn_cancel">Zrušiť</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Nastavenie proxy</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Všeobecné</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Varovanie</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Žiadny</string>
- <string name="status">Stav</string>
- <string name="error">Chyba</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Uložiť nastavenie</string>
-</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
deleted file mode 100644
index 58da686..0000000
--- a/res/values-sl/strings.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org/?lang=sl</string>
- <string name="secure_default_web_url">https://check.torproject.org/?lang=sl</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">zaÄ?ni in ustavi Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot se zaganja...</string>
- <string name="status_activated">Povezan v omrežje Tor</string>
- <string name="status_disabled">Orbot ni aktiviran</string>
- <string name="tor_process_starting">Zagon Tor klijenta...</string>
- <string name="tor_process_complete">konÄ?ano.</string>
- <string name="tor_process_waiting">Ä?akam.</string>
- <string name="not_anonymous_yet">POZOR: Vaš promet še ni anonimen! Prosimo, nastavite vaše aplikacije da uporabijo HTTP posredniški strežnik 127.0.0.1:8118 ali SOCKS4A ali SOCKS5 posredniški strežnik 127.0.0.1:9050</string>
- <string name="menu_home">Glavni meni</string>
- <string name="menu_browse">Brskaj</string>
- <string name="menu_settings">Nastavitve</string>
- <string name="menu_log">Dnevnik</string>
- <string name="menu_info">PomoÄ?</string>
- <string name="menu_start">ZaÄ?ni</string>
- <string name="menu_stop">Ustavi</string>
- <string name="menu_about">O programu</string>
- <string name="main_layout_download">Prenesi</string>
- <string name="main_layout_upload">Naloži</string>
- <string name="button_help">PomoÄ?</string>
- <string name="button_close">Zapri</string>
- <string name="button_about">O programu</string>
- <string name="button_clear_log">PoÄ?isti dnevnik</string>
- <string name="menu_verify">Preveri</string>
- <string name="menu_exit">Izhod</string>
- <string name="press_to_start">- dolg pritisk za zaÄ?etek -</string>
- <string name="pref_trans_proxy_group">Transparentno delovanje prek posredniškega strežnika (potrebuje root)</string>
- <string name="pref_trans_proxy_title">Transparentno delovanje prek posredniškega strežnika</string>
- <string name="pref_trans_proxy_summary">Samodejno preusmerjanje aplikacij preko Tor</string>
- <string name="pref_transparent_all_title">Tor karkoli</string>
- <string name="pref_transparent_all_summary">Posredovanje prometa za vse aplikacije preko Tor</string>
- <string name="pref_transparent_port_fallback_title">Nadomestna posredniška vrata</string>
- <string name="pref_transparent_port_fallback_summary">OPOZORILO: Obide skupne porte (80, 443, itd.) * UPORABI LE * v primeru Ä?e \"Vsi\" ali \"App\" naÄ?in ne deluje.</string>
- <string name="pref_transparent_port_title">Seznam vrat</string>
- <string name="pref_transparent_port_summary">Seznam portov za posredniÅ¡ki strežnik. * UPORABI LE * v primeru Ä?e \"Vsi\" ali \"App\" naÄ?in ne deluje</string>
- <string name="pref_transparent_port_dialog">Vnesi vrata za posredniški strežnik</string>
- <string name="pref_has_root">Zahtevaj korenski dostop</string>
- <string name="pref_has_root_summary">Zahtevaj korenski dostop za transparentno posredovanje</string>
- <string name="status_install_success">Tor binarne datoteke so uspeÅ¡no nameÅ¡Ä?ene!</string>
- <string name="status_install_fail">Ni bilo možno namestiti Tor binarnih datotek. Prosimo preverite log in obvestite tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Napaka v programu</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">O programu Orbot</string>
- <string name="btn_next">Naprej</string>
- <string name="btn_back">Nazaj</string>
- <string name="btn_finish">ZakljuÄ?i</string>
- <string name="btn_okay">Potrdi</string>
- <string name="btn_cancel">Prekini</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Nekaj podrobnosti o Orbot-u</string>
- <string name="wizard_permissions_root">Dovoljenje dodeljeno</string>
- <string name="wizard_permissions_stock">Orbot dovoljenja</string>
- <string name="wizard_premissions_msg_root">OdliÄ?no! Ugotovili smo, da imate omogoÄ?eno root dovoljenje za Orbot. To moÄ? bomo modro uporabili.</string>
- <string name="wizard_permissions_msg_stock">Ä?eprav to ni potrebno, lahko Orbot postane bolj zmogljivo orodje, Ä?e ima vaÅ¡a naprava korenski dostop. Uporabite spodnji gumb za odobritev Orbot velesile!</string>
- <string name="wizard_permissions_no_root">Ä?e nimate korenski dostop ali nimate pojma o Ä?em je beseda, se le prepriÄ?ajte, da uporabljate aplikacije, narejene za delo z Orbot.</string>
- <string name="wizard_permissions_consent">Razumem in želim nadaljevati kot Superuporabnik.</string>
- <string name="wizard_permission_enable_root">Dodeli Root za Orbot</string>
- <string name="wizard_proxy_help_info">Nastavitve posredniškega (proxy) strežnika</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Splošno</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Opozorilo</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Dovoljenja</string>
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="status">Stanje</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Shrani nastavitve</string>
-</resources>
diff --git a/res/values-sn/strings.xml b/res/values-sn/strings.xml
deleted file mode 100644
index fdb4e7d..0000000
--- a/res/values-sn/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="menu_settings">Zvamada</string>
- <string name="menu_about">Maererano</string>
- <string name="button_about">Maererano</string>
- <string name="menu_exit">Buda</string>
- <string name="wizard_btn_tell_me_more">Maererano Orbot</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Proxy Zvamada</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
deleted file mode 100644
index 19f4a4c..0000000
--- a/res/values-sq/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_home">Shpi</string>
- <string name="menu_browse">Lundro</string>
- <string name="menu_settings">Zgjedhjet</string>
- <string name="menu_info">Ndihmë</string>
- <string name="menu_about">Informacione</string>
- <string name="button_help">Ndihmë</string>
- <string name="button_close">Mbylle</string>
- <string name="button_about">Informacione</string>
- <string name="menu_exit">Dil</string>
- <string name="btn_back">Mbrapa</string>
- <string name="btn_cancel">Anullo</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_proxy_help_info">Konfigurimi i Proxy</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Të Përgjithshme</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Warning</string>
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_none">Asnjë</string>
- <string name="status">Gjëndja</string>
- <string name="error">Gabim</string>
- <string name="default_bridges"></string>
- <string name="btn_save_settings">Shpëto Konfigurmin</string>
-</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
deleted file mode 100644
index d05db8c..0000000
--- a/res/values-sr/strings.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Ð?Ñ?боÑ?</string>
- <string name="app_description">Ð?Ñ?боÑ? Ñ?е беÑ?плаÑ?на пÑ?окÑ?и апликаÑ?иÑ?а коÑ?а даÑ?е моÑ? дÑ?Ñ?гим апликаÑ?иÑ?ама да безбедниÑ?е коÑ?иÑ?Ñ?е инÑ?еÑ?неÑ?. Ð?Ñ?боÑ? коÑ?иÑ?Ñ?и ТоÑ? за Ñ?иÑ?Ñ?оваÑ?е ваÑ?ег инÑ?еÑ?неÑ? Ñ?аобÑ?аÑ?аÑ?а и онда га Ñ?кÑ?ива Ñ?лаÑ?ем кÑ?оз низ Ñ?аÑ?Ñ?наÑ?а Ñ?иÑ?ом Ñ?веÑ?а. ТоÑ? Ñ?е Ñ?лободан Ñ?оÑ?Ñ?веÑ? и оÑ?воÑ?ена мÑ?ежа коÑ?а помаже да Ñ?е одбÑ?аниÑ?е од Ñ?азниÑ? облика надзоÑ?а мÑ?ежа коÑ?и Ñ?гÑ?ожаваÑ?Ñ? лиÑ?нÑ? Ñ?лободÑ? и пÑ?иваÑ?ноÑ?Ñ?, повеÑ?Ñ?иве поÑ?ловне акÑ?ивноÑ?Ñ?и и лиÑ?не одноÑ?е и дÑ?жавне безбедноÑ?Ñ?и познаÑ?е као анализа Ñ?аобÑ?аÑ?аÑ?а.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">покÑ?ени и заÑ?Ñ?Ñ?ави Tor</string>
- <string name="tor_proxy_service_process">ТоÑ? пÑ?окÑ?и Ñ?Ñ?лÑ?га</string>
- <string name="status_starting_up">Ð?Ñ?боÑ? Ñ?е покÑ?еÑ?е...</string>
- <string name="status_activated">Ð?овезан Ñ?а ТоÑ? мÑ?ежом</string>
- <string name="status_disabled">Ð?Ñ?боÑ? Ñ?е деакÑ?ивиÑ?ан</string>
- <string name="tor_process_starting">Ð?окÑ?еÑ?е Ñ?е ТоÑ? клиÑ?енÑ?...</string>
- <string name="tor_process_complete">завÑ?Ñ?ено.</string>
- <string name="tor_process_waiting">Ñ?екам.</string>
- <string name="not_anonymous_yet">УÐ?Ð?Ð?Ð?Ð Ð?Ð?Ð?: Ð?аÑ? пÑ?омеÑ? Ñ?оÑ? ниÑ?е анониман! Ð?олимо ваÑ? да подеÑ?иÑ?е Ð?аÑ?е апликаÑ?иÑ?е да коÑ?иÑ?Ñ?е HTTP пÑ?окÑ?и 127.0.0.1:8118 или SOCKS4A или SOCKS5 пÑ?окÑ?и 127.0.0.1:9050</string>
- <string name="menu_home">Ð?оÑ?еÑ?на</string>
- <string name="menu_browse">РазгледаÑ?е</string>
- <string name="menu_settings">Ð?одеÑ?аваÑ?а</string>
- <string name="menu_log">Ð?огови</string>
- <string name="menu_info">Ð?омоÑ?</string>
- <string name="menu_apps">Ð?Ð?Ð?</string>
- <string name="menu_start">Ð?Ñ?ени</string>
- <string name="menu_stop">Ð?аÑ?Ñ?Ñ?ави</string>
- <string name="menu_about">Ð? нама</string>
- <string name="main_layout_download">Ð?Ñ?еÑ?зимаÑ?е</string>
- <string name="main_layout_upload">Ð?Ñ?пÑ?емаÑ?е</string>
- <string name="button_help">Ð?омоÑ?</string>
- <string name="button_close">Ð?аÑ?воÑ?и</string>
- <string name="button_about">Ð? нама</string>
- <string name="button_clear_log">Ð?Ñ?иÑ?Ñ?и логове</string>
- <string name="menu_verify">Ð?Ñ?овеÑ?и</string>
- <string name="menu_exit">Ð?злаз</string>
- <string name="press_to_start">- задÑ?жиÑ?е дÑ?жи пÑ?иÑ?иÑ?ак за поÑ?еÑ?ак -</string>
- <string name="pref_trans_proxy_group">ТÑ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е (заÑ?Ñ?ева root пÑ?иÑ?Ñ?Ñ?п)</string>
- <string name="pref_trans_proxy_title">ТÑ?анÑ?паÑ?енÑ?но Ñ?лаÑ?е кÑ?оз пÑ?окÑ?и</string>
- <string name="pref_trans_proxy_summary">Ð?Ñ?Ñ?омаÑ?Ñ?ко Ñ?оÑ?иÑ?иÑ?иÑ?аÑ?е апликаÑ?иÑ?а</string>
- <string name="pref_transparent_all_title">ТоÑ?оÑ?икÑ?Ñ? Ñ?ве</string>
- <string name="pref_transparent_all_summary">Ð?Ñ?оÑ?леди пÑ?омеÑ? од Ñ?виÑ? апликаÑ?иÑ?а кÑ?оз ТоÑ?</string>
- <string name="pref_transparent_port_fallback_title">РезеÑ?ван поÑ?Ñ? пÑ?окÑ?иÑ?а</string>
- <string name="pref_transparent_port_fallback_summary">УÐ?Ð?Ð?Ð?Ð Ð?Ð?Ð?: Ð?аобилажеÑ?е Ñ?еÑ?Ñ?иÑ? поÑ?Ñ?ова (80, 443 иÑ?д). Ð?Ð?Ð Ð?СТÐ?ТÐ? СÐ?Ð?Ð? ако подеÑ?аваÑ?а на \"Све\" или \"Ð?пликаÑ?иÑ?а\" не Ñ?аде.</string>
- <string name="pref_transparent_port_title">Ð?иÑ?Ñ?а поÑ?Ñ?ова</string>
- <string name="pref_transparent_port_summary">Ð?иÑ?Ñ?а поÑ?Ñ?ова за пÑ?окÑ?и. Ð?оÑ?иÑ?Ñ?иÑ?и СÐ?Ð?Ð? ако опÑ?иÑ?е \"Све\" или \"Ð?пликаÑ?иÑ?е\" не Ñ?аде.</string>
- <string name="pref_transparent_port_dialog">УпиÑ?иÑ?е поÑ?Ñ?ове за пÑ?оÑ?леÑ?иваÑ?е на пÑ?окÑ?и</string>
- <string name="pref_has_root">Ð?аÑ?Ñ?ажи root пÑ?иÑ?Ñ?Ñ?п</string>
- <string name="pref_has_root_summary">Ð?аÑ?Ñ?ажи root пÑ?иÑ?Ñ?Ñ?п за Ñ?Ñ?анÑ?паÑ?енÑ?но пÑ?окÑ?иÑ?аÑ?е</string>
- <string name="status_install_success">ТоÑ? бинаÑ?и Ñ?Ñ?пеÑ?но инÑ?Ñ?алиÑ?ани!</string>
- <string name="status_install_fail">Ð?инаÑ?не ТоÑ? даÑ?оÑ?еке ниÑ?Ñ? Ñ?Ñ?пеÑ?но инÑ?Ñ?алиÑ?ане. Ð?олимо пÑ?егледаÑ?Ñ?е логове и обавеÑ?Ñ?иÑ?е наÑ? на tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ð?Ñ?еÑ?ка Ñ? апликаÑ?иÑ?и</string>
- <string name="wizard_title">Ð?Ñ?боÑ?</string>
- <string name="wizard_btn_tell_me_more">Ð?нÑ?оÑ?маÑ?иÑ?е о Ð?Ñ?боÑ?Ñ?</string>
- <string name="btn_next">СледеÑ?е</string>
- <string name="btn_back">Ð?азад</string>
- <string name="btn_finish">Ð?авÑ?Ñ?и</string>
- <string name="btn_okay">У Ñ?едÑ?</string>
- <string name="btn_cancel">Ð?Ñ?кажи</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ð?еÑ?аÑ?и о Ð?Ñ?боÑ?Ñ?</string>
- <string name="wizard_details_msg">Orbot je otvorena aplikacija koja sadrzi Tor, LibEvent i Polipo. ObezbeÄ?uje lokalni HTTP proksi (8118) i SOCKS proksi (9050) u Tor mrežu. TakoÄ?e poseduje sposobnost, da kroz Tor, Å¡alje sav internet saobraÄ?aj sa rutovanih ureÄ?aja.</string>
- <string name="wizard_permissions_root">Ð?озвола одобÑ?ена</string>
- <string name="wizard_permissions_stock">Ð?Ñ?боÑ? дозволе</string>
- <string name="wizard_premissions_msg_root">Ð?длиÑ?но! Ð?еÑ?екÑ?овали Ñ?мо да имаÑ?е root дозволе за Ð?Ñ?боÑ?. Ð?Ñ?дÑ?о Ñ?емо иÑ?кÑ?оÑ?иÑ?Ñ?иÑ?и овÑ? моÑ?.</string>
- <string name="wizard_permissions_msg_stock">Ð?ако ниÑ?е заÑ?Ñ?евано, Ð?Ñ?боÑ? поÑ?Ñ?аÑ?е много Ñ?аÑ?и алаÑ? ако Ð?аÑ? Ñ?Ñ?еÑ?аÑ? има root пÑ?иÑ?Ñ?Ñ?п. Ð?оÑ?иÑ?Ñ?иÑ?е дÑ?гме иÑ?под да биÑ?Ñ?е омогÑ?Ñ?или Ð?Ñ?боÑ?Ñ? Ñ?Ñ?пеÑ? моÑ?и.</string>
- <string name="wizard_permissions_no_root">Ð?ко немаÑ?е root пÑ?иÑ?Ñ?Ñ?п или немаÑ?е поÑ?ма о Ñ?емÑ? пÑ?иÑ?амо, Ñ?амо Ñ?е побÑ?иниÑ?е да коÑ?иÑ?Ñ?иÑ?е апликаÑ?иÑ?е коÑ?е Ñ?Ñ? напÑ?авÑ?ене да Ñ?Ñ?нкÑ?иониÑ?Ñ? Ñ?а Ð?Ñ?боÑ?ом.</string>
- <string name="wizard_permissions_consent">РазÑ?мем и желео биÑ? да наÑ?Ñ?авим без root пÑ?иÑ?Ñ?Ñ?па</string>
- <string name="wizard_permission_enable_root">Ð?озволи root за Ð?Ñ?боÑ?</string>
- <string name="wizard_configure">Ð?одеÑ?и Ñ?оÑ?иÑ?икаÑ?иÑ?Ñ?</string>
- <string name="wizard_configure_msg">Ð?Ñ?боÑ? Ð?ам даÑ?е опÑ?иÑ?Ñ? да пÑ?оÑ?ледиÑ?е Ñ?ав пÑ?омеÑ? од Ñ?Ñ?Ñ?ане Ñ?виÑ? апликаÑ?иÑ?а или да изабеÑ?еÑ?е поÑ?ебно апликаÑ?иÑ?е коÑ?е желиÑ?е да пÑ?оÑ?ледиÑ?е кÑ?оз ТоÑ? мÑ?ежÑ?.</string>
- <string name="wizard_configure_all">Ð?оÑ?аÑ?и пÑ?омеÑ? од Ñ?виÑ? апликаÑ?иÑ?а кÑ?оз ТоÑ?</string>
- <string name="wizard_configure_select_apps">Ð?знаÑ?и поÑ?ебно апликаÑ?иÑ?е Ñ?иÑ?и Ñ?е Ñ?е пÑ?омеÑ? пÑ?оÑ?ледиÑ?и кÑ?оз ТоÑ?</string>
- <string name="wizard_tips_tricks">Ð?Ñ?боÑ?-омогÑ?Ñ?ене Ð?пликаÑ?иÑ?е</string>
- <string name="wizard_tips_msg">Ð?пликаÑ?иÑ?е наведене иÑ?под Ñ?Ñ? Ñ?азвиÑ?ене да би Ñ?адиле Ñ?а Ð?Ñ?боÑ?ом. Ð?ликниÑ?е Ñ?вако дÑ?гме коÑ?е желиÑ?е Ñ?ада да инÑ?Ñ?алиÑ?аÑ?е, а Ñ? Ñ?Ñ?пÑ?оÑ?ном иÑ? можеÑ?е пÑ?онаÑ?и и Ñ? Google Play пÑ?одавниÑ?и, на GuardianProject.info веб Ñ?Ñ?Ñ?аниÑ?и или пÑ?еко F-Droid.org.</string>
- <string name="wizard_tips_proxy">Ð?Ñ?окÑ?и поÑ?Ñ?авке - Ð?аÑ?Ñ?иÑ?е како да подеÑ?иÑ?е апликаÑ?иÑ?е да Ñ?аде Ñ?а Ð?Ñ?боÑ?ом</string>
- <string name="wizard_tips_duckgo">DuckDuckGo апликаÑ?иÑ?а за пÑ?еÑ?Ñ?аживаÑ?е инÑ?еÑ?неÑ?а</string>
- <string name="wizard_tips_twitter">Ð?одеÑ?иÑ?е ТвиÑ?еÑ? да коÑ?иÑ?Ñ?и поÑ?Ñ? 8118 на локалном Ñ?оÑ?Ñ?Ñ?.</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ð?Ñ?окÑ?и подеÑ?аваÑ?а</string>
- <string name="wizard_final">Ð?Ñ?боÑ? Ñ?е Ñ?пÑ?еман!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Ð?во Ñ?е оÑ?воÑ?иÑ?и Ð?аÑ? веб пÑ?еÑ?Ñ?аживаÑ? и поÑ?еÑ?иÑ?и Ñ?Ñ?Ñ?аниÑ?Ñ? https://check.torproject.org да би пÑ?овеÑ?или да ли Ñ?е Ð?Ñ?боÑ? пÑ?авилно подеÑ?ен и да ли Ñ?Ñ?е Ñ?поÑ?ени Ñ?а ТоÑ? мÑ?ежом.</string>
- <string name="pref_hs_group">ХоÑ?Ñ?инг на Ñ?кÑ?ивеном Ñ?еÑ?виÑ?Ñ?</string>
- <string name="pref_general_group">Ð?пÑ?Ñ?е</string>
- <string name="pref_start_boot_title">Ð?окÑ?ени Ð?Ñ?боÑ? пÑ?и покÑ?еÑ?аÑ?Ñ? Ñ?Ñ?еÑ?аÑ?а</string>
- <string name="pref_start_boot_summary">Ð?Ñ?Ñ?омаÑ?Ñ?ки покÑ?ениÑ?е Ð?Ñ?боÑ? и конекÑ?Ñ?Ñ?Ñ?е Ñ?е Ñ?а ТоÑ? мÑ?ежом када Ñ?е Ñ?пали Ð?аÑ? Ð?ндÑ?оид Ñ?Ñ?еÑ?аÑ?.</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">УпозоÑ?еÑ?е</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ð?озволе</string>
- <string name="wizard_permissions_root_msg1">Ð?ожеÑ?е опÑ?ионално дозволиÑ?и Ð?Ñ?боÑ?Ñ? пÑ?иÑ?Ñ?Ñ?п као \"СÑ?пеÑ? коÑ?иÑ?ник\" да би омогÑ?Ñ?или напÑ?едне Ñ?Ñ?нкÑ?иÑ?е као Ñ?Ñ?о Ñ?е Ñ?Ñ?анÑ?паÑ?енÑ?но Ñ?лаÑ?е кÑ?оз пÑ?окÑ?и.</string>
- <string name="wizard_permissions_root_msg2">Ð?ко не желиÑ?е ово да Ñ?Ñ?адиÑ?е, молимо Ð?аÑ? да Ñ?е Ñ?веÑ?иÑ?е да коÑ?иÑ?Ñ?иÑ?е апликаÑ?иÑ?е коÑ?е Ñ?Ñ? подеÑ?ене да Ñ?аде Ñ?а Ð?Ñ?боÑ?ом.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Ð?пликаÑ?иÑ?е Ñ?а омогÑ?Ñ?еним Ð?Ñ?боÑ?ом.</string>
- <string name="wizard_tips_play">Ð?Ñ?онаÑ?иÑ?е Ñ?ве Guardian Project апликаÑ?иÑ?е на Google Play Ñ?еÑ?виÑ?Ñ?</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">ТÑ?анÑ?паÑ?енÑ?но Ñ?лаÑ?е кÑ?оз пÑ?окÑ?и</string>
- <string name="wizard_transproxy_msg">Ð?во омогÑ?Ñ?ава Ð?аÑ?им апликаÑ?иÑ?ама да аÑ?Ñ?омаÑ?Ñ?ки пÑ?еÑ?Ñ?меÑ?аваÑ?Ñ? пÑ?омеÑ? кÑ?оз ТоÑ? мÑ?ежÑ? без икакве конÑ?игÑ?Ñ?аÑ?иÑ?е.</string>
- <string name="wizard_transproxy_hint">(Ð?знаÑ?иÑ?е оваÑ? квадÑ?аÑ?иÑ? ако немаÑ?е поÑ?ма о Ñ?емÑ? пÑ?иÑ?амо)</string>
- <string name="wizard_transproxy_none">Ð?иÑ?едан</string>
- <string name="pref_transparent_tethering_title">Ð?Ñ?ивезиваÑ?е Ñ?оÑ?а</string>
- <string name="pref_transparent_tethering_summary">Ð?могÑ?Ñ?ава ТоÑ?ово Ñ?Ñ?анÑ?паÑ?енÑ?но Ñ?лаÑ?е кÑ?оз пÑ?окÑ?и за бежиÑ?не и УСÐ? повезиваÑ?Ñ?Ñ?е Ñ?Ñ?еÑ?аÑ?е (заÑ?Ñ?ева Ñ?еÑ?Ñ?аÑ?Ñ?оваÑ?е)</string>
- <string name="button_grant_superuser">Ð?аÑ?Ñ?ажи пÑ?иÑ?Ñ?Ñ?п као \'Superuser\'</string>
- <string name="pref_select_apps">Ð?забеÑ?иÑ?е апликаÑ?иÑ?е</string>
- <string name="pref_select_apps_summary">Ð?забеÑ?иÑ?е апликаÑ?иÑ?е Ñ?иÑ?и пÑ?омеÑ? Ñ?еÑ?е пÑ?оÑ?ледиÑ?и кÑ?оз ТоÑ?</string>
- <string name="pref_node_configuration">Ð?онÑ?игÑ?Ñ?аÑ?иÑ?а Ñ?воÑ?ова</string>
- <string name="pref_node_configuration_summary">Ð?во Ñ?Ñ? напÑ?едне поÑ?Ñ?авке коÑ?е могÑ? да Ñ?маÑ?е Ð?аÑ?Ñ? анонимноÑ?Ñ?</string>
- <string name="pref_entrance_node">Ð?оÑ?еÑ?ни Ñ?воÑ?ови</string>
- <string name="pref_entrance_node_summary">Ð?Ñ?иÑ?Ñ?и пÑ?Ñ?Ñ?иÑ?Ñ?, надимÑ?и, дÑ?жаве и адÑ?еÑ?е пÑ?вог Ñ?кока</string>
- <string name="pref_entrance_node_dialog">УнеÑ?иÑ?е поÑ?еÑ?не Ñ?воÑ?ове</string>
- <string name="pref_proxy_title">Ð?Ñ?ежни пÑ?окÑ?и за одлазеÑ?и пÑ?омеÑ? (Ð?еобавезно)</string>
- <string name="pref_proxy_type_title">Тип пÑ?окÑ?иÑ?а за одлазеÑ?и пÑ?омеÑ?</string>
- <string name="pref_proxy_type_summary">Ð?Ñ?оÑ?окол коÑ?и Ñ?е Ñ?е коÑ?иÑ?Ñ?иÑ?и за пÑ?окÑ?и Ñ?еÑ?веÑ?: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">УнеÑ?иÑ?е Ñ?ип пÑ?окÑ?иÑ?а</string>
- <string name="pref_proxy_host_title">ХоÑ?Ñ? пÑ?окÑ?иÑ?а за одлазеÑ?и пÑ?омеÑ?</string>
- <string name="pref_proxy_host_summary">Ð?ме Ñ?оÑ?Ñ?а за пÑ?окÑ?и Ñ?еÑ?веÑ?</string>
- <string name="pref_proxy_host_dialog">УнеÑ?иÑ?е Ñ?оÑ?Ñ? од пÑ?окÑ?иÑ?а</string>
- <string name="pref_proxy_port_title">Ð?оÑ?Ñ? пÑ?окÑ?иÑ?а за одлазеÑ?и пÑ?омеÑ?</string>
- <string name="pref_proxy_port_summary">Ð?оÑ?Ñ? пÑ?окÑ?и Ñ?еÑ?веÑ?а</string>
- <string name="pref_proxy_port_dialog">УнеÑ?иÑ?е поÑ?Ñ? пÑ?окÑ?иÑ?а</string>
- <string name="pref_proxy_username_title">Ð?оÑ?иÑ?ниÑ?ко име на пÑ?окÑ?иÑ?Ñ? за одлазеÑ?и пÑ?омеÑ?</string>
- <string name="pref_proxy_username_summary">Ð?ме пÑ?окÑ?иÑ?а (Ð?еобавезно)</string>
- <string name="pref_proxy_username_dialog">УнеÑ?иÑ?е коÑ?иÑ?ниÑ?ко име Ð?Ñ?окÑ?иÑ?а </string>
- <string name="pref_proxy_password_title">ШиÑ?Ñ?а на пÑ?окÑ?иÑ?Ñ? за одлазеÑ?и пÑ?омеÑ?</string>
- <string name="pref_proxy_password_summary">ШиÑ?Ñ?а пÑ?окÑ?иÑ?а (необавезно)</string>
- <string name="pref_proxy_password_dialog">УнеÑ?иÑ?е Ñ?иÑ?Ñ?Ñ? пÑ?окÑ?иÑ?а</string>
- <string name="status">СÑ?аÑ?Ñ?Ñ?</string>
- <string name="setting_up_full_transparent_proxying_">Ð?оÑ?Ñ?авÑ?аÑ?е поÑ?пÑ?но Ñ?Ñ?апÑ?паÑ?енÑ?ног Ñ?лаÑ?а кÑ?оз пÑ?окÑ?и</string>
- <string name="setting_up_app_based_transparent_proxying_">Ð?одеÑ?аваÑ?е Ñ?Ñ?апÑ?паÑ?енÑ?ног пÑ?окÑ?иÑ?а од Ñ?Ñ?Ñ?ане апликаÑ?иÑ?е</string>
- <string name="transparent_proxying_enabled">ТÑ?анÑ?паÑ?енÑ?но Ñ?лаÑ?е кÑ?оз пÑ?окÑ?и Ñ?е Ð?Ð?Ð?Ð?УÐ?Ð?Ð?Ð?</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy Ñ?е омогÑ?Ñ?ен за пÑ?ивезиваÑ?е</string>
- <string name="warning_error_starting_transparent_proxying_">УÐ?Ð?Ð?Ð?Ð Ð?Ð?Ð?: гÑ?еÑ?ка пÑ?и Ñ?Ñ?аÑ?Ñ?оваÑ?Ñ? Ñ?Ñ?анÑ?паÑ?енÑ?ног Ñ?лаÑ?а кÑ?оз пÑ?окÑ?и!</string>
- <string name="transproxy_rules_cleared">TransProxy пÑ?авила оÑ?иÑ?Ñ?ена</string>
- <string name="couldn_t_start_tor_process_">Ð?иÑ?е могÑ?Ñ?е покÑ?енÑ?Ñ?и ТоÑ? пÑ?оÑ?еÑ?:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ð?одеÑ?аваÑ?е Ñ?Ñ?анÑ?паÑ?енÑ?ног пÑ?окÑ?иÑ?аÑ?а од Ñ?Ñ?Ñ?ане поÑ?Ñ?а...</string>
- <string name="bridge_error">Ð?Ñ?еÑ?ка Ñ? моÑ?Ñ?Ñ?</string>
- <string name="bridge_requires_ip">Ð?а биÑ?Ñ?е коÑ?иÑ?Ñ?или bridge могÑ?Ñ?ноÑ?Ñ?, моÑ?аÑ?е Ñ?неÑ?и баÑ? Ñ?еднÑ? bridge IP адÑ?еÑ?Ñ?.</string>
- <string name="send_email_for_bridges">Ð?оÑ?аÑ?иÑ?е меÑ?л на bridges@xxxxxxxxxxxxxx Ñ?а Ñ?еÑ?има \"get bridges\" Ñ? Ñ?екÑ?Ñ?Ñ? поÑ?Ñ?ке меÑ?ла Ñ?а gmail коÑ?иÑ?ниÑ?ког Ñ?аÑ?Ñ?на.</string>
- <string name="error">Ð?Ñ?еÑ?ка</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ð?аÑ?е ReachableAddresses поÑ?Ñ?авке Ñ?Ñ? изазвале изÑ?зеÑ?ак!</string>
- <string name="your_relay_settings_caused_an_exception_">Ð?аÑ?е поÑ?Ñ?авке Ñ?елеÑ?а Ñ?Ñ? изазвале изÑ?зеÑ?ак!</string>
- <string name="exit_nodes">Ð?злазни Ñ?воÑ?ови</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ð?Ñ?иÑ?Ñ?и, надимÑ?и, дÑ?жаве и адÑ?еÑ?е задÑ?ег Ñ?кока</string>
- <string name="enter_exit_nodes">УнеÑ?иÑ?е излазне Ñ?воÑ?ове</string>
- <string name="exclude_nodes">Ð?дÑ?Ñ?Ñ?аниÑ?е Ñ?воÑ?ове</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ð?Ñ?иÑ?Ñ?и, надимÑ?и, дÑ?жаве и адÑ?еÑ?е за одÑ?Ñ?Ñ?аÑ?еÑ?е</string>
- <string name="enter_exclude_nodes">УнеÑ?иÑ?е Ñ?воÑ?ове за одÑ?Ñ?Ñ?аÑ?еÑ?е</string>
- <string name="strict_nodes">СÑ?Ñ?икÑ?ни Ñ?воÑ?ови</string>
- <string name="use_only_these_specified_nodes">Ð?оÑ?иÑ?Ñ?и СÐ?Ð?Ð? ове наведене Ñ?воÑ?ове</string>
- <string name="bridges">Ð?оÑ?Ñ?ови</string>
- <string name="use_bridges">Ð?оÑ?иÑ?Ñ?и bridge</string>
- <string name="bridges_obfuscated">Ð?оÑ?Ñ?ови Ñ?а bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ð?могÑ?Ñ?и алÑ?еÑ?наÑ?ивне Ñ?воÑ?ове за Ñ?лаз Ñ? ТоÑ? мÑ?ежÑ?</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ð?могÑ?Ñ?иÑ?и ако Ñ?Ñ? конÑ?игÑ?Ñ?иÑ?ани моÑ?Ñ?ови моÑ?Ñ?ови Ñ?а баговима</string>
- <string name="ip_address_and_port_of_bridges">IP адÑ?еÑ?а и поÑ?Ñ? bridge-а</string>
- <string name="enter_bridge_addresses">УнеÑ?иÑ?е bridge адÑ?еÑ?Ñ? </string>
- <string name="relays">РелеÑ?и</string>
- <string name="relaying">РелеÑ?иÑ?аÑ?е</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Ð?могÑ?Ñ?иÑ?е ваÑ?ем Ñ?Ñ?еÑ?аÑ?Ñ? да бÑ?де Ñ?елеÑ? без излаза</string>
- <string name="relay_port">Ð?оÑ?Ñ? за Ñ?елеÑ?</string>
- <string name="listening_port_for_your_tor_relay">Ð?оÑ?Ñ? за Ñ?лÑ?Ñ?аÑ?е за Ñ?воÑ? ТоÑ? Ñ?елеÑ?</string>
- <string name="enter_or_port">УкÑ?Ñ?аÑ?Ñ?е Ð?Ð?Ð? поÑ?Ñ?</string>
- <string name="relay_nickname">Ð?адимак Ñ?елеÑ?а</string>
- <string name="the_nickname_for_your_tor_relay">Ð?адимак ваÑ?ег ТоÑ? Ñ?елеÑ?а</string>
- <string name="enter_a_custom_relay_nickname">УнеÑ?иÑ?е по избоÑ?Ñ? надимак за Ñ?елеÑ?</string>
- <string name="reachable_addresses">Ð?оÑ?Ñ?Ñ?пне адÑ?еÑ?е</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ð?окÑ?ениÑ?е као клиÑ?енÑ?а иза firewall-а коÑ?и Ñ?е Ñ?еÑ?Ñ?Ñ?икÑ?ивно подеÑ?ен</string>
- <string name="reachable_ports">Ð?оÑ?Ñ?Ñ?пни поÑ?Ñ?ови</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ð?оÑ?Ñ?ови доÑ?Ñ?Ñ?пни иза Ñ?еÑ?Ñ?Ñ?икÑ?ивног firewall-а</string>
- <string name="enter_ports">УнеÑ?иÑ?е поÑ?Ñ?ове</string>
- <string name="enable_hidden_services">ХоÑ?Ñ?инг на Ñ?кÑ?ивеном Ñ?еÑ?виÑ?Ñ?</string>
- <string name="run_servers_accessible_via_the_tor_network">дозволиÑ?е Ñ?еÑ?веÑ?Ñ? на Ñ?Ñ?еÑ?аÑ?Ñ? да бÑ?де доÑ?Ñ?Ñ?пан пÑ?еко ТоÑ? мÑ?еже</string>
- <string name="enter_localhost_ports_for_hidden_services">Ñ?неÑ?иÑ?е localhost поÑ?Ñ?ове за Ñ?кÑ?ивене Ñ?еÑ?виÑ?е</string>
- <string name="hidden_service_ports">Ð?оÑ?Ñ?ови на Ñ?кÑ?ивеном Ñ?еÑ?виÑ?Ñ?</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">адÑ?еÑ?абилно име за Ð?аÑ? Ñ?кÑ?ивени Ñ?еÑ?виÑ? (генеÑ?иÑ?е Ñ?е аÑ?Ñ?омаÑ?Ñ?ко)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">омогÑ?Ñ?иÑ?е debug логовоаÑ?е (моÑ?а Ñ?е коÑ?иÑ?Ñ?иÑ?и adb или aLogCat да би Ñ?е пÑ?егледали)</string>
- <string name="project_home">Ð?оÑ?еÑ?на за пÑ?оÑ?екÑ?е:</string>
- <string name="the_tor_license">ТоÑ? лиÑ?енÑ?а</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">СоÑ?Ñ?веÑ? од Ñ?Ñ?Ñ?ане неÑ?лÑ?жбениÑ? издаваÑ?а:</string>
- <string name="hidden_service_request">Ð?пликаÑ?иÑ?а жели да оÑ?воÑ?и Ñ?акÑ?ивен поÑ?Ñ? %S на Ñ?еÑ?веÑ?Ñ? за ТоÑ? мÑ?ежÑ?. Ð?во Ñ?е Ñ?игÑ?Ñ?ан поÑ?ез Ñ?колико веÑ?Ñ?Ñ?еÑ?е апликаÑ?иÑ?и.</string>
- <string name="found_existing_tor_process">наÑ?ен покÑ?енÑ?Ñ?и ТоÑ? пÑ?оÑ?еÑ?...</string>
- <string name="something_bad_happened">Ð?еÑ?Ñ?о лоÑ?е Ñ?е догодило. Ð?Ñ?егледаÑ?Ñ?е логове</string>
- <string name="hidden_service_on">Ñ?акÑ?ивен Ñ?еÑ?виÑ? на:</string>
- <string name="unable_to_read_hidden_service_name">ниÑ?ам Ñ? могÑ?Ñ?ноÑ?Ñ?и да пÑ?оÑ?иÑ?ам име Ñ?акÑ?ивеног Ñ?еÑ?виÑ?а</string>
- <string name="unable_to_start_tor">ТоÑ? ниÑ?е Ñ? могÑ?Ñ?ноÑ?Ñ?и да Ñ?е покÑ?ене:</string>
- <string name="pref_use_sys_iptables_title">Ð?оÑ?иÑ?Ñ?иÑ?и Ñ?обиÑ?аÑ?ене Ð?пÑ?абеле</string>
- <string name="pref_use_sys_iptables_summary">коÑ?иÑ?Ñ?и Ñ?гÑ?аÑ?ене Ð?Ð?Ñ?абеле Ñ?меÑ?Ñ?о ониÑ? коÑ?е долазе Ñ?а Ð?Ñ?боÑ?ом</string>
- <string name="error_installing_binares">ТоÑ? бинаÑ?и ниÑ?Ñ? Ñ? могÑ?Ñ?ноÑ?Ñ?и да Ñ?е инÑ?Ñ?алиÑ?аÑ?Ñ? или надогÑ?аде.</string>
- <string name="pref_use_persistent_notifications">Увек пÑ?икажи иконÑ? Ñ? Ñ?Ñ?лбаÑ?Ñ? када Ñ?е Ð?Ñ?боÑ? конекÑ?ован</string>
- <string name="pref_use_persistent_notifications_title">СÑ?ално Ñ?кÑ?Ñ?Ñ?ене ноÑ?иÑ?икаÑ?иÑ?е</string>
- <string name="notification_using_bridges">Ð?оÑ?Ñ?ови омогÑ?Ñ?ени!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Ð?забеÑ?иÑ?е локална и Ñ?езиÑ?ка подеÑ?аваÑ?а за Ð?Ñ?боÑ?</string>
- <string name="wizard_locale_title">Ð?забеÑ?иÑ?е Ñ?език</string>
- <string name="wizard_locale_msg">Ð?оÑ?иÑ?Ñ?и подÑ?азÑ?меваÑ?Ñ?Ñ?и или пÑ?ебаÑ?и на Ñ?Ñ?енÑ?Ñ?ни Ñ?език</string>
- <string name="btn_save_settings">СаÑ?Ñ?ваÑ? подеÑ?аваÑ?а</string>
- <string name="menu_vpn">Ð?Ð?Ð?</string>
-</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
deleted file mode 100644
index a4712da..0000000
--- a/res/values-sv/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot är en gratis proxyapp som möjliggör andra appar att använda internet mer säkert. Orbot använder Tor för att kryptera din internettrafik och döljer den genom att den studsar genom ett antal datorer världen över. Tor är fri programvara och ett öppet nätverk som hjälper dig att skydda dig mot en form av nätverksövervakning som hotar personlig integritet och frihet, hemliga affärsaktiviteter och relationer, och skyddar mot statlig övervakning även kallad trafikanalys.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">start and stop Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot startar...</string>
- <string name="status_activated">Uppkopplad till Tor nätverket</string>
- <string name="status_disabled">Orbot är inaktiverad</string>
- <string name="status_shutting_down">TorService avslutas</string>
- <string name="tor_process_starting">Startar Tor klient...</string>
- <string name="tor_process_complete">färdig.</string>
- <string name="tor_process_waiting">väntar.</string>
- <string name="not_anonymous_yet">VARNING: Din trafik är inte anonym än! Vänligen konfigurera dina appar att använda HTTP proxy 127.0.0.1:8118 eller SOCKS4A/5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Hem</string>
- <string name="menu_browse">Bläddra</string>
- <string name="menu_settings">Inställningar</string>
- <string name="menu_log">Logg</string>
- <string name="menu_info">Hjälp</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stopp</string>
- <string name="menu_about">Om</string>
- <string name="menu_promo_apps">Skaffa appar...</string>
- <string name="main_layout_download">Ladda Ner</string>
- <string name="main_layout_upload">Ladda Upp</string>
- <string name="button_help">Hjälp</string>
- <string name="button_close">Stäng</string>
- <string name="button_about">Om</string>
- <string name="button_clear_log">Rensa logg</string>
- <string name="menu_verify">Kontrollera</string>
- <string name="menu_exit">Avsluta</string>
- <string name="menu_scan">Skanna BridgeQR</string>
- <string name="menu_share_bridge">Dela BridgeQR</string>
- <string name="press_to_start">- tryck länge för att starta -</string>
- <string name="pref_trans_proxy_group">Transparent proxy (kräver root)</string>
- <string name="pref_trans_proxy_title">Transparent proxy</string>
- <string name="pref_trans_proxy_summary">Automatisk torifiering av appar</string>
- <string name="pref_transparent_all_title">Tor:a Allt</string>
- <string name="pref_transparent_all_summary">Proxy trafik för alla appar genom Tor</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
- <string name="pref_transparent_port_fallback_summary">VARNING: Kringgår vanliga portar (80, 443, etc). *ANV�ND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar.</string>
- <string name="pref_transparent_port_title">Port-lista</string>
- <string name="pref_transparent_port_summary">Lista över portar att köra genom proxy. *ANV�ND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar</string>
- <string name="pref_transparent_port_dialog">Skriv in portar till proxy</string>
- <string name="pref_has_root">Begär root-åtkomst</string>
- <string name="pref_has_root_summary">Begär root-åtkomst för transparent proxy</string>
- <string name="status_install_success">Tor-filerna installerades utan problem!</string>
- <string name="status_install_fail">De körbara Tor-filerna kunde inte installeras. Kontrollera loggen och underrätta tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Applikationsfel</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Om Orbot</string>
- <string name="btn_next">Nästa</string>
- <string name="btn_back">Tillbaka</string>
- <string name="btn_finish">Slutför</string>
- <string name="btn_okay">Okej</string>
- <string name="btn_cancel">Avbryt</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbot-information</string>
- <string name="wizard_details_msg">Orbot är en mjukvara med öppen källkod som använder sig av Tor, LibEvent och Polipo. Den tillhandahåller en lokal HTTP-proxy (8118) och en SOCKS-proxy (9050) till Tor-nätverket. Orbot har också möjligheten att, på rootade enheter, skicka all trafik genom Tor.</string>
- <string name="wizard_permissions_root">Tillstånd givet</string>
- <string name="wizard_permissions_stock">Orbot rättigheter</string>
- <string name="wizard_premissions_msg_root">Utmärkt! Vi har upptäckt att du har root tillstånd aktiverat för Orbot. Vi kommer använda denna makt ansvarsfullt.</string>
- <string name="wizard_permissions_msg_stock">Det är inte nödvändigt, men Orbot kan bli ett kraftfullare verktyg om din enhet har root tillgång. Använd knappen nedan för att ge Orbot superkrafter!</string>
- <string name="wizard_permissions_no_root">Om du inte har root tillgång eller inte har en aning om vad vi pratar om, använd bara appar som är gjorda att fungera med Orbot.</string>
- <string name="wizard_permissions_consent">Jag förstår och vill fortsätta utan Superuser.</string>
- <string name="wizard_permission_enable_root">Ge Orbot root tillgång</string>
- <string name="wizard_configure">Konfigurera torifikation</string>
- <string name="wizard_configure_msg">Orbot ger dig möjligheten att skicka all applikationstrafik genom Tor ELLER att själv välja applikationer individuellt.</string>
- <string name="wizard_configure_all">Proxy alla appar genom Tor</string>
- <string name="wizard_configure_select_apps">Välj enskilda appar för Tor</string>
- <string name="wizard_tips_tricks">Orbot-anpassade appar</string>
- <string name="wizard_tips_msg">Apparna nedanför var utvecklade att fungera med Orbot. Klicka varje knapp för att installera nu, eller hitta dom senare på Google Play, på GuardianProject.info, eller via F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Säker chattklient för Android</string>
- <string name="wizard_tips_proxy">Proxy-inställningar - Lär dig hur du konfigurerar appar att fungera med Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Sökmotor App</string>
- <string name="wizard_tips_twitter">Ställ in Twitter proxy till värd \"localhost\" och port 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Skapa en story och ge den till Tor för säkerhet!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy-inställningar</string>
- <string name="wizard_proxy_help_msg">Om Android-appen du använder har stöd för en HTTP- eller SOCKS-proxy, så kan du konfigurera den at ansluta till Orbot och använda Tor.\n\n\nInställningen för värdnamn är 127.0.0.1 eller \"localhost\". För HTTP är portinställningen 8118. För SOCKS är porten 9050. Du bör använda SOCKS4A eller SOCKS5 om möjligt.\n\n\n\nDu kan lära dig mer om proxy på Android via FAQ på: http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Orbot är redo!</string>
- <string name="wizard_final_msg">Miljoner människor världen över använder sig av Tor av flera olika orsaker.\n\nJournalister och bloggare, människorättsförsvarare, brottsbekämpare, soldater, företag, innevånare i repressiva regimer, och bara vanliga innevånare... och nu är du redo också!</string>
- <string name="wizard_exit_at_first_screen_toast">Vänligen konfigurera Orbot innan du kan använda den!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Du har anslutit till Tor-nätverket - men detta betyder INTE att din enhet är säker. Du kan använda knappen \'Webbläsare\' för att testa din anslutning. \n\nBesök oss på https://guardianproject.info/apps/orbot eller skicka e-post till help@xxxxxxxxxxxxxxxxxxxx för mer information.</string>
- <string name="tor_check">Det här kommer att öppna din webbläsare mot https://check.torproject.org för att se om Orbot är rätt konfigurerad och du är uppkopplad mot Tor.</string>
- <string name="pref_hs_group">Gömd Service Hosting</string>
- <string name="pref_general_group">Allmänt</string>
- <string name="pref_start_boot_title">Starta Orbot vid Uppstart</string>
- <string name="pref_start_boot_summary">Starta Orbot automatiskt och anslut till Tor när din Android enhet startar upp</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot tar Tor till Android!\n\nTor hjälper dig att skydda dig från innehållsfiltrering, trafikanalys och nätverksövervakning som hotar integritet, hemlig information och personliga relationer.\n\nDen här guiden hjälper dig att konfigurera Orbot och Tor på din enhet.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Varning</string>
- <string name="wizard_warning_msg">Bara genom att installera Orbot anonymiseras inte din mobiltrafik.\n\nDu måste ställa in Orbot, din enhet och andra appar för att använda Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Rättigheter</string>
- <string name="wizard_permissions_root_msg1">Du kan alternativt ge Orbot \'Superuser\' tillgång för att aktivera avancerade inställningar, som till exempel Transparent Proxy.</string>
- <string name="wizard_permissions_root_msg2">Om du inte vill göra detta, se till att bara använda appar som anpassats till Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Din enhet verkar inte vara rootad eller ge root eller \'Superuser\'-åtkomst.\n\nVänligen försök använda \'Appar\'-läget i huvudmenyn istället.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Anpassade Appar</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Säkert chatt app med Off-the-Record kryptering</string>
- <string name="wizard_tips_orweb">Orfox: Integritetsförbättrad webbläsare som går genom Tor</string>
- <string name="wizard_tips_play">Hitta alla Guardian Project appar på Google Play</string>
- <string name="wizard_tips_fdroid">Hitta alla Guardian Project-appar i F-Droid</string>
- <string name="wizard_tips_fdroid_org">Hitta alla Guardian Project-appar på https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparent Proxy</string>
- <string name="wizard_transproxy_msg">Detta tillåter dina appar att automatiskt köra genom Tor nätverket utan någon konfiguration.</string>
- <string name="wizard_transproxy_hint">(Markera denna om du inte har någon aning om vad vi pratar om)</string>
- <string name="wizard_transproxy_none">Ingen</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Aktivera Tor Transparent Proxy för Wifi och USB Thetered Enheter (omstart krävs)</string>
- <string name="button_grant_superuser">Begär Superuser Tillgång</string>
- <string name="pref_select_apps">Välj Appar</string>
- <string name="pref_select_apps_summary">Välj Appar att Leda Genom Tor</string>
- <string name="pref_node_configuration">Nod Konfiguration</string>
- <string name="pref_node_configuration_summary">Det här är avancerade inställningar som kan minska din anonymitet</string>
- <string name="pref_entrance_node">Ingångsnoder</string>
- <string name="pref_entrance_node_summary">Fingeravtryck, nicks, länder, och adresser för första hoppet</string>
- <string name="pref_entrance_node_dialog">Skriv in Ingångs Noder</string>
- <string name="pref_allow_background_starts_title">Tillåt start i bakgrunden</string>
- <string name="pref_allow_background_starts_summary">Låt alla appar säga åt Orbot att starta Tor och relaterade tjänster</string>
- <string name="button_proxy_all">Allt genom proxy</string>
- <string name="button_proxy_none">Inget genom proxy</string>
- <string name="button_invert_selection">Invertera val</string>
- <string name="pref_proxy_title">Utgående nätverksproxy (Valfri)</string>
- <string name="pref_proxy_type_title">Proxy-typ</string>
- <string name="pref_proxy_type_summary">Protokoll att använda för proxyserver: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Skriv in Proxy Typ</string>
- <string name="pref_proxy_host_title">Proxy-värd</string>
- <string name="pref_proxy_host_summary">Proxyserverns värdnamn</string>
- <string name="pref_proxy_host_dialog">Skriv in Proxy Värd</string>
- <string name="pref_proxy_port_title">Utgående Proxy Port</string>
- <string name="pref_proxy_port_summary">Proxyserverns port</string>
- <string name="pref_proxy_port_dialog">Skriv in Proxy port</string>
- <string name="pref_proxy_username_title">Utgående proxy användarnamn</string>
- <string name="pref_proxy_username_summary">Proxyanvändarnamn (Valfri)</string>
- <string name="pref_proxy_username_dialog">Ange proxyanvändarnamn</string>
- <string name="pref_proxy_password_title">Utgående proxy lösenord</string>
- <string name="pref_proxy_password_summary">Proxylösenord (Valfri)</string>
- <string name="pref_proxy_password_dialog">Ange proxylösenord</string>
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Ställer in full transparent proxyfiering...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ställer in app-baserad transparent proxyfiering...</string>
- <string name="transparent_proxying_enabled">Transparent proxy AKTIVERAD</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy aktiverad för Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">VARNING: kunde ej starta transparent proxy!</string>
- <string name="transproxy_rules_cleared">TransProxy regler rensade</string>
- <string name="couldn_t_start_tor_process_">Kunde inte starta Tor-process:</string>
- <string name="privoxy_is_running_on_port_">Polipo körs på port:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ställer in port-baserad transparent proxyfiering...</string>
- <string name="bridge_error">Bro Error</string>
- <string name="bridge_requires_ip">För att använda bro funktionen måste du skriva in minst en bro IP adress.</string>
- <string name="send_email_for_bridges">Skicka ett email till bridges@xxxxxxxxxxxxxx med linjen \"get bridges\" ensamt som meddelande från ett gmail konto.</string>
- <string name="error">Fel</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Din NåbaraAdresser inställning orsakade ett undantag!</string>
- <string name="your_relay_settings_caused_an_exception_">Din relä inställning orsakade ett undantag!</string>
- <string name="exit_nodes">Utgångsnoder</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeravtryck, nicks, länder, och adresser för sista hoppet</string>
- <string name="enter_exit_nodes">Skriv in Exit Noder</string>
- <string name="exclude_nodes">Exkludera Noder</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingeravtryck, nicks, länder och adresser att exkludera</string>
- <string name="enter_exclude_nodes">Skriv in Exkluderade Noder</string>
- <string name="strict_nodes">Strikta Noder</string>
- <string name="use_only_these_specified_nodes">Använd *enbart* dessa specificerade noder</string>
- <string name="bridges">Broar</string>
- <string name="use_bridges">Använd Broar</string>
- <string name="bridges_obfuscated">Förvillande Broar</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktivera alternativa ingångsnoder till Tor nätverket</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktivera om konfigurerade broar är förvillande broar</string>
- <string name="ip_address_and_port_of_bridges">IP adress och port för broar</string>
- <string name="enter_bridge_addresses">Skriv in Bro Adresser</string>
- <string name="relays">Reläer</string>
- <string name="relaying">�verföring</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Aktivera din enhet till att vara ett icke-utgångsrelä</string>
- <string name="relay_port">Relä Port</string>
- <string name="listening_port_for_your_tor_relay">Lyssningsport för din Tor relä</string>
- <string name="enter_or_port">Allmänt</string>
- <string name="relay_nickname">Relä namn</string>
- <string name="the_nickname_for_your_tor_relay">Namnet för din Tor relä</string>
- <string name="enter_a_custom_relay_nickname">Skriv in ett anpassat relä namn</string>
- <string name="reachable_addresses">NÃ¥bara Adresser</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kör som klient bakom en brandvägg med restriktiva policys</string>
- <string name="reachable_ports">NÃ¥bara portar</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Portar nåbara bakom en restriktiv brandvägg</string>
- <string name="enter_ports">Skriv in portar</string>
- <string name="enable_hidden_services">Gömd Tjänstehosting</string>
- <string name="run_servers_accessible_via_the_tor_network">Tillåt server på enheten att vara tillgänglig via Tor nätverket</string>
- <string name="enter_localhost_ports_for_hidden_services">Skriv in localhost portar för gömda tjänster</string>
- <string name="hidden_service_ports">Gömda Tjänsteportar</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">det adresserade namnet för din gömda tjänst (genereras automatiskt)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Aktivera debug loggen för output (måste använda adb eller aLogCat för att se)</string>
- <string name="project_home">Projektets hemsidor:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor-licensen</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Tredjepartsprogramvara:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">En app vill öppna gömd tjänsteport %S till Tor nätverket. Detta är säkert om du litar på appen.</string>
- <string name="found_existing_tor_process">hittade existerande Tor process...</string>
- <string name="something_bad_happened">Något dåligt hände. Kolla loggen.</string>
- <string name="hidden_service_on">gömd tjänst på:</string>
- <string name="unable_to_read_hidden_service_name">kan inte läsa gömda tjänstens namn</string>
- <string name="unable_to_start_tor">Kan inte starta Tor:</string>
- <string name="unable_to_reset_tor">Starta om din enhet, kunde inte återställa Tor!</string>
- <string name="pref_use_sys_iptables_title">Använd standard Iptables</string>
- <string name="pref_use_sys_iptables_summary">Använd den inbyggda iptables binären istället för den som kommer med Orbot</string>
- <string name="error_installing_binares">Tor binärerna kunde inte installeras eller uppgraderas.</string>
- <string name="pref_use_persistent_notifications">Behåll alltid ikonen i verktygsfältet när Orbot är ansluten</string>
- <string name="pref_use_persistent_notifications_title">Alltid-PÃ¥ Notifikationer</string>
- <string name="pref_use_expanded_notifications">Visa utökad notis med Tors utgångsland och IP</string>
- <string name="pref_use_expanded_notifications_title">Utökade notiser</string>
- <string name="notification_using_bridges">Broar aktiverade!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Språk</string>
- <string name="set_locale_summary">Välj plats och språk för Orbot</string>
- <string name="wizard_locale_title">Välj språk</string>
- <string name="wizard_locale_msg">Lämna standard eller byt nuvarande språk</string>
- <string name="powered_by">drivs av Tor</string>
- <string name="btn_save_settings">Spara Inställningar</string>
- <string name="no_internet_connection_tor">Ingen internetanslutning; Tor är i standby-läge...</string>
- <string name="bandwidth_">Bandbredd:</string>
- <string name="down">nere</string>
- <string name="up">uppe</string>
- <string name="pref_disable_network_title">Ingen auto-sömn för nätverket</string>
- <string name="pref_disable_network_summary">Låt Tor sova när inget internet finns tillgängligt</string>
- <string name="newnym">Du har bytt till en ny Tor identitet!</string>
- <string name="menu_verify_browser">Webbläsare</string>
- <string name="menu_use_chatsecure">Använd ChatSecure</string>
- <string name="permission_manage_tor_label">Hantera Tor</string>
- <string name="permission_manage_tor_description">LÃ¥t denna app kontrollera Tor-servicen</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Det verkar inte som att du har Orfox installerad. Vill du ha hjälp med det, eller ska vi bara öppna webbläsaren?</string>
- <string name="install_apps_">Installera appar?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ingen nätverksanslutning. Försätter Tor i dvala...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Nätverksanslutningen fungerar. Väcker Tor...</string>
- <string name="updating_settings_in_tor_service">uppdaterar inställningar i Tor-tjänsten</string>
- <string name="pref_socks_title">Tor-SOCKS</string>
- <string name="pref_socks_summary">Port som Tor erbjuder sin SOCKS-proxy på (standard: 9050 eller 0 för att inaktivera)</string>
- <string name="pref_socks_dialog">SOCKS-port-inställningar</string>
- <string name="pref_transport_title">Tor TransProxy-port</string>
- <string name="pref_transport_summary">Port som Tor erbjuder sin transparenta proxy på (standard: 9040 eller 0 för att inaktivera)</string>
- <string name="pref_transport_dialog">TransProxy-port-inställningar</string>
- <string name="pref_dnsport_title">Tor DNS-port</string>
- <string name="pref_dnsport_summary">Port som Tor erbjuder sin DNS på (standard: 5400 eller 0 för att inaktivera)</string>
- <string name="pref_dnsport_dialog">DNS-port-inställningar</string>
- <string name="pref_torrc_title">Torrc anpassad konfiguration</string>
- <string name="pref_torrc_summary">ENDAST EXPERTER: ange torrc konfiguration direkt</string>
- <string name="pref_torrc_dialog">Anpassad Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
- <string name="your_tor_public_ips_">Ditt publika IP via Tor:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vänligen inaktivera den här appen i Android->Inställningar->Appar om du har problem med Orbot:</string>
- <string name="app_conflict">Appkonflikt</string>
- <string name="pref_transproxy_refresh_title">Transproxy auto-uppdatering</string>
- <string name="pref_transproxy_refresh_summary">Sätt Transproxy regler igen när nätverksstatus ändras</string>
- <string name="pref_transproxy_flush_title">Transproxy TVINGA BORTTAGNING</string>
- <string name="pref_transproxy_flush_summary">Klicka här för att rensa alla transproxy nätverksregler NU</string>
- <string name="transparent_proxy_rules_flushed_">Regler för transparent proxy rensade!</string>
- <string name="you_do_not_have_root_access_enabled">Du har inte root-Ã¥tkomst aktiverad</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Du kan behöva stänga av och starta Orbot för att ändringar i inställningar ska slå igenom.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kb/s</string>
- <string name="mbps">mb/s</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bryggor uppdaterade</string>
- <string name="restart_orbot_to_use_this_bridge_">Vänligen starta om Orbot för att aktivera ändringarna</string>
- <string name="menu_qr">QR-koder</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Om ditt mobilnätverk aktivt blockerar Tor så kan du använda en brygga för att komma åt nätverket. V�LJ en typ av brygga ovan för att aktivera bryggor.</string>
- <string name="bridge_mode">Bryggläge</string>
- <string name="get_bridges_email">E-post</string>
- <string name="get_bridges_web">Webb</string>
- <string name="activate">Aktivera</string>
- <string name="apps_mode">Appars VPN-läge</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Du kan få alla appar på din enhet att köra via Tor-nätverket genom att använda VPN-funktionen i Android.\n\n*VARNING* Det här är en ny, experimentell funktion och kanske i vissa fall inte startas automatiskt, eller avslutas. Det bör INTE användas för anonymitet, tan BARA för att ta sig genom brandväggar och filter.</string>
- <string name="send_email">Skicka e-post</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Du kan få en brygg-adress via e-post, via webben eller genom att skanna en QR-kod för en brygga. Välj \'E-post\' eller \'Webb\' nedan för att begära en brygg-adress.\n\nNär du väl har en adress, kopiera & klistra in den i inställningen för \"Bryggor\" i Orbot och starta om.</string>
- <string name="install_orweb">Installera Orfox</string>
- <string name="standard_browser">Standard-webbläsare</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTERA: Endast vanliga Tor-bryggor fungerar på Intel X86/ATOM-enheter</string>
- <string name="vpn_default_world">Världen</string>
-</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
deleted file mode 100644
index 58a7c65..0000000
--- a/res/values-ta/strings.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">�ர�பா�� </string>
- <string name="app_description">�ர�பா��, �ன�ன�ம பாத��ாப�பான ம�ற�யில� �ண�ய பயன�ப��த�த மற�ற பயன�பா���ள� பலப�ப��த�த��ிறார� �ன�ற� �ர� �லவ� ப�ரா��ஸி பயன�பா�� ���ம�. �ர�பா�� ����ள� �ண�ய ப�ா����வரத�த� ��றியா��� த�ார� பயன�ப��த�த��ிறத� மற�ற�ம� �தன� பின�னர� �ல�ம� ம�ழ�வத�ம� �ணினி�ள� �ர� த�ா�ர� ம�லம� �திர����ிறத� �த� மற�த�தவர�. த�ார� �லவ� ம�ன�ப�ார�ள� மற�ற�ம� ந����ள� ப�ா����வரத�த� ப��ப�பாய�வ�
�ன�ற தனிப�ப��� ��தந�திரம� மற�ற�ம� தனிய�ரிம�, ர��ிய வணி� ந�வ�ி�����ள� மற�ற�ம� �றவ��ள�, மற�ற�ம� மாநில பாத��ாப�ப� �����ற�த�த�ம� ந���வ�ார��� �ண��ாணிப�ப� வ�ிவ �திரா� பாத��ா��� �தவ��ிறத� �ன�ற� �ர� திறந�த ந���வ�ார��� ���ம�.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">த�ர� த�வ��� மற�ற�ம� நிற�த�த</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">�ர�பா�� த�வ�����ிறத�...</string>
- <string name="status_activated">த�ார� ந���வ�ார��� �ண����ப�ப���</string>
- <string name="status_disabled">�ர�பா�� நிற�த�தப�ப���த�</string>
- <string name="tor_process_starting">த�ர� த�வ���ப�ப���ிறத�...</string>
- <string name="tor_process_complete">ம��ிந�தத�.</string>
- <string name="tor_process_waiting">�ாத�திர����ிறத�</string>
- <string name="not_anonymous_yet">����ரி����: ����ள� ப�ா����வரத�த� �ன�ன�ம� �நாமத�ய �ல�ல! HTTP பதிலாள� 127.0.0.1:8118 �ல�லத� SOCKS4A �ல�லத� SOCKS5 ப�ரா��ஸி 127.0.0.1:9050 பயன�ப��த�த ����ள� பயன�பா���ள� ����ம���� ��ாள�ளவ�ம�</string>
- <string name="menu_home">ஹ�ம�</string>
- <string name="menu_browse">�லவி��</string>
- <string name="menu_settings">�ம�ப�ப��ள�</string>
- <string name="menu_log">பதிவ��ள�</string>
- <string name="menu_info">�தவி</string>
- <string name="menu_start">த�வ����</string>
- <string name="menu_stop">நிற�த�த�</string>
- <string name="menu_about">�ர�பா�� பற�றி</string>
- <string name="main_layout_download">பதிவிற����</string>
- <string name="main_layout_upload">பதிவ�ற�ற�</string>
- <string name="button_help">�தவி</string>
- <string name="button_close">ம���</string>
- <string name="button_about">�ர�பா�� பற�றி </string>
- <string name="button_clear_log">பதிவ��ள� ந�����</string>
- <string name="menu_verify">�ரி பார�த�தல�</string>
- <string name="menu_exit">வ�ளிய�ற�</string>
- <string name="menu_scan">ஸ���ன� BridgeQR</string>
- <string name="menu_share_bridge">BridgeQR ப�ிர�ந�தி��</string>
- <string name="press_to_start">- த�ா���� த��ர�ந�த� �ழ�த�த�� -</string>
- <string name="pref_transparent_port_fallback_summary">����ரி����: ப�ாத�வான த�ற��ள� (80, 443, ப�ான�றவ�) circumvents. * பயன�ப��த�த ம����ம� * \'�ன�த�த�\' �ல�லத� \'�ப�\' ம�ற�யில� வ�ல� �ல�ல� �ன�றால�.</string>
- <string name="wizard_title">�ர�பா�� </string>
- <string name="wizard_btn_tell_me_more">�ர�பா�� பற�றி</string>
- <string name="btn_next">���த�த�</string>
- <string name="btn_back">பின� ��ல�</string>
- <string name="btn_finish">ம��ித�தி��</string>
- <string name="btn_okay">�ரி</string>
- <string name="btn_cancel">ரத�த� ��ய�</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">�ர�பா�� பற�றிய த�வல�</string>
- <string name="wizard_details_msg">Orbot த�ார�, LibEvent மற�ற�ம� Polipo ��ாண���ள�ளத� �ன�ற� �ர� திறந�த ம�ல பயன�பா�� ���ம�. �த� �ர� local HTTP பதிலாள� (8118) மற�ற�ம� த�ார� ந���வ�ார��� �ர� SOCKS ப�ரா��ஸி (9050) வழ�����ிறத�. Orbot ம�ல�ம� த�ார� ம�லம� �ன�த�த� �ண�ய ப�ா����வரத�த� �ன�ப�ப�ம� திறன�, ROOTED �ாதனத�தில� ��ாண��ிர����ிறத�.</string>
- <string name="wizard_permissions_root">�ன�மதி வழ���ப�ப���த�</string>
- <string name="wizard_tips_duckgo">��� ��� �� த���ப�ாறி ��யலி</string>
- <string name="wizard_proxy_help_info">பதிலாள� �ம�ப�ப��ள�</string>
- <string name="wizard_final">�ர�பா�� தயாரா� �ள�ளத�!</string>
- <string name="wizard_exit_at_first_screen_toast">தயவ� ��ய�த�, �ர�பா�� ���ம�த�த பின� பயன�ப��த�தவ�ம�</string>
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">����ரி����</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">�ன�மதி�ள�</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">�ர�பா���ன� ��யல�ப��ம� ��யலி�ள�</string>
- <!--Transparent Proxy screen-->
- <string name="pref_select_apps">��யலி�ள� த�ர�ந�த���</string>
- <string name="pref_proxy_password_summary">பதிலாள� ��வ�����ால� (����ாயமற�ற)</string>
- <string name="pref_proxy_password_dialog">பதிலாள� ��வ�����ால�ல� �ள�ளி�வ�ம�</string>
- <string name="status">நில�</string>
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
deleted file mode 100644
index efe4d5d..0000000
--- a/res/values-th/strings.xml
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">�ริ�ม�ละหยุ� Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_activated">à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?ัà¸?à¹?à¸?รืà¸à¸?à¹?าย Tor</string>
- <string name="tor_process_complete">�สร��</string>
- <string name="tor_process_waiting">à¸?ำลัà¸?รà¸</string>
- <string name="not_anonymous_yet">à¸?ำà¹?à¸?ืà¸à¸?: à¸?à¹?à¸à¸¡à¸¹à¸¥à¸?ราà¸?รà¸?à¸à¸?à¸?ุà¸?ยัà¸?à¹?มà¹?à¹?à¸?à¹?à¸?à¸?ิรà¸?าม! à¸?รุà¸?าà¸?ัà¹?à¸?à¸?à¹?าà¹?à¸?รà¹?à¸?รมà¸?à¸à¸?à¸?ุà¸?à¹?หà¹?à¹?à¸?à¹? HTTP à¸?รà¹?à¸à¸?à¸?ีà¸?ีà¹? 127.0.0.1:8118 หรืà¸à¹?à¸?à¹? SOCKS4A หรืภSOCKS5 à¸?รà¹?à¸à¸?à¸?ีà¸?ีà¹? 127.0.0.1:9050</string>
- <string name="menu_home">ห��าหลั�</string>
- <string name="menu_browse">à¹?ลืà¸à¸?</string>
- <string name="menu_settings">�ั����า</string>
- <string name="menu_log">�ูม</string>
- <string name="menu_info">à¸?à¹?วยà¹?หลืà¸</string>
- <string name="menu_start">�ริ�ม</string>
- <string name="menu_stop">หยุ�</string>
- <string name="menu_about">��ี�ยว�ั�</string>
- <string name="button_help">à¸?à¹?วยà¹?หลืà¸</string>
- <string name="button_close">�ิ�</string>
- <string name="button_about">��ี�ยว�ั�</string>
- <string name="button_clear_log">ล�า��ูม</string>
- <string name="menu_verify">à¸?รวà¸?สà¸à¸?</string>
- <string name="menu_exit">à¸à¸à¸?</string>
- <string name="press_to_start">- à¹?à¸?ะà¸?à¹?าà¸?à¹?à¸?ืà¹?à¸à¹?ริà¹?ม -</string>
- <string name="pref_trans_proxy_group">à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸? (à¸?à¹?à¸à¸?à¸?ารสิà¸?à¸?ิà¹? Root)</string>
- <string name="pref_trans_proxy_title">à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?</string>
- <string name="pref_trans_proxy_summary">à¹?หà¹?à¹?à¸?รà¹?à¸?รมà¹?à¸?à¹?à¸?าà¸? Tor à¹?à¸?ยà¸à¸±à¸?à¹?à¸?มัà¸?ิ</string>
- <string name="pref_transparent_all_title">à¹?à¸?à¹? Tor à¸?ัà¸?à¸?ุà¸?à¸à¸¢à¹?าà¸?</string>
- <string name="pref_transparent_all_summary">à¹?หà¹?à¸?ารà¸?ราà¸?รà¸?à¸à¸?à¸?ุà¸?à¹?à¸?รà¹?à¸?รมà¸?à¹?าà¸?à¸?รà¹?à¸à¸?à¸?ีà¸?à¸à¸? Tor</string>
- <string name="pref_transparent_port_fallback_summary">à¸?ำà¹?à¸?ืà¸à¸?: หลีà¸?à¹?ลีà¹?ยà¸?à¸?à¸à¸£à¹?à¸?à¸?ัà¹?วà¹?à¸? (à¹?à¸?à¹?à¸? 80, 443) *à¹?à¸?à¹?à¸?à¹?à¸?à¹?à¸à¹?มืà¹?à¸* à¹?หมà¸? \'à¸?ัà¹?à¸?หมà¸?\' หรืภ\'à¹?à¸?รà¹?à¸?รม\' à¹?à¸?à¹?à¸?าà¸?à¹?มà¹?à¹?à¸?à¹?</string>
- <string name="pref_transparent_port_title">รายà¸?ารà¸?à¸à¸£à¹?à¸?</string>
- <string name="pref_transparent_port_summary">รายà¸?ารà¸?à¸à¸£à¹?à¸?à¸?ีà¹?à¸?à¹?าà¸?à¸?รà¹?à¸à¸?à¸?ี *à¹?à¸?à¹?à¸?à¹?à¸?à¹?à¸à¹?มืà¹?à¸* à¹?หลà¸? \'à¸?ัà¹?à¸?หมà¸?\' หรืภ\'à¹?à¸?รà¹?à¸?รม\' à¹?à¸?à¹?à¸?าà¸?à¹?มà¹?à¹?à¸?à¹?</string>
- <string name="pref_transparent_port_dialog">ระà¸?ุà¸?à¸à¸£à¹?à¸?à¸?ีà¹?à¸?ะà¹?หà¹?à¸?à¹?าà¸?à¸?รà¹?à¸à¸?à¸?ี</string>
- <string name="pref_has_root">à¸?à¹?à¸à¸?à¸?ารสิà¸?à¸?ิà¹? root</string>
- <string name="pref_has_root_summary">à¸?à¹?à¸à¸?à¸?ารสิà¸?à¸?ิà¹? root à¹?à¸?ืà¹?à¸à¹?à¸?à¹?à¸?าà¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?</string>
- <string name="status_install_success">à¸?ิà¸?à¸?ัà¹?à¸?à¹?à¸?à¸?ารีà¸?à¸à¸? Tor สำà¹?รà¹?à¸?à¹?ลà¹?ว</string>
- <string name="status_install_fail">à¹?มà¹?สามารà¸?à¸?ิà¸?à¸?ัà¹?à¸?à¹?à¸?à¸?ารีà¸?à¸à¸? Tor à¹?à¸?à¹? à¹?à¸?รà¸?à¸?รวà¸?สà¸à¸?à¸?ูมà¹?ละà¹?à¸?à¹?à¸?à¸?ัà¸?หาà¸?ีà¹? tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">��ร��รม�ำ�า��ิ��ลา�</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">��ี�ยว�ั� Orbot</string>
- <string name="btn_next">à¸?à¹?à¸à¹?à¸?</string>
- <string name="btn_back">à¸?à¸à¸¢à¸«à¸¥à¸±à¸?</string>
- <string name="btn_finish">�สร��</string>
- <string name="btn_okay">��ล�</string>
- <string name="btn_cancel">ย��ลิ�</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">รายละà¹?à¸à¸µà¸¢à¸?à¹?à¸?ีà¹?ยวà¸?ัà¸? Orbot</string>
- <string name="wizard_permissions_root">�ห�สิ��ิ��ล�ว</string>
- <string name="wizard_permissions_stock">สิà¸?à¸?ิà¹?à¸?à¸à¸? Orbot</string>
- <string name="wizard_premissions_msg_root">ยà¸à¸?à¹?ยีà¹?ยม! à¹?ราà¸?à¸?วà¹?าà¸?ุà¸?à¹?หà¹?สิà¸?à¸?ิà¹? root à¸?ัà¸? Orbot à¹?ราà¸?ะà¹?à¸?à¹?สิà¸?à¸?ิà¹?à¸?ีà¹?à¸à¸¢à¹?าà¸?à¸?าà¸?à¸?ลาà¸?</string>
- <string name="wizard_permissions_msg_stock">à¸?ึà¸?à¸?ะà¹?มà¹?à¹?à¸?à¹?à¹?รืà¹?à¸à¸?à¸?ำà¹?à¸?à¹?à¸? à¹?à¸?à¹?à¸?à¹?าหาà¸? Orbot à¸?ะà¸?ำà¸?าà¸?à¹?à¸?à¹?à¸à¸¢à¹?าà¸?มีà¸?ระสิà¸?à¸?ิภาà¸?มาà¸?à¸?ึà¹?à¸?à¸?à¹?าà¹?à¸?à¹?รัà¸?สิà¸?à¸?ิà¹? root à¹?à¸?à¹?à¸?ุà¹?มà¸?à¹?าà¸?ลà¹?าà¸?à¹?à¸?ืà¹?à¸à¸¡à¸à¸?à¸?ลัà¸?à¸?ีà¹?à¹?หà¹? Orbot!</string>
- <string name="wizard_permissions_no_root">à¸?à¹?าà¸?ุà¸?à¹?มà¹?มีสิà¸?à¸?ิà¹? root หรืà¸à¹?มà¹?à¹?à¸?à¹?าà¹?à¸?วà¹?าà¹?ราà¸?ำลัà¸?à¸?ูà¸?à¸?ึà¸?à¸à¸°à¹?รà¸à¸¢à¸¹à¹? à¹?หà¹?à¹?à¸?à¹?à¹?à¸?à¸?าะà¹?à¸?รà¹?à¸?รมà¸?ีà¹?สรà¹?าà¸?มาà¹?à¸?ืà¹?à¸à¹?à¸?à¹?à¸?ัà¸? Orbot à¹?à¸?à¹?าà¸?ัà¹?à¸?</string>
- <string name="wizard_permissions_consent">à¸?ัà¸?à¹?à¸?à¹?าà¹?à¸?à¹?ละà¸?à¹?à¸à¸?à¸?ารà¸?ำà¸?à¹?à¸à¹?à¸?ยà¹?มà¹?à¹?à¸?à¹?สิà¸?à¸?ิà¹? Superuser</string>
- <string name="wizard_permission_enable_root">�ห�สิ��ิ� root ��� Orbot</string>
- <string name="wizard_configure">�ั����า�าร����า���า� Tor</string>
- <string name="wizard_configure_msg">Orbot มีà¸?ัวà¹?ลืà¸à¸?à¹?หà¹?à¸?ุà¸?สà¹?à¸?à¸?à¹?à¸à¸¡à¸¹à¸¥à¸?ารà¸?ราà¸?รà¸?à¸à¸?à¸?ุà¸?à¹?à¸?รà¹?à¸?รมà¸?à¹?าà¸? Tor หรืà¸à¹?ลืà¸à¸?à¹?à¸?à¹?à¸?าà¸?à¹?à¸?à¸?าะà¹?à¸?รà¹?à¸?รมà¸?à¹?à¹?à¸?à¹?</string>
- <string name="wizard_configure_all">à¹?หà¹?à¸?ุà¸?à¹?à¸?รà¹?à¸?รมà¸?à¹?าà¸?à¸?รà¹?à¸à¸?à¸?ีà¸?à¸à¸? Tor</string>
- <string name="wizard_configure_select_apps">à¹?ลืà¸à¸?à¹?à¸?รà¹?à¸?รมà¸?ีà¹?à¸?ะà¹?หà¹?à¹?à¸?à¹? Tor</string>
- <string name="wizard_tips_tricks">��ร��รม�ี��������ั� Orbot</string>
- <string name="wizard_tips_proxy">à¸?ารà¸?ัà¹?à¸?à¸?à¹?าà¸?รà¹?à¸à¸?à¸?ี - à¹?รียà¸?รูà¹?à¸?ารà¸?ัà¹?à¸?à¸?à¹?าà¹?à¸?รà¹?à¸?รมà¹?หà¹?à¸?ำà¸?าà¸?à¸?ัà¸? Orbot à¹?à¸?à¹?</string>
- <string name="wizard_proxy_help_info">à¸?ัà¹?à¸?à¸?à¹?าà¸?รà¹?à¸à¸?à¸?ี</string>
- <string name="wizard_final">Orbot à¸?รà¹?à¸à¸¡à¹?à¸?à¹?à¸?าà¸?à¹?ลà¹?ว!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">à¸?ะà¹?à¸?à¹?à¹?วà¹?à¸?à¹?à¸?ราวà¹?à¹?à¸?à¸à¸£à¹?à¸?à¸à¸?à¸?ุà¸?à¹?à¸?ิà¸?หà¸?à¹?า https://check.torproject.org à¹?à¸?ืà¹?à¸à¸?รวà¸?สà¸à¸?วà¹?าà¸?ารà¸?ัà¹?à¸?à¸?à¹?าà¸?à¸à¸? Orbot à¸?ูà¸?à¸?à¹?à¸à¸?หรืà¸à¹?มà¹? à¹?ละà¸?ุà¸?à¹?à¸?à¹?à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?ัà¸? Tor หรืà¸à¹?มà¹?</string>
- <string name="pref_general_group">�ั�ว��</string>
- <string name="pref_start_boot_title">à¹?ริà¹?ม Orbot à¹?มืà¹?à¸à¹?à¸?ิà¸?ระà¸?à¸?</string>
- <string name="pref_start_boot_summary">à¹?ริà¹?ม Orbot à¹?à¸?ยà¸à¸±à¸?à¹?à¸?มัà¸?ิà¹?ละà¹?หà¹?à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?ัà¸? Tor à¹?มืà¹?à¸à¸à¸¸à¸?à¸?รà¸?à¹?à¹?à¸à¸?à¸?รà¸à¸¢à¸?à¹?à¸?à¸à¸?à¸?ุà¸?à¹?ริà¹?มà¸?ำà¸?าà¸?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">à¸?ำà¹?à¸?ืà¸à¸?</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">สิ��ิ�</string>
- <string name="wizard_permissions_root_msg1">à¸?ุà¸?สามารà¸?à¹?ลืà¸à¸?à¹?หà¹?สิà¸?à¸?ิà¹? Superuser à¹?à¸?à¹? Orbot à¹?à¸?ืà¹?à¸à¹?à¸?ิà¸?à¹?à¸?à¹?à¸?าà¸?à¸?ุà¸?สมà¸?ัà¸?ิà¸?ัà¹?à¸?สูà¸? à¹?à¸?à¹?à¸? à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¹?à¸?à¹?</string>
- <string name="wizard_permissions_root_msg2">à¸?à¹?าà¸?ุà¸?à¹?มà¹?à¸?à¹?à¸à¸?à¸?าร à¹?à¸?รà¸?à¹?à¸?à¹?à¹?à¸?วà¹?าà¸?ุà¸?à¹?à¸?à¹?à¹?à¸?รà¹?à¸?รมà¸?ีà¹?สรà¹?าà¸?มาà¹?à¸?ืà¹?à¸à¹?à¸?à¹?à¸?ัà¸? Orbot</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">��ร��รม�ี��������ั� Orbot</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?</string>
- <string name="wizard_transproxy_msg">à¸?ะà¸à¸?ุà¸?าà¸?à¹?หà¹?à¹?à¸?รà¹?à¸?รมà¸?à¸à¸?à¸?ุà¸?à¸?ำà¸?าà¸?à¸?à¹?าà¸?à¹?à¸?รืà¸à¸?à¹?าย Tor à¸à¸±à¸?à¹?à¸?มัà¸?ิà¹?à¸?ยà¹?มà¹?à¸?à¹?à¸à¸?à¸?ัà¹?à¸?à¸?à¹?าà¹?à¸?à¹?</string>
- <string name="wizard_transproxy_hint">(à¸?ิà¹?à¸?à¸?ัวà¹?ลืà¸à¸?à¸?ีà¹?à¸?à¹?าà¸?ุà¸?à¹?มà¹?à¹?à¸?à¹?าà¹?à¸?à¹?รืà¹?à¸à¸?à¸?ีà¹?à¹?ราà¸?ำลัà¸?à¸à¸?ิà¸?าย)</string>
- <string name="wizard_transproxy_none">�ม�มี</string>
- <string name="pref_transparent_tethering_title">à¸?ารà¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?à¹?วà¸?à¸?à¹?าà¸? Tor</string>
- <string name="pref_transparent_tethering_summary">à¹?à¸?ิà¸?à¹?à¸?à¹?à¸?าà¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¸?à¸à¸? Tor à¹?หà¹?à¸à¸¸à¸?à¸?รà¸?à¹?à¸à¸·à¹?à¸?à¸?ีà¹?à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?าà¸? Wifi à¹?ละ USB (à¸?à¹?à¸à¸?à¹?ริà¹?มà¹?หมà¹?)</string>
- <string name="button_grant_superuser">รà¹?à¸à¸?à¸?à¸à¸?ารà¹?à¸?à¹?าà¸?ึà¸?สิà¸?à¸?ิà¹? Superuser</string>
- <string name="pref_select_apps">à¹?ลืà¸à¸?à¹?à¸?รà¹?à¸?รม</string>
- <string name="pref_select_apps_summary">à¹?ลืà¸à¸?à¹?à¸?รà¹?à¸?รมà¸?ีà¹?à¸?ะà¹?หà¹?à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?à¹?าà¸? Tor</string>
- <string name="pref_node_configuration">�าร�ั����า�ห��</string>
- <string name="pref_node_configuration_summary">à¸?ารà¸?ัà¹?à¸?à¸?à¹?าà¸?ัà¹?à¸?สูà¸?à¹?หลà¹?าà¸?ีà¹?à¸?ำà¹?หà¹?à¸?วามà¹?à¸?à¹?à¸?à¸?ิรà¸?ามà¸?à¸à¸?à¸?ุà¸?ลà¸?ลà¸?à¹?à¸?à¹?</string>
- <string name="pref_entrance_node">�ห���า����า</string>
- <string name="pref_entrance_node_summary">ลายà¸?ิà¹?วมืà¸, à¸?ืà¹?à¸à¹?ลà¹?à¸?, à¸?ระà¹?à¸?ศ à¹?ละà¸?ีà¹?à¸à¸¢à¸¹à¹?à¸?à¸à¸?ฮà¸à¸?à¹?รà¸?</string>
- <string name="pref_entrance_node_dialog">ระ�ุ�ห���า����า</string>
- <string name="pref_proxy_type_summary">à¹?à¸?รà¹?à¸?à¸?à¸à¸¥à¸?ีà¹?à¹?à¸?à¹?สำหรัà¸?à¹?à¸?ิรà¹?à¸?à¹?วà¸à¸£à¹?à¸?รà¹?à¸à¸?à¸?ี: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">ระà¸?ุà¸?à¸?ิà¸?à¸?à¸à¸?à¸?รà¹?à¸à¸?à¸?ี</string>
- <string name="pref_proxy_host_dialog">ระà¸?ุà¹?à¸?รืà¹?à¸à¸?à¸?รà¹?à¸à¸?à¸?ี</string>
- <string name="pref_proxy_port_dialog">ระà¸?ุà¸?à¸à¸£à¹?à¸?à¸?à¸à¸?à¸?รà¹?à¸à¸?à¸?ี</string>
- <string name="status">ส�า�ะ</string>
- <string name="setting_up_full_transparent_proxying_">à¸?ำลัà¸?à¸?ิà¸?à¸?ัà¹?à¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¹?à¸?à¸?à¹?à¸?à¹?มâ?¦</string>
- <string name="setting_up_app_based_transparent_proxying_">à¸?ำลัà¸?à¸?ิà¸?à¸?ัà¹?à¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¹?à¸?à¸?ระà¸?ุà¹?à¸?รà¹?à¸?รมâ?¦</string>
- <string name="transparent_proxying_enabled">à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¸?ูà¸?à¹?à¸?ิà¸?à¹?à¸?à¹?à¸?าà¸?</string>
- <string name="transproxy_enabled_for_tethering_">à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¸?ูà¸?à¹?à¸?ิà¸?à¹?à¸?à¹?สำหรัà¸?à¸?ารà¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸?à¹?วà¸?!</string>
- <string name="warning_error_starting_transparent_proxying_">à¸?ำà¹?à¸?ืà¸à¸?: à¹?à¸?ิà¸?à¸?à¹?à¸à¸?ิà¸?à¸?ลาà¸?à¸?à¸?ะà¸?ีà¹?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¹?ริà¹?มà¸?ำà¸?าà¸?</string>
- <string name="transproxy_rules_cleared">à¸?à¸?à¸?à¸à¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¸?ูà¸?ลà¹?าà¸?</string>
- <string name="couldn_t_start_tor_process_">à¹?มà¹?สามารà¸?à¹?ริà¹?มà¹?à¸?รà¹?à¸?สà¸?à¸à¸? Tor</string>
- <string name="setting_up_port_based_transparent_proxying_">à¸?ำลัà¸?à¸?ิà¸?à¸?ัà¹?à¸?à¸?รà¹?à¸à¸?à¸?ีลà¹?à¸à¸?หà¸?à¹?à¸?à¸?ระà¸?ุà¸?à¸à¸£à¹?à¸?â?¦</string>
- <string name="bridge_error">สะà¸?าà¸?à¸?ัà¸?à¸?à¹?à¸à¸?</string>
- <string name="bridge_requires_ip">à¹?à¸?à¸?ารà¹?à¸?à¹?à¸?าà¸?à¸?ุà¸?สมà¸?ัà¸?ิสะà¸?าà¸? à¸?ุà¸?à¸?à¹?à¸à¸?ระà¸?ุà¸?ีà¹?à¸à¸¢à¸¹à¹?à¹?à¸à¸?ีà¸?à¸à¸?สะà¸?าà¸?à¸à¸¢à¹?าà¸?à¸?à¹?à¸à¸¢ 1 à¹?à¸à¸?ี </string>
- <string name="send_email_for_bridges">สà¹?à¸?à¸à¸µà¹?มลà¹?à¸?à¸?ีà¹? bridges@xxxxxxxxxxxxxx à¹?à¸?ยระà¸?ุà¹?à¸?à¹? \"get bridges\" à¹?à¸?à¹?à¸?ืà¹?à¸à¸?วามà¸à¸µà¹?มล à¹?ลà¹?วสà¹?à¸?à¹?à¸?ยà¹?à¸?à¹?à¸?ัà¸?à¸?ีà¸?ูà¹?à¹?à¸?à¹? gmail</string>
- <string name="error">�ิ��ลา�</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">à¸?ารà¸?ัà¹?à¸?à¸?à¹?า ReachableAddresses à¸?à¸à¸?à¸?ุà¸?à¸?ำà¹?หà¹?à¹?à¸?ิà¸?à¸?à¹?à¸à¸?ิà¸?à¸?ลาà¸?</string>
- <string name="your_relay_settings_caused_an_exception_">à¸?ารà¸?ัà¹?à¸?à¸?à¹?ารีà¹?ลยà¹?à¸?à¸à¸?à¸?ุà¸?à¸?ำà¹?หà¹?à¹?à¸?ิà¸?à¸?à¹?à¸à¸?ิà¸?à¸?ลาà¸?</string>
- <string name="exit_nodes">à¹?หà¸?à¸?à¸?าà¸?à¸à¸à¸?</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">ลายà¸?ิà¹?วมืà¸, à¸?ืà¹?à¸à¹?ลà¹?à¸?, à¸?ระà¹?à¸?ศ à¹?ละà¸?ีà¹?à¸à¸¢à¸¹à¹?à¸?à¸à¸?ฮà¸à¸?สุà¸?à¸?à¹?าย</string>
- <string name="enter_exit_nodes">ระà¸?ุà¹?หà¸?à¸?à¸?าà¸?à¸à¸à¸?</string>
- <string name="exclude_nodes">�ห��ย��ว��</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">ลายà¸?ิà¹?วมืà¸, à¸?ืà¹?à¸à¹?ลà¹?à¸?, à¸?ระà¹?à¸?ศ à¹?ละà¸?ีà¹?à¸à¸¢à¸¹à¹?à¸?ีà¹?ละà¹?วà¹?à¸?</string>
- <string name="enter_exclude_nodes">ระ�ุ�ห��ย��ว��</string>
- <string name="strict_nodes">�ห�����ม�ว�</string>
- <string name="use_only_these_specified_nodes">��� *���าะ* �ห���ี�ระ�ุ�หล�า�ี����า�ั��</string>
- <string name="bridges">สะ�า�</string>
- <string name="use_bridges">����า�สะ�า�</string>
- <string name="bridges_obfuscated">สะà¸?าà¸?à¸?ีà¹?à¸?ูà¸?à¸à¸³à¸?ราà¸?</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">à¹?à¸?ิà¸?à¹?à¸?à¹?à¸?าà¸?à¹?หà¸?à¸?à¸?าà¸?à¹?à¸?à¹?าà¸à¸·à¹?à¸?à¹?à¸?à¹?าสูà¹?à¹?à¸?รืà¸à¸?à¹?าย Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">à¹?à¸?ิà¸?à¹?à¸?à¹?à¸?าà¸?à¸?à¹?าสะà¸?าà¸?à¸?ีà¹?à¸?ูà¸?à¸?ัà¹?à¸?à¸?à¹?าà¹?à¸?à¹?à¸?สะà¸?าà¸?à¸à¸³à¸?ราà¸?</string>
- <string name="ip_address_and_port_of_bridges">à¸?ีà¹?à¸à¸¢à¸¹à¹?à¹?à¸à¸?ีà¹?ละà¸?à¸à¸£à¹?à¸?à¸?à¸à¸?สะà¸?าà¸?</string>
- <string name="enter_bridge_addresses">ระà¸?ุà¸?ีà¹?à¸à¸¢à¸¹à¹?à¸?à¸à¸?สะà¸?าà¸?</string>
- <string name="relays">รี�ลย�</string>
- <string name="relaying">�ารรี�ลย�</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">à¸?ำà¹?หà¹?à¸à¸¸à¸?à¸?รà¸?à¹?à¸?à¸à¸?à¸?ุà¸?à¸?ำà¸?าà¸?à¹?à¸?à¹?à¸?รีà¹?ลยà¹?à¹?à¸?à¸?à¹?มà¹?à¹?à¸?à¹?à¸?าà¸?à¸à¸à¸?</string>
- <string name="relay_port">à¸?à¸à¸£à¹?à¸?รีà¹?ลยà¹?</string>
- <string name="listening_port_for_your_tor_relay">à¸?à¸à¸£à¹?à¸?à¸?ีà¹?à¹?หà¹?รีà¹?ลยà¹?à¸?à¸à¸? Tor à¸?ำà¸?าà¸?</string>
- <string name="enter_or_port">ระà¸?ุà¸?à¸à¸£à¹?à¸?à¸?à¸à¸? OR</string>
- <string name="relay_nickname">à¸?ืà¹?à¸à¹?ลà¹?à¸?à¸?à¸à¸?รีà¹?ลยà¹?</string>
- <string name="the_nickname_for_your_tor_relay">à¸?ืà¹?à¸à¹?ลà¹?à¸?สำหรัà¸?รีà¹?ลยà¹?à¸?à¸à¸? Tor à¸?à¸à¸?à¸?ุà¸?</string>
- <string name="enter_a_custom_relay_nickname">ระà¸?ุà¸?ืà¹?à¸à¹?ลà¹?à¸?à¸?à¸à¸?รีà¹?ลยà¹?à¹?à¸?ยà¸?ำหà¸?à¸?à¹?à¸à¸?</string>
- <string name="reachable_addresses">à¸?ีà¹?à¸à¸¢à¸¹à¹?à¸?ึà¹?à¸?à¹?à¸?à¹?าà¸?ึà¸?à¹?à¸?à¹?</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">à¸?ำà¸?าà¸?à¹?à¸?à¹?à¸?à¹?à¸?รืà¹?à¸à¸?ลูà¸?à¸?à¹?ายหลัà¸?à¹?à¸?รà¹?วà¸à¸¥à¸¥à¹?à¸?à¹?วยà¸?à¹?ยà¸?ายà¹?à¸?à¸?à¹?à¸?à¹?มà¸?วà¸?</string>
- <string name="reachable_ports">à¸?à¸à¸£à¹?à¸?à¸?ีà¹?à¹?à¸?à¹?าà¸?ึà¸?à¹?à¸?à¹?</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">à¸?à¸à¸£à¹?à¸?à¸?ีà¹?à¹?à¸?à¹?าà¸?ึà¸?à¹?à¸?à¹?หลัà¸?à¹?à¸?รà¹?วà¸à¸¥à¸¥à¹?à¹?à¸?à¸?à¹?à¸?à¹?มà¸?วà¸?</string>
- <string name="enter_ports">ระà¸?ุà¸?à¸à¸£à¹?à¸?</string>
- <string name="enter_localhost_ports_for_hidden_services">ระà¸?ุà¸?à¸à¸£à¹?à¸?à¸?à¸à¸? localhost สำหรัà¸?à¹?หà¹?à¸?ริà¸?ารà¹?มà¹?à¹?à¸?ิà¸?à¹?à¸?ยà¸?ำà¸?าà¸? </string>
- <string name="hidden_service_ports">à¸?à¸à¸£à¹?à¸?à¸?à¸à¸?à¸?ริà¸?ารà¹?มà¹?à¹?à¸?ิà¸?à¹?à¸?ย</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">à¸?ืà¹?à¸à¸?ีà¹?à¹?à¸?à¹?ระà¸?ุสำหรัà¸?à¸?ริà¸?ารà¹?มà¹?à¹?à¸?ิà¸?à¹?à¸?ยà¸?à¸à¸?à¸?ุà¸? (สรà¹?าà¸?à¹?à¸?ยà¸à¸±à¸?à¹?à¸?มัà¸?ิ)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">à¹?à¸?ิà¸?à¹?หà¹?à¸?ูมà¸?ีà¸?ัà¹?à¸?à¹?สà¸?à¸?à¸?ล (à¸?à¹?à¸à¸?à¹?à¸?à¹? adb หรืภaLogCat à¹?à¸?ืà¹?à¸à¸?ู)</string>
- <string name="project_home">à¸?ีà¹?à¸à¸¢à¸¹à¹?à¹?à¸?รà¸?à¸?าร:</string>
- <string name="the_tor_license">สัà¸?à¸?าà¸à¸?ุà¸?าà¸?à¸?à¸à¸? Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">à¸?à¸à¸?à¸?à¹?à¹?วรà¹?à¹?à¸?ยà¸?ูà¹?à¸?ลิà¸?à¸à¸·à¹?à¸?:</string>
- <string name="hidden_service_request">à¹?à¸?รà¹?à¸?รมà¸?à¹?à¸à¸?à¸?ารà¹?à¸?ิà¸?à¸?à¸à¸£à¹?à¸? %S à¸?ีà¹?à¸?à¹?à¸à¸?à¸à¸¢à¸¹à¹?à¸?à¸à¸?à¹?à¸?ิรà¹?à¸?à¹?วà¸à¸£à¹?à¹?หà¹?à¹?à¸?ืà¹?à¸à¸¡à¸?ัà¸?à¹?à¸?รืà¸à¸?à¹?าย Tor à¸?ารà¸?ระà¸?ำà¸?ีà¹?à¸?ลà¸à¸?ภัยà¸?à¹?าà¸?ุà¸?à¹?à¸?ืà¹?à¸à¸?ืà¸à¹?à¸?รà¹?à¸?รมà¸?ัà¹?à¸?</string>
- <string name="something_bad_happened">à¹?à¸?ิà¸?à¸à¸°à¹?รà¹?มà¹?à¸?ีสัà¸?à¸à¸¢à¹?าà¸? à¹?หà¹?à¸?รวà¸?à¸?ูà¸?าà¸?à¸?ูม</string>
- <string name="hidden_service_on">à¸?ริà¸?ารà¹?มà¹?à¹?à¸?ิà¸?à¹?à¸?ยà¸à¸¢à¸¹à¹?à¸?à¸?:</string>
- <string name="unable_to_read_hidden_service_name">à¹?มà¹?สามารà¸?à¸à¹?าà¸?à¸?ืà¹?à¸à¸?à¸à¸?à¸?ริà¸?ารà¹?มà¹?à¹?à¸?ิà¸?à¹?à¸?ย</string>
- <string name="unable_to_start_tor">�ม�สามาร��ริ�ม Tor</string>
- <string name="pref_use_sys_iptables_title">��� Iptables �ริยาย</string>
- <string name="pref_use_sys_iptables_summary">à¹?à¸?à¹?à¹?à¸?à¸?ารีà¸?à¸à¸? iptables à¸?ีà¹?มีà¸à¸¢à¸¹à¹?à¹?ลà¹?วà¹?à¸?à¸?à¸?ัวà¸?ีà¹?à¹?à¸?มมาà¸?ัà¸? Orbot</string>
- <string name="error_installing_binares">à¹?มà¹?สามารà¸?à¸?ิà¸?à¸?ัà¹?à¸?หรืà¸à¸?รัà¸?รุà¹?à¸?à¹?à¸?à¸?ารีà¸?à¸à¸? Tor</string>
- <string name="pref_use_persistent_notifications">à¹?สà¸?à¸?à¹?à¸à¸?à¸à¸?à¹?à¸?à¸?ูลà¸?ารà¹?à¹?สมà¸à¹?มืà¹?ภOrbot à¹?à¸?ืà¹?à¸à¸¡à¸?à¹?à¸à¸à¸¢à¸¹à¹?</string>
- <string name="pref_use_persistent_notifications_title">à¸?ารà¹?à¸?à¹?à¸?à¹?à¸?ืà¸à¸?à¹?à¸?à¸?à¸?ลà¸à¸?à¹?วลา</string>
- <string name="notification_using_bridges">��ิ�����า�สะ�า��ล�ว!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">à¹?ลืà¸à¸?à¹?ลà¹?à¸?ลà¹?ละภาษาสำหรัà¸? Orbot</string>
- <string name="wizard_locale_title">à¹?ลืà¸à¸?ภาษา</string>
- <string name="wizard_locale_msg">à¹?à¸?à¹?à¸?à¹?าà¸?ริยายหรืà¸à¹?ลืà¸à¸?ภาษาà¸?ัà¸?à¸?ุà¸?ัà¸?</string>
- <string name="btn_save_settings">�ั��ึ��าร�ั����า</string>
-</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
deleted file mode 100644
index 12d2dab..0000000
--- a/res/values-tl/strings.xml
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">simulan at ihinto ang Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Nagsisimula na ang Orbotâ?¦</string>
- <string name="status_activated">Konektado sa Tor network</string>
- <string name="status_disabled">Naka-deactivate ang Orbot</string>
- <string name="tor_process_starting">Binubuksan ang Tor clientâ?¦</string>
- <string name="tor_process_complete">kumpleto na.</string>
- <string name="tor_process_waiting">nag-hihintay</string>
- <string name="not_anonymous_yet">BABALA: Ang iyong traffic ay hindi pa anonimo! Kung maaari sana ay ikompigura muna ang iyong applications na gumamit ng HTTP proxy 127.0.0.1:8118 o kaya ay SOCKS4A o kaya ay SOCKS5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Tahanan</string>
- <string name="menu_browse">Mag-browse</string>
- <string name="menu_settings">Settings</string>
- <string name="menu_log">Tala</string>
- <string name="menu_info">Tulong</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Simulan</string>
- <string name="menu_stop">Ihinto</string>
- <string name="menu_about">Tungkol</string>
- <string name="main_layout_download">Download</string>
- <string name="main_layout_upload">Upload</string>
- <string name="button_help">Tulong</string>
- <string name="button_close">Isara</string>
- <string name="button_about">Tungkol</string>
- <string name="button_clear_log">Linisin ang tala</string>
- <string name="menu_verify">Tiyakin</string>
- <string name="menu_exit">Labasan</string>
- <string name="menu_share_bridge">Ipamahagi ang BridgeQR</string>
- <string name="press_to_start">- pindutin ng matagal para mag umpisa -</string>
- <string name="pref_trans_proxy_group">Nanganganinag na pag Po-proxy (Kailangan ang Root)</string>
- <string name="pref_trans_proxy_title">Nanganganinag na pag Po-proxy </string>
- <string name="pref_trans_proxy_summary">Kusang pag Torifying ng mga Apps</string>
- <string name="pref_transparent_all_title">Tor lahat</string>
- <string name="pref_transparent_all_summary">I-proxy ang traffic ng lahat ng apps gamit ang Tor</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
- <string name="pref_transparent_port_fallback_summary">BABALA: Dayain ang mga karaniwang ports (80, 443, etc). *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana.</string>
- <string name="pref_transparent_port_title">Lisatahan ng Port</string>
- <string name="pref_transparent_port_summary">Lisatahan ng mga ports sa proxy. *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana.</string>
- <string name="pref_transparent_port_dialog">Ipasok ang ports sa proxy</string>
- <string name="pref_has_root">Humiling ng daanan sa Root</string>
- <string name="pref_has_root_summary">Humiling ng daanan sa Root para sa nanganganinag na pag Po-proxy</string>
- <string name="status_install_success">Ang Tor binaries ay matagumpay na i-install.</string>
- <string name="status_install_fail">Ang Tor binary files ay hindi na install. Paki tignan ang tala at magbigay alam sa tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">May mali sa Application</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Tungkol sa Orbot</string>
- <string name="btn_next">Susunod</string>
- <string name="btn_back">Balik</string>
- <string name="btn_finish">Wakas</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Kanselahin</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ilang detalye sa Orbot</string>
- <string name="wizard_details_msg">Ang Orbot ay isang open-source application na naglalaman ng Tor, LibEvent at Polipo. Ito ay nagbibigay ng local HTTP proxy (8118) at SOCKS proxy (9050) sa Tor network. Ang Orbot ay nagbibigay din ng kakayahan, sa mga rooted device, na ipadala ang lahat ng trapiko sa internet sa pamamagitan ng Tor.</string>
- <string name="wizard_permissions_root">Napahintulotan na</string>
- <string name="wizard_permissions_stock">Pahintulot ng Orbot</string>
- <string name="wizard_premissions_msg_root">Mahusay! Natuklasan namin na mayroon pahintulot ang Orbot para sa root. Gagamitin namin ito ng mabuti.</string>
- <string name="wizard_permissions_msg_stock">Ito ay hindi kinakailangan, ngunit mas mapapalawig ang kakayahan ng Orbot kung ang iyong device ay meron access sa root. Gamitin ang pindutan sa ibaba para bigyan ng superpowers ang Orbot!</string>
- <string name="wizard_permissions_no_root">Kung wala kang access sa root o wala kang alam sa sinasabi namin, siguraduhin mu nalamang na gagamit ka ng mga apps na ginawa para sa Orbot.</string>
- <string name="wizard_permissions_consent">Nauunawaan ko at mag-papatuloy ng walang Superuser</string>
- <string name="wizard_permission_enable_root">Pahintulutan ang Orbot para sa Root</string>
- <string name="wizard_configure">Kompigurahin ang Torification</string>
- <string name="wizard_configure_msg">Binibigyan ka ng Orbot ng pagpipilian na i-route lahat ng application traffic gamit ang Tor o piliin ang application isa-isa.</string>
- <string name="wizard_configure_all">I-proxy lahat ng Apps gamit ang Tor</string>
- <string name="wizard_configure_select_apps">Pumili ng isa-isang apps para sa Tor</string>
- <string name="wizard_tips_tricks">Orbot-enabled Apps</string>
- <string name="wizard_tips_msg">Ang mga apps sa ibaba ay dinevelop upang gumana sa Orbot. I-click ang button para i-install, o sila ay mahahanap sa Google Play, sa GuardianProject.info website o sa F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Isang Secure instant messaging client para sa Android</string>
- <string name="wizard_tips_proxy">Proxy Settings - Alamin paano magkompigura ng apps para gumana sa Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Search Engine app</string>
- <string name="wizard_tips_twitter">I-set ang Twitter proxy sa host \"localhost\" at port 8118</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy Settings</string>
- <string name="wizard_proxy_help_msg">Kung ang ginagamit na Android app ay gumagamit ng HTTP o SOCKS proxy, ibig sabihin lang noon ay pwede mong isaayos para kumunekta sa Orbot sa paggamit ng Tor.\n\n\n Ang host settings ay 127.0.0.1 o \"localhost\". Para naan sa HTTP, ang port setting ay 8118. Para naman sa SOCKS, ang proxy ay 9050. Kailangan mong gamitin ang SOCKS4A o SOCKS5 kung posible.\n \n\n\n Mas marami kang matututunan sa proxying sa Android sa pamamagitan ng FAQ sa: http://tinyurl.com/proxyandroid .\n </string>
- <string name="wizard_final">Handa na ang Orbot!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Bubuksan nito ang iyong browser sa https://check.torproject.org para matignan kung ang Orbot ay na-kompigura at konektado ka sa Tor.</string>
- <string name="pref_hs_group">Tagong Service Hosting</string>
- <string name="pref_general_group">Pangkalahatan</string>
- <string name="pref_start_boot_title">Umpisahan ang Orboot sa Boot</string>
- <string name="pref_start_boot_summary">Kusang umpisahan ang Orbot at kumonekta sa Tor sa pag bukas ng iyong Android Device</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Ang Orbot ang nagdala ng Tor sa Android!\n\nAng Tor ay tumutulong sa iyo na sanggain ang pagsala ng nilalaman, pag-analisa ng trapiko at pangmamatyag sa network na mapanganib sa iyong privacy, conpidensyal na impormasyon at personal na relasyon.\n\nAng wizard ang makakatulong sa iyo para isaayos ang Orbot at Tor sa iyong device.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Babala</string>
- <string name="wizard_warning_msg">Sa pag-install nang Orbot, hindi nito awtomatikong ina-anonymize ang iyong trapiko sa iyong mobile.\n\nKailangan mong isaayos ng tama ang Orbot, sa iyong device at sa iba pang apps para matagumpay na magamit ang Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Mga Pahintulot</string>
- <string name="wizard_permissions_root_msg1">Maari mong piliin bigyan ng pahintulot ang Orbot ng \'Superuser\' access para ma-enable ang mga advanced features tulad ng Transparent Proxying.</string>
- <string name="wizard_permissions_root_msg2">Kapag ayaw mo itong gawin, siguraduhing gumamit ng apps na ginawa upang gumana kasama ang Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Mukang ang iyong device ay hindi pa rooted o hindi nagbibigay ng daan sa root o \'Superuser\'.\n\nPakiusap, o hindi kaya subukan ang paraan ng \'Apps\' sa pangunahing screen.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Enabled Apps</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Isang secure chat app na may Off-the-Record Encryption</string>
- <string name="wizard_tips_orweb">Orfox: Privacy-enhanced browser na gumagana sa pamamagitan ng Tor.</string>
- <string name="wizard_tips_play">Hanapin ang lahat ng Guardian Project apps sa Google Play</string>
- <string name="wizard_tips_fdroid">Hanapin ang lahat ng Guardian Project apps sa F-Droid</string>
- <string name="wizard_tips_fdroid_org">Hanapin ang lahat ng Guardian Project apps sa https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparent Proxying</string>
- <string name="wizard_transproxy_msg">Ito ay bibigyan ng pahintulot ang iyong mga apps na kusang mag-run sa Tor network kahit walang pag-kompigura na ginawa.</string>
- <string name="wizard_transproxy_hint">(Lagyan ng check ang box na ito kung wala kang alam sa sinasabi namin)</string>
- <string name="wizard_transproxy_none">Wala</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">I-enable ang Tor Transparent Proxying para sa Wifi at USB Tethered Devices (kailangan mag restart)</string>
- <string name="button_grant_superuser">Humiling ng Superuser Access</string>
- <string name="pref_select_apps">Pumili ng Apps</string>
- <string name="pref_select_apps_summary">Pumili ng Apps para i-route sa Tor</string>
- <string name="pref_node_configuration">Pagkompigura ng Node</string>
- <string name="pref_node_configuration_summary">Ang mga ito ay advanced settings na maaring bawasan ang iyong anonymity</string>
- <string name="pref_entrance_node">Entrance Nodes</string>
- <string name="pref_entrance_node_summary">Fingerprints, nicks, mga bansa at mga address para sa unang lukso</string>
- <string name="pref_entrance_node_dialog">Pumasok sa Entrance Nodes</string>
- <string name="pref_allow_background_starts_title">Pahintulutan na magsimula sa background</string>
- <string name="pref_allow_background_starts_summary">Hayaan ang kahit anong app na sabihin kay Orbot na magsimula ng Tor at anumang malapit na serbisyo.</string>
- <string name="button_proxy_all">Proxy All</string>
- <string name="button_proxy_none">Proxy None</string>
- <string name="button_invert_selection">Baliktarin ang napili</string>
- <string name="pref_proxy_title">Outbound Network Proxy (Optional)</string>
- <string name="pref_proxy_type_title">Outbound Proxy Type</string>
- <string name="pref_proxy_type_summary">Mga protocol na gagamitin para sa proxy server: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ilagay ang Proxy Type</string>
- <string name="pref_proxy_host_title">Outbound Proxy Host</string>
- <string name="pref_proxy_host_summary">Proxy Server hostname</string>
- <string name="pref_proxy_host_dialog">Ilagay ang Proxy Host</string>
- <string name="pref_proxy_port_title">Outbound Proxy</string>
- <string name="pref_proxy_port_summary">Proxy Server Port</string>
- <string name="pref_proxy_port_dialog">Ilagay ang Proxy port</string>
- <string name="pref_proxy_username_title">Outbound Proxy Username</string>
- <string name="pref_proxy_username_summary">Proxy Username (Optional)</string>
- <string name="pref_proxy_username_dialog">Ilagay ang Proxy Username</string>
- <string name="pref_proxy_password_title">Outbound Proxy Password</string>
- <string name="pref_proxy_password_summary">Proxy Password (Optional)</string>
- <string name="pref_proxy_password_dialog">Ilagay ang Proxy Password</string>
- <string name="status">Katayuan</string>
- <string name="setting_up_full_transparent_proxying_">Isinasaayos ang kabuuang transparent proxying...</string>
- <string name="setting_up_app_based_transparent_proxying_">Isinasaayos ang app-based transparent proxying...</string>
- <string name="transparent_proxying_enabled">Na i-enable na ang Transparent proxying</string>
- <string name="transproxy_enabled_for_tethering_">Na i-enable na ang TransProxy para sa Thethering!</string>
- <string name="warning_error_starting_transparent_proxying_">BABALA: error sa pag start ng transparent proxying!</string>
- <string name="transproxy_rules_cleared">Nalinis na ang mga batas ng TransProxy</string>
- <string name="couldn_t_start_tor_process_">Hindi ma umpisahan ang proseso ng Tor:</string>
- <string name="privoxy_is_running_on_port_">Ang Polipo ay gumagana ngayon sa port:</string>
- <string name="setting_up_port_based_transparent_proxying_">Isinasaayos ang port-based transpaprent proxying...</string>
- <string name="bridge_error">Error sa Bridge</string>
- <string name="bridge_requires_ip">Para magamit ang feature ng bridge, kailangan mong mag lagay ng kahit isang bridge IP address.</string>
- <string name="send_email_for_bridges">Magpadala ng email sa bridges@xxxxxxxxxxxxxx na mayroong linyang \"get bridges\" at wala ng iba pang kasama sa katawa ng email gamit ang isang gmail account.</string>
- <string name="error">Error</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ang iyong ReachableAddresses settings ay nag sanhi ng exception!</string>
- <string name="your_relay_settings_caused_an_exception_">Ang iyong relay settings ay nag sanhi ng exception!</string>
- <string name="exit_nodes">Exit Nodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerprints, nicks, mga bansa at address para sa huling talon</string>
- <string name="enter_exit_nodes">Enter Exit Nodes</string>
- <string name="exclude_nodes">Hindi kasama ang Nodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerprints, nicks, mga bansa at mga address na hindi isasama</string>
- <string name="enter_exclude_nodes">Enter Exclude Nodes</string>
- <string name="strict_nodes">Strict Nodes</string>
- <string name="use_only_these_specified_nodes">Gumamit ng *only* sa mga ispesipikong nodes </string>
- <string name="bridges">Bridges</string>
- <string name="use_bridges">Gumamit ng Bridges</string>
- <string name="bridges_obfuscated">Obfuscated Bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">I-enable ang kahaliling entrance nodes sa Tor Network</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">I-enable kung ang naisaayos na bridges ay obfuscated bridges</string>
- <string name="ip_address_and_port_of_bridges">IP address at port ng bridges</string>
- <string name="enter_bridge_addresses">Ilagay ang Bridge Addresses</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relaying</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">I-enable ang iyong device na non-exit relay</string>
- <string name="relay_port">Relay Port</string>
- <string name="listening_port_for_your_tor_relay">Pinapakinggan ang port para sa iyong Tor relay</string>
- <string name="enter_or_port">I-lagay ang OR port</string>
- <string name="relay_nickname">Relay nickname</string>
- <string name="the_nickname_for_your_tor_relay">Ang nickname para sa iyong Tor relay</string>
- <string name="enter_a_custom_relay_nickname">I-lagay ang pasadyang relay nickname</string>
- <string name="reachable_addresses">Reachable Addresses</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Patakbuhin bilang kliente sa likod ng firewall na may istriktong polisiya</string>
- <string name="reachable_ports">Reachable Ports</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ports reachable sa likod ng istriktong firewall</string>
- <string name="enter_ports">I-lagay ang ports</string>
- <string name="enable_hidden_services">Nakatagong Service Hosting</string>
- <string name="run_servers_accessible_via_the_tor_network">pahintulutan sa on-device server na maging malalapitan sa pamamagitan ng Tor network</string>
- <string name="enter_localhost_ports_for_hidden_services">I-lagay ang localhost ports para sa nakatagong serbisyo</string>
- <string name="hidden_service_ports">Tagong Service Ports</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ang addressable na pangalan sa iyong tagong serbisyo (awtomatikong nabuo)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">paganahiin ang debug log para sa output (kailangang gamitin ang adb o aLogCat para makita)</string>
- <string name="project_home">Project Home(s):</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/
-</string>
- <string name="the_tor_license">Ang Tor License</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">May app na gustong buksan ang nakatagong server port %S sa Tor network. Ito ay ligtas kung pinagkakatiwalaan ang app.</string>
- <string name="found_existing_tor_process"> nakakita ng umiiral na Tor process...</string>
- <string name="something_bad_happened">May nangyaring masama. Tingnan ang log</string>
- <string name="hidden_service_on">nakatagong serbisyo sa:</string>
- <string name="unable_to_read_hidden_service_name">hindi mabasa ang pangalan ng tagong serbisyo</string>
- <string name="unable_to_start_tor">Hindi masimulan ang Tor:</string>
- <string name="unable_to_reset_tor">I-reboot ang iyong device, hindi ma-reset ang Tor!</string>
- <string name="pref_use_sys_iptables_title">Gumamit ng Default na Iptables</string>
- <string name="pref_use_sys_iptables_summary">gamitin ang built-in iptables binary kaysa sa isang nabigkis kasama ng Orbot</string>
- <string name="error_installing_binares">Ang Tor binaries ay hindi ma-install o ma-upgrade.</string>
- <string name="pref_use_persistent_notifications">Palaging panatilihin ang icon sa toolbar kapag ang Orbot ay naka-connect</string>
- <string name="pref_use_persistent_notifications_title">Palaging i-On ang Notifications</string>
- <string name="pref_use_expanded_notifications">Ipakita ang pinalaking notification kasama ng Tor exit country at IP</string>
- <string name="pref_use_expanded_notifications_title">Pinalawak na Notifications</string>
- <string name="notification_using_bridges">Bridges enabled!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Wika</string>
- <string name="set_locale_summary">Pumili ng locale at wika para sa Orbot</string>
- <string name="wizard_locale_title">Pumili ng Wika</string>
- <string name="wizard_locale_msg">Iwanang default o palitan ang kasalukuyang wika</string>
- <string name="powered_by">powered by Tor</string>
- <string name="btn_save_settings">I-Save ang Settings</string>
- <string name="no_internet_connection_tor">Walang connection sa internet; Ang Tor ay naka-standby mode...</string>
- <string name="bandwidth_">Bandwidth:</string>
- <string name="down">baba</string>
- <string name="up">taas</string>
- <string name="pref_disable_network_title">Walang Auto-Sleep sa Network</string>
- <string name="pref_disable_network_summary">Ilagay ang Tor sa sleep kapag walang internet na pwede</string>
- <string name="newnym">Ikaw ay nagpalit ng bagong pagkakakilanlan sa Tor!</string>
- <string name="menu_verify_browser">Browser</string>
- <string name="menu_use_chatsecure">Gamitin ang ChatSecure</string>
- <string name="permission_manage_tor_label">Manage Tor</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">Activate</string>
- <string name="apps_mode">Apps VPN Mode</string>
- <string name="send_email">Send Email</string>
- <string name="install_orweb">I-install ang Orfox</string>
- <string name="standard_browser">Standard Browser</string>
- <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
deleted file mode 100644
index 8958de8..0000000
--- a/res/values-tr/strings.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot baÅ?ka uygulamaların interneti daha güvenli olarak kullanmasını saÄ?layan ücretsiz bir proxy uygulamasıdır. Orbot Tor\'u kullanarak internet trafiÄ?inizi Å?ifreler ve dünya üzerindeki pek çok farklı bilgisayardan geçirerek gizler. Tor sizin kiÅ?isel özgürlüÄ?ünüzü ve mahremiyetinizi, gizli ticari aktivitelerinizi ve baÄ?lantılarınızı koruma altına alan bir yazılım ve açık aÄ?dır.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">https://check.torproject.org/?lang=tr</string>
- <string name="secure_default_web_url">https://check.torproject.org/?lang=tr</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">Tor\'u baÅ?lat ve durdur</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot baÅ?latılıyor...</string>
- <string name="status_activated">Tor aÄ?ına baÄ?landı</string>
- <string name="status_disabled">Orbot devre dıÅ?ı bırakıldı</string>
- <string name="status_shutting_down">Tor hizmeti kapatılıyor</string>
- <string name="tor_process_starting">Tor kullanımı baÅ?latılıyor...</string>
- <string name="tor_process_complete">tamamlandı.</string>
- <string name="tor_process_waiting">bekliyor.</string>
- <string name="not_anonymous_yet">UYARI: BaÄ?lantınız henüz anonim deÄ?ildir! Lütfen uygulamalarınızı HTTP 127.0.0.1:8118 veya SOCKS4A / SOCKS5 127.0.0.1:9050 vekil sunucusu kullanacak Å?ekilde yapılandırınız.</string>
- <string name="menu_home">BaÅ?langıç</string>
- <string name="menu_browse">Göz At</string>
- <string name="menu_settings">Ayarlar</string>
- <string name="menu_log">Günlük</string>
- <string name="menu_info">Yardım</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">BaÅ?lat</string>
- <string name="menu_stop">Durdur</string>
- <string name="menu_about">Hakkında</string>
- <string name="menu_promo_apps">Uygulamaları alın... </string>
- <string name="main_layout_download">Ä°ndir</string>
- <string name="main_layout_upload">Yükle</string>
- <string name="button_help">Yardım</string>
- <string name="button_close">Kapat</string>
- <string name="button_about">Hakkında</string>
- <string name="button_clear_log">GünlüÄ?ü Temizle</string>
- <string name="menu_verify">Kontrol Et</string>
- <string name="menu_exit">Ã?ıkıÅ?</string>
- <string name="menu_scan">QR kodu tarama</string>
- <string name="menu_share_bridge">QR kodu paylaÅ?</string>
- <string name="press_to_start">- baÅ?latmak için uzun basın -</string>
- <string name="pref_trans_proxy_group">Å?effaf Vekillendirme (Yeniden BaÅ?latma Gerektirir)</string>
- <string name="pref_trans_proxy_title">Å?effaf Vekillendirme</string>
- <string name="pref_trans_proxy_summary">Uygulamalar için Otomatik Tor Uyarlaması</string>
- <string name="pref_transparent_all_title">HerÅ?eyi Tor ile Uyarla</string>
- <string name="pref_transparent_all_summary">Tor\'a uyarlanmıÅ? uygulamaların vekil sunucu baÄ?lantıları</string>
- <string name="pref_transparent_port_fallback_title">Vekil Sunucu Yanıtsız Kalma Bildirim Portu</string>
- <string name="pref_transparent_port_fallback_summary">UYARI: Genel portlardan (80,443, v.b.) kaçınınız. SADECE \'Hepsi\' veya \'Uygulama\' modu çalıÅ?madıÄ?ında kullanınız.</string>
- <string name="pref_transparent_port_title">Port Listesi</string>
- <string name="pref_transparent_port_summary">Vekil sunucu port listesi. *SADECE* \'Hepsi\' veya \'Uygulama\' modu çalıÅ?madıÄ?ında kullanınız.</string>
- <string name="pref_transparent_port_dialog">Vekil sunucu portlarını giriniz</string>
- <string name="pref_has_root">Yönetici EriÅ?imi Talebi</string>
- <string name="pref_has_root_summary">Å?effaf Vekillendirme için Yönetici EriÅ?imi Talebi</string>
- <string name="status_install_success">Tor binarileri baÅ?arıyla yüklendi!</string>
- <string name="status_install_fail">Tor binary dosyaları yüklenemedi. Lütfen günlüÄ?ü kontrol ediniz ve tor-assistants@xxxxxxxxxxxxxx adresini kullanarak bilgilendirme yapınız.</string>
- <string name="title_error">Uygulama Hatası</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Orbot Hakkında</string>
- <string name="btn_next">Ä°leri</string>
- <string name="btn_back">Geri</string>
- <string name="btn_finish">Bitir</string>
- <string name="btn_okay">Tamam</string>
- <string name="btn_cancel">Ä°ptal
- </string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Bazı Orbot detayları</string>
- <string name="wizard_details_msg">Orbot; Tor, Libevent ve Polipo içeren bir açık kaynak uygulamadır. Yerel bir HTTP proxy (8118) ve Tor aÄ?ı içine SOCKS proxy (9050) saÄ?lamaktadır. Orbot ayrıca rootlu cihazlar için tüm internet trafiÄ?ini Tor üzerinden gönderme yeteneÄ?ine sahiptir. </string>
- <string name="wizard_permissions_root">Ä°zin Verildi</string>
- <string name="wizard_permissions_stock">Orbot Ä°zinleri</string>
- <string name="wizard_premissions_msg_root">Mükemmel! Root izinlerinizin Orbot için aktif olduÄ?unu saptadık. Bu gücü akıllıca kullanacaÄ?ız.</string>
- <string name="wizard_permissions_msg_stock">Gerekli olmamakla birlikte, eÄ?er cihazınızın root eriÅ?imi varsa Orbot daha güçlü bir araç olabilir. Orbot\'a süper güçlerini vermek için aÅ?aÄ?ıdaki butonu kullanın!</string>
- <string name="wizard_permissions_no_root">Root(superuser) eriÅ?iminiz ya da neden bahsettiÄ?imiz hakkında bir fikriniz yoksa sadece eklentilerin Orbot\'la birlikte çalıÅ?abilmeleri için yapıldıÄ?ından emin olun.</string>
- <string name="wizard_permissions_consent">Anlıyorum ve Superuser olmadan devam etmek istiyorum</string>
- <string name="wizard_permission_enable_root">Orbot\'a root eriÅ?imi ver</string>
- <string name="wizard_configure">Tor Bildirimlerini Ayarla</string>
- <string name="wizard_configure_msg">Orbot, tüm uygulamaların veya seçtiÄ?iniz uygulamaların trafiÄ?ini Tor üzerinden yönlendirme seçeneÄ?i sunar.</string>
- <string name="wizard_configure_all">Tüm Uygulamaları Tor �zerinden Vekillendir</string>
- <string name="wizard_configure_select_apps">Tor için ayrı ayrı uygulamalar seç.</string>
- <string name="wizard_tips_tricks">Orbot\'un Etkin OlduÄ?u Eklentiler</string>
- <string name="wizard_tips_msg">AÅ?aÄ?ıdaki uygulamalar Orbot ile birlikte çalıÅ?mak üzere geliÅ?tirilmiÅ?tir. Uygulamaları hemen kurmak için ilgili düÄ?melere tıklayabilir veya uygulamalara daha sonra Google Play, GuardianProject.info web adresi veya F-Droid.org üzerinden eriÅ?ebilirsiniz.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Android için güvenli anında mesajlaÅ?ma istemcisi</string>
- <string name="wizard_tips_proxy">Vekil Ayarları - Uygulamaların, Orbot ile birlikte çalıÅ?malarını nasıl ayarlayacaÄ?ınızı öÄ?renin.</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Arama Motoru uygulaması</string>
- <string name="wizard_tips_twitter">Twitter proxy sunucusunu \"localhost\" ve baÄ?lantı noktası 8118 olarak ayarlayın</string>
- <string name="wizard_tips_story_maker">StoryMaker - Bir öykü yarat ve güvenliÄ?i tor\'a bırak!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy Ayarları</string>
- <string name="wizard_final">Orbot hazır!</string>
- <string name="wizard_exit_at_first_screen_toast">Lütfen kullanmadan önce Orbot\'u yapılandırın!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Bu, Orbot\'un ayarlanıp ayarlanmadıÄ?ını ve Tor\'a baÄ?lanıp baÄ?lanmadıÄ?ınızı anlamanız amacıyla tarayıcınızda https://check.torproject.org adresini açacak.</string>
- <string name="pref_hs_group">GizlenmiÅ? servis sunucusu</string>
- <string name="pref_general_group">Genel</string>
- <string name="pref_start_boot_title">Orbot\'u Telefonla Birlikte BaÅ?lat</string>
- <string name="pref_start_boot_summary">Android cihaz açıldıÄ?ında otomatik olarak Orbot\'u baÅ?lat ve Tor\'a baÄ?lan.</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">Uyarı</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ä°zinler</string>
- <string name="wizard_permissions_root_msg1">Ä°sterseniz Orbot\'a \'Superuser\' eriÅ?imi vererek saydam proxy gibi geliÅ?miÅ? ayarları aktif hale getirebilirsiniz.</string>
- <string name="wizard_permissions_root_msg2">Bunu yapmak istemiyorsanız, lütfen Orbot ile çalıÅ?mak üzere yapılmıÅ? uygulamalar kullandıÄ?ınızdan emin olun</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot\'un aktif olduÄ?u eklentiler</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Güvenli Kayıt-dıÅ?ı Å?ifreleme yapabilen sohbet uygulaması</string>
- <string name="wizard_tips_orweb">Orfox: GizliliÄ?i geliÅ?tirilmiÅ? bir tarayıcı Tor üzerinden çalıÅ?ır</string>
- <string name="wizard_tips_play">Google Play\'deki tüm Guardian Projesi uygulamalarına bakın</string>
- <string name="wizard_tips_fdroid">Tüm Guardian Project uygulamalarını F-Droid vasıtasıyla bulun</string>
- <string name="wizard_tips_fdroid_org">Tüm Guardian Project uygulamalarına bu adresten eriÅ?in https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Å?effaf Vekillendirme</string>
- <string name="wizard_transproxy_msg">Bu, uygulamalarınızı Tor üzerinden, herhangi bir ayar yapmadan çalıÅ?tırmanıza olanak saÄ?lar.</string>
- <string name="wizard_transproxy_hint">(Neden bahsettiÄ?imiz hakkında bir fikriniz yoksa bu kutucuÄ?u iÅ?aretleyin)</string>
- <string name="wizard_transproxy_none">Hiçbiri</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Kablosuz aÄ?lar için Tor açık proxy ve USB Tethering\'e izin ver (yeniden baÅ?latmayı gerektirir)</string>
- <string name="button_grant_superuser">Superuser EriÅ?imi Talebi</string>
- <string name="pref_select_apps">Uygulamaları Seç</string>
- <string name="pref_select_apps_summary">Tor �zerinden Yönlendirilecek Uygulamaları Seç</string>
- <string name="pref_node_configuration">DüÄ?üm Ayarları</string>
- <string name="pref_node_configuration_summary">Bu ayarlar baÄ?lantınızın anonimliÄ?ini azaltabilecek geliÅ?miÅ? ayarlardır.</string>
- <string name="pref_entrance_node">GiriÅ? Noktaları</string>
- <string name="pref_entrance_node_summary">Ä°lk düÄ?üm için parmak izleri, rumuzlar, ülkeler, adresler</string>
- <string name="pref_entrance_node_dialog">GiriÅ? DüÄ?ümlerini Girin</string>
- <string name="pref_allow_background_starts_title">Arka planda çalıÅ?maya izin ver</string>
- <string name="pref_allow_background_starts_summary">Herhangi bir uygulamanın Orbot aracılıÄ?ıyla Tor ve ilgili hizmetleri baÅ?latması için izin ver</string>
- <string name="button_proxy_all">Tüm baÄ?lantılar için Vekil Sunucu kullan</string>
- <string name="button_proxy_none">Vekil Sunucu kullanma</string>
- <string name="button_invert_selection">Ters seçim</string>
- <string name="pref_proxy_title">Giden AÄ? Sunucusu (tercihe baÄ?lı)</string>
- <string name="pref_proxy_type_title">Giden proxy tipi</string>
- <string name="pref_proxy_type_summary">Proxy sunucusunu kullanmak için protokoller: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Proxy tipini girin</string>
- <string name="pref_proxy_host_title">Giden proxy sunucusu</string>
- <string name="pref_proxy_host_summary">Vekil Sunucusu adı</string>
- <string name="pref_proxy_host_dialog">Vekil Host\'u girin</string>
- <string name="pref_proxy_port_title">Giden vekil baÄ?lantı noktası</string>
- <string name="pref_proxy_port_summary">Vekil Sunucusu baÄ?lantı noktası</string>
- <string name="pref_proxy_port_dialog">Vekil baÄ?lantı noktasını girin</string>
- <string name="pref_proxy_username_title">Giden Vekil Kullanıcı Adı</string>
- <string name="pref_proxy_username_summary">Vekil Kullanıcı Adı (tercihe baÄ?lı)</string>
- <string name="pref_proxy_username_dialog">Vekil Kullanıcı Adı girin</string>
- <string name="pref_proxy_password_title">Giden Vekil Parolası</string>
- <string name="pref_proxy_password_summary">Vekil parolası (tercihe baÄ?lı)</string>
- <string name="pref_proxy_password_dialog">Vekil Parolası girin</string>
- <string name="status">Durum</string>
- <string name="setting_up_full_transparent_proxying_">Tamamen saydam vekil kuruluyor...</string>
- <string name="setting_up_app_based_transparent_proxying_">Uygulamaya özel saydam proxy kuruluyor...</string>
- <string name="transparent_proxying_enabled">Saydam vekil AKTÄ°F</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy Tethering\'e açıldı!</string>
- <string name="warning_error_starting_transparent_proxying_">UYARI: Å?effaf proxy baÅ?latılırken hata oluÅ?tu</string>
- <string name="transproxy_rules_cleared">TransProxy kuralları temizlendi</string>
- <string name="couldn_t_start_tor_process_">Tor iÅ?lemi baÅ?latılamadı</string>
- <string name="privoxy_is_running_on_port_">Polipo bu port üzerinde çalıÅ?ıyor:</string>
- <string name="setting_up_port_based_transparent_proxying_">Port tabanlı Å?effaf vekillendirme ayarlanıyor...</string>
- <string name="bridge_error">Köprü hatası</string>
- <string name="bridge_requires_ip">Köprü özelliÄ?ini kullanmak adına, en az bir tane köprü IP adresi girmelisiniz.</string>
- <string name="send_email_for_bridges">Gmail hesabınızdan bridges@xxxxxxxxxxxxxx adresine içinde sadece \"get bridges\" yazılı bir eposta gönderin.</string>
- <string name="error">Hata</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">EriÅ?ilebilirAdresleriniz ayarlarınız bir istisnaya yol açtı!</string>
- <string name="your_relay_settings_caused_an_exception_">Tor aktarıcı ayarlarınız bir istisnaya yol açtı!</string>
- <string name="exit_nodes">Ã?ıkıÅ? DüÄ?ümleri</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Son düÄ?üm için parmak izleri, rumuzlar, ülkeler, adresler</string>
- <string name="enter_exit_nodes">Ã?ıkıÅ? baÄ?lantılarını girin</string>
- <string name="exclude_nodes">Å?u baÄ?lantıları dahil etmeyin</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Dahil edilmeyecek parmak izleri, takma adlar, ülkeler ve adresler</string>
- <string name="enter_exclude_nodes">GiriÅ? baÄ?lantılarını girin</string>
- <string name="strict_nodes">DeÄ?iÅ?meyen baÄ?lantılar</string>
- <string name="use_only_these_specified_nodes">*Sadece* bu baÄ?lantıları kullan</string>
- <string name="bridges">Köprüler</string>
- <string name="use_bridges">Köprü kullan</string>
- <string name="bridges_obfuscated">GizlenmiÅ? köprüler</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor aÄ?ına baÅ?ka giriÅ? baÄ?lantılarına izin ver</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Yapılandırılan köprüler gizlenmiÅ? ise izin ver</string>
- <string name="ip_address_and_port_of_bridges">Köprülerin IP adresleri ve baÄ?lantı noktaları</string>
- <string name="enter_bridge_addresses">Köprü Adresleri Gir</string>
- <string name="relays">Aktarıcılar</string>
- <string name="relaying">Aktarmak</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Cihazınızı çıkıÅ? yapmayan aktarıcı olması için aktif edin</string>
- <string name="relay_port">Aktarıcı Portu</string>
- <string name="listening_port_for_your_tor_relay">Tor aktarıcınız için dinleme port\'u</string>
- <string name="enter_or_port">OR port\'u gir</string>
- <string name="relay_nickname">Aktarıcı rumuzu</string>
- <string name="the_nickname_for_your_tor_relay">Tor aktarıcınız için rumuz</string>
- <string name="enter_a_custom_relay_nickname">�zel aktarıcı rumuzu girin</string>
- <string name="reachable_addresses">UlaÅ?ılabilir adresler</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Bir güvenlik duvarı arkasındaki sınırlı kullanıcı olarak baÄ?lan</string>
- <string name="reachable_ports">UlaÅ?ılabilir baÄ?lantı noktaları</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Sınırlayıcı güvenlik duvarı ardındaki ulaÅ?ılabilir baÄ?lantı noktaları</string>
- <string name="enter_ports">BaÄ?lantı noktaları gir</string>
- <string name="enable_hidden_services">GizlenmiÅ? Servis Sunucusu</string>
- <string name="run_servers_accessible_via_the_tor_network">cihazdaki sunucunun Tor aÄ?ından ulaÅ?ılmasına izin ver</string>
- <string name="enter_localhost_ports_for_hidden_services">gizlenmiÅ? servis sunucuları için localhost baÄ?lantı noktası gir</string>
- <string name="hidden_service_ports">GizlenmiÅ? Servis BaÄ?lantı Noktaları</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">GizlenmiÅ? servisiniz için adreslenebilir ad (otomatik olarak verilmiÅ?tir)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">hata giderme kaydını tut (görüntülemek için adb veya aLogCat gerekir)</string>
- <string name="project_home">Proje adres(ler)i:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor Lisansı</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">�çüncü Parti Yazılım:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Bir uygulama Tor aÄ?ında gizlenmiÅ? sunucu baÄ?lantı noktası %S açmak istiyor. EÄ?er uygulamaya güveniyorsanız bu güvenlidir.</string>
- <string name="found_existing_tor_process">varolan bir Tor iÅ?lemi bulundu...</string>
- <string name="something_bad_happened">Kötü bir Å?ey oldu. Kayıtlara bakınız</string>
- <string name="hidden_service_on">gizlenmiÅ? servis:</string>
- <string name="unable_to_read_hidden_service_name">gizli hizmet adı okunamıyor</string>
- <string name="unable_to_start_tor">Tor baÅ?latılamadı:</string>
- <string name="unable_to_reset_tor">Cihazınızı yeniden baÅ?latın, Tor\'u sıfırlamak mümkün deÄ?il! </string>
- <string name="pref_use_sys_iptables_title">Varsayılan Ip tablolarını kullan</string>
- <string name="pref_use_sys_iptables_summary">Orbot ile birlikte gelenler yerine kurulu iptables binary kullan</string>
- <string name="error_installing_binares">Tor binary kurulumu veya yükseltilmesi mümkün deÄ?il.</string>
- <string name="pref_use_persistent_notifications">Orbot baÄ?lı olduÄ?u sürece simgeyi araç çubuÄ?unda tut</string>
- <string name="pref_use_persistent_notifications_title">Bildirimler her zaman açık</string>
- <string name="pref_use_expanded_notifications">Tor çıkıÅ? ülkesi ve IP için geniÅ?letilmiÅ? bildirim göster</string>
- <string name="pref_use_expanded_notifications_title">GeniÅ?letilmiÅ? Bildirimler</string>
- <string name="notification_using_bridges">Köprüler etkinleÅ?tirildi!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Dil</string>
- <string name="set_locale_summary">Orbot için yerel ayarları ve dili seç</string>
- <string name="wizard_locale_title">Dili seçin</string>
- <string name="wizard_locale_msg">Varsayılanda bırak veya geçerli dile geç</string>
- <string name="powered_by">Tor tarafından desteklenmektedir</string>
- <string name="btn_save_settings">Ayarları kaydet</string>
- <string name="no_internet_connection_tor">Ä°nternet baÄ?lantısı yok; Tor bekleme modunda...</string>
- <string name="bandwidth_">Bant geniÅ?liÄ?i:</string>
- <string name="down">aÅ?aÄ?ı</string>
- <string name="up">yukarı</string>
- <string name="pref_disable_network_title">BaÄ?lantı yokken Otomatik Uykuya Geç</string>
- <string name="pref_disable_network_summary">Ä°nternet olmadıÄ?ında Tor\'u uykuya al</string>
- <string name="newnym">Yeni bir Tor kimliÄ?ine geçiÅ? yaptınız!</string>
- <string name="menu_verify_browser">Tarayıcı</string>
- <string name="menu_use_chatsecure">ChatSecure Kullan</string>
- <string name="permission_manage_tor_label">Tor\'u Yönet</string>
- <string name="permission_manage_tor_description">Tor servisini kontrol etmek için bu uygulamayı etkinleÅ?tir</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox yüklü gibi görünmüyor. Bu konuyla alakalı yardım istiyor musun, ya da sadece tarayıcı mı açılsın?</string>
- <string name="install_apps_">Uygulamalar kurulsun mu?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Hiçbir aÄ? baÄ?lantısı yok. Tor uyku moduna alınıyor...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">AÄ? baÄ?lantısı iyi. Tor uyandırılıyor... </string>
- <string name="updating_settings_in_tor_service">Tor hizmet ayarları güncellemesi</string>
- <string name="pref_socks_title">SOCKS için Tor kullan</string>
- <string name="pref_socks_dialog">SOCKS Port Yapılandırma</string>
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Tor Å?effaf Vekil Proxy Port\'u için (varsayılan olarak: 9040 veya devre dıÅ?ı bırakmak için 0) deÄ?erlerini öneriyor</string>
- <string name="pref_transport_dialog">TransProxy Port Yapılandırma</string>
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_dialog">DNS Port Yapılandırma</string>
- <string name="pref_torrc_title">Torrc �zel Yapılandırma</string>
- <string name="pref_torrc_summary">SADECE UZMANLAR: DoÄ?rudan torrc yapılandırma satırları girin</string>
- <string name="pref_torrc_dialog">Torrc yapılandırma</string>
- <string name="wizard_tips_martus">Mobil Martus - Benetech İnsan Hakları Belgeleri Uygulaması</string>
- <string name="your_tor_public_ips_">Umumi Tor IP adresiniz:</string>
- <string name="app_conflict">Uygulama çatıÅ?ması</string>
- <string name="pref_transproxy_refresh_title">TransProxy Otomatik Yenileme</string>
- <string name="pref_transproxy_refresh_summary">AÄ? durumu deÄ?iÅ?tiÄ?inde TransProxy kurallarını yeniden uygula</string>
- <string name="pref_transproxy_flush_title">TransProxy Kurallarını KALDIR</string>
- <string name="pref_transproxy_flush_summary">Tüm TransProxy aÄ? kurallarını temizlemek için buraya dokunun</string>
- <string name="transparent_proxy_rules_flushed_">Å?effaf vekil kuralları silindi!</string>
- <string name="you_do_not_have_root_access_enabled">ROOT eriÅ?im izniniz yok</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ayarların etkin olması için Orbot\'u durdurup yeniden baÅ?latmak gerekebilir.</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Köprüler Güncellendi</string>
- <string name="restart_orbot_to_use_this_bridge_">DeÄ?iÅ?iklikleri etkinleÅ?tirmek için lütfen Orbot\'u yeniden baÅ?latın</string>
- <string name="menu_qr">QR Kodları</string>
- <string name="bridge_mode">Köprü Modu</string>
- <string name="get_bridges_email">Eposta</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">EtkinleÅ?tirin</string>
- <string name="apps_mode">Uygulamalar için VPN Modu</string>
- <string name="send_email">Eposta Gönder</string>
- <string name="install_orweb">Orfox yükle</string>
- <string name="standard_browser">Standart Tarayıcı</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOT: Sadece standart Tor köprüleri Intel X86/ATOM cihazlarda çalıÅ?ır</string>
- <string name="vpn_default_world">Dünya</string>
-</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
deleted file mode 100644
index a57001d..0000000
--- a/res/values-uk/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot â?? Ñ?е вÑ?лÑ?на пÑ?огÑ?ама длÑ? пÑ?окÑ?Ñ?-з\'Ñ?днанÑ?, Ñ?ка дозволÑ?Ñ? Ñ?нÑ?им додаÑ?кам безпеÑ?нÑ?Ñ?е викоÑ?иÑ?Ñ?овÑ?ваÑ?и Ñ?нÑ?еÑ?неÑ?-з\'Ñ?днаннÑ?. Orbot викоÑ?иÑ?Ñ?овÑ?Ñ? Tor длÑ? Ñ?иÑ?Ñ?Ñ?ваннÑ? Ñ?нÑ?еÑ?неÑ?-Ñ?Ñ?аÑ?Ñ?кÑ?, Ñ?кий далÑ? пÑ?иÑ?овÑ?Ñ?Ñ?Ñ?Ñ?Ñ? пÑ?д Ñ?аÑ? пеÑ?еÑ?иланнÑ? Ñ?еÑ?ез кÑ?лÑ?ка комп\'Ñ?Ñ?еÑ?Ñ?в Ñ? Ñ?Ñ?зниÑ? Ñ?аÑ?Ñ?инаÑ? планеÑ?и. Tor Ñ? вÑ?лÑ?ним пÑ?огÑ?амним забезпеÑ?еннÑ?м, а Ñ?акож вÑ?дкÑ?иÑ?оÑ? меÑ?ежеÑ?, Ñ?о допомагаÑ? заÑ?иÑ?Ñ?иÑ?иÑ?Ñ? вÑ?д меÑ?ежевого Ñ?Ñ?еженнÑ?, Ñ?ке загÑ?ожÑ?Ñ? оÑ?обиÑ?Ñ?Ñ?й Ñ?вободÑ? Ñ?а пÑ?иваÑ?номÑ? жиÑ?Ñ?Ñ?, конÑ?Ñ?денÑ?Ñ?йнÑ?й бÑ?знеÑ?-дÑ?Ñ?лÑ?ноÑ?Ñ?Ñ? Ñ? конÑ?акÑ?ам, а Ñ?акож деÑ?жавноÑ? пÑ?огÑ?ами безпеки, Ñ?о в
Ñ?дома Ñ?к аналÑ?з Ñ?Ñ?аÑ?Ñ?кÑ?.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">запÑ?Ñ?к Ñ? зÑ?пинка Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Ð?апÑ?Ñ?к Orbot...</string>
- <string name="status_activated">Ð?Ñ?д\'Ñ?днаний до меÑ?ежÑ? Tor</string>
- <string name="status_disabled">«Orbot» вÑ?д\'Ñ?днаний</string>
- <string name="tor_process_starting">Ð?апÑ?Ñ?каÑ?Ñ?Ñ?Ñ?Ñ? клÑ?Ñ?нÑ? Tor...</string>
- <string name="tor_process_complete">завеÑ?Ñ?ено.</string>
- <string name="tor_process_waiting">оÑ?Ñ?кÑ?ваннÑ?...</string>
- <string name="not_anonymous_yet">Ð?опеÑ?едженнÑ?: Ð?аÑ? Ñ?Ñ?аÑ?Ñ?к Ñ?е не анонÑ?мний! Ð?Ñ?дÑ? лаÑ?ка, налаÑ?Ñ?Ñ?йÑ?е Ñ?воÑ? додаÑ?ки длÑ? викоÑ?иÑ?Ñ?аннÑ? HTTP пÑ?окÑ?Ñ? 127.0.0.1:8118 або ж SOCKS4A або SOCKS5 пÑ?окÑ?Ñ? 127.0.0.1:9050</string>
- <string name="menu_home">Ð?омÑ?вка</string>
- <string name="menu_browse">Ð?еÑ?еглÑ?д</string>
- <string name="menu_settings">Ð?алаÑ?Ñ?Ñ?ваннÑ?</string>
- <string name="menu_log">Ð?Ñ?Ñ?нал</string>
- <string name="menu_info">Ð?овÑ?дка</string>
- <string name="menu_start">Ð?апÑ?Ñ?Ñ?иÑ?и</string>
- <string name="menu_stop">Ð?Ñ?пиниÑ?и</string>
- <string name="menu_about">Ð?Ñ?о пÑ?огÑ?амÑ?</string>
- <string name="main_layout_download">Ð?аванÑ?ажиÑ?и</string>
- <string name="main_layout_upload">Ð?аванÑ?ажиÑ?и</string>
- <string name="button_help">Ð?овÑ?дка</string>
- <string name="button_close">Ð?акÑ?иÑ?и</string>
- <string name="button_about">Ð?Ñ?о пÑ?огÑ?амÑ?</string>
- <string name="button_clear_log">Ð?Ñ?иÑ?Ñ?иÑ?и жÑ?Ñ?нал</string>
- <string name="menu_verify">Ð?еÑ?евÑ?Ñ?ка</string>
- <string name="menu_exit">Ð?иÑ?Ñ?д</string>
- <string name="menu_scan">СканÑ?ваÑ?и BridgeQR</string>
- <string name="menu_share_bridge">Ð?одÑ?лиÑ?иÑ?Ñ? BridgeQR</string>
- <string name="press_to_start">- довге наÑ?иÑ?неннÑ? длÑ? запÑ?Ñ?кÑ? -</string>
- <string name="pref_trans_proxy_group">Ð?Ñ?озоÑ?ий пÑ?окÑ?Ñ? (Ð?оÑ?Ñ?Ñ?бен root)</string>
- <string name="pref_trans_proxy_title">Ð?Ñ?озоÑ?ий пÑ?окÑ?Ñ?</string>
- <string name="pref_trans_proxy_summary">Ð?вÑ?омаÑ?иÑ?на Ñ?оÑ?иÑ?Ñ?каÑ?Ñ?Ñ? додаÑ?кÑ?в</string>
- <string name="pref_transparent_all_title">Ð?апÑ?авлÑ?Ñ?и вÑ?е Ñ?еÑ?ез Tor</string>
- <string name="pref_transparent_all_summary">Ð?апÑ?авлÑ?Ñ?и Ñ?Ñ?аÑ?Ñ?к вÑ?Ñ?Ñ? додаÑ?кÑ?в Ñ?еÑ?ез Tor</string>
- <string name="pref_transparent_port_fallback_title">РезеÑ?вний пÑ?окÑ?Ñ? поÑ?Ñ?</string>
- <string name="pref_transparent_port_fallback_summary">Ð?Ð?Ð?Ð?Ð Ð?Ð?Ð?Ð?Ð?Ð?Я: Ð?бÑ?одиÑ?Ñ? загалÑ?нÑ? поÑ?Ñ?и (80, 443, Ñ? Ñ?.д.). *Ð?Ð?Ð?Ð?Ð Ð?СТУÐ?УÐ?Ð?ТÐ? ТÐ?Ð?ЬÐ?Ð?* Ñ?кÑ?о Ñ?ежими «Ð?Ñ?е» або «Ð?одаÑ?ки» не пÑ?аÑ?Ñ?Ñ?Ñ?Ñ?.</string>
- <string name="pref_transparent_port_title">СпиÑ?ок Ð?оÑ?Ñ?Ñ?в</string>
- <string name="pref_transparent_port_summary">СпиÑ?ок поÑ?Ñ?Ñ?в длÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?. *Ð?Ð?Ð?Ð?Ð Ð?СТÐ?Ð?УÐ?Ð?ТÐ? ТÐ?Ð?ЬÐ?Ð?* Ñ?кÑ?о Ñ?ежими «Ð?Ñ?е» або «Ð?одаÑ?ки» не пÑ?аÑ?Ñ?Ñ?Ñ?Ñ?.</string>
- <string name="pref_transparent_port_dialog">Ð?ведÑ?Ñ?Ñ? поÑ?Ñ?и длÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?</string>
- <string name="pref_has_root">Ð?апиÑ?аÑ?и root доÑ?Ñ?Ñ?п</string>
- <string name="pref_has_root_summary">Ð?апиÑ?аÑ?и root доÑ?Ñ?Ñ?п длÑ? пÑ?озоÑ?оÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?</string>
- <string name="status_install_success">Ð?одаÑ?ок Tor Ñ?Ñ?пÑ?Ñ?но вÑ?Ñ?ановленей!</string>
- <string name="status_install_fail">Ð?е вдалоÑ?Ñ? вÑ?Ñ?ановиÑ?и додаÑ?ок Tor. Ð?Ñ?дÑ? лаÑ?ка, пеÑ?евÑ?Ñ?Ñ?е Ñ?иÑ?Ñ?емний жÑ?Ñ?нал Ñ? повÑ?домÑ?е нам: tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ð?омилка додаÑ?кÑ?</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Ð?Ñ?о Orbot</string>
- <string name="btn_next">Ð?пеÑ?ед</string>
- <string name="btn_back">Ð?азад</string>
- <string name="btn_finish">Ð?авеÑ?Ñ?иÑ?и</string>
- <string name="btn_okay">OK</string>
- <string name="btn_cancel">Ð?Ñ?дмÑ?на</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Ð?еÑ?кÑ? вÑ?домоÑ?Ñ?Ñ? пÑ?о пÑ?огÑ?амÑ? Orbot</string>
- <string name="wizard_details_msg">Orbot â?? Ñ?е пÑ?огÑ?ама з вÑ?дкÑ?иÑ?им кодом, Ñ?ка мÑ?Ñ?Ñ?иÑ?Ñ? Tor, LibEvent Ñ?а Polipo. Ð?Ñ?н надаÑ? локалÑ?ний HTTP-пÑ?окÑ?Ñ? (8118) Ñ? SOCKS-пÑ?окÑ?Ñ? (9050) Ñ? меÑ?ежÑ? Tor. Orbot Ñ?акож дозволÑ?Ñ? на пÑ?иÑ?Ñ?Ñ?оÑ?Ñ? з пÑ?авами root пеÑ?еÑ?илаÑ?и веÑ?Ñ? Ñ?нÑ?еÑ?неÑ?-Ñ?Ñ?аÑ?Ñ?к Ñ?еÑ?ез Tor.</string>
- <string name="wizard_permissions_root">Ð?озвÑ?л оÑ?Ñ?имано</string>
- <string name="wizard_permissions_stock">Ð?озволи Orbot</string>
- <string name="wizard_premissions_msg_root">ЧÑ?дово! Ð?и визнаÑ?или, Ñ?о ви надалили root пÑ?ава длÑ? Orbot. Ð?и бÑ?демо викоÑ?иÑ?Ñ?овÑ?ваÑ?и Ñ?Ñ? можливÑ?Ñ?Ñ?Ñ? з Ñ?озÑ?мом.</string>
- <string name="wizard_permissions_msg_stock"> ХоÑ?а Ñ?е й не вимагаÑ?Ñ?Ñ?Ñ?Ñ?, Orbot може бÑ?Ñ?и поÑ?Ñ?жнÑ?Ñ?им Ñ?нÑ?Ñ?Ñ?Ñ?менÑ?ом, Ñ?кÑ?о ваÑ? пÑ?иÑ?Ñ?Ñ?Ñ?й маÑ? пÑ?ава root. Ð?аÑ?иÑ?нÑ?Ñ?Ñ? на кнопкÑ? нижÑ?е Ñ? надайÑ?е Orbot Ñ?Ñ?пеÑ?Ñ?илÑ?! </string>
- <string name="wizard_permissions_no_root">ЯкÑ?о Ñ? ваÑ? немаÑ? root пÑ?ав або ви не Ñ?озÑ?мÑ?Ñ?Ñ?е пÑ?о Ñ?о говоÑ?имо, пÑ?оÑ?Ñ?о впевнÑ?Ñ?Ñ?Ñ?Ñ?, Ñ?о викоÑ?иÑ?Ñ?овÑ?Ñ?Ñ?е додаÑ?ки, Ñ?озÑ?обленÑ? длÑ? Orbot.</string>
- <string name="wizard_permissions_consent">Я Ñ?озÑ?мÑ?Ñ? Ñ? Ñ?оÑ?Ñ? пÑ?одовжиÑ?и без пÑ?ав Ñ?Ñ?пеÑ?коÑ?иÑ?Ñ?Ñ?ваÑ?а</string>
- <string name="wizard_permission_enable_root">Ð?адаÑ?и root пÑ?ава Orbot</string>
- <string name="wizard_configure">Ð?алаÑ?Ñ?Ñ?ваÑ?и Tor-иÑ?Ñ?каÑ?Ñ?Ñ?</string>
- <string name="wizard_configure_msg">Ð?Ñ?огÑ?ама Orbot даÑ? вам можливÑ?Ñ?Ñ?Ñ? маÑ?Ñ?Ñ?Ñ?Ñ?изÑ?ваÑ?и Ñ?Ñ?аÑ?Ñ?к вÑ?Ñ?Ñ? додаÑ?кÑ?в Ñ?еÑ?ез Tor Ð?Ð?Ð? вибÑ?аÑ?и додаÑ?ки длÑ? маÑ?Ñ?Ñ?Ñ?Ñ?изаÑ?Ñ?Ñ? Ñ?амоÑ?Ñ?Ñ?йно.</string>
- <string name="wizard_configure_all">Ð?аÑ?Ñ?Ñ?Ñ?Ñ?изÑ?ваÑ?и вÑ?Ñ? додаÑ?ки Ñ?еÑ?ез Tor</string>
- <string name="wizard_configure_select_apps">Ð?ибеÑ?Ñ?Ñ?Ñ? додаÑ?ки длÑ? маÑ?Ñ?Ñ?Ñ?Ñ?изаÑ?Ñ?Ñ? Ñ?еÑ?ез Tor</string>
- <string name="wizard_tips_tricks">Orbot-задÑ?Ñ?нÑ? додаÑ?ки</string>
- <string name="wizard_tips_msg">Ð?и Ñ?адимо вам заванÑ?ажиÑ?и Ñ? викоÑ?иÑ?Ñ?овÑ?ваÑ?и додаÑ?ки, Ñ?кÑ? вмÑ?Ñ?Ñ?Ñ? пÑ?аÑ?Ñ?ваÑ?и напÑ?Ñ?мÑ? Ñ?еÑ?ез Orbot. Ð?аÑ?иÑ?нÑ?Ñ?Ñ? на кнопки нижÑ?е, Ñ?об запÑ?Ñ?Ñ?иÑ?и пÑ?оÑ?еÑ? вÑ?Ñ?ановленнÑ?.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Ð?аÑ?иÑ?ений обмÑ?н повÑ?домленнÑ?ми в Android</string>
- <string name="wizard_tips_proxy">Ð?алаÑ?Ñ?Ñ?ваннÑ? пÑ?окÑ?Ñ? â?? дÑ?знайÑ?еÑ?Ñ? Ñ?к налаÑ?Ñ?Ñ?ваÑ?и додаÑ?ки длÑ? Ñ?обоÑ?и з Orbot</string>
- <string name="wizard_tips_duckgo">Ð?одаÑ?ок поÑ?Ñ?ковоÑ? Ñ?иÑ?Ñ?еми DuckDuckGo</string>
- <string name="wizard_tips_twitter">Twitter пÑ?дÑ?Ñ?имÑ?Ñ? http пÑ?окÑ?Ñ? «localhost:8118»</string>
- <string name="wizard_tips_story_maker">StoryMaker â?? Ð?апиÑ?Ñ?Ñ?Ñ? Ñ?Ñ?Ñ?оÑ?Ñ?Ñ? Ñ? залиÑ?Ñ?е Ñ?Ñ? Tor\'Ñ? длÑ? безпеки!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Ð?алаÑ?Ñ?Ñ?ваннÑ? Ð?Ñ?окÑ?Ñ?</string>
- <string name="wizard_proxy_help_msg">ЯкÑ?о пÑ?огÑ?амка длÑ? Android, Ñ?кÑ? Ð?и викоÑ?иÑ?Ñ?овÑ?Ñ?Ñ?е, пÑ?дÑ?Ñ?имÑ?Ñ? HTTP або SOCKS пÑ?окÑ?Ñ?, Ñ?о Ð?и можеÑ?е налаÑ?Ñ?Ñ?ваÑ?и Ñ?Ñ? на пÑ?д\'Ñ?днаннÑ? до Orbot Ñ? викоÑ?иÑ?Ñ?аннÑ? Tor.\n\n\n Ð?наÑ?еннÑ? Ñ?оÑ?Ñ?а â?? 127.0.0.1 або «localhost». Ð?лÑ? HTTP, номеÑ? поÑ?Ñ?Ñ? â?? 8118. Ð?лÑ? SOCKS пÑ?окÑ?Ñ? â?? 9050. Ð?о можливоÑ?Ñ?Ñ?, викоÑ?иÑ?Ñ?овÑ?йÑ?е SOCKS4A або SOCKS5.\n \n\n\n Ð?и можеÑ?е дÑ?знаÑ?иÑ?Ñ? бÑ?лÑ?Ñ?е пÑ?о Ñ?обоÑ?Ñ? Ñ?еÑ?ез пÑ?окÑ?Ñ? на Android, пÑ?оÑ?иÑ?авÑ?и Ñ?ей FAQ: http://tinyurl.com/proxyandroid\n</string>
- <string name="wizard_final">Ð?Ñ?огÑ?ама Orbot гоÑ?ова до викоÑ?иÑ?Ñ?аннÑ?!</string>
- <string name="wizard_final_msg">Ð?Ñ?лÑ?йони лÑ?дей Ñ? вÑ?Ñ?омÑ? Ñ?вÑ?Ñ?Ñ? викоÑ?иÑ?Ñ?овÑ?Ñ?Ñ?Ñ? Tor з Ñ?Ñ?зниÑ? пÑ?иÑ?ин.\n\nÐ?Ñ?Ñ?налÑ?Ñ?Ñ?и Ñ? блогеÑ?и, акÑ?ивÑ?Ñ?Ñ?и заÑ?иÑ?Ñ?Ñ? пÑ?ав лÑ?дини, Ñ?Ñ?довÑ? виконавÑ?Ñ?, Ñ?олдаÑ?и, коÑ?поÑ?аÑ?Ñ?Ñ?, гÑ?омадÑ?ни кÑ?аÑ?н з Ñ?епÑ?еÑ?ивним Ñ?ежимом, Ñ? пÑ?оÑ?Ñ?Ñ? лÑ?диâ?¦ а Ñ?епеÑ? гоÑ?овÑ? Ñ? Ð?и!</string>
- <string name="wizard_exit_at_first_screen_toast">Ð?Ñ?дÑ? лаÑ?ка, налаÑ?Ñ?Ñ?йÑ?е Orbot, пеÑ?Ñ? нÑ?ж поÑ?неÑ?е ним коÑ?иÑ?Ñ?Ñ?ваÑ?иÑ?Ñ?!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="tor_check">Це пÑ?изведе до запÑ?Ñ?кÑ? веб-бÑ?аÑ?зеÑ?а, вибÑ?аного на ваÑ?омÑ? пÑ?иÑ?Ñ?Ñ?оÑ? за замовÑ?Ñ?ваннÑ?м, Ñ? пÑ?дклÑ?Ñ?еннÑ? до Ñ?айÑ?Ñ? https://check.torproject.org, з меÑ?оÑ? пеÑ?евÑ?Ñ?ки пÑ?авилÑ?ноÑ?Ñ?Ñ? Ñ?обоÑ?и Orbot Ñ? визнаÑ?еннÑ?, Ñ?и пÑ?д\'Ñ?днанÑ? ви до меÑ?ежÑ? Tor.</string>
- <string name="pref_hs_group">Ð?Ñ?иÑ?ованÑ? Ñ?еÑ?вÑ?Ñ?и</string>
- <string name="pref_general_group">Ð?Ñ?новнÑ?</string>
- <string name="pref_start_boot_title">Ð?апÑ?Ñ?к Orbot пÑ?и ввÑ?мкненнÑ?</string>
- <string name="pref_start_boot_summary">Ð?вÑ?омаÑ?иÑ?ний запÑ?Ñ?к Orbot Ñ?а з\'Ñ?днаннÑ? Tor пÑ?д Ñ?аÑ? запÑ?Ñ?кÑ? ваÑ?ого пÑ?иÑ?Ñ?Ñ?оÑ?</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot дозволÑ?Ñ? викоÑ?иÑ?Ñ?овÑ?ваÑ?и Tor на Android!\n\nTor дозволÑ?Ñ? Ð?ам заÑ?иÑ?Ñ?иÑ?иÑ?Ñ? вÑ?д Ñ?Ñ?лÑ?Ñ?Ñ?аÑ?Ñ?Ñ? вмÑ?Ñ?Ñ?Ñ?, аналÑ?зÑ? Ñ?Ñ?аÑ?Ñ?кÑ? Ñ? Ñ?поÑ?Ñ?еÑ?еженнÑ? за меÑ?ежеÑ?, Ñ?кÑ? Ñ?Ñ?авлÑ?Ñ?Ñ? пÑ?д загÑ?озÑ? пÑ?иваÑ?нÑ?Ñ?Ñ?Ñ?, конÑ?Ñ?денÑ?Ñ?йнÑ? Ñ?нÑ?оÑ?маÑ?Ñ?Ñ? Ñ?а оÑ?обиÑ?Ñ?Ñ? Ñ?Ñ?оÑ?Ñ?нки.\n\nЦей майÑ?Ñ?еÑ? допоможе Ð?ам налаÑ?Ñ?Ñ?ваÑ?и Orbot Ñ? Tor на Ð?аÑ?омÑ? пÑ?иÑ?Ñ?Ñ?оÑ?.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Ð?опеÑ?едженнÑ?</string>
- <string name="wizard_warning_msg">Ð?Ñ?оÑ?Ñ?е вÑ?Ñ?ановленнÑ? Orbot не зÑ?обиÑ?Ñ? авÑ?омаÑ?иÑ?но Ð?аÑ? мобÑ?лÑ?ний Ñ?Ñ?аÑ?Ñ?к анонÑ?мним.\n\nÐ?и повиннÑ? пÑ?авилÑ?но налаÑ?Ñ?Ñ?ваÑ?и Orbot, Ð?аÑ? пÑ?иÑ?Ñ?Ñ?Ñ?й Ñ?а Ñ?нÑ?Ñ? додаÑ?ки, Ñ?об Ñ?Ñ?пÑ?Ñ?но викоÑ?иÑ?Ñ?овÑ?ваÑ?и Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Ð?озволи</string>
- <string name="wizard_permissions_root_msg1">Ð?и Ñ?акож можеÑ?е за бажаннÑ?м надаÑ?и Orbot пÑ?ава «СÑ?пеÑ?коÑ?иÑ?Ñ?Ñ?ваÑ?а» длÑ? доÑ?Ñ?Ñ?пÑ? до пÑ?оÑ?Ñ?нÑ?Ñ?иÑ? можливоÑ?Ñ?ей, Ñ?ипÑ? \"Ð?Ñ?озоÑ?а Ð?Ñ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?\".</string>
- <string name="wizard_permissions_root_msg2">ЯкÑ?о ви не Ñ?оÑ?еÑ?е Ñ?обиÑ?и Ñ?е, Ñ?одÑ? бÑ?дÑ? лаÑ?ка, впевнÑ?Ñ?Ñ?Ñ?Ñ?, Ñ?о викоÑ?иÑ?Ñ?овÑ?Ñ?Ñ?е додаÑ?ки Ñ?Ñ?воÑ?енÑ? длÑ? Ñ?обоÑ?и з Orbot.</string>
- <string name="wizard_permissions_no_root_msg">СÑ?оже, ваÑ? пÑ?иÑ?Ñ?Ñ?Ñ?й не маÑ? root-пÑ?ав або не надаÑ? доÑ?Ñ?Ñ?пÑ? до «СÑ?пеÑ?коÑ?иÑ?Ñ?Ñ?ваÑ?а».\n\nÐ?Ñ?дÑ? лаÑ?ка, Ñ?пÑ?обÑ?йÑ?е наÑ?омÑ?Ñ?Ñ?Ñ? Ñ?ежим «Ð?одаÑ?ки» на головномÑ? екÑ?анÑ?.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Ð?одаÑ?ки, Ñ?о пÑ?аÑ?Ñ?Ñ?Ñ?Ñ? з Orbot:</string>
- <string name="wizard_tips_gibberbot">ChatSecure: додаÑ?ок длÑ? Ñ?пÑ?лкÑ?ваннÑ? з пÑ?дÑ?Ñ?имкоÑ? Off-the-Record Ñ?иÑ?Ñ?Ñ?ваннÑ?</string>
- <string name="wizard_tips_play">Ð?найÑ?и вÑ?Ñ? додаÑ?ки Guardian Project на Google Play</string>
- <string name="wizard_tips_fdroid">Ð?найÑ?и вÑ?Ñ? додаÑ?ки Guardian Project на F-Droid</string>
- <string name="wizard_tips_fdroid_org">Ð?найÑ?и вÑ?Ñ? додаÑ?ки Guardian Project на https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Ð?Ñ?озоÑ?е Ð?Ñ?окÑ?Ñ?ваннÑ?</string>
- <string name="wizard_transproxy_msg">Це дозволиÑ?Ñ? ваÑ?им додаÑ?кам авÑ?омаÑ?иÑ?но пÑ?аÑ?Ñ?ваÑ?и в меÑ?ежÑ? Tor без бÑ?дÑ?-Ñ?коÑ? конÑ?Ñ?гÑ?Ñ?аÑ?Ñ?Ñ?.</string>
- <string name="wizard_transproxy_hint">(Ð?ознаÑ?Ñ?е даний пÑ?нкÑ?, Ñ?кÑ?о ви не знаÑ?Ñ?е пÑ?о Ñ?о йде мова)</string>
- <string name="wizard_transproxy_none">Ð?Ñ?</string>
- <string name="pref_transparent_tethering_title">РоздаÑ?а Tor</string>
- <string name="pref_transparent_tethering_summary">Ð?вÑ?мкнÑ?Ñ?и Ð?Ñ?озоÑ?Ñ? Ð?Ñ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ? Tor длÑ? пÑ?иÑ?Ñ?Ñ?оÑ?в з Ñ?оздаÑ?еÑ? по Wi-Fi Ñ? USB (поÑ?Ñ?Ñ?бен пеÑ?езапÑ?Ñ?к)</string>
- <string name="button_grant_superuser">Ð?апиÑ?аÑ?и Ð?оÑ?Ñ?Ñ?п СÑ?пеÑ?коÑ?иÑ?Ñ?Ñ?ваÑ?а</string>
- <string name="pref_select_apps">Ð?ибÑ?анÑ? додаÑ?ки</string>
- <string name="pref_select_apps_summary">Ð?ибÑ?аÑ?и додаÑ?ки длÑ? напÑ?авленнÑ? Ñ?еÑ?ез Tor</string>
- <string name="pref_node_configuration">Ð?онÑ?Ñ?гÑ?Ñ?аÑ?Ñ?Ñ? вÑ?зла</string>
- <string name="pref_node_configuration_summary">Це додаÑ?ковÑ? налаÑ?Ñ?Ñ?ваннÑ?, Ñ?кÑ? можÑ?Ñ?Ñ? знизиÑ?и ваÑ?Ñ? анонÑ?мнÑ?Ñ?Ñ?Ñ?</string>
- <string name="pref_entrance_node">Ð?Ñ?Ñ?днÑ? вÑ?зли</string>
- <string name="pref_entrance_node_summary">Ð?Ñ?дбиÑ?ки, нÑ?ки, кÑ?аÑ?ни Ñ?а адÑ?еÑ?и длÑ? пеÑ?Ñ?ого Ñ?Ñ?Ñ?ибка</string>
- <string name="pref_entrance_node_dialog">Ð?ведÑ?Ñ?Ñ? вÑ?Ñ?днÑ? вÑ?зли</string>
- <string name="button_proxy_all">УÑ?Ñ? Ñ?еÑ?ез пÑ?окÑ?Ñ?</string>
- <string name="button_proxy_none">Ð?оден Ñ?еÑ?ез пÑ?окÑ?Ñ?</string>
- <string name="button_invert_selection">Ð?нвеÑ?Ñ?Ñ?ваÑ?и видÑ?леннÑ?</string>
- <string name="pref_proxy_title">Ð?иÑ?Ñ?дна пÑ?окÑ?Ñ? меÑ?ежа</string>
- <string name="pref_proxy_type_title">Тип Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_type_summary">Ð?Ñ?оÑ?окол длÑ? викоÑ?иÑ?Ñ?аннÑ? пÑ?окÑ?Ñ?-Ñ?еÑ?веÑ?ом: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Ð?ведÑ?Ñ?Ñ? Тип Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_host_title">ХоÑ?Ñ? Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_host_summary">Ð?м\'Ñ? Ñ?оÑ?Ñ?а пÑ?окÑ?Ñ?-Ñ?еÑ?веÑ?а</string>
- <string name="pref_proxy_host_dialog">Ð?ведÑ?Ñ?Ñ? ХоÑ?Ñ? Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_port_title">Ð?оÑ?Ñ? Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_port_summary">Ð?оÑ?Ñ? пÑ?окÑ?Ñ?-Ñ?еÑ?веÑ?а</string>
- <string name="pref_proxy_port_dialog">Ð?ведÑ?Ñ?Ñ? поÑ?Ñ? Ð?Ñ?окÑ?Ñ?</string>
- <string name="pref_proxy_username_title">Ð?м\'Ñ? коÑ?иÑ?Ñ?Ñ?ваÑ?а длÑ? виÑ?Ñ?дного пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ?</string>
- <string name="pref_proxy_username_summary">Ð?м\'Ñ? коÑ?иÑ?Ñ?Ñ?ваÑ?а длÑ? пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ? (вказÑ?ваÑ?и не обов\'Ñ?зково)</string>
- <string name="pref_proxy_username_dialog">Ð?ведÑ?Ñ?Ñ? Ð?м\'Ñ? коÑ?иÑ?Ñ?Ñ?ваÑ?а пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ?</string>
- <string name="pref_proxy_password_title">Ð?аÑ?олÑ? виÑ?Ñ?дного пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ?</string>
- <string name="pref_proxy_password_summary">Ð?аÑ?олÑ? пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ? (вказÑ?ваÑ?и не обов\'Ñ?зково)</string>
- <string name="pref_proxy_password_dialog">Ð?ведÑ?Ñ?Ñ? паÑ?олÑ? пÑ?окÑ?Ñ?-з\'Ñ?днаннÑ?</string>
- <string name="status">СÑ?аÑ?Ñ?Ñ?</string>
- <string name="setting_up_full_transparent_proxying_">Ð?Ñ?Ñ?ановленнÑ? загалÑ?ноÑ? пÑ?озоÑ?оÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ð?Ñ?Ñ?ановленнÑ? заÑ?нованоÑ? на додаÑ?каÑ? пÑ?озоÑ?оÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?...</string>
- <string name="transparent_proxying_enabled">Ð?Ñ?озоÑ?а пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ? Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy пÑ?дÑ?Ñ?имÑ?Ñ? РоздаÑ?Ñ?!</string>
- <string name="warning_error_starting_transparent_proxying_">УÐ?Ð?Ð?Ð?: помилка запÑ?Ñ?кÑ? пÑ?озоÑ?оÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?!</string>
- <string name="transproxy_rules_cleared">Ð?Ñ?авила TransProxy видаленÑ?</string>
- <string name="couldn_t_start_tor_process_">Ð?еможливо запÑ?Ñ?Ñ?иÑ?и Tor: </string>
- <string name="privoxy_is_running_on_port_">Polipo пÑ?аÑ?Ñ?Ñ? на поÑ?Ñ?Ñ?: </string>
- <string name="setting_up_port_based_transparent_proxying_">Ð?Ñ?Ñ?ановленнÑ? заÑ?новане на поÑ?Ñ?аÑ? пÑ?озоÑ?оÑ? пÑ?окÑ?иÑ?Ñ?каÑ?Ñ?Ñ?...</string>
- <string name="bridge_error">Ð?омилка Ð?оÑ?Ñ?Ñ?</string>
- <string name="bridge_requires_ip">Ð?лÑ? викоÑ?иÑ?Ñ?аннÑ? моÑ?Ñ?Ñ?, необÑ?Ñ?дно задаÑ?и IP адÑ?еÑ?Ñ? Ñ?к мÑ?нÑ?мÑ?м одного моÑ?Ñ?Ñ?.</string>
- <string name="send_email_for_bridges">Ð?Ñ?дпÑ?авÑ?е email на адÑ?еÑ?Ñ? bridges@xxxxxxxxxxxxxx з Ñ?Ñ?дком «get bridges» в Ñ?Ñ?лÑ? повÑ?домленнÑ? Ñ?з облÑ?кового запиÑ?Ñ? gmail.</string>
- <string name="error">Ð?омилка</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Ð?аÑ?Ñ? налаÑ?Ñ?Ñ?ваннÑ? Ð?оÑ?Ñ?Ñ?пниÑ? Ð?дÑ?еÑ? викликали виклÑ?Ñ?еннÑ?!</string>
- <string name="your_relay_settings_caused_an_exception_">Ð?алаÑ?Ñ?Ñ?ваннÑ? ваÑ?ого Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а викликали виклÑ?Ñ?еннÑ?!</string>
- <string name="exit_nodes">Ð?иÑ?Ñ?днÑ? Ð?Ñ?зли</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ð?Ñ?дбиÑ?ки, нÑ?ки, кÑ?аÑ?ни Ñ?а адÑ?еÑ?и длÑ? оÑ?Ñ?аннÑ?ого Ñ?Ñ?Ñ?ибка</string>
- <string name="enter_exit_nodes">Ð?ведÑ?Ñ?Ñ? Ð?иÑ?Ñ?днÑ? Ð?Ñ?зли</string>
- <string name="exclude_nodes">Ð?иклÑ?Ñ?енÑ? Ð?Ñ?зли</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Ð?Ñ?дбиÑ?ки, нÑ?ки, кÑ?аÑ?ни Ñ?а адÑ?еÑ?и на виклÑ?Ñ?еннÑ?</string>
- <string name="enter_exclude_nodes">Ð?ведÑ?Ñ?Ñ? Ð?иклÑ?Ñ?енÑ? Ð?Ñ?зли</string>
- <string name="strict_nodes">ТоÑ?нÑ? Ð?Ñ?зли</string>
- <string name="use_only_these_specified_nodes">Ð?икоÑ?иÑ?Ñ?овÑ?ваÑ?и *Ñ?Ñ?лÑ?ки* Ñ?Ñ? заданÑ? вÑ?зли</string>
- <string name="bridges">Ð?оÑ?Ñ?и</string>
- <string name="use_bridges">Ð?икоÑ?иÑ?Ñ?Ñ?вÑ?ваÑ?и Ð?оÑ?Ñ?и</string>
- <string name="bridges_obfuscated">Ð?бÑ?Ñ?Ñ?кованÑ? Ð?оÑ?Ñ?и</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ð?клÑ?Ñ?иÑ?и алÑ?Ñ?еÑ?наÑ?ивнÑ? вÑ?Ñ?днÑ? вÑ?зли в меÑ?ежÑ? Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ð?аданÑ? моÑ?Ñ?и обÑ?Ñ?Ñ?кованÑ?</string>
- <string name="ip_address_and_port_of_bridges">IP адÑ?еÑ?и Ñ? поÑ?Ñ?и моÑ?Ñ?Ñ?в</string>
- <string name="enter_bridge_addresses">Ð?ведÑ?Ñ?Ñ? Ð?дÑ?еÑ?и Ð?оÑ?Ñ?Ñ?в</string>
- <string name="relays">РеÑ?Ñ?анÑ?лÑ?Ñ?оÑ?и</string>
- <string name="relaying">РеÑ?Ñ?анÑ?лÑ?Ñ?Ñ?Ñ?</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Ð?озволиÑ?и ваÑ?омÑ? пÑ?иÑ?Ñ?Ñ?оÑ? бÑ?Ñ?и невиÑ?Ñ?дним Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?ом</string>
- <string name="relay_port">Ð?оÑ?Ñ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="listening_port_for_your_tor_relay">СлÑ?Ñ?аÑ?Ñ?ий поÑ?Ñ? длÑ? ваÑ?ого Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а Tor</string>
- <string name="enter_or_port">Ð?ведÑ?Ñ?Ñ? поÑ?Ñ? OR</string>
- <string name="relay_nickname">Ð?м\'Ñ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="the_nickname_for_your_tor_relay">Ð?м\'Ñ? длÑ? ваÑ?ого Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а Tor</string>
- <string name="enter_a_custom_relay_nickname">Ð?ведÑ?Ñ?Ñ? коÑ?иÑ?Ñ?Ñ?ваÑ?Ñ?ке Ñ?м\'Ñ? Ñ?еÑ?Ñ?анÑ?лÑ?Ñ?оÑ?а</string>
- <string name="reachable_addresses">Ð?оÑ?Ñ?Ñ?пнÑ? Ð?дÑ?еÑ?и</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ð?апÑ?Ñ?каÑ?и Ñ?к клÑ?Ñ?нÑ? за бÑ?андмаÑ?еÑ?ом з обмежÑ?Ñ?Ñ?ими полÑ?Ñ?иками</string>
- <string name="reachable_ports">Ð?оÑ?Ñ?Ñ?пнÑ? поÑ?Ñ?и</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ð?оÑ?Ñ?и доÑ?Ñ?Ñ?пнÑ? Ñ?з обмежÑ?ваного бÑ?андмаÑ?еÑ?а</string>
- <string name="enter_ports">Ð?ведÑ?Ñ?Ñ? поÑ?Ñ?и</string>
- <string name="enable_hidden_services">Ð?вÑ?мкнÑ?Ñ?и Ð?Ñ?иÑ?ованÑ? СлÑ?жби</string>
- <string name="run_servers_accessible_via_the_tor_network">запÑ?Ñ?Ñ?иÑ?и Ñ?еÑ?веÑ?и доÑ?Ñ?Ñ?пнÑ? Ñ?еÑ?ез меÑ?ежÑ? Tor</string>
- <string name="enter_localhost_ports_for_hidden_services">введÑ?Ñ?Ñ? локалÑ?нÑ? поÑ?Ñ?и длÑ? пÑ?иÑ?ованиÑ? Ñ?лÑ?жб</string>
- <string name="hidden_service_ports">Ð?оÑ?Ñ?и Ð?Ñ?иÑ?ованоÑ? СлÑ?жби</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">адÑ?еÑ?оване Ñ?м\'Ñ? длÑ? ваÑ?оÑ? пÑ?иÑ?ованоÑ? Ñ?лÑ?жби (Ñ?генеÑ?овано авÑ?омаÑ?иÑ?но)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ввÑ?мкнÑ?Ñ?и вивÑ?д логÑ? налогодженнÑ? (поÑ?Ñ?Ñ?бно викоÑ?иÑ?Ñ?овÑ?ваÑ?и adb або aLogCat длÑ? пеÑ?еглÑ?дÑ?)</string>
- <string name="project_home">Ð?омаÑ?нÑ? Ñ?Ñ?оÑ?Ñ?нка(и) пÑ?оекÑ?Ñ?: </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Ð?Ñ?Ñ?ензÑ?Ñ? Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Ð?Ñ?огÑ?ами Ñ?Ñ?оÑ?оннÑ?Ñ? Ñ?озÑ?обникÑ?в: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="hidden_service_request">Ð?одаÑ?ок Ñ?оÑ?е вÑ?дкÑ?иÑ?и пÑ?иÑ?ований поÑ?Ñ? Ñ?еÑ?веÑ?а %S меÑ?ежÑ? Tor. Це безпеÑ?но, Ñ?кÑ?о ви довÑ?Ñ?Ñ?Ñ?Ñ?е Ñ?Ñ?омÑ? додаÑ?кÑ?.</string>
- <string name="found_existing_tor_process">знайдено Ñ?Ñ?нÑ?Ñ?Ñ?ий пÑ?оÑ?еÑ? Tor...</string>
- <string name="something_bad_happened">Ð?иникла Ñ?каÑ?Ñ? помилка. Ð?еÑ?евÑ?Ñ?Ñ?е лог</string>
- <string name="hidden_service_on">пÑ?иÑ?ована Ñ?лÑ?жба на:</string>
- <string name="unable_to_read_hidden_service_name">неможливо пÑ?оÑ?иÑ?аÑ?и Ñ?м\'Ñ? пÑ?иÑ?ованоÑ? Ñ?лÑ?жби</string>
- <string name="unable_to_start_tor">Ð?еможливо запÑ?Ñ?Ñ?иÑ?и Tor:</string>
- <string name="unable_to_reset_tor">Ð?еÑ?езаванÑ?ажÑ?е Ñ?вÑ?й пÑ?иÑ?Ñ?Ñ?Ñ?й, не вдаÑ?Ñ?Ñ?Ñ?Ñ? пеÑ?езапÑ?Ñ?Ñ?иÑ?и Tor!</string>
- <string name="pref_use_sys_iptables_title">Ð?икоÑ?иÑ?Ñ?овÑ?ваÑ?и Iptables за замовÑ?Ñ?ваннÑ?м</string>
- <string name="pref_use_sys_iptables_summary">викоÑ?иÑ?Ñ?овÑ?ваÑ?и вбÑ?дований бÑ?наÑ?ник iptables замÑ?Ñ?Ñ?Ñ? Ñ?ого Ñ?о надаÑ?Ñ?Ñ?Ñ?Ñ? з Orbot</string>
- <string name="error_installing_binares">Ð?Ñ?наÑ?нÑ? Ñ?айли Tor не змогли вÑ?Ñ?ановиÑ?иÑ?Ñ? або оновиÑ?иÑ?Ñ?.</string>
- <string name="pref_use_persistent_notifications">Ð?авжди показÑ?ваÑ?и Ñ?конкÑ? в панелÑ? завданÑ? коли Orbot пÑ?дклÑ?Ñ?ений</string>
- <string name="pref_use_persistent_notifications_title">СповÑ?Ñ?еннÑ? пÑ?о поÑ?Ñ?Ñ?йнÑ? Ñ?обоÑ?Ñ?</string>
- <string name="pref_use_expanded_notifications">Ð?оказаÑ?и Ñ?озÑ?иÑ?ене Ñ?повÑ?Ñ?еннÑ? з кÑ?аÑ?ноÑ? виÑ?одÑ? Tor Ñ?а IP</string>
- <string name="pref_use_expanded_notifications_title">РозÑ?иÑ?енÑ? Ñ?повÑ?Ñ?еннÑ?</string>
- <string name="notification_using_bridges">Ð?оÑ?Ñ?и ввÑ?мкнÑ?Ñ?Ñ?!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Ð?ова</string>
- <string name="set_locale_summary">Ð?ибÑ?аÑ?и локалÑ? Ñ? мовÑ? длÑ? Orbot</string>
- <string name="wizard_locale_title">Ð?ибÑ?аÑ?и Ð?овÑ?</string>
- <string name="wizard_locale_msg">Ð?алиÑ?иÑ?и за замовÑ?Ñ?ваннÑ?м або пеÑ?еклÑ?Ñ?иÑ?и поÑ?оÑ?нÑ? мовÑ?</string>
- <string name="powered_by">вÑ?д Tor</string>
- <string name="btn_save_settings">Ð?беÑ?егÑ?и Ð?алаÑ?Ñ?Ñ?ваннÑ?</string>
- <string name="no_internet_connection_tor">Ð?емаÑ? Ñ?нÑ?еÑ?неÑ?-з\'Ñ?днаннÑ?; Tor в Ñ?ежимÑ? оÑ?Ñ?кÑ?ваннÑ?â?¦</string>
- <string name="bandwidth_">Ð?анал:</string>
- <string name="down">вÑ?</string>
- <string name="up">виÑ?</string>
- <string name="pref_disable_network_title">Ð?е викоÑ?иÑ?Ñ?овÑ?ваÑ?и Ñ?ежим Ñ?нÑ?</string>
- <string name="pref_disable_network_summary">Ð?еÑ?еводиÑ?и в Ñ?ежим Ñ?нÑ? пÑ?и вÑ?дÑ?Ñ?Ñ?ноÑ?Ñ?Ñ? Ñ?нÑ?еÑ?неÑ?-з\'Ñ?днаннÑ?</string>
- <string name="newnym">Ð?и пеÑ?емкнÑ?лиÑ?Ñ? на новий Ñ?денÑ?иÑ?Ñ?каÑ?оÑ? Tor!</string>
- <string name="menu_use_chatsecure">Ð?икоÑ?иÑ?Ñ?овÑ?ваÑ?и ChatSecure</string>
- <string name="permission_manage_tor_label">Ð?еÑ?Ñ?ваннÑ? Tor</string>
- <string name="permission_manage_tor_description">Ð?озволиÑ?и додаÑ?кÑ? кеÑ?Ñ?ваÑ?и Ñ?еÑ?вÑ?Ñ?ом Tor</string>
- <string name="install_apps_">Ð?Ñ?Ñ?ановиÑ?и додаÑ?ки?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Ð?емаÑ? доÑ?Ñ?Ñ?пÑ? до меÑ?ежÑ? Ñ?нÑ?еÑ?неÑ?. Tor пеÑ?еÑ?одиÑ?Ñ? в Ñ?ежим Ñ?нÑ?â?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Ð?оÑ?Ñ?Ñ?п до меÑ?ежÑ? Ñ?оÑ?оÑ?ий. Tor виÑ?одиÑ?Ñ? з Ñ?ежимÑ? Ñ?нÑ?â?¦</string>
- <string name="updating_settings_in_tor_service">оновленнÑ? налаÑ?Ñ?Ñ?ванÑ? Ñ? Ñ?еÑ?вÑ?Ñ?Ñ? Tor</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Ð?оÑ?Ñ?, Ñ?кий Tor надаÑ? Ñ?воÑ?мÑ? SOCKS-пÑ?окÑ?Ñ? (за замовÑ?Ñ?ваннÑ?м: 9050 або 0 длÑ? вимкненнÑ?)</string>
- <string name="pref_socks_dialog">Ð?алаÑ?Ñ?Ñ?ваннÑ? поÑ?Ñ?Ñ? SOCKS</string>
- <string name="pref_transport_title">Ð?оÑ?Ñ? Tor TransProxy</string>
- <string name="pref_transport_summary">Ð?оÑ?Ñ?, Ñ?кий Tor надаÑ? Ñ?воÑ?мÑ? вÑ?дкÑ?иÑ?омÑ? пÑ?окÑ?Ñ? (за замовÑ?Ñ?ваннÑ?м: 9040 або 0 длÑ? вимкненнÑ?)</string>
- <string name="pref_transport_dialog">Ð?алаÑ?Ñ?Ñ?ваннÑ? поÑ?Ñ?Ñ? Tor TransProxy</string>
- <string name="pref_dnsport_title">Ð?оÑ?Ñ? Tor DNS</string>
- <string name="pref_dnsport_summary">Ð?оÑ?Ñ?, Ñ?кий Tor надаÑ? Ñ?воÑ?мÑ? DNS (за замовÑ?Ñ?ваннÑ?м: 5400 або 0 длÑ? вимкненнÑ?)</string>
- <string name="pref_dnsport_dialog">Ð?алаÑ?Ñ?Ñ?ваннÑ? поÑ?Ñ?Ñ? DNS</string>
- <string name="pref_torrc_title">Ð?одаÑ?ковÑ? налаÑ?Ñ?Ñ?ваннÑ? Torrc</string>
- <string name="pref_torrc_summary">Ð?Ð?ШÐ? Ð?Ð?Я Ð?Ð?СÐ?Ð?РТÐ?Ð?: введÑ?Ñ?Ñ? безпоÑ?еÑ?еднÑ? Ñ?Ñ?дки налаÑ?Ñ?Ñ?ванÑ? torrc</string>
- <string name="pref_torrc_dialog">Ð?одаÑ?кове Ñ? Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus â?? пÑ?огÑ?ама Benetech Human Rights Documentation </string>
- <string name="your_tor_public_ips_">Ð?аÑ?Ñ? пÑ?блÑ?Ñ?нÑ? Tor IP:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ð?Ñ?дÑ? лаÑ?ка, вимкнÑ?Ñ?Ñ? Ñ?ей додаÑ?ок Ñ? Android->Ð?алаÑ?Ñ?Ñ?ваннÑ?->Ð?Ñ?огÑ?ами, Ñ?кÑ?о Ñ? Ð?аÑ? виникаÑ?Ñ?Ñ? пÑ?облеми з Orbot: </string>
- <string name="app_conflict">Ð?онÑ?лÑ?кÑ? пÑ?огÑ?ам</string>
- <string name="pref_transproxy_refresh_title">Ð?вÑ?опеÑ?езапÑ?Ñ?к Transproxy</string>
- <string name="pref_transproxy_refresh_summary">Ð?овÑ?оÑ?но заÑ?Ñ?оÑ?Ñ?ваÑ?и пÑ?авила Transproxy, коли змÑ?ниÑ?Ñ?Ñ?Ñ? Ñ?Ñ?ан меÑ?ежÑ?</string>
- <string name="pref_transproxy_flush_title">Ð?Ð Ð?Ð?УСÐ?Ð?Ð? Ð?Ð?Ð?УЧÐ?Ð?Ð?Я Transproxy</string>
- <string name="pref_transproxy_flush_summary">Ð?аÑ?иÑ?нÑ?Ñ?Ñ? Ñ?Ñ?Ñ?, Ñ?об зÑ?Ñ?внÑ?Ñ?и Ñ?Ñ?Ñ? пÑ?авила меÑ?ежÑ? transproxy Ð?Ð?Ð Ð?Ð?</string>
- <string name="transparent_proxy_rules_flushed_">Ð?Ñ?авила пÑ?озоÑ?ого пÑ?окÑ?Ñ? зÑ?Ñ?внÑ?но!</string>
- <string name="you_do_not_have_root_access_enabled">У Ð?аÑ? не ввÑ?мкнено ROOT-доÑ?Ñ?Ñ?п</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ð?ам може бÑ?Ñ?и поÑ?Ñ?Ñ?бно зÑ?пиниÑ?и Ñ? запÑ?Ñ?Ñ?иÑ?и Orbot, Ñ?об змÑ?ни налаÑ?Ñ?Ñ?ванÑ? вÑ?Ñ?Ñ?пили в дÑ?Ñ?.</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Ð?оÑ?Ñ?и оновлено</string>
- <string name="restart_orbot_to_use_this_bridge_">Ð?Ñ?дÑ? лаÑ?ка, пеÑ?езапÑ?Ñ?Ñ?Ñ?Ñ?Ñ? Orbot, Ñ?об змÑ?ни ввÑ?йÑ?ли в Ñ?илÑ?</string>
- <string name="menu_qr">QR-коди</string>
- <string name="bridge_mode">Режим моÑ?Ñ?Ñ?</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Ð?еб</string>
- <string name="activate">Ð?кÑ?ивÑ?ваÑ?и</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ð?и можеÑ?е Ñ?вÑ?мкнÑ?Ñ?и пÑ?опÑ?Ñ?каннÑ? Ñ?Ñ?аÑ?Ñ?кÑ? Ñ?Ñ?Ñ?Ñ? пÑ?огÑ?ам на Ð?аÑ?омÑ? пÑ?оÑ?Ñ?Ñ?оÑ? Ñ?еÑ?ез меÑ?ежÑ? Tor, Ñ?коÑ?иÑ?Ñ?авÑ?иÑ?Ñ? Ñ?Ñ?нкÑ?Ñ?Ñ?Ñ? VPN в Android.\n\n*УÐ?Ð?Ð?Ð?* Це нова, екÑ?пеÑ?именÑ?алÑ?на Ñ?Ñ?нкÑ?Ñ?Ñ? Ñ? в деÑ?киÑ? випадкаÑ? може не запÑ?Ñ?Ñ?иÑ?иÑ?Ñ? авÑ?омаÑ?иÑ?но або зÑ?пиниÑ?иÑ?Ñ?. Ð?Ñ? Ð?Ð? ваÑ?Ñ?о викоÑ?иÑ?Ñ?овÑ?ваÑ?и длÑ? анонÑ?мноÑ?Ñ?Ñ? Ñ? Ð?Ð?ШÐ? длÑ? обÑ?одÑ? Ñ?аÑ?Ñ?волÑ?в Ñ?а Ñ?Ñ?лÑ?Ñ?Ñ?Ñ?в.</string>
- <string name="send_email">Ð?адÑ?Ñ?лаÑ?и лиÑ?Ñ?а</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ð?и можеÑ?е оÑ?Ñ?имаÑ?и адÑ?еÑ?Ñ? моÑ?Ñ?Ñ? Ñ?еÑ?ез елекÑ?Ñ?оннÑ? поÑ?Ñ?Ñ?, веб або вÑ?дÑ?канÑ?вавÑ?и QR-код моÑ?Ñ?Ñ?. Ð?беÑ?Ñ?Ñ?Ñ? «Email» Ñ?и «Ð?еб» Ñ?низÑ?, Ñ?об подаÑ?и запиÑ? на адÑ?еÑ?Ñ? моÑ?Ñ?Ñ?.\n\nÐ?оли Ñ? Ð?аÑ? бÑ?де адÑ?еÑ?а, Ñ?копÑ?Ñ?йÑ?е Ñ? вÑ?Ñ?авÑ?е Ñ?Ñ? Ñ? Ñ?оздÑ?лÑ? «Ð?оÑ?Ñ?и» налаÑ?Ñ?Ñ?ванÑ? Orbot Ñ? пеÑ?езапÑ?Ñ?Ñ?Ñ?Ñ?Ñ? його.</string>
- <string name="standard_browser">СÑ?андаÑ?Ñ?ний бÑ?аÑ?зеÑ?</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Ð?Ð Ð?Ð?Ð?ТÐ?Ð?: Ð?иÑ?е Ñ?Ñ?андаÑ?Ñ?нÑ? моÑ?Ñ?и Tor пÑ?аÑ?Ñ?Ñ?Ñ?Ñ? на пÑ?иÑ?Ñ?Ñ?оÑ?Ñ? з Intel X86/Atom</string>
-</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
deleted file mode 100644
index e2b496b..0000000
--- a/res/values-ur/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="menu_browse">براؤز Ú©Û?جÛ?Û?</string>
- <string name="menu_info">Ù?دد</string>
- <string name="button_help">Ù?دد</string>
- <string name="button_close">بÙ?د Ú©Û?جÛ?Û?</string>
- <string name="btn_back">Ù¾Û?Ú?Ú¾Û?</string>
- <string name="btn_cancel">تÙ?سÛ?Ø® Ú©Û?جÛ?Û?</string>
- <!--Welcome Wizard strings (DJH)-->
- <!--END Welcome Wizard strings (DJH)-->
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
deleted file mode 100644
index f722c7a..0000000
--- a/res/values-uz/strings.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="status_starting_up">Orbot ishga tushirilmoqdaâ?¦</string>
- <string name="status_activated">Tor tarmog\'iga ulangan</string>
- <string name="menu_home">Uy</string>
- <string name="menu_settings">Moslamalar</string>
- <string name="menu_info">Yordam</string>
- <string name="menu_about">Dastur haqida</string>
- <string name="main_layout_download">Yuklab olish</string>
- <string name="main_layout_upload">Yuklash</string>
- <string name="button_help">Yordam</string>
- <string name="button_close">Yopish</string>
- <string name="button_about">Dasur haqida</string>
- <string name="menu_verify">Tekshirish</string>
- <string name="menu_exit">Chiqish</string>
- <string name="title_error">Dastur xatosi</string>
- <string name="wizard_title">Orbot</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proksi moslamalari</string>
- <string name="wizard_final">Orbot tayyor!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">Umumiy</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <!--Permissions screen-->
- <!--TipsAndTricks screen-->
- <!--Transparent Proxy screen-->
- <string name="pref_proxy_type_dialog">Proksi turini kiriting</string>
- <string name="pref_proxy_password_summary">Proksi maxfiy so\'zi (Qo\'shimcha)</string>
- <string name="pref_proxy_password_dialog">Proksi maxfiy so\'zini kiriting</string>
- <string name="status">Holati</string>
- <string name="error">Xato</string>
- <string name="the_tor_license">Tor litsenziyasi</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="found_existing_tor_process">Mavjud bo\'lgan Tor jarayoni topildi...</string>
- <string name="default_bridges"></string>
- <string name="set_locale_summary">Orbot uchun lokal va tilni tanlash</string>
- <string name="wizard_locale_title">Tilni tanlansh</string>
- <string name="btn_save_settings">Moslamalarni saqlash</string>
-</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
deleted file mode 100644
index c56e82d..0000000
--- a/res/values-vi/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot là má»?t ứng dụng proxy miá»?n phÃ, Ä?ược thiết kế Ä?á»? là m cho các ứng dụng khác kết ná»?i vá»?i Internet má»?t cách an toà n. Orbot sá» dụng Tor Ä?á»? mã hóa các kết ná»?i Internet rá»?i ẩn danh nó thông qua má»?t loạt các nút trong mạng Tor. Tor là phần má»?m miá»?n phà và là má»?t mạng lÆ°á»?i má»? giúp bạn chá»?ng lại sá»± giám sát mạng, vá»?n Ä?e dá»?a riêng tÆ° trá»±c tuyến, hay các hoạt Ä?á»?ng bà máºt...</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">khá»?i Ä?á»?ng và ngừng Tor</string>
- <string name="tor_proxy_service_process">d�ch vụ tor proxy</string>
- <string name="status_starting_up">Ortbot Ä?ang khá»?i Ä?á»?ng...</string>
- <string name="status_activated">Ä?ã kết ná»?i vá»?i mạng Tor</string>
- <string name="status_disabled">Orbot Ä?ã Ä?ược vô hiá»?u hóa</string>
- <string name="status_shutting_down">Ä?ang tắt dá»?ch vụ Tor</string>
- <string name="tor_process_starting">Bắt Ä?ầu Tor</string>
- <string name="tor_process_complete">hoà n thà nh.</string>
- <string name="tor_process_waiting">Ä?ang chá»?.</string>
- <string name="not_anonymous_yet">Chú ý: Kết ná»?i của bạn chÆ°a phải là ẩn danh! Hãy cà i Ä?ặt các ứng dụng của bạn Ä?á»? sá» dụng HTTP Proxy 127.0.0.1:8118, Proxy SOCKS4A hoặc proxy SOCKS5 127.0.0.1:9050</string>
- <string name="menu_home">Trang chủ</string>
- <string name="menu_browse">Trình duy�t</string>
- <string name="menu_settings">Thiết láºp</string>
- <string name="menu_log">Nháºt ký</string>
- <string name="menu_info">Giúp Ä?ỡ</string>
- <string name="menu_apps">Mạng riêng ảo</string>
- <string name="menu_start">Bắt Ä?ầu</string>
- <string name="menu_stop">Ngừng</string>
- <string name="menu_about">Vá»?</string>
- <string name="menu_promo_apps">Các ứng dụng khác...</string>
- <string name="main_layout_download">Tải v�</string>
- <string name="main_layout_upload">Tải lên</string>
- <string name="button_help">Giúp Ä?ỡ</string>
- <string name="button_close">Ä?óng</string>
- <string name="button_about">Giá»?i thiá»?u</string>
- <string name="button_clear_log">Xóa nháºt ký</string>
- <string name="menu_verify">Kiá»?m tra</string>
- <string name="menu_exit">Thoát</string>
- <string name="menu_scan">Quét mã BridgeQR</string>
- <string name="menu_share_bridge">Xuất mã BridgeQR</string>
- <string name="press_to_start">- nhấn giữ Ä?á»? khá»?i Ä?á»?ng -</string>
- <string name="pref_trans_proxy_group">Proxy trong su�t (Yêu cầu root)</string>
- <string name="pref_trans_proxy_title">Proxy trong suá»?t</string>
- <string name="pref_trans_proxy_summary">Tá»± Ä?á»?ng áp dụng Tor cho ứng dụng</string>
- <string name="pref_transparent_all_title">�p dụng Tor cho tất cả ứng dụng</string>
- <string name="pref_transparent_all_summary">Chuy�n tất cả các kết n�i của các ứng dụng qua Tor</string>
- <string name="pref_transparent_port_fallback_title">C�ng Proxy dự phòng</string>
- <string name="pref_transparent_port_fallback_summary">CHÃ? Ã?: Tránh dùng các cá»?ng thông dụng (80, 443, v.v...). *CHá»?* dùng nếu chế Ä?á»? \"áp dụng Tor cho tất cả\" hoặc \"chá»?n ứng dụng\" không dùng Ä?ược.</string>
- <string name="pref_transparent_port_title">Danh sách c�ng</string>
- <string name="pref_transparent_port_summary">Liá»?t kê các cá»?ng Ä?á»? áp dụng proxy. *CHá»?* dùng nếu chế Ä?á»? \"áp dụng Tor cho tất cả\" hoặc \"chá»?n ứng dụng\" không dùng Ä?ược.</string>
- <string name="pref_transparent_port_dialog">Ä?iá»?n sá»? cá»?ng Ä?á»? áp dụng proxy</string>
- <string name="pref_has_root">Yêu cầu root</string>
- <string name="pref_has_root_summary">Yêu cầu root Ä?á»? kÃch hoạt proxy trong suá»?t</string>
- <string name="status_install_success">Táºp nhá»? phân của Tor Ä?ã Ä?ược cà i Ä?ặt!</string>
- <string name="status_install_fail">Táºp nhá»? phân của Tor bá»? lá»?i khi cà i Ä?ặt. Xin hãy kiá»?m tra nháºt ký và thông báo cho tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Ứng dụng b� l�i</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">Vá»? Orbot</string>
- <string name="btn_next">Tiếp</string>
- <string name="btn_back">Trá»? vá»?</string>
- <string name="btn_finish">Kết thúc</string>
- <string name="btn_okay">Ä?á»?ng ý</string>
- <string name="btn_cancel">Hủy</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Và i chi tiết v� Orbot</string>
- <string name="wizard_details_msg">Orbot là má»?t ứng dụng mã nguá»?n má»? có chứa Tor, LibEvent và Polipo. Nó cung cấp má»?t proxy HTTP ná»?i bá»? (8118) và má»?t proxy SOCKS (9050) tá»?i mạng Tor. Orbot cÅ©ng có khả nÄ?ng chuyá»?n tất cả các kết ná»?i Internet thông qua Tor trên các thiết bá»? Ä?ã root.</string>
- <string name="wizard_permissions_root">Ä?ã cho phép quyá»?n</string>
- <string name="wizard_permissions_stock">Quyá»?n truy cáºp của Orbot</string>
- <string name="wizard_premissions_msg_root">Tuyá»?t! Chúng tôi Ä?ã nháºn ra máy bạn có root Ä?ược kÃch hoạt cho Orbot. Chúng tôi sẽ táºn dụng Ä?iá»?u nà y.</string>
- <string name="wizard_permissions_msg_stock">Mặc dù không cần thiết, nhÆ°ng Orbot có thá»? trá»? thà nh má»?t công cụ mạnh mẽ hÆ¡n nếu thiết bá»? của bạn có root. Hãy ấn nút dÆ°á»?i Ä?ây Ä?á»? cho phép Orbot có \"siêu nÄ?ng lá»±c\"!</string>
- <string name="wizard_permissions_no_root">Nếu bạn không root hoặc không rà nh vá»? những gì chúng tôi trình bà y, xin chá»? dùng những ứng dụng Ä?ã Ä?ược tạo ra Ä?á»? dùng kết hợp vá»?i Orbot.</string>
- <string name="wizard_permissions_consent">Tôi hi�u rõ và sẽ tiếp tục dùng mà không cần root</string>
- <string name="wizard_permission_enable_root">Cho phép Orbot truy cáºp root</string>
- <string name="wizard_configure">Cà i Ä?ặt thông báo cho Tor</string>
- <string name="wizard_configure_msg">Orbot cho phép chuy�n tất cả các kết n�i của các ứng dụng qua Tor HOẶC áp dụng cho từng ứng dụng riêng lẻ.</string>
- <string name="wizard_configure_all">�p dụng proxy Tor cho tất cả các ứng dụng</string>
- <string name="wizard_configure_select_apps">Lá»±a chá»?n từng ứng dụng Ä?á»? áp dụng Tor</string>
- <string name="wizard_tips_tricks">Các ứng dụng Ä?ã Ä?ược áp dụng Tor</string>
- <string name="wizard_tips_msg">Những ứng dụng sau Ä?ây Ä?ã Ä?ược thiết láºp Ä?á»? dùng vá»?i Orbot. Nhấn ứng dụng bất kỳ Ä?á»? cà i Ä?ặt ngay bây giá»?, hoặc bạn có thá»? tìm những ứng dụng nà y trên Google Play, tại trang GuardianProject.info hoặc qua F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Ứng dụng IM (tin nhắn tức thá»?i) bảo máºt cho Android</string>
- <string name="wizard_tips_proxy">Cà i Ä?ặt Proxy - Tìm hiá»?u cách thiết láºp ứng dụng Ä?á»? dùng vá»?i Orbot</string>
- <string name="wizard_tips_duckgo">Ứng dụng tìm kiếm DuckDuckGo</string>
- <string name="wizard_tips_twitter">Cà i proxy của Twitter v�i host là \"localhost\" và c�ng là 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Viết má»?t câu chuyá»?n rá»?i Ä?á»? nó cho Tor Ä?á»? bảo máºt!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Cà i Ä?ặt proxy</string>
- <string name="wizard_proxy_help_msg">Nếu ứng dụng Android mà bạn Ä?ang dùng há»? trợ giao thức proxy HTTP hay SOCKS, thì bạn có thá»? cấu hình nó kết ná»?i tá»?i Orbot và sá» dụng Tor.\n\n\n Cà i Ä?ặt host mặc Ä?á»?nh là 127.0.0.1 hoặc \"localhost\". Vá»?i HTTP, cá»?ng là 8118, còn SOCKS là 9050. Bạn nên dùng SOCKS4A hoặc SOCKS5 nếu có thá»?.\n \n\n\n Bạn có thá»? tìm hiá»?u thêm vá»? cấu hình proxy trên Android qua mục FAQ tại: http://tinyurl.com/proxyandroid</string>
- <string name="wizard_final">Orbot Ä?ã sẵn sà ng!</string>
- <string name="wizard_final_msg">Hà ng trÄ?m ngà n ngÆ°á»?i trên toà n thế giá»?i dùng Tor vá»?i nhiá»?u lý do. Những nhà báo, blogger, các nhà hoạt Ä?á»?ng nhân quyá»?n, an ninh, quân Ä?á»?i, tá»? chức, công dân của những nÆ°á»?c bá»? Ä?ang bá»? Ä?à n áp, hoặc chá»? là những ngÆ°á»?i dân bình thÆ°á»?ng... và bây giá»? là bạn cÅ©ng Ä?ang chuẩn bá»? là má»?t trong sá»? há»?!</string>
- <string name="wizard_exit_at_first_screen_toast">Vui lòng thiết láºp Orbot trÆ°á»?c khi bạn sá» dụng nó!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">Bạn Ä?ã kết ná»?i thà nh công tá»?i mạng Tor - nhÆ°ng Ä?iá»?u Ä?ó KHÃ?NG có nghÄ©a là thiết bá»? của bạn Ä?ã hoà n toà n an toà n. Bạn có thá»? kiá»?m tra kết ná»?i của bạn qua nút \"Trình duyá»?t\". \n\nTruy cáºp ttps://guardianproject.info/apps/orbot hoặc gá»i email tá»?i help@xxxxxxxxxxxxxxxxxxxx Ä?á»? biết thêm chi tiết.</string>
- <string name="tor_check">Sẽ má»? trang web https://check.torproject.org Ä?á»? kiá»?m tra xem Orbot Ä?ã Ä?ược cà i Ä?ặt Ä?úng chÆ°a và bạn có Ä?ang kết ná»?i qua Tor hay không.</string>
- <string name="pref_hs_group">D�ch vụ web hosting ẩn</string>
- <string name="pref_general_group">T�ng quát</string>
- <string name="pref_start_boot_title">Chạy Orbot khi khá»?i Ä?á»?ng thiết bá»?</string>
- <string name="pref_start_boot_summary">Tá»± khá»?i Ä?á»?ng Orbot và kết ná»?i và o mạng Tor sau khi thiết bá»? Android của bạn khá»?i Ä?á»?ng</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot mang Tor Ä?ến Android! \n\nTor giúp bạn chá»?ng lại bá»? lá»?c ná»?i dung mạng, các hoạt Ä?á»?ng phân tÃch kết ná»?i mạng và theo dõi mạng, vá»?n Ä?e dá»?a tá»?i sá»± riêng tÆ°, các thông tin bà máºt và các má»?i quan há»? cá nhân trên mạng. \n\nHÆ°á»?ng dẫn nà y sẽ giúp bạn thiết láºp Orbot và Tor trên thiết bá»? của bạn.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Cảnh báo</string>
- <string name="wizard_warning_msg">Chá»? Ä?Æ¡n thuần cà i Ä?ặt Orbot sẽ không tá»± Ä?á»?ng ẩn danh các kết ná»?i mạng di Ä?á»?ng của bạn.\n\nBạn bắt buá»?c phải thiết láºp Orbot Ä?úng cách, Ä?á»? thiết bá»? của bạn và các ứng dụng khác sá» dụng Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Quy�n ứng dụng</string>
- <string name="wizard_permissions_root_msg1">Bạn có thá»? tuỳ ý cho phép Orbot có truy cáºp root Ä?á»? kÃch hoạt những tÃnh nÄ?ng nâng cao, nhÆ° dùng proxy trong suá»?t chẳng hạn.</string>
- <string name="wizard_permissions_root_msg2">Nếu bạn không muá»?n là m Ä?iá»?u nà y, xin hãy dùng những ứng dụng Ä?ược tạo Ä?á»? dùng vá»?i Orbot.</string>
- <string name="wizard_permissions_no_root_msg">Thiết bá»? của bạn hình nhÆ° chÆ°a root hoặc Ä?ã cấp quyá»?n root hoặc truy cáºp root.\n\nVui lòng chá»?n chế Ä?á»? \"VPN\" trên mà n hình chÃnh Ä?á»? thay thế.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Các ứng dụng Ä?ã Ä?ược áp dụng Orbot</string>
- <string name="wizard_tips_gibberbot">ChatSecure: ứng dụng chat an toà n v�i mã hóa không-theo-dõi</string>
- <string name="wizard_tips_orweb">Orfox: Trình duyá»?t vá»?i tÃnh nÄ?ng bảo máºt nâng cao, hoạt Ä?á»?ng thông qua Tor</string>
- <string name="wizard_tips_play">Tìm những ứng dụng của Guardian Project trên Google Play</string>
- <string name="wizard_tips_fdroid">Tìm những ứng dụng của Guardian Project trên F-Droid</string>
- <string name="wizard_tips_fdroid_org">Tìm những ứng dụng của Guardian Project trên https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Proxy trong suá»?t</string>
- <string name="wizard_transproxy_msg">Cà i Ä?ặt nà y cho phép các ứng dụng của bạn tá»± Ä?á»?ng kết ná»?i qua mạng Tor mà không cần thiết láºp.</string>
- <string name="wizard_transproxy_hint">(Hãy chá»?n ô nà y nếu bạn không hiá»?u những gì chúng tôi Ä?ang nói)</string>
- <string name="wizard_transproxy_none">Không có</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">KÃch hoạt proxy Tor trong suá»?t Ä?á»? dùng cho WiFi/USB Tethering (cần khá»?i Ä?á»?ng lại)</string>
- <string name="button_grant_superuser">Yá»?u cầu truy cáºp root</string>
- <string name="pref_select_apps">Ch�n ứng dụng</string>
- <string name="pref_select_apps_summary">Ch�n những ứng dụng mà bạn mu�n kết n�i qua Tor</string>
- <string name="pref_node_configuration">Cấu hình nút</string>
- <string name="pref_node_configuration_summary">Những cà i Ä?ặt nâng cao nà y có thá»? giảm sá»± ẩn danh của bạn</string>
- <string name="pref_entrance_node">Nút và o (Entrace Nodes)</string>
- <string name="pref_entrance_node_summary">Dấu theo dõi (Fingerprint), biá»?t hiá»?u, quá»?c gia và Ä?á»?a chá»? cho nút Ä?ầu tiên</string>
- <string name="pref_entrance_node_dialog">Nháºp thông tin nút và o</string>
- <string name="pref_allow_background_starts_title">Cho phép khá»?i Ä?á»?ng ngầm</string>
- <string name="pref_allow_background_starts_summary">Cho phép ứng dụng bất kỳ yêu cầu Orbot khá»?i Ä?á»?ng Tor và các dá»?ch vụ liên quan</string>
- <string name="button_proxy_all">Proxy tất cả</string>
- <string name="button_proxy_none">Không dùng proxy</string>
- <string name="button_invert_selection">Ä?ảo ngược lá»±a chá»?n</string>
- <string name="pref_proxy_title">Proxy mạng ngõ ra (Outbound Network) (Tùy ch�n)</string>
- <string name="pref_proxy_type_title">Loại proxy ngõ ra</string>
- <string name="pref_proxy_type_summary">Giao thức dùng cho proxy: HTTP, HTTPS, SOCKS4, SOCKS5</string>
- <string name="pref_proxy_type_dialog">Nháºp loại proxy</string>
- <string name="pref_proxy_host_title">Host proxy ngõ ra</string>
- <string name="pref_proxy_host_summary">Hostname của proxy</string>
- <string name="pref_proxy_host_dialog">Nháºp host của proxy</string>
- <string name="pref_proxy_port_title">C�ng Proxy ngõ ra</string>
- <string name="pref_proxy_port_summary">C�ng của proxy</string>
- <string name="pref_proxy_port_dialog">Nháºp cá»?ng Proxy</string>
- <string name="pref_proxy_username_title">Tên tà i khoản proxy ngõ ra</string>
- <string name="pref_proxy_username_summary">Tên tà i khoản proxy (tùy ch�n)</string>
- <string name="pref_proxy_username_dialog">Nháºp tên tà i khoản proxy</string>
- <string name="pref_proxy_password_title">Máºt khẩu Proxy ngõ ra</string>
- <string name="pref_proxy_password_summary">Máºt khẩu proxy (tùy chá»?n)</string>
- <string name="pref_proxy_password_dialog">Nháºp máºt khẩu proxy</string>
- <string name="status">Tình trạng</string>
- <string name="setting_up_full_transparent_proxying_">Ä?ang cấu hình proxy trong suá»?t cho tất cả...</string>
- <string name="setting_up_app_based_transparent_proxying_">Ä?ang cấu hình proxy trong suá»?t cho các ứng dụng Ä?ược chá»?n...</string>
- <string name="transparent_proxying_enabled">Proxy trong suá»?t Ä?ƯỢC KÃ?CH HOẠT</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy Ä?ã Ä?ược kÃch hoạt Ä?á»? dùng cho tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">CHÃ? Ã?: có lá»?i khi khá»?i Ä?á»?ng proxy trong suá»?t!</string>
- <string name="transproxy_rules_cleared">Quy tắc TransProxy Ä?ã Ä?ược xóa</string>
- <string name="couldn_t_start_tor_process_">Không thá»? khá»?i Ä?á»?ng tiến trình Tor:</string>
- <string name="privoxy_is_running_on_port_">Polipo Ä?ang chạy á»? cá»?ng:</string>
- <string name="setting_up_port_based_transparent_proxying_">Ä?ang cà i Ä?ặt proxy trong suá»?t theo cá»?ng</string>
- <string name="bridge_error">Lá»?i bridge</string>
- <string name="bridge_requires_ip">Ä?á»? dùng chức nÄ?ng bridge, bạn phải nháºp Ãt nhất má»?t Ä?á»?a chá»? IP dùng cho bridge.</string>
- <string name="send_email_for_bridges">Gá»i má»?t email Ä?ến bridges@xxxxxxxxxxxxxx vá»?i dòng chữ \"get bridges\" trong thÆ° từ má»?t tà i khoản gmail.</string>
- <string name="error">Lá»?i</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Thiết láºp ReachableAddresses Ä?ã gây ra má»?t vấn Ä?á»?! </string>
- <string name="your_relay_settings_caused_an_exception_">Thiết láºp relay của bạn Ä?ã gây ra má»?t vấn Ä?á»?!</string>
- <string name="exit_nodes">Nút cu�i (Exit Nodes)</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Dấu theo dõi, biá»?t hiá»?u, quá»?c gia và Ä?á»?a chá»? cho nút cuá»?i cùng</string>
- <string name="enter_exit_nodes">Nháºp thông tin nút cuá»?i</string>
- <string name="exclude_nodes">Loại trừ nút</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Dấu theo dõi, biá»?t hiá»?u, quá»?c gia và Ä?á»?a chá»? Ä?á»? loại trừ</string>
- <string name="enter_exclude_nodes">Nháºp và o những nút Ä?á»? loại trừ</string>
- <string name="strict_nodes">Nút chá»? Ä?á»?nh</string>
- <string name="use_only_these_specified_nodes">*Chá»?* dùng những nút Ä?ược liá»?t kê</string>
- <string name="bridges">Bridge</string>
- <string name="use_bridges">Dùng bridge</string>
- <string name="bridges_obfuscated">Các bridge Ä?ược che giấu</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">KÃch hoạt các nút và o khác Ä?á»? và o mạng Tor</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">KÃch hoạt nếu nhÆ° các bridge Ä?ã Ä?ược cấu hình là bridge Ä?ã Ä?ược che giấu</string>
- <string name="ip_address_and_port_of_bridges">Ä?á»?a chá»? IP và cá»?ng của bridge</string>
- <string name="enter_bridge_addresses">Nháºp Ä?á»?a chá»? bridge</string>
- <string name="relays">Relay</string>
- <string name="relaying">Chức nÄ?ng relay</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Cho phép thiết b� bạn tr� thà nh m�t nút relay (không phải nút cu�i)</string>
- <string name="relay_port">Cá»?ng cho relay</string>
- <string name="listening_port_for_your_tor_relay">Cá»?ng tiếp nháºn cho viá»?c relay</string>
- <string name="enter_or_port">Nháºp cá»?ng OR</string>
- <string name="relay_nickname">Bi�t hi�u nút relay</string>
- <string name="the_nickname_for_your_tor_relay">Bi�t hi�u cho nút Tor-relay của bạn</string>
- <string name="enter_a_custom_relay_nickname">Nháºp biá»?t hiá»?u tuỳ ý</string>
- <string name="reachable_addresses">Ä?á»?a chá»? truy cáºp Ä?ược (Reachable Addresses)</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Chạy nhÆ° má»?t máy con (client) Ä?ằng sau tÆ°á»?ng lá»a vá»?i các thiết láºp thu hẹp</string>
- <string name="reachable_ports">Cá»?ng truy cáºp Ä?ược</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Cá»?ng truy cáºp Ä?ược Ä?ằng sau tÆ°á»?ng lá»a</string>
- <string name="enter_ports">Nháºp sá»? cá»?ng</string>
- <string name="enable_hidden_services">Host web ẩn</string>
- <string name="run_servers_accessible_via_the_tor_network">Cho phép máy chủ Ä?ược thiết láºp trong thiết bá»? của bạn có thá»? truy cáºp Ä?ược qua mạng Tor.</string>
- <string name="enter_localhost_ports_for_hidden_services">Nháºp cá»?ng localhost cho web ẩn</string>
- <string name="hidden_service_ports">C�ng web ẩn</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Ä?á»?a chá»? hợp lá»? cho web ẩn của bạn (Ä?ược tá»± Ä?á»?ng tạo ra)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">KÃch hoạt nháºt ký gỡ lá»?i á»? Ä?ầu ra (phải dùng adb hoặc aLogCat Ä?á»? xem)</string>
- <string name="project_home">Các trang chủ dự án:</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Giấy phép của Tor</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">Phần m�m bên thứ 3:</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">Má»?t ứng dụng muá»?n má»? cá»?ng ẩn %S Ä?ến mạng Tor. Ä?ây là Ä?iá»?u an toà n nếu nhÆ° bạn tin tÆ°á»?ng và o ứng dụng nà y.</string>
- <string name="found_existing_tor_process">tìm ra tiến trình hi�n hà nh của Tor...</string>
- <string name="something_bad_happened">Có gì Ä?ó không á»?n. Xin xem lại nháºt ký</string>
- <string name="hidden_service_on">web ẩn trong:</string>
- <string name="unable_to_read_hidden_service_name">không thá»? Ä?á»?c Ä?ược tên dá»?ch vụ ẩn</string>
- <string name="unable_to_start_tor">Không thá»? khá»?i Ä?á»?ng Tor Ä?ược: </string>
- <string name="unable_to_reset_tor">Khá»?i Ä?á»?ng lại thiết bá»? của bạn, không thá»? thiết Ä?ặt lại Tor!</string>
- <string name="pref_use_sys_iptables_title">Dùng Iptables mặc Ä?á»?nh</string>
- <string name="pref_use_sys_iptables_summary">dùng táºp nhá»? phân iptables của há»? thá»?ng thay vì dùng táºp nhá»? phân Ä?ược Ä?i kèm vá»?i Orbot</string>
- <string name="error_installing_binares">Táºp nhá»? phân của Tor không thá»? cà i hoặc nâng cấp Ä?ược.</string>
- <string name="pref_use_persistent_notifications">Luôn giữ thông báo trong thanh trạng thái khi Orbot Ä?ược kết ná»?i</string>
- <string name="pref_use_persistent_notifications_title">Thông báo thư�ng trực</string>
- <string name="pref_use_expanded_notifications">Hi�n th� thông báo m� r�ng v�i IP và qu�c gia của nút cu�i (Tor exit-node)</string>
- <string name="pref_use_expanded_notifications_title">Thông báo m� r�ng</string>
- <string name="notification_using_bridges">Bridge Ä?ã Ä?ược kÃch hoạt!</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">Ngôn ngữ</string>
- <string name="set_locale_summary">Ch�n ngôn ngữ cho Orbot</string>
- <string name="wizard_locale_title">Ch�n ngôn ngữ</string>
- <string name="wizard_locale_msg">Giữ cà i Ä?ặt mặc Ä?á»?nh hoặc chuyá»?n qua ngôn ngữ khác</string>
- <string name="powered_by">Ä?ược há»? trợ bá»?i Tor</string>
- <string name="btn_save_settings">LÆ°u thiết láºp</string>
- <string name="no_internet_connection_tor">Không có kết ná»?i Internet; Tor Ä?ang á»? chế Ä?á»? chá»?...</string>
- <string name="bandwidth_">BÄ?ng thông:</string>
- <string name="down">tải xu�ng</string>
- <string name="up">tải lên</string>
- <string name="pref_disable_network_title">Tá»± Ä?á»?ng \"ngủ\" khi không có mạng</string>
- <string name="pref_disable_network_summary">Chuyá»?n Tor sang chế Ä?á»? ngủ nếu không có Internet</string>
- <string name="newnym">Bạn Ä?ã chuyá»?n sang má»?t mạch Tor má»?i!</string>
- <string name="menu_verify_browser">Trình duy�t</string>
- <string name="menu_use_chatsecure">Dùng ChatSecure</string>
- <string name="permission_manage_tor_label">Quản lý Tor</string>
- <string name="permission_manage_tor_description">Cho phép ứng dụng nà y Ä?iá»?u khiá»?n dá»?ch vụ Tor</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Có vẻ như bạn chưa cà i Orfox. Bạn có cần giúp không, hay ch� cần m� trình duy�t thư�ng thôi?</string>
- <string name="install_apps_">Cà i Ä?ặt ứng dụng?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">Không có mạng. Ä?ang chuyá»?n Tor sang chế Ä?á»? ngủ...</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Kết ná»?i mạng tá»?t. Ä?ang \"Ä?ánh thức\" Tor...</string>
- <string name="updating_settings_in_tor_service">Ä?ang cáºp nháºt cà i Ä?ặt dá»?ch vụ Tor</string>
- <string name="pref_socks_title">Cá»?ng SOCKS</string>
- <string name="pref_socks_summary">Cá»?ng Ä?á»? Tor Ä?ặt proxy SOCKS lên (mặc Ä?á»?nh: 9050 hoặc 0 Ä?á»? vô hiá»?u hóa)</string>
- <string name="pref_socks_dialog">Cấu hình c�ng SOCKS</string>
- <string name="pref_transport_title">C�ng proxy trong su�t của Tor</string>
- <string name="pref_transport_summary">Cá»?ng Ä?á»? Tor Ä?ặt proxy trong suá»?t lên (mặc Ä?á»?nh: 9040 hoặc 0 Ä?á»? vô hiá»?u hóa)</string>
- <string name="pref_transport_dialog">Cấu hình c�ng proxy trong su�t</string>
- <string name="pref_dnsport_title">Cá»?ng DNS Tor</string>
- <string name="pref_dnsport_summary">Cá»?ng Ä?á»? Tor Ä?ặt DNS của nó lên (mặc Ä?á»?nh: 5400 hoặc 0 Ä?á»? vô hiá»?u hóa)</string>
- <string name="pref_dnsport_dialog">Cấu hình c�ng DNS</string>
- <string name="pref_torrc_title">Cấu hình tùy ch�nh cho Torrc</string>
- <string name="pref_torrc_summary">CHá»? NGƯá»?I DÃ?NG CHUYÃ?N MÃ?N: nháºp các thiết láºp trá»±c tiếp cho torrc</string>
- <string name="pref_torrc_dialog">Torrc tùy ch�nh</string>
- <string name="wizard_tips_martus">Mobile Martus - Ứng dụng cung cấp các tà i li�u v� nhân quy�n của Benetech</string>
- <string name="your_tor_public_ips_">Các IP Tor công c�ng của bạn là :</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vui lòng vô hiá»?u hóa ứng dụng nà y trong Android->Settings->Apps nếu bạn Ä?ang gặp vấn Ä?á»? vá»?i Orbot:</string>
- <string name="app_conflict">Xung Ä?á»?t ứng dụng</string>
- <string name="pref_transproxy_refresh_title">Tá»± Ä?á»?ng là m má»?i proxy trong suá»?t</string>
- <string name="pref_transproxy_refresh_summary">Ã?p dụng lại các quy tắc proxy trong suá»?t khi trạng thái mạng thay Ä?á»?i</string>
- <string name="pref_transproxy_flush_title">�P BU�C X�A các quy tắc proxy trong su�t</string>
- <string name="pref_transproxy_flush_summary">Chạm và o Ä?ây Ä?á»? xóa sạch các quy tắc proxy trong suá»?t NGAY BÃ?Y GIá»?</string>
- <string name="transparent_proxy_rules_flushed_">Quy tắc proxy trong suá»?t Ä?ã Ä?ược xóa!</string>
- <string name="you_do_not_have_root_access_enabled">Bạn không có quyá»?n truy cáºp ROOT</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Bạn có thá»? cần kết ná»?i lại Orbot Ä?á»? các thay Ä?á»?i Ä?ược áp dụng</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">Bridge Ä?ược cáºp nháºt</string>
- <string name="restart_orbot_to_use_this_bridge_">Vui lòng khá»?i Ä?á»?ng lại Orbot Ä?á»? áp dụng thay Ä?á»?i</string>
- <string name="menu_qr">Mã QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Nếu nhÆ° mạng di Ä?á»?ng của bạn chặn Tor, bạn có thá»? dùng bridge (cầu ná»?i) Ä?á»? truy cáºp mạng Tor. CHá»?N má»?t trong những bridge á»? trên Ä?á»? kÃch hoạt bridge.</string>
- <string name="bridge_mode">Chế Ä?á»? bridge</string>
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
- <string name="activate">KÃch hoạt</string>
- <string name="apps_mode">Chế Ä?á»? ứng dụng VPN</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Bạn có thá»? là m cho tất cả ứng dụng của bạn kết ná»?i qua mạng Tor bằng cách sá» dụng tÃnh nÄ?ng VPN (Mạng riêng ảo) của Android.\n\n*CHÃ? Ã?* Ä?ây là má»?t tÃnh nÄ?ng má»?i, Ä?ang thá» nghiá»?m và nó có thá»? không tá»± Ä?á»?ng chạy, hoặc có thá»? dừng lại Ä?á»?t ngá»?t. Nó KHÃ?NG nên Ä?ược dùng cho ẩn danh, và chá»? nên dùng Ä?á»? vượt qua các tÆ°á»?ng lá»a và bá»? lá»?c.</string>
- <string name="send_email">Gá»i email</string>
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Bạn có thá»? lấy má»?t Ä?á»?a chá»? bridge qua email, web hoặc quét mã QR. Chá»?n \"Email\" hoặc \"Web\" bên dÆ°á»?i Ä?á»? yêu cầu má»?t Ä?á»?a chá»? bridge.\n\nMá»?t khi Ä?ã có Ä?á»?a chá»?, hãy sao chép nó và o thiết Ä?ặt \"Bridge\" trong cà i Ä?ặt Orbot rá»?i khá»?i Ä?á»?ng lại phần má»?m.</string>
- <string name="install_orweb">Cà i Ä?ặt Orfox</string>
- <string name="standard_browser">Trình duy�t thư�ng</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">LƯU Ã?: Chá»? có bridge Tor chuẩn má»?i hoạt Ä?á»?ng trên các thiết bá»? Intel x86/Atom</string>
- <string name="vpn_default_world">Toà n cầu</string>
-</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
deleted file mode 100644
index fdfe180..0000000
--- a/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,298 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot æ?¯ä¸?款å??è´¹ç??代ç??åº?ç?¨ï¼?è?½å¤?让å?¶ä»?åº?ç?¨æ?´å®?å?¨å?°ä½¿ç?¨äº?è??ç½?ã??é??è¿?å?¨ä½?äº?ä¸?ç??å??å?°ç??ä¸?ç³»å??计ç®?æ?ºä¹?é?´è¿?è¡?跳转ï¼?Orbot å?¯å?©ç?¨ Tor 对ç½?ç»?é??ä¿¡è¿?è¡?å? å¯?并é??è??ã??Tor æ?¯ä¸?款å??è´¹ç??软件ï¼?并ä¸?æ?¯ä¸?个å¼?æ?¾ç??ç½?ç»?ã??å®?å?¯ä»¥ä¿?æ?¤ç?¨æ?·å??å??æµ?é??å??æ??ç??å?±å®³ï¼?è¿?ç§?ç½?ç»?ç??æ?§å?¯å¯¹ä¸ªäººè?ªç?±ä¸?é??ç§?ã??å??ä¸?æ?ºå¯?æ´»å?¨å??å?³ç³»ä»¥å??å?½å®¶å®?å?¨é? æ??å¨?è??ã??</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">å?¯å?¨å??å??æ¢ Tor</string>
- <string name="tor_proxy_service_process">Tor 代ç??æ??å?¡</string>
- <string name="status_starting_up">Orbot æ£å?¨å?¯å?¨...</string>
- <string name="status_activated">已��� Tor ��</string>
- <string name="status_disabled">Orbot å·²å??ç?¨</string>
- <string name="status_shutting_down">Toræ??å?¡ æ£å?¨å?³é?</string>
- <string name="tor_process_starting">æ£å?¨å?¯å?¨ Tor 客æ?·ç«¯...</string>
- <string name="tor_process_complete">å®?æ??ã??</string>
- <string name="tor_process_waiting">ç?å¾?ã??</string>
- <string name="not_anonymous_yet">è¦å??ï¼?ä½ ç??ç½?ç»?é??讯并é??å?¿å??ï¼?请设置åº?ç?¨ç¨?åº?ï¼?使ç?¨ HTTP 代ç?? 127.0.0.1:8118 æ??è?? SOCKS4Aã??SOCKS5 代ç?? 127.0.0.1:9050</string>
- <string name="menu_home">�页</string>
- <string name="menu_browse">��</string>
- <string name="menu_settings">设置</string>
- <string name="menu_log">��</string>
- <string name="menu_info">帮�</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">��</string>
- <string name="menu_stop">å??æ¢</string>
- <string name="menu_about">��</string>
- <string name="menu_promo_apps">è?·å??åº?ç?¨â?¦</string>
- <string name="main_layout_download">�载</string>
- <string name="main_layout_upload">ä¸?ä¼ </string>
- <string name="button_help">帮�</string>
- <string name="button_close">å?³é?</string>
- <string name="button_about">��</string>
- <string name="button_clear_log">����</string>
- <string name="menu_verify">��</string>
- <string name="menu_exit">é??å?º</string>
- <string name="menu_scan">æ?«æ??ç½?æ¡¥QRç ?</string>
- <string name="menu_share_bridge">å??享ç½?æ¡¥QRç ?</string>
- <string name="press_to_start">- é?¿æ??å?¯å?¨ -</string>
- <string name="pref_trans_proxy_group">é??æ??代ç??ï¼?é??è¦? Root æ??é??ï¼?</string>
- <string name="pref_trans_proxy_title">é??æ??代ç??</string>
- <string name="pref_trans_proxy_summary">������使� Tor</string>
- <string name="pref_transparent_all_title">æ??æ??åº?ç?¨ç¨?åº?使ç?¨ Tor</string>
- <string name="pref_transparent_all_summary">æ??æ??åº?ç?¨ç¨?åº?é?½é??è¿? Tor è¿?æ?¥ç½?ç»?</string>
- <string name="pref_transparent_port_fallback_title">å¤?ç?¨ä»£ç??端å?£</string>
- <string name="pref_transparent_port_fallback_summary">è¦å??ï¼?é?¿å??使ç?¨å¸¸ç?¨ç«¯å?£ï¼?80ã??443 ç?ï¼?ã??ä»?å?¨â??åº?ç?¨ç¨?åº?â??æ??â??åº?ç?¨ç¨?åº?â??模å¼?æ? æ³?å·¥ä½?æ?¶ä½¿ç?¨ã??</string>
- <string name="pref_transparent_port_title">端å?£å??表</string>
- <string name="pref_transparent_port_summary">代ç??端å?£å??表ã??ä»?å?¨â??åº?ç?¨ç¨?åº?â??æ??â??åº?ç?¨ç¨?åº?â??模å¼?æ? æ³?å·¥ä½?æ?¶ä½¿ç?¨ã??</string>
- <string name="pref_transparent_port_dialog">è¾?å?¥ä»£ç??端å?£</string>
- <string name="pref_has_root">请æ±? Root 访é?®æ??é??</string>
- <string name="pref_has_root_summary">为é??æ??代ç??请æ±?è?·å?? Root 访é?®æ??é??</string>
- <string name="status_install_success">Tor ç¨?åº?å®?è£?æ??å??ï¼?</string>
- <string name="status_install_fail">Tor ç¨?åº?æ? æ³?å®?è£?ã??请æ?¥ç??æ?¥å¿?并å°?å?¶å??é??å?° tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">åº?ç?¨ç¨?åº?é??误</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">�� Orbot</string>
- <string name="btn_next">ä¸?ä¸?æ¥</string>
- <string name="btn_back">ä¸?ä¸?æ¥</string>
- <string name="btn_finish">å®?æ??</string>
- <string name="btn_okay">确�</string>
- <string name="btn_cancel">å??æ¶?</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">�� Orbot 信�</string>
- <string name="wizard_details_msg">Orbot æ?¯ä¸?个å??å?« Torã??LibEvent å?? Polipo ç??å¼?æº?åº?ç?¨ç¨?åº?ã??å®?æ??ä¾?äº?ä¸?个æ?¬å?° HTTP 代ç?? (8118) å??ä¸?个 SOCKS 代ç?? (9050) å??å¾? Tor ç½?ç»?ã??Orbot ä¹?æ??è?½å??å?¨ root è¿?ç??设å¤?ä¸?å°?æ??æ??äº?è??ç½?æµ?é??é??è¿? Tor å??é??ã??</string>
- <string name="wizard_permissions_root">å·²è?·å??æ??é??</string>
- <string name="wizard_permissions_stock">Orbot æ??é??</string>
- <string name="wizard_premissions_msg_root">好æ??äº?ï¼?æ??们æ£?æµ?å?° Orbot å·²è?·å?? Root æ??é?? ã??æ??们ä¼?è°¨æ??å?°ä½¿ç?¨è¿?ä¸?æ??é??ã??</string>
- <string name="wizard_permissions_msg_stock">è?½é??å¿?é¡»ï¼?ä½?æ?¯å?·æ?? Root 访é?®æ??é??ç??设å¤?å?¯ä»¥è®© Orbot å??å¾?æ?´å¼ºå¤§ã??请使ç?¨ä¸?é?¢ç??æ??é?®æ??äº? Orbot è¿?ä¸?强大ç??è?½å??ï¼?</string>
- <string name="wizard_permissions_no_root">å¦?æ??没æ?? Root 访é?®æ??é??æ??ä¸?æ??ç?½æ¤å¤?æ??说ç??å??容ï¼?å?ªé??ç¡®ä¿? Orbot æ?¯æ??æ??ç?¨ç??åº?ç?¨å?³å?¯ã??</string>
- <string name="wizard_permissions_consent">æ??æ??ç?½å¹¶æ?¿æ??å?¨æ?ªè?·å?? Root æ??é??ç??æ??å?µä¸?继ç»æ??ä½?</string>
- <string name="wizard_permission_enable_root">为 Orbot è?·å?? Root æ??é??</string>
- <string name="wizard_configure">é??ç½® Tor ç½?ç»?</string>
- <string name="wizard_configure_msg">Orbot æ??ä¾?äº?é??项ï¼?å?¯æ??å®?æ??æ??åº?ç?¨ç¨?åº?使ç?¨ Tor ç½?ç»?æ??æ??å®?æ??äº?åº?ç?¨é??è¿? Tor ç½?ç»?è¿?è¡?é??讯ã??</string>
- <string name="wizard_configure_all">æ??æ??åº?ç?¨ç¨?åº?é?½ä½¿ç?¨ Tor</string>
- <string name="wizard_configure_select_apps">é??æ?©ä½¿ç?¨ Tor ç??åº?ç?¨ç¨?åº?</string>
- <string name="wizard_tips_tricks">Orbot æ?¯æ??ç??åº?ç?¨</string>
- <string name="wizard_tips_msg">以ä¸?åº?ç?¨å?¯ä¸? Orbot ä¸?起使ç?¨ã??ç?¹å?»ä¸?é?¢ç??æ??é?®å®?è£?ï¼?ä¹?å?¯ä»¥é??è¿? Google Play å??åº?ã??GuardianProject.info ç½?ç«?æ?? F-Droid.org æ?¥æ?¾ã??</string>
- <string name="wizard_tips_otrchat">ChatSecure - Android ä¸?ç??å®?å?¨å?³æ?¶é??讯客æ?·ç«¯</string>
- <string name="wizard_tips_proxy">代ç??设置 - å¦ä¹ å¦?ä½?é??ç½®åº?ç?¨ç¨?åº?使ç?¨ Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo æ??ç´¢å¼?æ??åº?ç?¨ç¨?åº?</string>
- <string name="wizard_tips_twitter">å°? Twitter 代ç??ç??主æ?ºè®¾ç½® localhost 并å°?端å?£è®¾ç½®ä¸º 8118</string>
- <string name="wizard_tips_story_maker">æ??äº?å?¶é? è??--乱说äº?ä»?ä¹?ï¼?并ç?¨Torä¿?è¯?æ?¨ç??å®?å?¨ï¼?</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">代ç??设置</string>
- <string name="wizard_proxy_help_msg">å¦?æ?? Android åº?ç?¨ç¨?åº?æ?¯æ?? HTTP æ?? SOCKS 代ç??ï¼?é?£ä¹?æ?¨å?¯å¯¹å®?è¿?è¡?é??ç½®æ?¥è¿?æ?¥å?° Orbot 并使ç?¨ Tor ç½?ç»?ã?? 主æ?ºè®¾ç½®ä¸º 127.0.0.1 æ?? localhostã??对äº? HTTPï¼?端å?£è®¾ç½®ä¸º 8118ï¼?对äº? SOCKSï¼?端å?£è®¾ç½®ä¸º 9050ã??å¦?æ??å?¯ä»¥ï¼?请尽é??使ç?¨ SOCKS4A æ?? SOCKS5 代ç??ã?? æ?´å¤?æ??å?³ Android 代ç??ä¿¡æ?¯ï¼?请å??é?? http://tinyurl.com/proxyandroid ä¸ç??常è§?é?®é¢?</string>
- <string name="wizard_final">Orbot 已就绪�</string>
- <string name="wizard_final_msg">å?¨ç??æ?°ä»¥ä¸?计ç??人æ£å?¨ä½¿ç?¨Torï¼?ä»?们ä¸æ??åª?ä½?è®°è??ï¼?å??客家ï¼?人æ??主ä¹?è??ï¼?æ?¹é?©å®£æ?¬è??ï¼?å??å®?ï¼?å?¬å?¸è??å·¥ï¼?以å??å??æ?¨ä¸?æ ·ç??æ?®é??å¸?æ°?ï¼?ç?°å?¨ï¼?æ?¨ä¹?å??å¤?好äº?ï¼?</string>
- <string name="wizard_exit_at_first_screen_toast">请å?¨æ?¨å¼?å§?使ç?¨å®?å??é??ç½® Orbotï¼?</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">æ?¨å·²ç»?æ??å??è¿?æ?¥å?°Torç½?ç»?ï¼?ä½?ä¸?代表æ?¨ç??设å¤?æ?¯å®?å?¨ç??ã??æ?¨å?¯ä»¥ä½¿ç?¨â??æµ?è§?å?¨â??æ??é?®æµ?è¯?æ?¨ç??è¿?æ?¥ã??
-
-访é?®https://guardianproject.info/apps/orbot æ??å??é??é?®ä»¶è?³help@xxxxxxxxxxxxxxxxxxxx æ?¥äº?解æ?´å¤?ã??</string>
- <string name="tor_check">æµ?è§?å?¨å°?å?¯å?¨å¹¶è®¿é?®ï¼?https://check.torproject.orgï¼?以便æ£?æ?¥; Orbot é??ç½®æ?¯å?¦æ£ç¡®ä»¥å??æ?¯å?¦å?¯è¿?æ?¥ Tor ç½?ç»?ã??</string>
- <string name="pref_hs_group">é??è??æ??å?¡ä¸»æ?º</string>
- <string name="pref_general_group">常�</string>
- <string name="pref_start_boot_title">����� Orbot</string>
- <string name="pref_start_boot_summary">Android 设�������� Orbot 并�� Tor ��</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot使Androidæ?¯æ??Torç½?ç»?!
-Tor帮å?©ä½ é?¿å¼?é?£äº?å¨?è??å?°ä½ ç??é??ç§?ï¼?é??è¦?ä¿¡æ?¯å??社交å?³ç³»ç??å??容è¿?滤ï¼?æµ?é??å??æ??以å??ç½?ç»?审æ?¥ã??
-è¿?个å??导å°?帮å?©ä½ é??ç½®Orbotå?¨ä½ 设å¤?å??以便访é?®Torã??</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">è¦å??</string>
- <string name="wizard_warning_msg">ç®?å??ç??å®?è£?å®?Orbot并ä¸?è?½è?ªå?¨ç??å?¿å??ä½ ç??移å?¨æµ?é??ã??
-ä½ å¿?é¡»é??å½?ç??é??ç½®Orbotï¼?以å??ä½ ç??设å¤?å??åº?ç?¨ä»¥æ??å??å?¿å??使ç?¨Torã??</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">æ??é??</string>
- <string name="wizard_permissions_root_msg1">å?¯é??æ?©æ??äº? Orbot â??Superuserâ??访é?®æ??é??ï¼?以便å?¯ç?¨é«?级å??è?½ï¼?ä¾?å¦?é??æ??代ç??ã??</string>
- <string name="wizard_permissions_root_msg2">å¦?æ??ä¸?æ?¿æ??äº? Orbot 该æ??é??ï¼?请确ä¿?åº?ç?¨ç¨?åº?å?¯ä½¿ç?¨ Orbotã??</string>
- <string name="wizard_permissions_no_root_msg">æ?¨ç??设å¤?ä¼¼ä¹?å°?æ?ª rootï¼?æ??è??æ?ªæ??ä¾? root æ??â??è¶?级ç?¨æ?·â??ç??访é?®æ??é??ã??\n\n请æ?¹ä¸ºå°?è¯?主å±?å¹?ç??â??åº?ç?¨â??模å¼?ã??</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">使ç?¨ Orbot ç??åº?ç?¨ç¨?åº?</string>
- <string name="wizard_tips_gibberbot">ChatSecureï¼?å?·æ?? OTF å? å¯?å?±ç??å®?å?¨é??讯åº?ç?¨</string>
- <string name="wizard_tips_orweb">Orfoxï¼?é??ç§?å¢?强æµ?è§?å?¨é??ç?¨ Tor å·¥ä½?</string>
- <string name="wizard_tips_play">å?¨ Google Play å??åº?æ?¥æ?¾æ??æ?? Guardian Project ç??åº?ç?¨ç¨?åº?</string>
- <string name="wizard_tips_fdroid">å?¨ F-Droid æ?¥æ?¾æ??æ?? Guardian Project ç??åº?ç?¨ç¨?åº?</string>
- <string name="wizard_tips_fdroid_org">å?¨ https://f-droid.org æ?¥æ?¾æ??æ?? Guardian Project ç??åº?ç?¨ç¨?åº?</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">é??æ??代ç??</string>
- <string name="wizard_transproxy_msg">å?¯ä½¿åº?ç?¨ç¨?åº?æ? é??é??ç½®å?³å?¯è?ªå?¨é??è¿? Tor è¿?æ?¥ç½?ç»?ã??</string>
- <string name="wizard_transproxy_hint">ï¼?å¦?æ??ä¸?æ??ç?½è¿?é??æ??说ç??é?®é¢?ï¼?请é??æ?©è¯¥é??项ï¼?</string>
- <string name="wizard_transproxy_none">æ? </string>
- <string name="pref_transparent_tethering_title">Tor ���享</string>
- <string name="pref_transparent_tethering_summary">对 Wifi å?? USB ç½?ç»?å?±äº«è®¾å¤?å?¯ç?¨é??æ??代ç??ï¼?é??é??æ?°å?¯å?¨ï¼?</string>
- <string name="button_grant_superuser">请æ±? Superuser 访é?®æ??é??</string>
- <string name="pref_select_apps">é??æ?©åº?ç?¨ç¨?åº?</string>
- <string name="pref_select_apps_summary">é??æ?©é??è¿? Tor è¿?æ?¥ç½?ç»?ç??åº?ç?¨ç¨?åº?</string>
- <string name="pref_node_configuration">è??ç?¹é??ç½®</string>
- <string name="pref_node_configuration_summary">è¿?äº?é«?级设置å?¯é??ä½?ä½ ç??å?¿å??度</string>
- <string name="pref_entrance_node">å?¥å?£è??ç?¹</string>
- <string name="pref_entrance_node_summary">ç?¨äº?é¦?次跳转ç??å¯?é?¥æ??纹ã??æ?µç§°ã??å?½å®¶ä¸?å?°å??</string>
- <string name="pref_entrance_node_dialog">è¾?å?¥å?¥å?£è??ç?¹</string>
- <string name="pref_allow_background_starts_title">å??许å??å?°å?¯å?¨</string>
- <string name="pref_allow_background_starts_summary">å??许任ä½?åº?ç?¨å??ç?¥ Orbot å?¯å?¨ Tor å??ç?¸å?³æ??å?¡</string>
- <string name="button_proxy_all">å?¨é?¨ä»£ç??</string>
- <string name="button_proxy_none">å?¨ä¸?代ç??</string>
- <string name="button_invert_selection">å??é??</string>
- <string name="pref_proxy_title">å?ºç«?ç½?ç»?代ç??ï¼?å?¯é??ï¼?</string>
- <string name="pref_proxy_type_title">å?ºç«?代ç??ç±»å??</string>
- <string name="pref_proxy_type_summary">代ç??æ??å?¡å?¨ä½¿ç?¨ç??å??è®®ï¼?HTTPã??HTTPSã??Socks4ã??Socks5</string>
- <string name="pref_proxy_type_dialog">è¾?å?¥ä»£ç??ç±»å??</string>
- <string name="pref_proxy_host_title">å?ºç«?代ç??主æ?º</string>
- <string name="pref_proxy_host_summary">代ç??æ??å?¡å?¨ä¸»æ?ºå??</string>
- <string name="pref_proxy_host_dialog">è¾?å?¥ä»£ç??主æ?º</string>
- <string name="pref_proxy_port_title">å?ºç«?代ç??端å?£</string>
- <string name="pref_proxy_port_summary">代ç??æ??å?¡å?¨ç«¯å?£</string>
- <string name="pref_proxy_port_dialog">è¾?å?¥ä»£ç??端å?£</string>
- <string name="pref_proxy_username_title">å?ºç«?代ç??ç?¨æ?·å??</string>
- <string name="pref_proxy_username_summary">代ç??ç?¨æ?·å??ï¼?å?¯é??ï¼?</string>
- <string name="pref_proxy_username_dialog">请è¾?å?¥ä»£ç??ç?¨æ?·å??</string>
- <string name="pref_proxy_password_title">å?ºç«?代ç??å¯?ç ?</string>
- <string name="pref_proxy_password_summary">代ç??å¯?ç ?ï¼?å?¯é??ï¼?</string>
- <string name="pref_proxy_password_dialog">请è¾?å?¥ä»£ç??å¯?ç ?</string>
- <string name="status">ç?¶æ??</string>
- <string name="setting_up_full_transparent_proxying_">æ£å?¨å¯¹æ??æ??åº?ç?¨ç¨?åº?è¿?è¡?é??æ??代ç??设置...</string>
- <string name="setting_up_app_based_transparent_proxying_">æ£å?¨å¯¹æ??é??åº?ç?¨ç¨?åº?è¿?è¡?é??æ??代ç??设置...</string>
- <string name="transparent_proxying_enabled">é??æ??代ç??å·²å?¯ç?¨</string>
- <string name="transproxy_enabled_for_tethering_">已为���享�活 TransProxy �</string>
- <string name="warning_error_starting_transparent_proxying_">è¦å??ï¼?å?¯å?¨é??æ??代ç??æ?¶å??ç??é??误ï¼?</string>
- <string name="transproxy_rules_cleared">å·²æ¸?é?¤ TransProxy è§?å??</string>
- <string name="couldn_t_start_tor_process_">æ? æ³?å?¯å?¨ Tor è¿?ç¨?ï¼?</string>
- <string name="privoxy_is_running_on_port_">Polipo æ£è¿?è¡?å?¨ç«¯å?£:</string>
- <string name="setting_up_port_based_transparent_proxying_">æ£å?¨å¯¹å?ºäº?端å?£ç??é??æ??代ç??è¿?è¡?设置...</string>
- <string name="bridge_error">ç½?æ¡¥é??误</string>
- <string name="bridge_requires_ip">为äº?é??使ç?¨ç½?æ¡¥ï¼?å¿?é¡»è?³å°?è¾?å?¥ä¸?个ç½?æ¡¥ IP å?°å??ã??</string>
- <string name="send_email_for_bridges">å¦?é??è?·å??ç½?æ¡¥å?°å??ï¼?请使ç?¨ gmail å??é??ç?µå?é?®ä»¶è?³ bridges@xxxxxxxxxxxxxx 并å?¨æ£æ??å??å¡«ä¸?â?? get bridgesâ??ã??</string>
- <string name="error">é??误</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">å?¯è®¿é?®å?°å??设置导è?´å¼?常ï¼?</string>
- <string name="your_relay_settings_caused_an_exception_">ä¸ç»§è®¾ç½®å¯¼è?´å¼?常ï¼?</string>
- <string name="exit_nodes">å?ºå?£è??ç?¹</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">æ??å??跳转ç??å¯?é?¥æ??纹ã??æ?µç§°ã??å?½å®¶ä¸?å?°å??</string>
- <string name="enter_exit_nodes">è¾?å?¥å?ºå?£è??ç?¹</string>
- <string name="exclude_nodes">æ??é?¤è??ç?¹</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">æ??é?¤ç??å¯?é?¥æ??纹ã??æ?µç§°ã??å?½å®¶ä¸?å?°å??</string>
- <string name="enter_exclude_nodes">è¾?å?¥æ??é?¤è??ç?¹</string>
- <string name="strict_nodes">é??å?¶è??ç?¹</string>
- <string name="use_only_these_specified_nodes">ä»?使ç?¨è¿?äº?æ??å®?è??ç?¹</string>
- <string name="bridges">ç½?æ¡¥</string>
- <string name="use_bridges">使��桥</string>
- <string name="bridges_obfuscated">æ··æ·?ç½?æ¡¥</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">使ç?¨å?¶ä»?å?¥å?£è??ç?¹è¿?æ?¥å?° Tor ç½?ç»?</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">å·²é??ç½®ç??ç½?桥为混æ·?ç½?æ¡¥æ?¶å?¯ç?¨</string>
- <string name="ip_address_and_port_of_bridges">ç½?æ¡¥ç?? IP å?°å??å??端å?£</string>
- <string name="enter_bridge_addresses">è¾?å?¥ç½?æ¡¥å?°å??</string>
- <string name="relays">ä¸ç»§</string>
- <string name="relaying">ä¸ç»§è½¬å??</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">ä»?设置被设置为é??å?ºå?£ä¸ç»§</string>
- <string name="relay_port">ä¸ç»§ç«¯å?£</string>
- <string name="listening_port_for_your_tor_relay">Tor ä¸ç»§ç??侦å?¬ç«¯å?£</string>
- <string name="enter_or_port">�� OR 端�</string>
- <string name="relay_nickname">ä¸ç»§æ?µç§°</string>
- <string name="the_nickname_for_your_tor_relay">Tor ä¸ç»§æ?µç§°</string>
- <string name="enter_a_custom_relay_nickname">è¾?å?¥è?ªå®?ä¹?ä¸ç»§æ?µç§°</string>
- <string name="reachable_addresses">å?¯è®¿é?®å?°å??</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">å?¨å?·æ??é??å?¶ç?ç?¥é?²ç?«å¢?å??ï¼?ä½?为客æ?·ç«¯è¿?è¡?</string>
- <string name="reachable_ports">�访�端�</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">é?²ç?«å¢?é??å®?ç??å?¯è®¿é?®ç«¯å?£</string>
- <string name="enter_ports">��端�</string>
- <string name="enable_hidden_services">é??è??æ??å?¡ä¸»æ?º</string>
- <string name="run_servers_accessible_via_the_tor_network">å??许设å¤?ä¸?ç??æ??å?¡å?¨å?¯é??è¿? Tor ç½?ç»?访é?®</string>
- <string name="enter_localhost_ports_for_hidden_services">è¾?å?¥é??è??æ??å?¡ç??æ?¬å?°ä¸»æ?ºç«¯å?£</string>
- <string name="hidden_service_ports">é??è??æ??å?¡ç«¯å?£</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">é??è??æ??å?¡ç??å?°å??ï¼?è?ªå?¨ç??æ??ï¼?</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">å?¯ç?¨è°?è¯?æ?¥å¿?è¾?å?ºï¼?å¿?须使ç?¨ adb æ?? aLongCat æ?¥ç??ï¼?</string>
- <string name="project_home">项�主页(s)�</string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">Tor 许��</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">第��软件�</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">åº?ç?¨ç¨?åº?è¯?å?¾æ??å¼?é??è??æ??å?¡ä¸»æ?ºç«¯å?£ %S è¿?æ?¥ Tor ç½?ç»?ã??对äº?å?¯ä¿¡åº?ç?¨è¿?æ?¯å®?å?¨ç??ã??</string>
- <string name="found_existing_tor_process">å??ç?°å½?å??å·²å?å?¨ Tor è¿?ç¨?...</string>
- <string name="something_bad_happened">å??ç??é??误ï¼?请æ£?æ?¥æ?¥å¿?</string>
- <string name="hidden_service_on">é??è??æ??å?¡ä½?äº?ï¼?</string>
- <string name="unable_to_read_hidden_service_name">æ? æ³?读å??é??è??æ??å?¡å??称</string>
- <string name="unable_to_start_tor">æ? æ³?å?¯å?¨ Torï¼?</string>
- <string name="unable_to_reset_tor">é??æ?°å?¯å?¨æ?¨ç??设å¤?ï¼?æ? æ³?é??ç½® Torï¼?</string>
- <string name="pref_use_sys_iptables_title">使��认 iptables </string>
- <string name="pref_use_sys_iptables_summary">使ç?¨å??ç½®ç?? iptables ç¨?åº?æ?¿ä»£ Orbot ç»?å®?ç?? iptables </string>
- <string name="error_installing_binares">æ? æ³?å®?è£?æ??æ?´æ?° Tor ç¨?åº?ã??</string>
- <string name="pref_use_persistent_notifications">Orbot è¿?æ?¥å??å§?ç»?å?¨é??ç?¥æ ?æ?¾ç¤ºå?¾æ ?</string>
- <string name="pref_use_persistent_notifications_title">å§?ç»?æ?¾ç¤ºé??ç?¥</string>
- <string name="pref_use_expanded_notifications">æ?¾ç¤ºæ?©å±?ç??é??ç?¥ï¼?æ??å?³ Tor å?ºå?£ç??å?½å®¶å?? IP</string>
- <string name="pref_use_expanded_notifications_title">æ?©å±?ç??é??ç?¥</string>
- <string name="notification_using_bridges">已���桥�</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">è¯è¨?</string>
- <string name="set_locale_summary">é??æ?© Orbot ç??å?ºå??设置ä¸?è¯è¨?</string>
- <string name="wizard_locale_title">é??æ?©è¯è¨?</string>
- <string name="wizard_locale_msg">ä¿?æ??é»?认æ??å??æ?¢ä¸ºå½?å??æ??ç?¨è¯è¨?</string>
- <string name="powered_by">ç?± Tor æ??ä¾?</string>
- <string name="btn_save_settings">ä¿?å?设置</string>
- <string name="no_internet_connection_tor">没æ??äº?è??ç½?è¿?æ?¥ï¼?Tor å¤?äº?å¾?æ?ºç?¶æ??â?¦</string>
- <string name="bandwidth_">宽带é??度ï¼?</string>
- <string name="down">��</string>
- <string name="up">��</string>
- <string name="pref_disable_network_title">æ? ç½?ç»?è?ªå?¨ä¼?ç? </string>
- <string name="pref_disable_network_summary">没æ??ç½?ç»?è¿?æ?¥æ?¶ï¼?æ??æ?¶å??ç?¨ Tor</string>
- <string name="newnym">å·²å??æ?¢ä¸ºæ?°ç?? Tor æ ?è¯?ï¼?</string>
- <string name="menu_verify_browser">���</string>
- <string name="menu_use_chatsecure">使� ChatSecure</string>
- <string name="permission_manage_tor_label">管ç?? Tor</string>
- <string name="permission_manage_tor_description">å?¯ç?¨è¯¥åº?ç?¨å?¯å¯¹ Tor æ??å?¡è¿?è¡?æ?§å?¶</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">ä¼¼ä¹?æ?¨è¿?没æ??å®?è£? Orfoxã??æ?¯å?¦é??è¦?帮å?©ï¼?æ??è??æ??们åº?该æ??å¼?æµ?è§?å?¨ï¼?</string>
- <string name="install_apps_">�����</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">没æ??ç½?ç»?è¿?æ?¥ï¼?让 Tor è¿?å?¥ç?¡ç? â?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">ç½?ç»?è¿?æ?¥è?¯å¥½ã??æ£å?¨å?¤é?? Tor...</string>
- <string name="updating_settings_in_tor_service">æ£å?¨æ?´æ?° Tor æ??å?¡ä¸ç??设置</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Tor æ??ä¾?å?¶ SOCKS 代ç??ç??端å?£ (é»?认: 9050, 0 ç¦?ç?¨)</string>
- <string name="pref_socks_dialog">SOCKS 端å?£é??ç½®</string>
- <string name="pref_transport_title">Tor é??æ??代ç??端å?£</string>
- <string name="pref_transport_summary">Tor æ??ä¾?é??æ??代ç??ç??端å?£ (é»?认: 9040, 0 ç¦?ç?¨)</string>
- <string name="pref_transport_dialog">é??æ??代ç??é??ç½®</string>
- <string name="pref_dnsport_title">Tor DNS 端�</string>
- <string name="pref_dnsport_summary">Tor æ??ä¾? DNS ç??端å?£ (é»?认: 5400, 0 ç¦?ç?¨)</string>
- <string name="pref_dnsport_dialog">DNS 端å?£é??ç½®</string>
- <string name="pref_torrc_title">Torrc è?ªå®?ä¹?é??ç½®</string>
- <string name="pref_torrc_summary">ä»?ä¾?ä¸?家ï¼?ç?´æ?¥è¾?å?¥ torrc é??ç½®è¡?</string>
- <string name="pref_torrc_dialog">��� Torrc</string>
- <string name="wizard_tips_martus">Mobile Martus - ç¾?å?½äººæ??æ??件 App</string>
- <string name="your_tor_public_ips_">æ?¨ç?? Tor å?¬ç½? IP:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">å¦?æ??æ?¨ä½¿ç?¨ Orbot é??å?°é?®é¢?ï¼?请å?¨ Android->设置->åº?ç?¨ ä¸ç¦?ç?¨æ?¬åº?ç?¨ï¼?</string>
- <string name="app_conflict">����</string>
- <string name="pref_transproxy_refresh_title">é??æ??代ç??è?ªå?¨å?·æ?°</string>
- <string name="pref_transproxy_refresh_summary">å?¨ç½?ç»?ç?¶æ??æ?¹å??æ?¶é??æ?°åº?ç?¨é??æ??代ç??è§?å??</string>
- <string name="pref_transproxy_flush_title">é??æ??代ç??强å?¶ç§»é?¤</string>
- <string name="pref_transproxy_flush_summary">ç?¹æ??è¿?é??ç«?å?³å?·æ?°æ??æ??é??æ??代ç??ç??ç½?ç»?è§?å??</string>
- <string name="transparent_proxy_rules_flushed_">é??æ??代ç??è§?å??å·²å?·æ?°ï¼?</string>
- <string name="you_do_not_have_root_access_enabled">æ?¨è¿?没æ?? ROOT 访é?®æ??é??</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">æ?¨å?¯è?½é??è¦?å??æ¢å¹¶é??æ?°å?¯å?¨ Orbot æ??è?½ä½¿è®¾ç½®æ?´æ?¹ç??æ??ã??</string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="bridges_updated">�桥已��</string>
- <string name="restart_orbot_to_use_this_bridge_">请é??å?¯ Orbot 以使å??æ?´ç??æ??</string>
- <string name="menu_qr">QRç ?</string>
- <string name="bridge_mode">�桥模�</string>
- <string name="get_bridges_email">ç?µå?é?®ä»¶</string>
- <string name="get_bridges_web">�页</string>
- <string name="activate">æ¿?æ´»</string>
- <string name="apps_mode">�� VPN 模�</string>
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">é??è¿?å¼?å?¯VPNå??è?½ï¼?æ?¨å?¯ä»¥è®©æ?¨è®¾å¤?ä¸?å?¨é?¨ç??åº?ç?¨ç¨?åº?使ç?¨Torç½?ç»?ã??
-è¦å??ï¼?ï¼?ï¼?
-è¿?æ?¯ä¸?项å®?éª?æ?§ç??å??è?½ã??å?¨æ??äº?æ??å?µä¸?ï¼?å®?å?¯è?½å??æ¢æ??ä¸?è?½è?ªå?¨å?¯å?¨ã??å®?ä¸?åº?ç?¨äº?ä¿?æ??å?¿å??ï¼?ä»?ç?¨äº?ç©¿é??é?²ç?«å¢?å??è¿?æ?¥è¿?滤系ç»?ã??</string>
- <string name="send_email">å??é??ç?µå?é?®ä»¶</string>
- <string name="install_orweb">�� Orfox</string>
- <string name="standard_browser">æ ?å??ç??æµ?è§?å?¨</string>
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">注æ??ï¼?å?ªæ??æ ?å??ç?? Tor ç½?æ¡¥å?¯ä»¥å?¨ Intel X86/ATOM 设å¤?ä¸?å·¥ä½?</string>
- <string name="vpn_default_world">ä¸?ç??</string>
-</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 7f7bba1..0000000
--- a/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbotæ?¯ä¸?款å??è²»ç??網絡代ç??æ??ç?¨ç¨?å¼?ï¼?ç?¨ä¾?ä¿?è·å?¶ä»?æ??ç?¨ç¨?å¼?ç??ä¸?網å®?å?¨ã??
-Orbot使ç?¨Torå?¨å?¨ç??ä¸?ç³»å??ç??é?»è?¦é??è·³èº?ï¼?以便é?±è??網路æµ?é??並å? å¯?ã??Toræ?¯å??å??è²»è»?é«?ä¹?æ?¯å??é??æ?¾ç¶²è·¯ï¼?è?½å¹«æ?¨æ?µç¦¦æµ?é??å??æ??ã??å®?æ?¯æ??ä¸?種網路ç?£æ?§ï¼?ç?½æ¶?å?°å??人ç??è?ªç?±è??é?±ç§?ã??å??æ¥é?¨å??ç??æ©?å¯?é??ä¿?å??æ´»å??ã??ç??è?³å??家å®?å?¨ã??</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">é??å§?å??å??æ¢ Tor</string>
- <string name="tor_proxy_service_process">tor 代ç??æ??å??</string>
- <string name="status_starting_up">Orbot æ£å?¨å??å??ä¸...</string>
- <string name="status_activated">已��� Tor 網路</string>
- <string name="status_disabled">Orbot å·²å??ç?¨</string>
- <string name="status_shutting_down">Toræ??å?? æ£å?¨é??é??</string>
- <string name="tor_process_starting">å??å??Tor ç?¨æ?¶ç«¯...</string>
- <string name="tor_process_complete">å®?æ??ã??</string>
- <string name="tor_process_waiting">ç?å¾?ã??</string>
- <string name="not_anonymous_yet">è¦å??ï¼?æ?¨ç??網路å°?æ?ªå?¿å??ï¼?è«?è¨å®?æ?¨ç??æ??ç?¨ç¨?å¼?使ç?¨HTTP 代ç??伺æ??å?¨ 127.0.0.1:8118 æ?? SOCKS4A æ?? SOCKS5 代ç??伺æ??å?¨ 127.0.0.1:9050</string>
- <string name="menu_home">é¦?é ?</string>
- <string name="menu_browse">ç??覽</string>
- <string name="menu_settings">è¨å®?</string>
- <string name="menu_log">è¨?é??æª?</string>
- <string name="menu_info">說æ??</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">é??å§?</string>
- <string name="menu_stop">å??æ¢</string>
- <string name="menu_about">é??æ?¼</string>
- <string name="menu_promo_apps">å??å¾?æ??ç?¨ç¨?å¼?â?¦</string>
- <string name="main_layout_download">��</string>
- <string name="main_layout_upload">��</string>
- <string name="button_help">說æ??</string>
- <string name="button_close">é??é??</string>
- <string name="button_about">é??æ?¼</string>
- <string name="button_clear_log">æ¸?é?¤è¨?é??æª?</string>
- <string name="menu_verify">檢�</string>
- <string name="menu_exit">é?¢é??</string>
- <string name="menu_scan">æ??æ??é?£æ?¥æ©?QR</string>
- <string name="menu_share_bridge">å??享é?£æ?¥æ©?QR</string>
- <string name="press_to_start">- è«?é?·æ??以é??å§? - </string>
- <string name="pref_trans_proxy_group">é??é??å¼?代ç??伺æ??å?¨(é??è¦? Root)</string>
- <string name="pref_trans_proxy_title">é??é??å¼?代ç??伺æ??å?¨</string>
- <string name="pref_trans_proxy_summary">è?ªå??å??å?? Toræ?¼æ??ç?¨ç¨?å¼?</string>
- <string name="pref_transparent_all_title">Tor Everything</string>
- <string name="pref_transparent_all_summary">æ??æ??æ??ç?¨ç¨?å¼?ç??é??é??Tor 代ç??伺æ??å?¨</string>
- <string name="pref_transparent_port_fallback_title">å??ç?¨é?£æ?¥å? 代ç??</string>
- <string name="pref_transparent_port_fallback_summary">è¦å??: é?¿å??常ç?¨ç??å? å?£(80ã??443ç?ç?)ã??å?¨ã??æ??æ??ã??æ??æ?¯ã??Appã??模å¼?é?½å¤±æ??ç??æ??å??*æ??使ç?¨*ã??</string>
- <string name="pref_transparent_port_title">å? æ¸?å?®</string>
- <string name="pref_transparent_port_dialog">輸å?¥ä»£ç??å? </string>
- <string name="pref_has_root">è«?æ±? Root å?å??æ¬?</string>
- <string name="pref_has_root_summary">ç?²é??é??å¼?代ç??è«?æ±? Root å?å??æ¬?</string>
- <string name="status_install_success">Tor äº?é?²å?¶æª?æ¡?å®?è£?æ??å??ï¼?</string>
- <string name="title_error">æ??ç?¨ç¨?å¼?é?¯èª¤</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">é??æ?¼ Orbot</string>
- <string name="btn_next">å??é?²</string>
- <string name="btn_back">è¿?å??</string>
- <string name="btn_finish">çµ?æ??</string>
- <string name="btn_okay">確�</string>
- <string name="btn_cancel">å??æ¶?</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Orbot ç??ä¸?äº?詳細è³?æ??</string>
- <string name="wizard_details_msg">Orbotæ?¯å??é??æº?ç??æ??ç?¨ç¨?å¼?ï¼?å??å?«äº?Torï¼?LibEventå??Polipoã??å®?æ??ä¾?äº?æ?¬å?°HTTP代ç?? (8118)å??SOCKS代ç?? (9050)以é?²å?¥Tor網路ã??Orbotä¹?è?½å¤ å?¨å·²Rootç??è£?ç½®ä¸?ï¼?以Torå?³é??æ??æ??ç??網路æµ?é??ã??</string>
- <string name="wizard_permissions_root">å·²å??å¾?æ¬?é??</string>
- <string name="wizard_permissions_stock">Orbot æ¬?é??</string>
- <string name="wizard_configure">çµ?æ?? Tor 網路</string>
- <string name="wizard_configure_all">æ??æ??æ??ç?¨ç¨?å¼?é?½é??é?? Tor 代ç??</string>
- <string name="wizard_tips_duckgo">DuckDuckGo æ??å°?å¼?æ??æ??ç?¨ç¨?å¼?</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">代ç??伺æ??å?¨è¨å®?</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="pref_general_group">��</string>
- <string name="pref_start_boot_summary">ç?¶ä½ ç?? Android è£?ç½®å??å??æ??è?ªå??é??å?? Orbot 並é?£æ?¥ Tor 網路</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <!--Warning screen-->
- <string name="wizard_warning_title">è¦å??</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">æ¬?é??</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_play">å?¨ Google Play å°?æ?¾æ??æ??ç?? Guardian Project æ??ç?¨ç¨?å¼?</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">é??é??å¼?代ç??</string>
- <string name="wizard_transproxy_none">ç?¡</string>
- <string name="pref_select_apps">é?¸æ??æ??ç?¨ç¨?å¼?</string>
- <string name="button_invert_selection">å??å??é?¸æ??</string>
- <string name="status">ç??æ??</string>
- <string name="error">�誤</string>
- <string name="enter_ports">輸å?¥å? </string>
- <string name="project_home">å°?æ¡?é¦?é ?ï¼?</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">第�����</string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="default_bridges"></string>
- <string name="set_locale_title">��</string>
- <string name="wizard_locale_title">é?¸æ??èª?è¨?</string>
- <string name="btn_save_settings">å?²å?è¨å®?</string>
- <string name="menu_verify_browser">ç??覽å?¨</string>
- <string name="permission_manage_tor_label">管ç?? Tor</string>
- <string name="install_apps_">å®?è£?æ??ç?¨ç¨?å¼?ï¼?</string>
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_dnsport_title">Tor DNS å? </string>
- <string name="menu_vpn">VPN</string>
- <string name="kbps">kbps</string>
- <string name="mbps">mbps</string>
- <string name="kb">KB</string>
- <string name="mb">MB</string>
- <string name="menu_qr">QR 碼</string>
- <string name="send_email">å¯?é??é?»å?信件</string>
- <string name="standard_browser">æ¨?æº?ç??ç??覽å?¨</string>
- <string name="vpn_default_world">ä¸?ç??</string>
-</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
deleted file mode 100644
index 30d20c1..0000000
--- a/res/values/arrays.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<resources>
-
- <string-array name="bridge_options">
- <item>Obfs4 (Best)</item>
- <item>Obfs3</item>
- <item>ScrambleSuit</item>
- <item>Tunnel through Azure</item>
- <item>Tunnel through Amazon</item>
- <item>Tunnel through Google</item>
- <item>Get New Bridges</item>
- <item></item>
- </string-array>
-
-</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
deleted file mode 100644
index 19e06e7..0000000
--- a/res/values/colors.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
- <resources>
- <color name="panel_background">#ffffff</color>
- <color name="panel_background_dark">#efefef</color>
- <color name="panel_background_main">#efefef</color>
- <color name="bright_green">#ccff2a</color>
- <color name="dark_green">#669901</color>
- </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
deleted file mode 100644
index f96195c..0000000
--- a/res/values/dimens.xml
+++ /dev/null
@@ -1,361 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/dimens.xml
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
- <!-- The width that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_width">164dp</dimen>
- <!-- The height that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_height">145dp</dimen>
- <!-- The standard size (both width and height) of an application icon that
- will be displayed in the app launcher and elsewhere. -->
- <dimen name="app_icon_size">48dip</dimen>
- <!-- The maximum number of action buttons that should be permitted within
- an action bar/action mode. This will be used to determine how many
- showAsAction="ifRoom" items can fit. "always" items can override this. -->
- <integer name="max_action_buttons">2</integer>
- <dimen name="toast_y_offset">64dip</dimen>
- <!-- Height of the status bar -->
- <dimen name="status_bar_height">25dip</dimen>
- <!-- Height of the bottom navigation / system bar. -->
- <dimen name="navigation_bar_height">48dp</dimen>
- <!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
- <dimen name="navigation_bar_height_landscape">48dp</dimen>
- <!-- Width of the navigation bar when it is placed vertically on the screen -->
- <dimen name="navigation_bar_width">42dp</dimen>
- <!-- Height of notification icons in the status bar -->
- <dimen name="status_bar_icon_size">24dip</dimen>
- <!-- Size of the giant number (unread count) in the notifications -->
- <dimen name="status_bar_content_number_size">48sp</dimen>
- <!-- Height of the system bar (combined status & navigation); used by
- SystemUI internally, not respected by the window manager. -->
- <dimen name="system_bar_height">@dimen/navigation_bar_height</dimen>
- <!-- Height of notification icons in the system bar -->
- <dimen name="system_bar_icon_size">32dip</dimen>
- <!-- Margin at the edge of the screen to ignore touch events for in the windowshade. -->
- <dimen name="status_bar_edge_ignore">5dp</dimen>
-
- <!-- Minimum size of the fastscroll overlay -->
- <dimen name="fastscroll_overlay_size">104dp</dimen>
- <!-- Text size of the fastscroll overlay -->
- <dimen name="fastscroll_overlay_text_size">52sp</dimen>
- <!-- Padding of the fastscroll overlay -->
- <dimen name="fastscroll_overlay_padding">16dp</dimen>
- <!-- Width of the fastscroll thumb -->
- <dimen name="fastscroll_thumb_width">64dp</dimen>
- <!-- Height of the fastscroll thumb -->
- <dimen name="fastscroll_thumb_height">52dp</dimen>
- <!-- Min width for a tablet device -->
- <dimen name="min_xlarge_screen_width">800dp</dimen>
-
- <!-- Default height of a key in the password keyboard for alpha (used by keyguard) -->
- <dimen name="password_keyboard_key_height_alpha">56dip</dimen>
- <!-- Default height of a key in the password keyboard for numeric (used by keyguard) -->
- <dimen name="password_keyboard_key_height_numeric">56dip</dimen>
- <!-- Default correction for the space key in the password keyboard (used by keyguard) -->
- <dimen name="password_keyboard_spacebar_vertical_correction">4dip</dimen>
- <!-- Default horizontal gap between keys in the password keyboard (used by keyguard) -->
- <dimen name="password_keyboard_horizontalGap">3dip</dimen>
- <!-- Default vertical gap between keys in the password keyboard (used by keyguard) -->
- <dimen name="password_keyboard_verticalGap">9dip</dimen>
-
- <!-- Size of lockscreen outerring on unsecure unlock LockScreen -->
- <dimen name="keyguard_lockscreen_outerring_diameter">270dp</dimen>
-
- <!-- Default target placement radius for GlowPadView. Should be 1/2 of outerring diameter. -->
- <dimen name="glowpadview_target_placement_radius">135dip</dimen>
-
- <!-- Default glow radius for GlowPadView -->
- <dimen name="glowpadview_glow_radius">75dip</dimen>
-
- <!-- Default distance beyond which GlowPadView snaps to the matching target -->
- <dimen name="glowpadview_snap_margin">40dip</dimen>
-
- <!-- Default distance from each snap target that GlowPadView considers a "hit" -->
- <dimen name="glowpadview_inner_radius">15dip</dimen>
-
- <!-- Preference activity side margins -->
- <dimen name="preference_screen_side_margin">0dp</dimen>
- <!-- Preference activity side margins negative-->
- <dimen name="preference_screen_side_margin_negative">0dp</dimen>
- <!-- Preference activity top margin -->
- <dimen name="preference_screen_top_margin">0dp</dimen>
- <!-- Preference activity bottom margin -->
- <dimen name="preference_screen_bottom_margin">0dp</dimen>
- <!-- Preference widget area width (to the left of the text) -->
- <dimen name="preference_widget_width">48dp</dimen>
- <!-- Preference fragment padding, bottom -->
- <dimen name="preference_fragment_padding_bottom">0dp</dimen>
- <!-- Preference fragment padding, sides -->
- <dimen name="preference_fragment_padding_side">16dp</dimen>
- <!-- Weight of the left pane in a multi-pane preference layout. -->
- <integer name="preferences_left_pane_weight">4</integer>
- <!-- Weight of the right pane in a multi-pane preference layout. So the split is 40:60 -->
- <integer name="preferences_right_pane_weight">6</integer>
- <!-- Padding to the left of the preference panel breadcrumb -->
- <dimen name="preference_breadcrumb_paddingLeft">0dp</dimen>
- <!-- Padding to the right of the preference panel breadcrumb -->
- <dimen name="preference_breadcrumb_paddingRight">0dp</dimen>
- <!-- Minimum space to allocate to the left of a preference item for an icon.
- This helps in aligning titles when some items have icons and some don't. When space is
- at a premium, we don't pre-allocate any space. -->
- <dimen name="preference_icon_minWidth">0dp</dimen>
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the major axis (that is the screen is landscape). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="dialog_min_width_major">65%</item>
-
- <!-- The platform's desired fixed width for a dialog along the major axis
- (the screen is in landscape). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_width_major">320dp</item>
- <!-- The platform's desired fixed width for a dialog along the minor axis
- (the screen is in portrait). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_width_minor">320dp</item>
- <!-- The platform's desired fixed height for a dialog along the major axis
- (the screen is in portrait). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_height_major">80%</item>
- <!-- The platform's desired fixed height for a dialog along the minor axis
- (the screen is in landscape). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_height_minor">100%</item>
-
- <!-- Preference activity, vertical padding for the header list -->
- <dimen name="preference_screen_header_vertical_padding">0dp</dimen>
-
- <dimen name="preference_screen_header_padding_side">16dip</dimen>
- <integer name="preference_screen_header_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay -->
-
- <integer name="preference_fragment_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay -->
-
- <dimen name="preference_item_padding_side">8dip</dimen>
- <dimen name="preference_item_padding_inner">8dip</dimen>
- <dimen name="preference_child_padding_side">16dip</dimen>
-
- <!-- The platform's desired minimum size for a dialog's width when it
- is along the minor axis (that is the screen is portrait). This may
- be either a fraction or a dimension. -->
- <item type="dimen" name="dialog_min_width_minor">95%</item>
-
- <!-- The width of the big icons in notifications. -->
- <dimen name="notification_large_icon_width">64dp</dimen>
- <!-- The width of the big icons in notifications. -->
- <dimen name="notification_large_icon_height">64dp</dimen>
-
- <!-- Minimum width of the search view text entry area. -->
- <dimen name="search_view_text_min_width">160dip</dimen>
-
- <!-- Preferred width of the search view. -->
- <dimen name="search_view_preferred_width">320dip</dimen>
-
- <!-- Dialog title height -->
- <dimen name="alert_dialog_title_height">64dip</dimen>
- <!-- Dialog button bar height -->
- <dimen name="alert_dialog_button_bar_height">48dip</dimen>
-
- <!-- Default height of an action bar. -->
- <dimen name="action_bar_default_height">48dip</dimen>
- <!-- Vertical padding around action bar icons. -->
- <dimen name="action_bar_icon_vertical_padding">8dip</dimen>
- <!-- Text size for action bar titles -->
- <dimen name="action_bar_title_text_size">18dp</dimen>
- <!-- Text size for action bar subtitles -->
- <dimen name="action_bar_subtitle_text_size">14dp</dimen>
- <!-- Top margin for action bar subtitles -->
- <dimen name="action_bar_subtitle_top_margin">-3dp</dimen>
- <!-- Bottom margin for action bar subtitles -->
- <dimen name="action_bar_subtitle_bottom_margin">5dip</dimen>
-
- <!-- Size of clock font in LockScreen on Unsecure unlock screen. -->
- <dimen name="keyguard_lockscreen_clock_font_size">80dip</dimen>
-
- <!-- Size of status line font on Unsecure unlock LockScreen. -->
- <dimen name="keyguard_lockscreen_status_line_font_size">14dip</dimen>
-
- <!-- Size of right margin on Unsecure unlock LockScreen -->
- <dimen name="keyguard_lockscreen_status_line_font_right_margin">42dip</dimen>
-
- <!-- Size of top margin on Clock font to edge on unlock LockScreen -->
- <dimen name="keyguard_lockscreen_status_line_clockfont_top_margin">22dip</dimen>
-
- <!-- Size of top margin on Clock font to edge on unlock LockScreen -->
- <dimen name="keyguard_lockscreen_status_line_clockfont_bottom_margin">12dip</dimen>
-
- <!-- Padding on left margin of PIN text entry field to center it when del button is showing -->
- <dimen name="keyguard_lockscreen_pin_margin_left">40dip</dimen>
-
- <!-- Height of FaceUnlock view in keyguard -->
- <dimen name="face_unlock_height">330dip</dimen>
-
- <!-- Minimum popup width for selecting an activity in ActivityChooserDialog/ActivityChooserView. -->
- <dimen name="activity_chooser_popup_min_width">200dip</dimen>
-
- <!-- The default gap between components in a layout. -->
- <dimen name="default_gap">8dip</dimen>
-
- <!-- Text padding for dropdown items -->
- <dimen name="dropdownitem_text_padding_left">8dip</dimen>
-
- <!-- Text padding for dropdown items -->
- <dimen name="dropdownitem_text_padding_right">8dip</dimen>
-
- <!-- Width of the icon in a dropdown list -->
- <dimen name="dropdownitem_icon_width">32dip</dimen>
-
- <!-- Default width for a textview error popup -->
- <dimen name="textview_error_popup_default_width">240dip</dimen>
-
- <!-- Volume panel y offset -->
- <dimen name="volume_panel_top">80dp</dimen>
-
- <!-- Default padding to apply to AppWidgetHostViews containing widgets targeting API level 14 and up. -->
- <dimen name="default_app_widget_padding_left">8dp</dimen>
- <dimen name="default_app_widget_padding_top">8dp</dimen>
- <dimen name="default_app_widget_padding_right">8dp</dimen>
- <dimen name="default_app_widget_padding_bottom">8dp</dimen>
-
- <!-- Minimum width for an action button in the menu area of an action bar -->
- <dimen name="action_button_min_width">56dip</dimen>
-
- <!-- Maximum height for a stacked tab bar as part of an action bar -->
- <dimen name="action_bar_stacked_max_height">48dp</dimen>
-
- <!-- Maximum width for a stacked action bar tab. This prevents
- action bar tabs from becoming too wide on a wide screen when only
- a few are present. -->
- <dimen name="action_bar_stacked_tab_max_width">180dp</dimen>
-
- <!-- Size of notification text (see TextAppearance.StatusBar.EventContent) -->
- <dimen name="notification_text_size">14dp</dimen>
- <!-- Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) -->
- <dimen name="notification_title_text_size">18dp</dimen>
- <!-- Size of smaller notification text (see TextAppearance.StatusBar.EventContent.Line2, Info, Time) -->
- <dimen name="notification_subtext_size">12dp</dimen>
-
- <!-- Keyguard dimensions -->
- <!-- TEMP -->
- <dimen name="kg_security_panel_height">600dp</dimen>
-
- <!-- Height of security view in keyguard. -->
- <dimen name="kg_security_view_height">480dp</dimen>
-
- <!-- Width of widget view in keyguard. -->
- <dimen name="kg_widget_view_width">0dp</dimen>
-
- <!-- Height of widget view in keyguard. -->
- <dimen name="kg_widget_view_height">0dp</dimen>
-
- <!-- Size of the clock font in keyguard's status view -->
- <dimen name="kg_status_clock_font_size">75dp</dimen>
-
- <!-- Size of the date font in keyguard's status view -->
- <dimen name="kg_status_date_font_size">15dp</dimen>
-
- <!-- Size of the generic status lines keyguard's status view -->
- <dimen name="kg_status_line_font_size">13dp</dimen>
-
- <!-- Size of margin on the right of keyguard's status view -->
- <dimen name="kg_status_line_font_right_margin">16dp</dimen>
-
- <!-- Top margin for the clock view -->
- <dimen name="kg_clock_top_margin">-16dp</dimen>
-
- <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
- <dimen name="kg_key_horizontal_gap">0dp</dimen>
-
- <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
- <dimen name="kg_key_vertical_gap">0dp</dimen>
-
- <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
- <dimen name="kg_pin_key_height">60dp</dimen>
-
- <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) -->
- <dimen name="kg_secure_padding_height">46dp</dimen>
-
- <!-- The height of the runway lights strip -->
- <dimen name="kg_runway_lights_height">7dp</dimen>
-
- <!-- The height of the runway lights strip -->
- <dimen name="kg_runway_lights_vertical_padding">2dp</dimen>
-
- <!-- Horizontal padding for the widget pager -->
- <dimen name="kg_widget_pager_horizontal_padding">16dp</dimen>
-
- <!-- Top padding for the widget pager -->
- <dimen name="kg_widget_pager_top_padding">0dp</dimen>
-
- <!-- Bottom padding for the widget pager -->
- <dimen name="kg_widget_pager_bottom_padding">64dp</dimen>
-
- <!-- Top margin for the runway lights. We add a negative margin in large
- devices to account for the widget pager padding -->
- <dimen name="kg_runway_lights_top_margin">0dp</dimen>
-
- <!-- Touch slop for the global toggle accessibility gesture -->
- <dimen name="accessibility_touch_slop">80dip</dimen>
-
- <!-- Width of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) -->
- <dimen name="keyguard_security_width">320dp</dimen>
-
- <!-- Height of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) -->
- <dimen name="keyguard_security_height">400dp</dimen>
-
- <!-- Margin around the various security views -->
- <dimen name="keyguard_security_view_margin">8dp</dimen>
-
- <!-- Margin around the various security views -->
- <dimen name="keyguard_muliuser_selector_margin">8dp</dimen>
-
- <!-- Stroke width of the frame for the circular avatars. -->
- <dimen name="keyguard_avatar_frame_stroke_width">2dp</dimen>
-
- <!-- Shadow radius under the frame for the circular avatars. -->
- <dimen name="keyguard_avatar_frame_shadow_radius">1dp</dimen>
-
- <!-- Size of the avator on hte multiuser lockscreen. -->
- <dimen name="keyguard_avatar_size">66dp</dimen>
-
- <!-- Size of the text under the avator on the multiuser lockscreen. -->
- <dimen name="keyguard_avatar_name_size">10sp</dimen>
-
- <!-- Size of the region along the edge of the screen that will accept
- swipes to scroll the widget area. -->
- <dimen name="kg_edge_swipe_region_size">24dp</dimen>
-
- <!-- If the height if keyguard drops below this threshold (most likely
- due to the appearance of the IME), then drop the multiuser selector. -->
- <dimen name="kg_squashed_layout_threshold">600dp</dimen>
-
- <!-- The height of widgets which do not support vertical resizing. This is only
- used on tablets; on phones, this size is determined by the space left by the
- security mode. -->
- <dimen name="kg_small_widget_height">160dp</dimen>
-
- <!-- Rounded corner radius for video subtitles. -->
- <dimen name="subtitle_corner_radius">2dp</dimen>
-
- <!-- Shadow radius for video subtitles. -->
- <dimen name="subtitle_shadow_radius">2dp</dimen>
-
- <!-- Shadow offset for video subtitles. -->
- <dimen name="subtitle_shadow_offset">2dp</dimen>
-
- <!-- Outline width for video subtitles. -->
- <dimen name="subtitle_outline_width">2dp</dimen>
-
- <!-- width of ImmersiveModeConfirmation (-1 for match_parent) -->
- <dimen name="immersive_mode_cling_width">-1px</dimen>
-</resources>
diff --git a/res/values/pdnsd.xml b/res/values/pdnsd.xml
deleted file mode 100644
index 522f765..0000000
--- a/res/values/pdnsd.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="pdnsd_conf" formatted="false">
-global {
- perm_cache=0;
- cache_dir="/data/data/org.torproject.android/app_bin";
- server_port = 8091;
- server_ip = 0.0.0.0;
- query_method=udp_only;
- min_ttl=15m;
- max_ttl=1w;
- timeout=10;
- daemon=on;
- pid_file="/data/data/org.torproject.android/app_bin/pdnsd.pid";
-
-}
-
-server {
- label= "upstream";
- ip = %s;
- port = %d;
- uptest = none;
-}
-
-rr {
- name=localhost;
- reverse=on;
- a=127.0.0.1;
- owner=localhost;
- soa=localhost,root.localhost,42,86400,900,86400,86400;
-}
- </string>
-</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
deleted file mode 100644
index 9f6431d..0000000
--- a/res/values/strings.xml
+++ /dev/null
@@ -1,339 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <string name="app_name">Orbot</string>
- <string name="app_description">Orbot is a free proxy app that empowers other apps to use the internet more securely. Orbot uses Tor to encrypt your Internet traffic and then hides it by bouncing through a series of computers around the world. Tor is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security known as traffic analysis.</string>
- <string name="internal_web_url">http://orbot/</string>
- <string name="default_web_url">http://check.torproject.org</string>
- <string name="secure_default_web_url">https://check.torproject.org</string>
- <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
- <string name="control_permission_label">start and stop Tor</string>
- <string name="tor_proxy_service_process">torproxyservice</string>
- <string name="status_starting_up">Orbot is starting…</string>
- <string name="status_activated">Connected to the Tor network</string>
- <string name="status_disabled">Orbot is deactivated</string>
- <string name="status_shutting_down">TorService is shutting down</string>
- <string name="tor_process_starting">Starting Tor client…</string>
- <string name="tor_process_complete">complete.</string>
- <string name="tor_process_waiting">waiting.</string>
- <string name="not_anonymous_yet">WARNING: Your traffic is not anonymous yet! Please configure your applications to use HTTP proxy 127.0.0.1:8118 or SOCKS4A or SOCKS5 proxy 127.0.0.1:9050</string>
- <string name="menu_home">Home</string>
- <string name="menu_browse">Browse</string>
- <string name="menu_settings">Settings</string>
- <string name="menu_log">Log</string>
- <string name="menu_info">Help</string>
- <string name="menu_apps">VPN</string>
- <string name="menu_start">Start</string>
- <string name="menu_stop">Stop</string>
- <string name="menu_about">About</string>
- <string name="menu_promo_apps">Get appsâ?¦</string>
- <string name="main_layout_download">Download</string>
- <string name="main_layout_upload">Upload</string>
- <string name="button_help">Help</string>
- <string name="button_close">Close</string>
- <string name="button_about">About</string>
- <string name="button_clear_log">Clear Log</string>
- <string name="menu_verify">Check</string>
- <string name="menu_exit">Exit</string>
- <string name="menu_scan">Scan BridgeQR</string>
- <string name="menu_share_bridge">Share BridgeQR</string>
- <string name="press_to_start">- long press to start -</string>
- <string name="pref_trans_proxy_group">Transparent Proxying (Requires Root)</string>
- <string name="pref_trans_proxy_title">Transparent Proxying</string>
- <string name="pref_trans_proxy_summary">Automatic Torifying of Apps</string>
- <string name="pref_transparent_all_title">Tor Everything</string>
- <string name="pref_transparent_all_summary">Proxy traffic for all apps through Tor</string>
- <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
- <string name="pref_transparent_port_fallback_summary">WARNING: Circumvents common ports (80, 443, etc). *USE ONLY* if \'All\' or \'App\' mode doesn\'t work.</string>
- <string name="pref_transparent_port_title">Port List</string>
- <string name="pref_transparent_port_summary">List of ports to proxy. *USE ONLY* if \'All\' or \'App\' mode doesn\'t work</string>
- <string name="pref_transparent_port_dialog">Enter ports to proxy</string>
- <string name="pref_has_root">Request Root Access</string>
- <string name="pref_has_root_summary">Request root access for transparent proxying</string>
- <string name="status_install_success">Tor binaries successfully installed!</string>
- <string name="status_install_fail">The Tor binary files were unable to be installed. Please check the log and notify tor-assistants@xxxxxxxxxxxxxx</string>
- <string name="title_error">Application Error</string>
- <string name="wizard_title">Orbot</string>
- <string name="wizard_btn_tell_me_more">About Orbot</string>
- <string name="btn_next">Next</string>
- <string name="btn_back">Back</string>
- <string name="btn_finish">Finish</string>
- <string name="btn_okay">Okay</string>
- <string name="btn_cancel">Cancel</string>
- <!--Welcome Wizard strings (DJH)-->
- <string name="wizard_details">Some Orbot Details</string>
- <string name="wizard_details_msg">Orbot is an open-source application that contains Tor, LibEvent and Polipo. It provides a local HTTP proxy (8118) and a SOCKS proxy (9050) into the Tor network. Orbot also has the ability, on rooted device, to send all internet traffic through Tor.</string>
- <string name="wizard_permissions_root">Permission Granted</string>
- <string name="wizard_permissions_stock">Orbot Permissions</string>
- <string name="wizard_premissions_msg_root">Excellent! We\'ve detected that you have root permissions enabled for Orbot. We will use this power wisely.</string>
- <string name="wizard_permissions_msg_stock"> While it is not required, Orbot can become a more powerful tool if your device has root access. Use the button below to grant Orbot superpowers! </string>
- <string name="wizard_permissions_no_root">If you don\'t have root access or have no idea what we\'re talking about, just be sure to use apps made to work with Orbot.</string>
- <string name="wizard_permissions_consent">I understand and would like to continue without Superuser</string>
- <string name="wizard_permission_enable_root">Grant Root for Orbot</string>
- <string name="wizard_configure">Configure Torification</string>
- <string name="wizard_configure_msg">Orbot gives you the option to route all application traffic through Tor OR to choose your applications individually.</string>
- <string name="wizard_configure_all">Proxy All Apps Through Tor</string>
- <string name="wizard_configure_select_apps">Select Individual Apps for Tor</string>
- <string name="wizard_tips_tricks">Orbot-enabled Apps</string>
- <string name="wizard_tips_msg">The apps below were developed to work with Orbot. Click each button to install now, or you can find them later on Google Play, at GuardianProject.info website or via F-Droid.org.</string>
- <string name="wizard_tips_otrchat">ChatSecure - Secure instant messaging client for Android</string>
- <string name="wizard_tips_proxy">Proxy Settings - Learn how to configure apps to work with Orbot</string>
- <string name="wizard_tips_duckgo">DuckDuckGo Search Engine app</string>
- <string name="wizard_tips_twitter">Set Twitter proxy to host \"localhost\" and port 8118</string>
- <string name="wizard_tips_story_maker">StoryMaker - Make a story and leave it to tor for security!</string>
- <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
- <string name="wizard_proxy_help_info">Proxy Settings</string>
- <string name="wizard_proxy_help_msg">If the Android app you are using can support the use of an HTTP or SOCKS proxy, then you can configure it to connect to Orbot and use Tor.\n\n\n The host settings is 127.0.0.1 or \"localhost\". For HTTP, the port setting is 8118. For SOCKS, the proxy is 9050. You should use SOCKS4A or SOCKS5 if possible.\n \n\n\n You can learn more about proxying on Android via the FAQ at: http://tinyurl.com/proxyandroid\n </string>
- <string name="wizard_final">Orbot is ready!</string>
- <string name="wizard_final_msg">Millions of people around the world use Tor for a wide variety of reasons.\n\nJournalists and bloggers, human rights defenders, law enforcement officers, soldiers, corporations, citizens of repressive regimes, and just ordinary citizens… and now you are ready to, as well!</string>
- <string name="wizard_exit_at_first_screen_toast">Please configure Orbot before you can start using it!</string>
- <!--END Welcome Wizard strings (DJH)-->
- <string name="connect_first_time">You\'ve successfully connected to the Tor network - but this does NOT mean your device is secure. You can use the \'Browser\' button to test your connection. \n\nVisit us at https://guardianproject.info/apps/orbot or send an email to help@xxxxxxxxxxxxxxxxxxxx to learn more.</string>
- <string name="tor_check">This will open your web browser to https://check.torproject.org in order to see if Orbot is probably configured and you are connected to Tor.</string>
- <string name="pref_hs_group">Hidden Service Hosting</string>
- <string name="pref_general_group">General</string>
- <string name="pref_start_boot_title">Start Orbot on Boot</string>
- <string name="pref_start_boot_summary">Automatically start Orbot and connect Tor when your Android device boots</string>
- <!--New Wizard Strings-->
- <!--Title Screen-->
- <string name="wizard_title_msg">Orbot brings Tor to Android!\n\nTor helps you defend against content filtering, traffic analysis and network surveillance that threatens privacy, confidential information and personal relationships.\n\nThis wizard will help you configure Orbot and Tor on your device.</string>
- <!--Warning screen-->
- <string name="wizard_warning_title">Warning</string>
- <string name="wizard_warning_msg">Simply installing Orbot will not automatically anonymize your mobile traffic.\n\nYou must properly configure Orbot, your device and other apps to successfully use Tor.</string>
- <!--Permissions screen-->
- <string name="wizard_permissions_title">Permissions</string>
- <string name="wizard_permissions_root_msg1">You can optionally grant Orbot \'Superuser\' access to enable advanced features, such as Transparent Proxying.</string>
- <string name="wizard_permissions_root_msg2">If you do not want to do this, please make sure to use apps made to work with Orbot</string>
- <string name="wizard_permissions_no_root_msg">Your device does not appear to be rooted or provide root or \'Superuser\' access.\n\nPlease try the \'Apps\' mode on the main screen instead.</string>
- <!--TipsAndTricks screen-->
- <string name="wizard_tips_title">Orbot-Enabled Apps</string>
- <string name="wizard_tips_gibberbot">ChatSecure: Secure chat app with Off-the-Record Encryption</string>
- <string name="wizard_tips_orweb">Orfox: Privacy-enhanced browser that works through Tor</string>
- <string name="wizard_tips_play">Find all Guardian Project apps on Google Play</string>
- <string name="wizard_tips_fdroid">Find all Guardian Project apps on F-Droid</string>
- <string name="wizard_tips_fdroid_org">Find all Guardian Project apps on https://f-droid.org</string>
- <!--Transparent Proxy screen-->
- <string name="wizard_transproxy_title">Transparent Proxying</string>
- <string name="wizard_transproxy_msg">This allows your apps to automatically run through the Tor network without any configuration.</string>
- <string name="wizard_transproxy_hint">(Check this box if you have no idea what we are talking about)</string>
- <string name="wizard_transproxy_none">None</string>
- <string name="pref_transparent_tethering_title">Tor Tethering</string>
- <string name="pref_transparent_tethering_summary">Enable Tor Transparent Proxying for Wifi and USB Tethered Devices (requires restart)</string>
- <string name="button_grant_superuser">Request Superuser Access</string>
- <string name="pref_select_apps">Select Apps</string>
- <string name="pref_select_apps_summary">Choose Apps to Route Through Tor</string>
- <string name="pref_node_configuration">Node Configuration</string>
- <string name="pref_node_configuration_summary">These are advanced settings that can reduce your anonymity</string>
- <string name="pref_entrance_node">Entrance Nodes</string>
- <string name="pref_entrance_node_summary">Fingerprints, nicks, countries and addresses for the first hop</string>
- <string name="pref_entrance_node_dialog">Enter Entrance Nodes</string>
- <string name="pref_allow_background_starts_title">Allow Background Starts</string>
- <string name="pref_allow_background_starts_summary">Let any app tell Orbot to start Tor and related services</string>
-
- <string name="button_proxy_all">Proxy All</string>
- <string name="button_proxy_none">Proxy None</string>
- <string name="button_invert_selection">Invert Selection</string>
-
- <string name="pref_proxy_title">Outbound Network Proxy (Optional)</string>
-
- <string name="pref_proxy_type_title">Outbound Proxy Type</string>
- <string name="pref_proxy_type_summary">Protocol to use for proxy server: HTTP, HTTPS, Socks4, Socks5</string>
- <string name="pref_proxy_type_dialog">Enter Proxy Type</string>
-
- <string name="pref_proxy_host_title">Outbound Proxy Host</string>
- <string name="pref_proxy_host_summary">Proxy Server hostname</string>
- <string name="pref_proxy_host_dialog">Enter Proxy Host</string>
-
- <string name="pref_proxy_port_title">Outbound Proxy Port</string>
- <string name="pref_proxy_port_summary">Proxy Server port</string>
- <string name="pref_proxy_port_dialog">Enter Proxy port</string>
-
- <string name="pref_proxy_username_title">Outbound Proxy Username</string>
- <string name="pref_proxy_username_summary">Proxy Username (Optional)</string>
- <string name="pref_proxy_username_dialog">Enter Proxy Username</string>
-
- <string name="pref_proxy_password_title">Outbound Proxy Password</string>
- <string name="pref_proxy_password_summary">Proxy Password (Optional)</string>
- <string name="pref_proxy_password_dialog">Enter Proxy Password</string>
-
-
-
- <string name="status">Status</string>
- <string name="setting_up_full_transparent_proxying_">Setting up full transparent proxying…</string>
- <string name="setting_up_app_based_transparent_proxying_">Setting up app-based transparent proxying…</string>
- <string name="transparent_proxying_enabled">Transparent proxying ENABLED</string>
- <string name="transproxy_enabled_for_tethering_">TransProxy enabled for Tethering!</string>
- <string name="warning_error_starting_transparent_proxying_">WARNING: error starting transparent proxying!</string>
- <string name="transproxy_rules_cleared">TransProxy rules cleared</string>
- <string name="couldn_t_start_tor_process_">Couldn\'t start Tor process: </string>
- <string name="privoxy_is_running_on_port_">Polipo is running on port: </string>
- <string name="setting_up_port_based_transparent_proxying_">Setting up port-based transparent proxying…</string>
- <string name="bridge_error">Bridge Error</string>
- <string name="bridge_requires_ip">In order to use the bridge feature, you must enter at least one bridge IP address.</string>
- <string name="send_email_for_bridges">Send an email to bridges@xxxxxxxxxxxxxx with the line \"get bridges\" by itself in the body of the mail from a gmail account.</string>
- <string name="error">Error</string>
- <string name="your_reachableaddresses_settings_caused_an_exception_">Your ReachableAddresses settings caused an exception!</string>
- <string name="your_relay_settings_caused_an_exception_">Your relay settings caused an exception!</string>
- <string name="exit_nodes">Exit Nodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerprints, nicks, countries and addresses for the last hop</string>
- <string name="enter_exit_nodes">Enter Exit Nodes</string>
- <string name="exclude_nodes">Exclude Nodes</string>
- <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerprints, nicks, countries and addresses to exclude</string>
- <string name="enter_exclude_nodes">Enter Exclude Nodes</string>
- <string name="strict_nodes">Strict Nodes</string>
- <string name="use_only_these_specified_nodes">Use *only* these specified nodes</string>
- <string name="bridges">Bridges</string>
- <string name="use_bridges">Use Bridges</string>
- <string name="bridges_obfuscated">Obfuscated Bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Enable alternate entrance nodes into the Tor Network</string>
- <string name="enable_if_configured_bridges_are_obfuscated_bridges">Enable if configured bridges are obfuscated bridges</string>
- <string name="ip_address_and_port_of_bridges">IP address and port of bridges</string>
- <string name="enter_bridge_addresses">Enter Bridge Addresses</string>
- <string name="relays">Relays</string>
- <string name="relaying">Relaying</string>
- <string name="enable_your_device_to_be_a_non_exit_relay">Enable your device to be a non-exit relay</string>
- <string name="relay_port">Relay Port</string>
- <string name="listening_port_for_your_tor_relay">Listening port for your Tor relay</string>
- <string name="enter_or_port">Enter OR port</string>
- <string name="relay_nickname">Relay nickname</string>
- <string name="the_nickname_for_your_tor_relay">The nickname for your Tor relay</string>
- <string name="enter_a_custom_relay_nickname">Enter a custom relay nickname</string>
- <string name="reachable_addresses">Reachable Addresses</string>
- <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Run as a client behind a firewall with restrictive policies</string>
- <string name="reachable_ports">Reachable ports</string>
- <string name="ports_reachable_behind_a_restrictive_firewall">Ports reachable behind a restrictive firewall</string>
- <string name="enter_ports">Enter ports</string>
- <string name="enable_hidden_services">Hidden Service Hosting</string>
- <string name="run_servers_accessible_via_the_tor_network">allow on-device server to be accessible via the Tor network</string>
- <string name="enter_localhost_ports_for_hidden_services">enter localhost ports for hidden services</string>
- <string name="hidden_service_ports">Hidden Service Ports</string>
- <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">the addressable name for your hidden service (generated automatically)</string>
- <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">enable debug log to output (must use adb or aLogCat to view)</string>
- <string name="project_home">Project Home(s): </string>
- <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
- <string name="the_tor_license">The Tor License</string>
- <string name="https_torproject_org">https://torproject.org</string>
- <string name="third_party_software">3rd-Party-Software: </string>
- <string name="tor_version">Tor: https://www.torproject.org</string>
- <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
- <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
- <string name="hidden_service_request">An app wants to open hidden server port %S to the Tor network. This is safe if you trust the app.</string>
- <string name="found_existing_tor_process">found existing Tor process…</string>
- <string name="something_bad_happened">Something bad happened. Check the log</string>
- <string name="hidden_service_on">hidden service on:</string>
- <string name="unable_to_read_hidden_service_name">unable to read hidden service name</string>
- <string name="unable_to_start_tor">Unable to start Tor:</string>
- <string name="unable_to_reset_tor">Reboot your device, unable to reset Tor!</string>
- <string name="pref_use_sys_iptables_title">Use Default Iptables</string>
- <string name="pref_use_sys_iptables_summary">use the built-in iptables binary instead of the one bundled with Orbot</string>
-
- <string name="error_installing_binares">The Tor binaries were not able to be installed or upgraded.</string>
-
- <string name="pref_use_persistent_notifications">Always keep the icon in toolbar when Orbot is connected</string>
- <string name="pref_use_persistent_notifications_title">Always-On Notifications</string>
-
- <string name="pref_use_expanded_notifications">Show expanded notification with Tor exit country and IP</string>
- <string name="pref_use_expanded_notifications_title">Expanded Notifications</string>
-
- <string name="notification_using_bridges">Bridges enabled!</string>
- <string name="default_bridges"/>
- <string name="set_locale_title">Language</string>
- <string name="set_locale_summary">Choose the locale and language for Orbot</string>
- <string name="wizard_locale_title">Choose Language</string>
- <string name="wizard_locale_msg">Leave default or switch the current language</string>
- <string name="powered_by">powered by Tor</string>
- <string name="btn_save_settings">Save Settings</string>
- <string name="no_internet_connection_tor">No internet connection; Tor is on standbyâ?¦</string>
- <string name="bandwidth_">Bandwidth:</string>
- <string name="down">down</string>
- <string name="up">up</string>
- <string name="pref_disable_network_title">No Network Auto-Sleep</string>
- <string name="pref_disable_network_summary">Put Tor to sleep when there is no internet available</string>
- <string name="newnym">You\'ve switched to a new Tor identity!</string>
-
- <string name="menu_verify_browser">Browser</string>
- <string name="menu_use_chatsecure">Use ChatSecure</string>
-
- <string name="permission_manage_tor_label">Manage Tor</string>
- <string name="permission_manage_tor_description">Enable this app to control the Tor service</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">It doesn\'t seem like you have Orfox installed. Want help with that, or should we just open the browser?</string>
- <string name="install_apps_">Install apps?</string>
- <string name="no_network_connectivity_putting_tor_to_sleep_">No network connectivity. Putting Tor to sleepâ?¦</string>
- <string name="network_connectivity_is_good_waking_tor_up_">Network connectivity is good. Waking Tor upâ?¦</string>
- <string name="updating_settings_in_tor_service">updating settings in Tor service</string>
-
- <string name="pref_socks_title">Tor SOCKS</string>
- <string name="pref_socks_summary">Port that Tor offers its SOCKS proxy on (default: 9050 or 0 to disable)</string>
- <string name="pref_socks_dialog">SOCKS Port Config</string>
-
- <string name="pref_transport_title">Tor TransProxy Port</string>
- <string name="pref_transport_summary">Port that Tor offers its Transparent Proxy on (default: 9040 or 0 to disable)</string>
- <string name="pref_transport_dialog">TransProxy Port Config</string>
-
-
- <string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="pref_dnsport_summary">Port that Tor offers its DNS on (default: 5400 or 0 to disable)</string>
- <string name="pref_dnsport_dialog">DNS Port Config</string>
-
-
- <string name="pref_torrc_title">Torrc Custom Config</string>
- <string name="pref_torrc_summary">EXPERTS ONLY: enter direct torrc config lines</string>
- <string name="pref_torrc_dialog">Custom Torrc</string>
-
- <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
- <string name="your_tor_public_ips_">Your Tor Public IPs:</string>
- <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">"Please disable this app in Android->Settings->Apps if you are having problems with Orbot: "</string>
- <string name="app_conflict">App Conflict</string>
-
-
- <string name="pref_transproxy_refresh_title">Transproxy Auto-Refresh</string>
- <string name="pref_transproxy_refresh_summary">Re-apply Transproxy rules when the network state changes</string>
-
- <string name="pref_transproxy_flush_title">Transproxy FORCE REMOVE</string>
- <string name="pref_transproxy_flush_summary">Tap here to flush all transproxy network rules NOW</string>
- <string name="transparent_proxy_rules_flushed_">Transparent proxy rules flushed!</string>
- <string name="you_do_not_have_root_access_enabled">You do not have ROOT access enabled</string>
- <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">You may need to stop and start Orbot for settings change to be enabled.</string>
-
- <string name="menu_vpn">VPN</string>
-
- <string name="kbps">kbps</string>
-
- <string name="mbps">mbps</string>
-
- <string name="kb">KB</string>
-
- <string name="mb">MB</string>
-
- <string name="bridges_updated">Bridges Updated</string>
-
- <string name="restart_orbot_to_use_this_bridge_">Please restart Orbot to enable the changes</string>
-
- <string name="menu_qr">QR Codes</string>
-
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">If your mobile network actively blocks Tor, you can use a Bridge to access the network. SELECT one of the bridge types above to enable bridges.</string>
-
- <string name="bridge_mode">Bridge Mode</string>
-
- <string name="get_bridges_email">Email</string>
- <string name="get_bridges_web">Web</string>
-
- <string name="activate">Activate</string>
-
- <string name="apps_mode">Apps VPN Mode</string>
-
- <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">You can enable all apps on your device to run through the Tor network using the VPN feature of Android.\n\n*WARNING* This is a new, experimental feature and in some cases may not start automatically, or may stop. It should NOT be used for anonymity, and ONLY used for getting through firewalls and filters.</string>
-
- <string name="send_email">Send Email</string>
-
- <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">You can get a bridge address through email, the web or by scanning a bridge QR code. Select \'Email\' or \'Web\' below to request a bridge address.\n\nOnce you have an address, copy & paste it into the \"Bridges\" preference in Orbot\'s setting and restart.</string>
-
- <string name="install_orweb">Install Orfox</string>
-
- <string name="standard_browser">Standard Browser</string>
-
- <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTE: Only standard Tor bridges work on Intel X86/ATOM devices</string>
-
- <string name="vpn_default_world">World</string>
-</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
deleted file mode 100644
index b3fe8af..0000000
--- a/res/values/styles.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent" />
- <style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title" />
-</resources>
diff --git a/res/values/theme.xml b/res/values/theme.xml
deleted file mode 100644
index e51e533..0000000
--- a/res/values/theme.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<resources>
- <style name="DefaultTheme" parent="Theme.AppCompat.NoActionBar">
- </style>
-
-</resources>
-
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
deleted file mode 100644
index f34548e..0000000
--- a/res/xml/preferences.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-<PreferenceCategory android:title="@string/pref_general_group">
-<CheckBoxPreference
-android:defaultValue="true"
-android:key="pref_start_boot"
-android:title="@string/pref_start_boot_title"
-android:summary="@string/pref_start_boot_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="true"
-android:key="pref_persistent_notifications"
-android:summary="@string/pref_use_persistent_notifications"
-android:enabled="true"
-android:title="@string/pref_use_persistent_notifications_title"/>
-
-<CheckBoxPreference
-android:defaultValue="true"
-android:key="pref_expanded_notifications"
-android:summary="@string/pref_use_expanded_notifications"
-android:enabled="true"
-android:title="@string/pref_use_expanded_notifications_title"/>
-
-<CheckBoxPreference
-android:defaultValue="true"
-android:key="pref_allow_background_starts"
-android:summary="@string/pref_allow_background_starts_summary"
-android:title="@string/pref_allow_background_starts_title"/>
-
- <ListPreference android:title="@string/set_locale_title"
- android:key="pref_default_locale"
- android:summary="@string/set_locale_summary"
- android:defaultValue="en">
- </ListPreference>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_trans_proxy_group">
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="has_root"
-android:title="@string/pref_has_root"
-android:summary="@string/pref_has_root_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="pref_transparent"
-android:title="@string/pref_trans_proxy_title"
-android:summary="@string/pref_trans_proxy_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="pref_transparent_all"
-android:summary="@string/pref_transparent_all_summary"
-android:enabled="true"
-android:title="@string/pref_transparent_all_title"/>
-
-<Preference
-android:defaultValue=""
-android:key="pref_transparent_app_list"
-android:title="@string/pref_select_apps"
-android:summary="@string/pref_select_apps_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="pref_transparent_tethering"
-android:summary="@string/pref_transparent_tethering_summary"
-android:enabled="true"
-android:dependency="has_root"
-android:title="@string/pref_transparent_tethering_title"/>
-
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_node_configuration"
- android:summary="@string/pref_node_configuration_summary">
-
-<EditTextPreference android:key="pref_entrance_nodes"
-android:title="@string/pref_entrance_node"
-android:summary="@string/pref_entrance_node_summary"
-android:dialogTitle="@string/pref_entrance_node_dialog"
-/>
-<EditTextPreference android:key="pref_exit_nodes"
-android:title="@string/exit_nodes"
-android:summary="@string/fingerprints_nicks_countries_and_addresses_for_the_last_hop"
-android:dialogTitle="@string/enter_exit_nodes"
-/>
-<EditTextPreference android:key="pref_exclude_nodes"
-android:title="@string/exclude_nodes"
-android:summary="@string/fingerprints_nicks_countries_and_addresses_to_exclude"
-android:dialogTitle="@string/enter_exclude_nodes"
-/>
-
-<CheckBoxPreference android:defaultValue="false"
-android:title="@string/strict_nodes" android:key="pref_strict_nodes"
-android:summary="@string/use_only_these_specified_nodes"/>
-
-</PreferenceCategory>
-<PreferenceCategory android:title="@string/bridges">
-
-<CheckBoxPreference android:defaultValue="false"
-android:title="@string/use_bridges" android:key="pref_bridges_enabled"
-android:summary="@string/enable_alternate_entrance_nodes_into_the_tor_network"/>
-
-<EditTextPreference android:key="pref_bridges_list"
-android:title="@string/bridges"
-android:summary="@string/ip_address_and_port_of_bridges"
-android:dialogTitle="@string/enter_bridge_addresses"
-android:defaultValue="@string/default_bridges"
-android:inputType="textMultiLine|textNoSuggestions"
-/>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/relays">
-<CheckBoxPreference android:key="pref_or"
-android:defaultValue="false"
-android:title="@string/relaying"
-android:summary="@string/enable_your_device_to_be_a_non_exit_relay"
-android:enabled="true"
-/>
-
-<EditTextPreference android:key="pref_or_port"
-android:defaultValue="9001"
-android:title="@string/relay_port"
-android:summary="@string/listening_port_for_your_tor_relay"
-android:dialogTitle="@string/enter_or_port"
-/>
-
-<EditTextPreference android:key="pref_or_nickname"
-android:defaultValue="OrbotRelay"
-android:title="@string/relay_nickname"
-android:summary="@string/the_nickname_for_your_tor_relay"
-android:dialogTitle="@string/enter_a_custom_relay_nickname"
-/>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="ReachableAddresses">
-<CheckBoxPreference
-android:key="pref_reachable_addresses"
-android:defaultValue="false"
-android:title="@string/reachable_addresses"
-android:summary="@string/run_as_a_client_behind_a_firewall_with_restrictive_policies"
-android:enabled="true"></CheckBoxPreference>
-
-<EditTextPreference
-android:key="pref_reachable_addresses_ports"
-android:defaultValue="*:80,*:443"
-android:title="@string/reachable_ports"
-android:summary="@string/ports_reachable_behind_a_restrictive_firewall"
-android:dialogTitle="@string/enter_ports"
-/>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_hs_group">
-<CheckBoxPreference android:title="@string/enable_hidden_services"
-android:summary="@string/run_servers_accessible_via_the_tor_network" android:key="pref_hs_enable"></CheckBoxPreference>
-<EditTextPreference android:summary="@string/enter_localhost_ports_for_hidden_services"
-android:title="@string/hidden_service_ports" android:enabled="false" android:key="pref_hs_ports"></EditTextPreference>
-
-<EditTextPreference android:key="pref_hs_hostname"
-android:summary="@string/the_addressable_name_for_your_hidden_service_generated_automatically_"
-android:title=".Onion Hostname"></EditTextPreference>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_proxy_title">
-<EditTextPreference android:key="pref_proxy_type"
-android:title="@string/pref_proxy_type_title"
-android:summary="@string/pref_proxy_type_summary"
-android:dialogTitle="@string/pref_proxy_type_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_host"
-android:title="@string/pref_proxy_host_title"
-android:summary="@string/pref_proxy_host_summary"
-android:dialogTitle="@string/pref_proxy_host_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_port"
-android:title="@string/pref_proxy_port_title"
-android:summary="@string/pref_proxy_port_summary"
-android:dialogTitle="@string/pref_proxy_port_dialog"
-/>
-
-<EditTextPreference android:key="pref_proxy_username"
-android:title="@string/pref_proxy_username_title"
-android:summary="@string/pref_proxy_username_summary"
-android:dialogTitle="@string/pref_proxy_username_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_password"
-android:title="@string/pref_proxy_password_title"
-android:summary="@string/pref_proxy_password_summary"
-android:dialogTitle="@string/pref_proxy_password_dialog"
-/>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="Debug">
-
- <EditTextPreference android:key="pref_socks"
-android:title="@string/pref_socks_title"
-android:summary="@string/pref_socks_summary"
-android:dialogTitle="@string/pref_socks_dialog"
-android:defaultValue="9050"
-/>
-
- <EditTextPreference android:key="pref_transport"
-android:title="@string/pref_transport_title"
-android:summary="@string/pref_transport_summary"
-android:dialogTitle="@string/pref_transport_dialog"
-android:defaultValue="9040"
-/>
-
- <EditTextPreference android:key="pref_dnsport"
-android:title="@string/pref_dnsport_title"
-android:summary="@string/pref_dnsport_summary"
-android:dialogTitle="@string/pref_dnsport_dialog"
-android:defaultValue="5400"
-/>
-
- <EditTextPreference android:key="pref_custom_torrc"
-android:title="@string/pref_torrc_title"
-android:summary="@string/pref_torrc_summary"
-android:dialogTitle="@string/pref_torrc_dialog"
-android:defaultValue=""
-/>
-
-
-<CheckBoxPreference
-android:key="pref_enable_logging"
-android:defaultValue="false"
-android:title="Debug Log"
-android:summary="@string/enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_"
-android:enabled="true"></CheckBoxPreference>
-
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="pref_use_sys_iptables"
-android:summary="@string/pref_use_sys_iptables_summary"
-android:enabled="true"
-android:title="@string/pref_use_sys_iptables_title"/>
-
-
-<CheckBoxPreference
-android:defaultValue="true"
-android:key="pref_disable_network"
-android:summary="@string/pref_disable_network_summary"
-android:enabled="true"
-android:title="@string/pref_disable_network_title"/>
-
-<CheckBoxPreference
-android:defaultValue="false"
-android:key="pref_transproxy_refresh"
-android:summary="@string/pref_transproxy_refresh_summary"
-android:enabled="true"
-android:title="@string/pref_transproxy_refresh_title"/>
-
-<Preference
-android:key="pref_transproxy_flush"
-android:summary="@string/pref_transproxy_flush_summary"
-android:enabled="true"
-android:title="@string/pref_transproxy_flush_title"/>
-
-</PreferenceCategory>
-</PreferenceScreen>
diff --git a/src/com/google/zxing/integration/android/IntentIntegrator.java b/src/com/google/zxing/integration/android/IntentIntegrator.java
deleted file mode 100644
index d5628e8..0000000
--- a/src/com/google/zxing/integration/android/IntentIntegrator.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * Copyright 2009 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.integration.android;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Fragment;
-import android.content.ActivityNotFoundException;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-/**
- * <p>A utility class which helps ease integration with Barcode Scanner via {@link Intent}s. This is a simple
- * way to invoke barcode scanning and receive the result, without any need to integrate, modify, or learn the
- * project's source code.</p>
- *
- * <h2>Initiating a barcode scan</h2>
- *
- * <p>To integrate, create an instance of {@code IntentIntegrator} and call {@link #initiateScan()} and wait
- * for the result in your app.</p>
- *
- * <p>It does require that the Barcode Scanner (or work-alike) application is installed. The
- * {@link #initiateScan()} method will prompt the user to download the application, if needed.</p>
- *
- * <p>There are a few steps to using this integration. First, your {@link Activity} must implement
- * the method {@link Activity#onActivityResult(int, int, Intent)} and include a line of code like this:</p>
- *
- * <pre>{@code
- * public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- * IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
- * if (scanResult != null) {
- * // handle scan result
- * }
- * // else continue with any other code you need in the method
- * ...
- * }
- * }</pre>
- *
- * <p>This is where you will handle a scan result.</p>
- *
- * <p>Second, just call this in response to a user action somewhere to begin the scan process:</p>
- *
- * <pre>{@code
- * IntentIntegrator integrator = new IntentIntegrator(yourActivity);
- * integrator.initiateScan();
- * }</pre>
- *
- * <p>Note that {@link #initiateScan()} returns an {@link AlertDialog} which is non-null if the
- * user was prompted to download the application. This lets the calling app potentially manage the dialog.
- * In particular, ideally, the app dismisses the dialog if it's still active in its {@link Activity#onPause()}
- * method.</p>
- *
- * <p>You can use {@link #setTitle(String)} to customize the title of this download prompt dialog (or, use
- * {@link #setTitleByID(int)} to set the title by string resource ID.) Likewise, the prompt message, and
- * yes/no button labels can be changed.</p>
- *
- * <p>Finally, you can use {@link #addExtra(String, Object)} to add more parameters to the Intent used
- * to invoke the scanner. This can be used to set additional options not directly exposed by this
- * simplified API.</p>
- *
- * <p>By default, this will only allow applications that are known to respond to this intent correctly
- * do so. The apps that are allowed to response can be set with {@link #setTargetApplications(List)}.
- * For example, set to {@link #TARGET_BARCODE_SCANNER_ONLY} to only target the Barcode Scanner app itself.</p>
- *
- * <h2>Sharing text via barcode</h2>
- *
- * <p>To share text, encoded as a QR Code on-screen, similarly, see {@link #shareText(CharSequence)}.</p>
- *
- * <p>Some code, particularly download integration, was contributed from the Anobiit application.</p>
- *
- * <h2>Enabling experimental barcode formats</h2>
- *
- * <p>Some formats are not enabled by default even when scanning with {@link #ALL_CODE_TYPES}, such as
- * PDF417. Use {@link #initiateScan(java.util.Collection)} with
- * a collection containing the names of formats to scan for explicitly, like "PDF_417", to use such
- * formats.</p>
- *
- * @author Sean Owen
- * @author Fred Lin
- * @author Isaac Potoczny-Jones
- * @author Brad Drehmer
- * @author gcstang
- */
-public class IntentIntegrator {
-
- public static final int REQUEST_CODE = 0x0000c0de; // Only use bottom 16 bits
- private static final String TAG = IntentIntegrator.class.getSimpleName();
-
- public static final String DEFAULT_TITLE = "Install Barcode Scanner?";
- public static final String DEFAULT_MESSAGE =
- "This application requires Barcode Scanner. Would you like to install it?";
- public static final String DEFAULT_YES = "Yes";
- public static final String DEFAULT_NO = "No";
-
- private static final String BS_PACKAGE = "com.google.zxing.client.android";
- private static final String BSPLUS_PACKAGE = "com.srowen.bs.android";
-
- // supported barcode formats
- public static final Collection<String> PRODUCT_CODE_TYPES = list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "RSS_14");
- public static final Collection<String> ONE_D_CODE_TYPES =
- list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "CODE_39", "CODE_93", "CODE_128",
- "ITF", "RSS_14", "RSS_EXPANDED");
- public static final Collection<String> QR_CODE_TYPES = Collections.singleton("QR_CODE");
- public static final Collection<String> DATA_MATRIX_TYPES = Collections.singleton("DATA_MATRIX");
-
- public static final Collection<String> ALL_CODE_TYPES = null;
-
- public static final List<String> TARGET_BARCODE_SCANNER_ONLY = Collections.singletonList(BS_PACKAGE);
- public static final List<String> TARGET_ALL_KNOWN = list(
- BSPLUS_PACKAGE, // Barcode Scanner+
- BSPLUS_PACKAGE + ".simple", // Barcode Scanner+ Simple
- BS_PACKAGE // Barcode Scanner
- // What else supports this intent?
- );
-
- private final Activity activity;
- private final Fragment fragment;
-
- private String title;
- private String message;
- private String buttonYes;
- private String buttonNo;
- private List<String> targetApplications;
- private final Map<String,Object> moreExtras = new HashMap<String,Object>(3);
-
- /**
- * @param activity {@link Activity} invoking the integration
- */
- public IntentIntegrator(Activity activity) {
- this.activity = activity;
- this.fragment = null;
- initializeConfiguration();
- }
-
- /**
- * @param fragment {@link Fragment} invoking the integration.
- * {@link #startActivityForResult(Intent, int)} will be called on the {@link Fragment} instead
- * of an {@link Activity}
- */
- public IntentIntegrator(Fragment fragment) {
- this.activity = fragment.getActivity();
- this.fragment = fragment;
- initializeConfiguration();
- }
-
- private void initializeConfiguration() {
- title = DEFAULT_TITLE;
- message = DEFAULT_MESSAGE;
- buttonYes = DEFAULT_YES;
- buttonNo = DEFAULT_NO;
- targetApplications = TARGET_ALL_KNOWN;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public void setTitleByID(int titleID) {
- title = activity.getString(titleID);
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public void setMessageByID(int messageID) {
- message = activity.getString(messageID);
- }
-
- public String getButtonYes() {
- return buttonYes;
- }
-
- public void setButtonYes(String buttonYes) {
- this.buttonYes = buttonYes;
- }
-
- public void setButtonYesByID(int buttonYesID) {
- buttonYes = activity.getString(buttonYesID);
- }
-
- public String getButtonNo() {
- return buttonNo;
- }
-
- public void setButtonNo(String buttonNo) {
- this.buttonNo = buttonNo;
- }
-
- public void setButtonNoByID(int buttonNoID) {
- buttonNo = activity.getString(buttonNoID);
- }
-
- public Collection<String> getTargetApplications() {
- return targetApplications;
- }
-
- public final void setTargetApplications(List<String> targetApplications) {
- if (targetApplications.isEmpty()) {
- throw new IllegalArgumentException("No target applications");
- }
- this.targetApplications = targetApplications;
- }
-
- public void setSingleTargetApplication(String targetApplication) {
- this.targetApplications = Collections.singletonList(targetApplication);
- }
-
- public Map<String,?> getMoreExtras() {
- return moreExtras;
- }
-
- public final void addExtra(String key, Object value) {
- moreExtras.put(key, value);
- }
-
- /**
- * Initiates a scan for all known barcode types with the default camera.
- *
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise.
- */
- public final AlertDialog initiateScan() {
- return initiateScan(ALL_CODE_TYPES, -1);
- }
-
- /**
- * Initiates a scan for all known barcode types with the specified camera.
- *
- * @param cameraId camera ID of the camera to use. A negative value means "no preference".
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise.
- */
- public final AlertDialog initiateScan(int cameraId) {
- return initiateScan(ALL_CODE_TYPES, cameraId);
- }
-
- /**
- * Initiates a scan, using the default camera, only for a certain set of barcode types, given as strings corresponding
- * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants
- * like {@link #PRODUCT_CODE_TYPES} for example.
- *
- * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise.
- */
- public final AlertDialog initiateScan(Collection<String> desiredBarcodeFormats) {
- return initiateScan(desiredBarcodeFormats, -1);
- }
-
- /**
- * Initiates a scan, using the specified camera, only for a certain set of barcode types, given as strings corresponding
- * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants
- * like {@link #PRODUCT_CODE_TYPES} for example.
- *
- * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
- * @param cameraId camera ID of the camera to use. A negative value means "no preference".
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise
- */
- public final AlertDialog initiateScan(Collection<String> desiredBarcodeFormats, int cameraId) {
- Intent intentScan = new Intent(BS_PACKAGE + ".SCAN");
- intentScan.addCategory(Intent.CATEGORY_DEFAULT);
-
- // check which types of codes to scan for
- if (desiredBarcodeFormats != null) {
- // set the desired barcode types
- StringBuilder joinedByComma = new StringBuilder();
- for (String format : desiredBarcodeFormats) {
- if (joinedByComma.length() > 0) {
- joinedByComma.append(',');
- }
- joinedByComma.append(format);
- }
- intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString());
- }
-
- // check requested camera ID
- if (cameraId >= 0) {
- intentScan.putExtra("SCAN_CAMERA_ID", cameraId);
- }
-
- String targetAppPackage = findTargetAppPackage(intentScan);
- if (targetAppPackage == null) {
- return showDownloadDialog();
- }
- intentScan.setPackage(targetAppPackage);
- intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- attachMoreExtras(intentScan);
- startActivityForResult(intentScan, REQUEST_CODE);
- return null;
- }
-
- /**
- * Start an activity. This method is defined to allow different methods of activity starting for
- * newer versions of Android and for compatibility library.
- *
- * @param intent Intent to start.
- * @param code Request code for the activity
- * @see android.app.Activity#startActivityForResult(Intent, int)
- * @see android.app.Fragment#startActivityForResult(Intent, int)
- */
- protected void startActivityForResult(Intent intent, int code) {
- if (fragment == null) {
- activity.startActivityForResult(intent, code);
- } else {
- fragment.startActivityForResult(intent, code);
- }
- }
-
- private String findTargetAppPackage(Intent intent) {
- PackageManager pm = activity.getPackageManager();
- List<ResolveInfo> availableApps = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
- if (availableApps != null) {
- for (String targetApp : targetApplications) {
- if (contains(availableApps, targetApp)) {
- return targetApp;
- }
- }
- }
- return null;
- }
-
- private static boolean contains(Iterable<ResolveInfo> availableApps, String targetApp) {
- for (ResolveInfo availableApp : availableApps) {
- String packageName = availableApp.activityInfo.packageName;
- if (targetApp.equals(packageName)) {
- return true;
- }
- }
- return false;
- }
-
- private AlertDialog showDownloadDialog() {
- AlertDialog.Builder downloadDialog = new AlertDialog.Builder(activity);
- downloadDialog.setTitle(title);
- downloadDialog.setMessage(message);
- downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- String packageName;
- if (targetApplications.contains(BS_PACKAGE)) {
- // Prefer to suggest download of BS if it's anywhere in the list
- packageName = BS_PACKAGE;
- } else {
- // Otherwise, first option:
- packageName = targetApplications.get(0);
- }
- Uri uri = Uri.parse("market://details?id=" + packageName);
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- try {
- if (fragment == null) {
- activity.startActivity(intent);
- } else {
- fragment.startActivity(intent);
- }
- } catch (ActivityNotFoundException anfe) {
- // Hmm, market is not installed
- Log.w(TAG, "Google Play is not installed; cannot install " + packageName);
- }
- }
- });
- downloadDialog.setNegativeButton(buttonNo, null);
- downloadDialog.setCancelable(true);
- return downloadDialog.show();
- }
-
-
- /**
- * <p>Call this from your {@link Activity}'s
- * {@link Activity#onActivityResult(int, int, Intent)} method.</p>
- *
- * @param requestCode request code from {@code onActivityResult()}
- * @param resultCode result code from {@code onActivityResult()}
- * @param intent {@link Intent} from {@code onActivityResult()}
- * @return null if the event handled here was not related to this class, or
- * else an {@link IntentResult} containing the result of the scan. If the user cancelled scanning,
- * the fields will be null.
- */
- public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == REQUEST_CODE) {
- if (resultCode == Activity.RESULT_OK) {
- String contents = intent.getStringExtra("SCAN_RESULT");
- String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
- byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
- int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
- Integer orientation = intentOrientation == Integer.MIN_VALUE ? null : intentOrientation;
- String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
- return new IntentResult(contents,
- formatName,
- rawBytes,
- orientation,
- errorCorrectionLevel);
- }
- return new IntentResult();
- }
- return null;
- }
-
-
- /**
- * Defaults to type "TEXT_TYPE".
- *
- * @param text the text string to encode as a barcode
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise
- * @see #shareText(CharSequence, CharSequence)
- */
- public final AlertDialog shareText(CharSequence text) {
- return shareText(text, "TEXT_TYPE");
- }
-
- /**
- * Shares the given text by encoding it as a barcode, such that another user can
- * scan the text off the screen of the device.
- *
- * @param text the text string to encode as a barcode
- * @param type type of data to encode. See {@code com.google.zxing.client.android.Contents.Type} constants.
- * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
- * if a prompt was needed, or null otherwise
- */
- public final AlertDialog shareText(CharSequence text, CharSequence type) {
- Intent intent = new Intent();
- intent.addCategory(Intent.CATEGORY_DEFAULT);
- intent.setAction(BS_PACKAGE + ".ENCODE");
- intent.putExtra("ENCODE_TYPE", type);
- intent.putExtra("ENCODE_DATA", text);
- String targetAppPackage = findTargetAppPackage(intent);
- if (targetAppPackage == null) {
- return showDownloadDialog();
- }
- intent.setPackage(targetAppPackage);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- attachMoreExtras(intent);
- if (fragment == null) {
- activity.startActivity(intent);
- } else {
- fragment.startActivity(intent);
- }
- return null;
- }
-
- private static List<String> list(String... values) {
- return Collections.unmodifiableList(Arrays.asList(values));
- }
-
- private void attachMoreExtras(Intent intent) {
- for (Map.Entry<String,Object> entry : moreExtras.entrySet()) {
- String key = entry.getKey();
- Object value = entry.getValue();
- // Kind of hacky
- if (value instanceof Integer) {
- intent.putExtra(key, (Integer) value);
- } else if (value instanceof Long) {
- intent.putExtra(key, (Long) value);
- } else if (value instanceof Boolean) {
- intent.putExtra(key, (Boolean) value);
- } else if (value instanceof Double) {
- intent.putExtra(key, (Double) value);
- } else if (value instanceof Float) {
- intent.putExtra(key, (Float) value);
- } else if (value instanceof Bundle) {
- intent.putExtra(key, (Bundle) value);
- } else {
- intent.putExtra(key, value.toString());
- }
- }
- }
-
-}
diff --git a/src/com/google/zxing/integration/android/IntentResult.java b/src/com/google/zxing/integration/android/IntentResult.java
deleted file mode 100644
index 2469af9..0000000
--- a/src/com/google/zxing/integration/android/IntentResult.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2009 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.integration.android;
-
-/**
- * <p>Encapsulates the result of a barcode scan invoked through {@link IntentIntegrator}.</p>
- *
- * @author Sean Owen
- */
-public final class IntentResult {
-
- private final String contents;
- private final String formatName;
- private final byte[] rawBytes;
- private final Integer orientation;
- private final String errorCorrectionLevel;
-
- IntentResult() {
- this(null, null, null, null, null);
- }
-
- IntentResult(String contents,
- String formatName,
- byte[] rawBytes,
- Integer orientation,
- String errorCorrectionLevel) {
- this.contents = contents;
- this.formatName = formatName;
- this.rawBytes = rawBytes;
- this.orientation = orientation;
- this.errorCorrectionLevel = errorCorrectionLevel;
- }
-
- /**
- * @return raw content of barcode
- */
- public String getContents() {
- return contents;
- }
-
- /**
- * @return name of format, like "QR_CODE", "UPC_A". See {@code BarcodeFormat} for more format names.
- */
- public String getFormatName() {
- return formatName;
- }
-
- /**
- * @return raw bytes of the barcode content, if applicable, or null otherwise
- */
- public byte[] getRawBytes() {
- return rawBytes;
- }
-
- /**
- * @return rotation of the image, in degrees, which resulted in a successful scan. May be null.
- */
- public Integer getOrientation() {
- return orientation;
- }
-
- /**
- * @return name of the error correction level used in the barcode, if applicable
- */
- public String getErrorCorrectionLevel() {
- return errorCorrectionLevel;
- }
-
- @Override
- public String toString() {
- StringBuilder dialogText = new StringBuilder(100);
- dialogText.append("Format: ").append(formatName).append('\n');
- dialogText.append("Contents: ").append(contents).append('\n');
- int rawBytesLength = rawBytes == null ? 0 : rawBytes.length;
- dialogText.append("Raw bytes: (").append(rawBytesLength).append(" bytes)\n");
- dialogText.append("Orientation: ").append(orientation).append('\n');
- dialogText.append("EC level: ").append(errorCorrectionLevel).append('\n');
- return dialogText.toString();
- }
-
-}
diff --git a/src/info/guardianproject/util/Languages.java b/src/info/guardianproject/util/Languages.java
deleted file mode 100644
index 6219661..0000000
--- a/src/info/guardianproject/util/Languages.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package info.guardianproject.util;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.res.AssetManager;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.os.Build;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-public class Languages {
- public static final String TAG = "Languages";
-
- public static final Locale defaultLocale;
- public static final Locale TIBETAN = new Locale("bo");
- static final Locale localesToTest[] = {
- Locale.ENGLISH, Locale.FRENCH, Locale.GERMAN,
- Locale.ITALIAN, Locale.JAPANESE, Locale.KOREAN,
- Locale.TRADITIONAL_CHINESE, Locale.SIMPLIFIED_CHINESE,
- TIBETAN, new Locale("af"), new Locale("am"),
- new Locale("ar"), new Locale("az"), new Locale("bg"),
- new Locale("bn"), new Locale("ca"), new Locale("cs"),
- new Locale("da"), new Locale("el"), new Locale("es"),
- new Locale("et"), new Locale("eu"), new Locale("fa"),
- new Locale("fi"), new Locale("gl"), new Locale("hi"),
- new Locale("hr"), new Locale("hu"), new Locale("hy"),
- new Locale("in"), new Locale("hy"), new Locale("in"),
- new Locale("is"), new Locale("it"), new Locale("iw"),
- new Locale("ka"), new Locale("kk"), new Locale("km"),
- new Locale("kn"), new Locale("ky"), new Locale("lo"),
- new Locale("lt"), new Locale("lv"), new Locale("mk"),
- new Locale("ml"), new Locale("mn"), new Locale("mr"),
- new Locale("ms"), new Locale("my"), new Locale("nb"),
- new Locale("ne"), new Locale("nl"), new Locale("pl"),
- new Locale("pt"), new Locale("rm"), new Locale("ro"),
- new Locale("ru"), new Locale("si"), new Locale("sk"),
- new Locale("sl"), new Locale("sn"), new Locale("sr"),
- new Locale("sv"), new Locale("sw"), new Locale("ta"),
- new Locale("te"), new Locale("th"), new Locale("tl"),
- new Locale("tr"), new Locale("uk"), new Locale("ur"),
- new Locale("uz"), new Locale("vi"), new Locale("zu"),
- };
-
- private static final String USE_SYSTEM_DEFAULT = "";
- private static final String defaultString = "Use System Default";
-
- private static Locale locale;
- private static Languages singleton;
- private static Class<?> clazz;
- private static int resId;
- private static Map<String, String> tmpMap = new TreeMap<String, String>();
- private static Map<String, String> nameMap;
-
- static {
- defaultLocale = Locale.getDefault();
- }
-
- private Languages(Activity activity) {
- AssetManager assets = activity.getAssets();
- Configuration config = activity.getResources().getConfiguration();
- // Resources() requires DisplayMetrics, but they are only needed for drawables
- DisplayMetrics ignored = new DisplayMetrics();
- activity.getWindowManager().getDefaultDisplay().getMetrics(ignored);
- Resources resources;
- Set<Locale> localeSet = new LinkedHashSet<Locale>();
- for (Locale locale : localesToTest) {
- config.locale = locale;
- resources = new Resources(assets, ignored, config);
- if (!TextUtils.equals(defaultString, resources.getString(resId))
- || locale.equals(Locale.ENGLISH))
- localeSet.add(locale);
- }
- for (Locale locale : localeSet) {
- if (locale.equals(TIBETAN)) {
- // include English name for devices without Tibetan font support
- tmpMap.put(TIBETAN.getLanguage(), "Tibetan �ོ��ས���"); // Tibetan
- } else if (locale.equals(Locale.SIMPLIFIED_CHINESE)) {
- tmpMap.put(Locale.SIMPLIFIED_CHINESE.toString(), "ä¸æ?? (ä¸å?½)"); // Chinese (China)
- } else if (locale.equals(Locale.TRADITIONAL_CHINESE)) {
- tmpMap.put(Locale.TRADITIONAL_CHINESE.toString(), "ä¸æ?? (å?°ç?£)"); // Chinese (Taiwan)
- } else {
- tmpMap.put(locale.getLanguage(), locale.getDisplayLanguage(locale));
- }
- }
-
- /* USE_SYSTEM_DEFAULT is a fake one for displaying in a chooser menu. */
- localeSet.add(null);
- tmpMap.put(USE_SYSTEM_DEFAULT, activity.getString(resId));
- nameMap = Collections.unmodifiableMap(tmpMap);
- }
-
- /**
- * Get the instance of {@link Languages} to work with, providing the
- * {@link Activity} that is will be working as part of, as well as the
- * {@code resId} that has the exact string "Use System Default",
- * i.e. {@code R.string.use_system_default}.
- * <p/>
- * That string resource {@code resId} is also used to find the supported
- * translations: if an included translation has a translated string that
- * matches that {@code resId}, then that language will be included as a
- * supported language.
- *
- * @param clazz the {@link Class} of the default {@code Activity},
- * usually the main {@code Activity} from where the
- * Settings is launched from.
- * @param resId the string resource ID to for the string "Use System Default",
- * e.g. {@code R.string.use_system_default}
- * @return
- */
- public static void setup(Class<?> clazz, int resId) {
- if (Languages.clazz == null) {
- Languages.clazz = clazz;
- Languages.resId = resId;
- } else {
- throw new RuntimeException("Languages singleton was already initialized, duplicate call to Languages.setup()!");
- }
- }
-
- /**
- * Get the singleton to work with.
- *
- * @param activity the {@link Activity} this is working as part of
- * @return
- */
- public static Languages get(Activity activity) {
- if (singleton == null) {
- singleton = new Languages(activity);
- }
- return singleton;
- }
-
- //@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- @SuppressLint("NewApi")
- public static void setLanguage(final ContextWrapper contextWrapper, String language, boolean refresh) {
- if (locale != null && TextUtils.equals(locale.getLanguage(), language) && (!refresh)) {
- return; // already configured
- } else if (language == null || language == USE_SYSTEM_DEFAULT) {
- locale = defaultLocale;
- } else {
- /* handle locales with the country in it, i.e. zh_CN, zh_TW, etc */
- String localeSplit[] = language.split("_");
- if (localeSplit.length > 1) {
- locale = new Locale(localeSplit[0], localeSplit[1]);
- } else {
- locale = new Locale(language);
- }
- }
-
- final Resources resources = contextWrapper.getBaseContext().getResources();
- Configuration config = resources.getConfiguration();
- if (Build.VERSION.SDK_INT >= 17) {
- config.setLocale(locale);
- } else {
- config.locale = locale;
- }
- resources.updateConfiguration(config, resources.getDisplayMetrics());
- Locale.setDefault(locale);
-
- }
-
- /**
- * Force reload the {@link Activity to make language changes take effect.}
- *
- * @param activity the {@code Activity} to force reload
- */
- public static void forceChangeLanguage(Activity activity) {
- Intent intent = activity.getIntent();
- if (intent == null) // when launched as LAUNCHER
- return;
- intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- activity.finish();
- activity.overridePendingTransition(0, 0);
- activity.startActivity(intent);
- activity.overridePendingTransition(0, 0);
- }
-
- /**
- * Return the name of the language based on the locale.
- *
- * @param locale
- * @return
- */
- public String getName(String locale) {
- String ret = nameMap.get(locale);
- // if no match, try to return a more general name (i.e. English for
- // en_IN)
- if (ret == null && locale.contains("_"))
- ret = nameMap.get(locale.split("_")[0]);
- return ret;
- }
-
- /**
- * Return an array of the names of all the supported languages, sorted to
- * match what is returned by {@link Languages#getSupportedLocales()}.
- *
- * @return
- */
- public String[] getAllNames() {
- return nameMap.values().toArray(new String[nameMap.size()]);
- }
-
- public int getPosition(Locale locale) {
- String localeName = locale.getLanguage();
- int i = 0;
- for (String key : nameMap.keySet())
- if (TextUtils.equals(key, localeName))
- return i;
- else
- i++;
- return -1;
- }
-
- /**
- * Get sorted list of supported locales.
- *
- * @return
- */
- public String[] getSupportedLocales() {
- Set<String> keys = nameMap.keySet();
- return keys.toArray(new String[keys.size()]);
- }
-}
diff --git a/src/net b/src/net
deleted file mode 120000
index ab37141..0000000
--- a/src/net
+++ /dev/null
@@ -1 +0,0 @@
-../external/jtorctl/net/
\ No newline at end of file
diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java
deleted file mode 100644
index 7bbb649..0000000
--- a/src/org/torproject/android/OrbotApp.java
+++ /dev/null
@@ -1,78 +0,0 @@
-
-package org.torproject.android;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.Application;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.os.Build;
-import android.text.TextUtils;
-import android.util.Log;
-
-import org.torproject.android.service.TorServiceConstants;
-
-import info.guardianproject.util.Languages;
-
-import java.io.File;
-import java.util.Locale;
-
-public class OrbotApp extends Application implements OrbotConstants
-{
-
- private Locale locale;
-
- public static File appBinHome;
- public static File appCacheHome;
-
- public static File fileTor;
- public static File filePolipo;
- public static File fileObfsclient;
- // public static File fileMeekclient;
- public static File fileXtables;
- public static File fileTorRc;
- public static File filePdnsd;
-
-
- @Override
- public void onCreate() {
- super.onCreate();
- Prefs.setContext(this);
-
- Languages.setup(OrbotMainActivity.class, R.string.menu_settings);
- Languages.setLanguage(this, Prefs.getDefaultLocale(), true);
-
- appBinHome = getDir(TorServiceConstants.DIRECTORY_TOR_BINARY,Application.MODE_PRIVATE);
- appCacheHome = getDir(TorServiceConstants.DIRECTORY_TOR_DATA,Application.MODE_PRIVATE);
-
- fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
- filePolipo = new File(appBinHome, TorServiceConstants.POLIPO_ASSET_KEY);
- fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY);
- fileXtables = new File(appBinHome, TorServiceConstants.IPTABLES_ASSET_KEY);
- fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY);
- filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY);
-
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- Log.i(TAG, "onConfigurationChanged " + newConfig.locale.getLanguage());
- Languages.setLanguage(this, Prefs.getDefaultLocale(), true);
- }
-
- public static void forceChangeLanguage(Activity activity) {
- Intent intent = activity.getIntent();
- if (intent == null) // when launched as LAUNCHER
- intent = new Intent(activity, OrbotMainActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
- activity.finish();
- activity.overridePendingTransition(0, 0);
- activity.startActivity(intent);
- activity.overridePendingTransition(0, 0);
- }
-
- public static Languages getLanguages(Activity activity) {
- return Languages.get(activity);
- }
-}
diff --git a/src/org/torproject/android/OrbotConstants.java b/src/org/torproject/android/OrbotConstants.java
deleted file mode 100644
index 10309fb..0000000
--- a/src/org/torproject/android/OrbotConstants.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot/The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android;
-
-public interface OrbotConstants {
-
- public final static String TAG = "Orbot";
-
- public final static String PREFS_KEY = "OrbotPrefs";
- public final static String PREFS_KEY_TORIFIED = "PrefTord";
-
- public final static int FILE_WRITE_BUFFER_SIZE = 2048;
-
- //path to check Tor against
- public final static String URL_TOR_CHECK = "https://check.torproject.org";
-
- public final static String URL_TOR_BRIDGES = "https://bridges.torproject.org/bridges?transport=";
-
- public final static String PREF_BRIDGES_UPDATED = "pref_bridges_enabled";
- //public final static String PREF_BRIDGES_OBFUSCATED = "pref_bridges_obfuscated";
- public final static String PREF_OR = "pref_or";
- public final static String PREF_OR_PORT = "pref_or_port";
- public final static String PREF_OR_NICKNAME = "pref_or_nickname";
- public final static String PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses";
- public final static String PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports";
- public final static int RESULT_CLOSE_ALL = 0;
-
- public final static String PREF_DISABLE_NETWORK = "pref_disable_network";
-
- public final static String PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences";
-
- public final static int MAX_LOG_LENGTH = 10000;
-
- public final static String PREF_SOCKS = "pref_socks";
-
-}
diff --git a/src/org/torproject/android/OrbotMainActivity.java b/src/org/torproject/android/OrbotMainActivity.java
deleted file mode 100644
index 0a4c25a..0000000
--- a/src/org/torproject/android/OrbotMainActivity.java
+++ /dev/null
@@ -1,1442 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - https://guardianproject.info */
-/* See LICENSE for licensing information */
-
-package org.torproject.android;
-
-import static org.torproject.android.OrbotConstants.TAG;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Random;
-import java.util.StringTokenizer;
-
-import org.json.JSONArray;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-import org.torproject.android.service.TorServiceUtils;
-import org.torproject.android.settings.SettingsPreferences;
-import org.torproject.android.ui.ImageProgressView;
-import org.torproject.android.ui.PromoAppsActivity;
-import org.torproject.android.ui.Rotate3dAnimation;
-import org.torproject.android.vpn.VPNEnableActivity;
-
-import android.annotation.SuppressLint;
-import android.app.ActivityManager;
-import android.app.ActivityManager.RunningServiceInfo;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.RemoteException;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.GestureDetector;
-import android.view.GestureDetector.SimpleOnGestureListener;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
-import android.view.animation.AccelerateInterpolator;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.Spinner;
-import android.widget.TextView;
-import android.widget.Toast;
-import android.widget.ToggleButton;
-
-import com.google.zxing.integration.android.IntentIntegrator;
-import com.google.zxing.integration.android.IntentResult;
-
-public class OrbotMainActivity extends AppCompatActivity
- implements OrbotConstants, OnLongClickListener, OnTouchListener {
-
- /* Useful UI bits */
- private TextView lblStatus = null; //the main text display widget
- private ImageProgressView imgStatus = null; //the main touchable image for activating Orbot
-
- private TextView downloadText = null;
- private TextView uploadText = null;
- private TextView mTxtOrbotLog = null;
-
- private Button mBtnBrowser = null;
- private ToggleButton mBtnVPN = null;
- private ToggleButton mBtnBridges = null;
-
- private Spinner spnCountries = null;
-
- private DrawerLayout mDrawer;
- private ActionBarDrawerToggle mDrawerToggle;
-
- /* Some tracking bits */
- private String torStatus = null; //latest status reported from the tor service
- private Intent lastStatusIntent; // the last ACTION_STATUS Intent received
-
- private SharedPreferences mPrefs = null;
-
- private boolean autoStartFromIntent = false;
-
- private final static int REQUEST_VPN = 8888;
- private final static int REQUEST_SETTINGS = 0x9874;
-
- // message types for mStatusUpdateHandler
- private final static int STATUS_UPDATE = 1;
- private static final int MESSAGE_TRAFFIC_COUNT = 2;
-
- public final static String INTENT_ACTION_REQUEST_HIDDEN_SERVICE = "org.torproject.android.REQUEST_HS_PORT";
- public final static String INTENT_ACTION_REQUEST_START_TOR = "org.torproject.android.START_TOR";
-
- // for bridge loading from the assets default bridges.txt file
- class Bridge
- {
- String type;
- String config;
- }
-
- private ArrayList<Bridge> alBridges = null;
-
- //this is needed for backwards compat back to Android 2.3.*
- @SuppressLint("NewApi")
- public View onCreateView(View parent, String name, Context context, AttributeSet attrs)
- {
- if(Build.VERSION.SDK_INT >= 11)
- return super.onCreateView(parent, name, context, attrs);
- return null;
- }
-
- /** Called when the activity is first created. */
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- /* Create the widgets before registering for broadcasts to guarantee
- * that the widgets exist when the status updates try to update them */
- doLayout();
-
- /* receive the internal status broadcasts, which are separate from the public
- * status broadcasts to prevent other apps from sending fake/wrong status
- * info to this app */
- LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
- lbm.registerReceiver(mLocalBroadcastReceiver,
- new IntentFilter(TorServiceConstants.ACTION_STATUS));
- lbm.registerReceiver(mLocalBroadcastReceiver,
- new IntentFilter(TorServiceConstants.LOCAL_ACTION_BANDWIDTH));
- lbm.registerReceiver(mLocalBroadcastReceiver,
- new IntentFilter(TorServiceConstants.LOCAL_ACTION_LOG));
- }
-
- private void sendIntentToService(String action) {
- Intent torService = new Intent(this, TorService.class);
- torService.setAction(action);
- startService(torService);
- }
-
- private void stopTor() {
- imgStatus.setImageResource(R.drawable.torstarting);
- Intent torService = new Intent(this, TorService.class);
- stopService(torService);
- }
-
- /**
- * The state and log info from {@link TorService} are sent to the UI here in
- * the form of a local broadcast. Regular broadcasts can be sent by any app,
- * so local ones are used here so other apps cannot interfere with Orbot's
- * operation.
- */
- private BroadcastReceiver mLocalBroadcastReceiver = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action == null)
- return;
-
- if (action.equals(TorServiceConstants.LOCAL_ACTION_LOG)) {
- Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
- msg.obj = intent.getStringExtra(TorServiceConstants.LOCAL_EXTRA_LOG);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
- mStatusUpdateHandler.sendMessage(msg);
-
- } else if (action.equals(TorServiceConstants.LOCAL_ACTION_BANDWIDTH)) {
- long upload = intent.getLongExtra("up", 0);
- long download = intent.getLongExtra("down", 0);
- long written = intent.getLongExtra("written", 0);
- long read = intent.getLongExtra("read", 0);
-
- Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_TRAFFIC_COUNT);
- msg.getData().putLong("download", download);
- msg.getData().putLong("upload", upload);
- msg.getData().putLong("readTotal", read);
- msg.getData().putLong("writeTotal", written);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
- mStatusUpdateHandler.sendMessage(msg);
-
- } else if (action.equals(TorServiceConstants.ACTION_STATUS)) {
- lastStatusIntent = intent;
-
- Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
- mStatusUpdateHandler.sendMessage(msg);
- }
- }
- };
-
- private void doLayout ()
- {
- setContentView(R.layout.layout_main);
-
- setTitle(R.string.app_name);
-
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- mDrawerToggle = new ActionBarDrawerToggle(
- this, mDrawer,
- toolbar,
- android.R.string.ok, android.R.string.cancel
- );
-
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- getSupportActionBar().setHomeButtonEnabled(true);
-
- mDrawer.setDrawerListener(mDrawerToggle);
- mDrawerToggle.syncState();
-
- mTxtOrbotLog = (TextView)findViewById(R.id.orbotLog);
-
- lblStatus = (TextView)findViewById(R.id.lblStatus);
- lblStatus.setOnLongClickListener(this);
- imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
- imgStatus.setOnLongClickListener(this);
- imgStatus.setOnTouchListener(this);
-
- downloadText = (TextView)findViewById(R.id.trafficDown);
- uploadText = (TextView)findViewById(R.id.trafficUp);
-
-
- downloadText.setText(formatCount(0) + " / " + formatTotal(0));
- uploadText.setText(formatCount(0) + " / " + formatTotal(0));
-
- // Gesture detection
- mGestureDetector = new GestureDetector(this, new MyGestureDetector());
-
- mBtnBrowser = (Button)findViewById(R.id.btnBrowser);
- mBtnBrowser.setOnClickListener(new View.OnClickListener ()
- {
-
- @Override
- public void onClick(View v) {
- doTorCheck();
-
- }
-
- });
-
- mBtnBrowser.setEnabled(false);
-
- mBtnVPN = (ToggleButton)findViewById(R.id.btnVPN);
-
- boolean canDoVPN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
-
- if (!canDoVPN)
- {
- //if not SDK 14 or higher, we can't use the VPN feature
- mBtnVPN.setVisibility(View.GONE);
- }
- else
- {
- boolean useVPN = Prefs.useVpn();
- mBtnVPN.setChecked(useVPN);
-
- //auto start VPN if VPN is enabled
- if (useVPN)
- {
- startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class));
- }
-
- mBtnVPN.setOnClickListener(new View.OnClickListener ()
- {
-
- @Override
- public void onClick(View v) {
-
- if (mBtnVPN.isChecked())
- startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class));
- else
- stopVpnService();
-
- }
-
- });
- }
-
-
- mBtnBridges = (ToggleButton)findViewById(R.id.btnBridges);
- mBtnBridges.setChecked(Prefs.bridgesEnabled());
- mBtnBridges.setOnClickListener(new View.OnClickListener ()
- {
-
- @Override
- public void onClick(View v) {
- if (Build.CPU_ABI.contains("arm"))
- {
- promptSetupBridges (); //if ARM processor, show all bridge options
-
- }
- else
- {
- Toast.makeText(OrbotMainActivity.this, R.string.note_only_standard_tor_bridges_work_on_intel_x86_atom_devices, Toast.LENGTH_LONG).show();
- showGetBridgePrompt(""); //if other chip ar, only stock bridges are supported
- }
- }
-
-
- });
-
-
- String currentExit = Prefs.getExitNodes();
- int selIdx = -1;
-
- ArrayList<String> cList = new ArrayList<String>();
- cList.add(0, getString(R.string.vpn_default_world));
-
- for (int i = 0; i < TorServiceConstants.COUNTRY_CODES.length; i++)
- {
- Locale locale = new Locale("",TorServiceConstants.COUNTRY_CODES[i]);
- cList.add(locale.getDisplayCountry());
-
- if (currentExit.contains(TorServiceConstants.COUNTRY_CODES[i]))
- selIdx = i+1;
- }
-
- spnCountries = (Spinner)findViewById(R.id.spinnerCountry);
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, cList);
- spnCountries.setAdapter(adapter);
-
- if (selIdx != -1)
- spnCountries.setSelection(selIdx);
-
- spnCountries.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
- // your code here
-
- String country = null;
-
- if (position == 0)
- country = "";
- else
- country = '{' + TorServiceConstants.COUNTRY_CODES[position-1] + '}';
-
- Intent torService = new Intent(OrbotMainActivity.this, TorService.class);
- torService.setAction(TorServiceConstants.CMD_SET_EXIT);
- torService.putExtra("exit",country);
- startService(torService);
-
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parentView) {
- // your code here
- }
-
- });
- }
-
- GestureDetector mGestureDetector;
-
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- return mGestureDetector.onTouchEvent(event);
- }
-
-
- /*
- * Create the UI Options Menu (non-Javadoc)
- * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
- */
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.orbot_main, menu);
-
- return true;
- }
-
-
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
-
- if (item.getItemId() == R.id.menu_settings)
- {
- Intent intent = new Intent(OrbotMainActivity.this, SettingsPreferences.class);
- startActivityForResult(intent, REQUEST_SETTINGS);
- }
- else if (item.getItemId() == R.id.menu_promo_apps)
- {
- startActivity(new Intent(OrbotMainActivity.this, PromoAppsActivity.class));
-
- }
- else if (item.getItemId() == R.id.menu_exit)
- {
- //exit app
- doExit();
-
-
- }
- else if (item.getItemId() == R.id.menu_about)
- {
- showAbout();
-
-
- }
- else if (item.getItemId() == R.id.menu_scan)
- {
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.initiateScan();
- }
- else if (item.getItemId() == R.id.menu_share_bridge)
- {
-
- String bridges = Prefs.getBridgesList();
-
- if (bridges != null && bridges.length() > 0)
- {
- try {
- bridges = "bridge://" + URLEncoder.encode(bridges,"UTF-8");
-
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.shareText(bridges);
-
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- }
-
- return super.onOptionsItemSelected(item);
- }
-
- private void showAbout ()
- {
-
- LayoutInflater li = LayoutInflater.from(this);
- View view = li.inflate(R.layout.layout_about, null);
-
- String version = "";
-
- try {
- version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName + " (Tor " + TorServiceConstants.BINARY_TOR_VERSION + ")";
- } catch (NameNotFoundException e) {
- version = "Version Not Found";
- }
-
- TextView versionName = (TextView)view.findViewById(R.id.versionName);
- versionName.setText(version);
-
- new AlertDialog.Builder(this)
- .setTitle(getString(R.string.button_about))
- .setView(view)
- .show();
- }
-
-
- /**
- * This is our attempt to REALLY exit Orbot, and stop the background service
- * However, Android doesn't like people "quitting" apps, and/or our code may
- * not be quite right b/c no matter what we do, it seems like the TorService
- * still exists
- **/
- private void doExit() {
- stopTor();
-
- // Kill all the wizard activities
- setResult(RESULT_CLOSE_ALL);
- finish();
- }
-
- protected void onPause() {
- try
- {
- super.onPause();
-
- if (aDialog != null)
- aDialog.dismiss();
- }
- catch (IllegalStateException ise)
- {
- //can happen on exit/shutdown
- }
- }
-
- private void doTorCheck ()
- {
-
- openBrowser(URL_TOR_CHECK,false);
-
-
- }
-
- private void enableHiddenServicePort (int hsPort) throws RemoteException, InterruptedException
- {
-
- Editor pEdit = mPrefs.edit();
-
- String hsPortString = mPrefs.getString("pref_hs_ports", "");
- String onionHostname = mPrefs.getString("pref_hs_hostname","");
-
- if (hsPortString.indexOf(hsPort+"")==-1)
- {
- if (hsPortString.length() > 0 && hsPortString.indexOf(hsPort+"")==-1)
- hsPortString += ',' + hsPort;
- else
- hsPortString = hsPort + "";
-
- pEdit.putString("pref_hs_ports", hsPortString);
- pEdit.putBoolean("pref_hs_enable", true);
-
- pEdit.commit();
- }
-
- if (onionHostname == null || onionHostname.length() == 0)
- {
- requestTorRereadConfig();
-
- new Thread () {
-
- public void run ()
- {
- String onionHostname = mPrefs.getString("pref_hs_hostname","");
-
- while (onionHostname.length() == 0)
- {
- //we need to stop and start Tor
- try {
- Thread.sleep(3000); //wait three seconds
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- onionHostname = mPrefs.getString("pref_hs_hostname","");
- }
-
- Intent nResult = new Intent();
- nResult.putExtra("hs_host", onionHostname);
- setResult(RESULT_OK, nResult);
- finish();
- }
- }.start();
-
- }
- else
- {
- Intent nResult = new Intent();
- nResult.putExtra("hs_host", onionHostname);
- setResult(RESULT_OK, nResult);
- finish();
- }
-
- }
-
- private synchronized void handleIntents ()
- {
- if (getIntent() == null)
- return;
-
- // Get intent, action and MIME type
- Intent intent = getIntent();
- String action = intent.getAction();
- Log.d(TAG, "handleIntents " + action);
-
- //String type = intent.getType();
-
- if (action == null)
- return;
-
- if (action.equals(INTENT_ACTION_REQUEST_HIDDEN_SERVICE))
- {
- final int hiddenServicePortRequest = getIntent().getIntExtra("hs_port", -1);
-
- DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
-
- public void onClick(DialogInterface dialog, int which) {
- switch (which){
- case DialogInterface.BUTTON_POSITIVE:
-
- try {
- enableHiddenServicePort (hiddenServicePortRequest);
-
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
-
- break;
-
- case DialogInterface.BUTTON_NEGATIVE:
- //No button clicked
- finish();
- break;
- }
- }
- };
-
-
- String requestMsg = getString(R.string.hidden_service_request, hiddenServicePortRequest);
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(requestMsg).setPositiveButton("Allow", dialogClickListener)
- .setNegativeButton("Deny", dialogClickListener).show();
-
- return; //don't null the setIntent() as we need it later
- }
- else if (action.equals(INTENT_ACTION_REQUEST_START_TOR))
- {
- autoStartFromIntent = true;
-
- startTor();
-
- //never allow backgrounds start from this type of intent start
- //app devs who want background starts, can use the service intents
- /**
- if (Prefs.allowBackgroundStarts())
- {
- Intent resultIntent;
- if (lastStatusIntent == null) {
- resultIntent = new Intent(intent);
- } else {
- resultIntent = lastStatusIntent;
- }
- resultIntent.putExtra(TorServiceConstants.EXTRA_STATUS, torStatus);
- setResult(RESULT_OK, resultIntent);
- finish();
- }*/
-
- }
- else if (action.equals(Intent.ACTION_VIEW))
- {
- String urlString = intent.getDataString();
-
- if (urlString != null)
- {
-
- if (urlString.toLowerCase().startsWith("bridge://"))
-
- {
- String newBridgeValue = urlString.substring(9); //remove the bridge protocol piece
- newBridgeValue = URLDecoder.decode(newBridgeValue); //decode the value here
-
- showAlert(getString(R.string.bridges_updated),getString(R.string.restart_orbot_to_use_this_bridge_) + newBridgeValue,false);
-
- setNewBridges(newBridgeValue);
- }
- }
- }
-
- updateStatus(null);
-
- setIntent(null);
-
-
- }
-
- private void setNewBridges (String newBridgeValue)
- {
-
- Prefs.setBridgesList(newBridgeValue); //set the string to a preference
- Prefs.putBridgesEnabled(true);
-
- setResult(RESULT_OK);
-
- mBtnBridges.setChecked(true);
-
- enableBridges(true);
- }
-
- /*
- * Launch the system activity for Uri viewing with the provided url
- */
- private void openBrowser(final String browserLaunchUrl,boolean forceExternal)
- {
- boolean isBrowserInstalled = appInstalledOrNot(TorServiceConstants.BROWSER_APP_USERNAME);
-
- if (mBtnVPN.isChecked()||forceExternal)
- {
- //use the system browser since VPN is on
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
- intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- }
- else if (Prefs.useTransparentProxying())
- {
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
- intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- }
- else if (isBrowserInstalled)
- {
- startIntent(TorServiceConstants.BROWSER_APP_USERNAME,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
- }
- else
- {
- AlertDialog aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setIcon(R.drawable.onion32)
- .setTitle(R.string.install_apps_)
- .setMessage(R.string.it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_)
- .setPositiveButton(R.string.install_orweb, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- //prompt to install Orweb
- Intent intent = new Intent(OrbotMainActivity.this,PromoAppsActivity.class);
- startActivity(intent);
-
- }
-
- })
- .setNegativeButton(R.string.standard_browser, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
- intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
-
- }
-
- })
- .show();
-
- }
-
- }
-
-
-
-
-
- private void startIntent (String pkg, String action, Uri data)
- {
- Intent i;
- PackageManager manager = getPackageManager();
- try {
- i = manager.getLaunchIntentForPackage(pkg);
- if (i == null)
- throw new PackageManager.NameNotFoundException();
- i.setAction(action);
- i.setData(data);
- startActivity(i);
- } catch (PackageManager.NameNotFoundException e) {
-
- }
- }
-
- private boolean appInstalledOrNot(String uri)
- {
- PackageManager pm = getPackageManager();
- try
- {
- PackageInfo pi = pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
- return pi.applicationInfo.enabled;
- }
- catch (PackageManager.NameNotFoundException e)
- {
- return false;
- }
- }
-
- @Override
- protected void onActivityResult(int request, int response, Intent data) {
- super.onActivityResult(request, response, data);
-
- if (request == REQUEST_SETTINGS && response == RESULT_OK)
- {
- OrbotApp.forceChangeLanguage(this);
- if (data != null && data.getBooleanExtra("transproxywipe", false))
- {
-
- boolean result = flushTransProxy();
-
- if (result)
- {
-
- Toast.makeText(this, R.string.transparent_proxy_rules_flushed_, Toast.LENGTH_SHORT).show();
-
- }
- else
- {
-
- Toast.makeText(this, R.string.you_do_not_have_root_access_enabled, Toast.LENGTH_SHORT).show();
-
- }
-
- }
- else if (torStatus == TorServiceConstants.STATUS_ON)
- {
- updateTransProxy();
- // Toast.makeText(this, R.string.you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_, Toast.LENGTH_SHORT).show();
-
- }
- }
- else if (request == REQUEST_VPN && response == RESULT_OK)
- {
- sendIntentToService(TorServiceConstants.CMD_VPN);
- }
-
- IntentResult scanResult = IntentIntegrator.parseActivityResult(request, response, data);
- if (scanResult != null) {
- // handle scan result
-
- String results = scanResult.getContents();
-
- if (results != null && results.length() > 0)
- {
- try {
-
- int urlIdx = results.indexOf("://");
-
- if (urlIdx!=-1)
- {
- results = URLDecoder.decode(results, "UTF-8");
- results = results.substring(urlIdx+3);
-
- showAlert(getString(R.string.bridges_updated),getString(R.string.restart_orbot_to_use_this_bridge_) + results,false);
-
- setNewBridges(results);
- }
- else
- {
- JSONArray bridgeJson = new JSONArray(results);
- StringBuffer bridgeLines = new StringBuffer();
-
- for (int i = 0; i < bridgeJson.length(); i++)
- {
- String bridgeLine = bridgeJson.getString(i);
- bridgeLines.append(bridgeLine).append("\n");
- }
-
- setNewBridges(bridgeLines.toString());
- }
-
-
- } catch (Exception e) {
- Log.e(TAG,"unsupported",e);
- }
- }
-
- }
-
- }
-
- public void promptSetupBridges ()
- {
- loadBridgeDefaults();
-
- LayoutInflater li = LayoutInflater.from(this);
- View view = li.inflate(R.layout.layout_diag, null);
-
- TextView versionName = (TextView)view.findViewById(R.id.diaglog);
- versionName.setText(R.string.if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_);
-
- if (mBtnBridges.isChecked())
- {
- new AlertDialog.Builder(this)
- .setTitle(R.string.bridge_mode)
- .setView(view)
- .setItems(R.array.bridge_options, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // The 'which' argument contains the index position
- // of the selected item
-
- switch (which)
- {
- case 0: //obfs 4;
- setupBridgeType("obfs4");
- enableBridges(true);
-
- break;
- case 1: //obfs3
- setupBridgeType("obfs3");
- enableBridges(true);
-
- break;
- case 2: //scramblesuit
- setupBridgeType("scramblesuit");
- enableBridges(true);
-
- break;
- case 3: //azure
- Prefs.setBridgesList("2");
- enableBridges(true);
-
- break;
- case 4: //amazon
- Prefs.setBridgesList("1");
- enableBridges(true);
-
- break;
- case 5: //google
- Prefs.setBridgesList("0");
- enableBridges(true);
- break;
- case 6:
- showGetBridgePrompt("obfs4");
-
- break;
-
- }
-
- }
- }).setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener()
- {
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- //mBtnBridges.setChecked(false);
-
- }
- })
- .show();
-
-
- }
- else
- {
- enableBridges(false);
- }
-
- }
-
- private void showGetBridgePrompt (final String type)
- {
- LayoutInflater li = LayoutInflater.from(this);
- View view = li.inflate(R.layout.layout_diag, null);
-
- TextView versionName = (TextView)view.findViewById(R.id.diaglog);
- versionName.setText(R.string.you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_);
-
- new AlertDialog.Builder(this)
- .setTitle(R.string.bridge_mode)
- .setView(view)
- .setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener()
- {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- //do nothing
- }
- })
- .setNeutralButton(R.string.get_bridges_email, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
-
- sendGetBridgeEmail(type);
-
- }
-
-
- })
- .setPositiveButton(R.string.get_bridges_web, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- openBrowser(URL_TOR_BRIDGES + type,true);
-
- }
-
-
- }).show();
- }
-
- private void sendGetBridgeEmail (String type)
- {
- Intent intent = new Intent(Intent.ACTION_SEND);
- intent.setType("message/rfc822");
- intent.putExtra(Intent.EXTRA_EMAIL , new String[]{"bridges@xxxxxxxxxxxxxx"});
-
- if (type != null)
- {
- intent.putExtra(Intent.EXTRA_SUBJECT, "get transport " + type);
- intent.putExtra(Intent.EXTRA_TEXT, "get transport " + type);
-
- }
- else
- {
- intent.putExtra(Intent.EXTRA_SUBJECT, "get bridges");
- intent.putExtra(Intent.EXTRA_TEXT, "get bridges");
-
- }
-
- startActivity(Intent.createChooser(intent, getString(R.string.send_email)));
- }
-
- private void enableBridges (boolean enable)
- {
- Prefs.putBridgesEnabled(enable);
-
- if (torStatus == TorServiceConstants.STATUS_ON)
- {
- String bridgeList = Prefs.getBridgesList();
- if (bridgeList != null && bridgeList.length() > 0)
- {
- requestTorRereadConfig ();
- }
- }
- }
-
- private void requestTorRereadConfig() {
- sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
- }
-
- public void stopVpnService ()
- {
- sendIntentToService(TorServiceConstants.CMD_VPN_CLEAR);
- }
-
- private boolean flushTransProxy ()
- {
- sendIntentToService(TorServiceConstants.CMD_FLUSH);
- return true;
- }
-
- private boolean updateTransProxy ()
- {
- sendIntentToService(TorServiceConstants.CMD_UPDATE_TRANS_PROXY);
- return true;
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- if (mPrefs != null)
- {
- mBtnVPN.setChecked(Prefs.useVpn());
- mBtnBridges.setChecked(Prefs.bridgesEnabled());
- }
-
- requestTorStatus();
-
- updateStatus(null);
-
- }
-
- AlertDialog aDialog = null;
-
- //general alert dialog for mostly Tor warning messages
- //sometimes this can go haywire or crazy with too many error
- //messages from Tor, and the user cannot stop or exit Orbot
- //so need to ensure repeated error messages are not spamming this method
- private void showAlert(String title, String msg, boolean button)
- {
- try
- {
- if (aDialog != null && aDialog.isShowing())
- aDialog.dismiss();
- }
- catch (Exception e){} //swallow any errors
-
- if (button)
- {
- aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setIcon(R.drawable.onion32)
- .setTitle(title)
- .setMessage(msg)
- .setPositiveButton(android.R.string.ok, null)
- .show();
- }
- else
- {
- aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setIcon(R.drawable.onion32)
- .setTitle(title)
- .setMessage(msg)
- .show();
- }
-
- aDialog.setCanceledOnTouchOutside(true);
- }
-
- /**
- * Update the layout_main UI based on the status of {@link TorService}.
- * {@code torServiceMsg} must never be {@code null}
- */
- private void updateStatus(String torServiceMsg) {
-
- if (torStatus == null)
- return; //UI not init'd yet
-
- if (torStatus == TorServiceConstants.STATUS_ON) {
-
- imgStatus.setImageResource(R.drawable.toron);
-
- mBtnBrowser.setEnabled(true);
-
- if (torServiceMsg != null)
- {
- if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
- lblStatus.setText(torServiceMsg);
- }
- else
- lblStatus.setText(getString(R.string.status_activated));
-
-
- boolean showFirstTime = mPrefs.getBoolean("connect_first_time", true);
-
- if (showFirstTime)
- {
- Editor pEdit = mPrefs.edit();
- pEdit.putBoolean("connect_first_time", false);
- pEdit.commit();
- showAlert(getString(R.string.status_activated),
- getString(R.string.connect_first_time), true);
- }
-
- if (autoStartFromIntent)
- {
- autoStartFromIntent = false;
- Intent resultIntent = lastStatusIntent;
- resultIntent.putExtra(TorServiceConstants.EXTRA_STATUS, torStatus);
- setResult(RESULT_OK, resultIntent);
- finish();
- Log.d(TAG, "autoStartFromIntent finish");
- }
-
-
-
- } else if (torStatus == TorServiceConstants.STATUS_STARTING) {
-
- imgStatus.setImageResource(R.drawable.torstarting);
-
- if (torServiceMsg != null)
- {
- if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_BOOTSTRAPPED))
- lblStatus.setText(torServiceMsg);
- }
- else
- lblStatus.setText(getString(R.string.status_starting_up));
-
- mBtnBrowser.setEnabled(false);
-
- } else if (torStatus == TorServiceConstants.STATUS_STOPPING) {
-
- if (torServiceMsg != null && torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
- lblStatus.setText(torServiceMsg);
-
- imgStatus.setImageResource(R.drawable.torstarting);
- lblStatus.setText(torServiceMsg);
- mBtnBrowser.setEnabled(false);
-
- } else if (torStatus == TorServiceConstants.STATUS_OFF) {
-
- imgStatus.setImageResource(R.drawable.toroff);
- lblStatus.setText(getString(R.string.press_to_start));
- mBtnBrowser.setEnabled(false);
- }
-
- if (torServiceMsg != null && torServiceMsg.length() > 0)
- {
- mTxtOrbotLog.append(torServiceMsg + '\n');
- }
- }
-
- /**
- * Starts tor and related daemons by sending an
- * {@link TorServiceConstants#ACTION_START} {@link Intent} to
- * {@link TorService}
- */
- private void startTor() {
- sendIntentToService(TorServiceConstants.ACTION_START);
- }
-
- /**
- * Request tor status without starting it
- * {@link TorServiceConstants#ACTION_START} {@link Intent} to
- * {@link TorService}
- */
- private void requestTorStatus() {
- sendIntentToService(TorServiceConstants.ACTION_STATUS);
- }
-
- private boolean isTorServiceRunning() {
- ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
- if (TorService.class.getName().equals(service.service.getClassName())) {
- return true;
- }
- }
- return false;
- }
-
- public boolean onLongClick(View view) {
-
- if (torStatus == TorServiceConstants.STATUS_OFF) {
- lblStatus.setText(getString(R.string.status_starting_up));
- startTor();
- } else {
- lblStatus.setText(getString(R.string.status_shutting_down));
-
- stopTor();
- }
-
- return true;
-
- }
-
-// this is what takes messages or values from the callback threads or other non-mainUI threads
-//and passes them back into the main UI thread for display to the user
- private Handler mStatusUpdateHandler = new Handler() {
-
- @Override
- public void handleMessage(final Message msg) {
-
- String newTorStatus = msg.getData().getString("status");
- String log = (String)msg.obj;
-
- if (torStatus == null && newTorStatus != null) //first time status
- {
- torStatus = newTorStatus;
- findViewById(R.id.pbConnecting).setVisibility(View.GONE);
- findViewById(R.id.frameMain).setVisibility(View.VISIBLE);
- updateStatus(log);
-
- //now you can handle the intents properly
- handleIntents();
-
- }
- else if (newTorStatus != null && !torStatus.equals(newTorStatus)) //status changed
- {
- torStatus = newTorStatus;
- updateStatus(log);
- }
- else if (log != null) //it is just a log
- updateStatus(log);
-
- switch (msg.what) {
- case MESSAGE_TRAFFIC_COUNT:
-
- Bundle data = msg.getData();
- DataCount datacount = new DataCount(data.getLong("upload"),data.getLong("download"));
-
- long totalRead = data.getLong("readTotal");
- long totalWrite = data.getLong("writeTotal");
-
- downloadText.setText(formatCount(datacount.Download) + " / " + formatTotal(totalRead));
- uploadText.setText(formatCount(datacount.Upload) + " / " + formatTotal(totalWrite));
-
- break;
- default:
- super.handleMessage(msg);
- }
- }
- };
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mLocalBroadcastReceiver);
-
- }
-
- public class DataCount {
- // data uploaded
- public long Upload;
- // data downloaded
- public long Download;
-
- DataCount(long Upload, long Download){
- this.Upload = Upload;
- this.Download = Download;
- }
- }
-
- private String formatCount(long count) {
- NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
- // Converts the supplied argument into a string.
- // Under 2Mb, returns "xxx.xKb"
- // Over 2Mb, returns "xxx.xxMb"
- if (count < 1e6)
- return numberFormat.format(Math.round(((float) ((int) (count * 10 / 1024)) / 10)))
- + getString(R.string.kbps);
- else
- return numberFormat.format(Math
- .round(((float) ((int) (count * 100 / 1024 / 1024)) / 100)))
- + getString(R.string.mbps);
- }
-
- private String formatTotal(long count) {
- NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
- // Converts the supplied argument into a string.
- // Under 2Mb, returns "xxx.xKb"
- // Over 2Mb, returns "xxx.xxMb"
- if (count < 1e6)
- return numberFormat.format(Math.round(((float) ((int) (count * 10 / 1024)) / 10)))
- + getString(R.string.kb);
- else
- return numberFormat.format(Math
- .round(((float) ((int) (count * 100 / 1024 / 1024)) / 100)))
- + getString(R.string.mb);
- }
-
- private static final float ROTATE_FROM = 0.0f;
- private static final float ROTATE_TO = 360.0f*4f;// 3.141592654f * 32.0f;
-
- public void spinOrbot (float direction)
- {
- sendIntentToService (TorServiceConstants.CMD_NEWNYM);
-
-
- Toast.makeText(this, R.string.newnym, Toast.LENGTH_SHORT).show();
-
- // Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO*direction, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
- Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO*direction, imgStatus.getWidth()/2f,imgStatus.getWidth()/2f,20f,false);
- rotation.setFillAfter(true);
- rotation.setInterpolator(new AccelerateInterpolator());
- rotation.setDuration((long) 2*1000);
- rotation.setRepeatCount(0);
- imgStatus.startAnimation(rotation);
-
-
- }
-
- class MyGestureDetector extends SimpleOnGestureListener {
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- try {
- if (torStatus == TorServiceConstants.STATUS_ON)
- {
- float direction = 1f;
- if (velocityX < 0)
- direction = -1f;
- spinOrbot (direction);
- }
- } catch (Exception e) {
- // nothing
- }
- return false;
- }
- }
-
- private void loadBridgeDefaults ()
- {
- if (alBridges == null)
- {
- alBridges = new ArrayList<Bridge>();
-
- try
- {
- BufferedReader in=
- new BufferedReader(new InputStreamReader(getAssets().open("bridges.txt"), "UTF-8"));
- String str;
-
- while ((str=in.readLine()) != null) {
-
- StringTokenizer st = new StringTokenizer (str," ");
- Bridge b = new Bridge();
- b.type = st.nextToken();
-
- StringBuffer sbConfig = new StringBuffer();
-
- while(st.hasMoreTokens())
- sbConfig.append(st.nextToken()).append(' ');
-
- b.config = sbConfig.toString().trim();
-
- alBridges.add(b);
-
- }
-
- in.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- }
-
- private void setupBridgeType (String type)
- {
- StringBuffer sbConfig = new StringBuffer ();
-
- //we should randomly sort alBridges so we don't have the same bridge order each time
- long seed = System.nanoTime();
- Collections.shuffle(alBridges, new Random(seed));
-
- //let's just pull up to 2 bridges from the defaults at time
- int maxBridges = 2;
- int bridgeCount = 0;
-
- //now go through the list to find the bridges we want
- for (Bridge b : alBridges)
- {
- if (b.type.equals(type))
- {
-
- sbConfig.append(b.type);
- sbConfig.append(' ');
- sbConfig.append(b.config);
-
- bridgeCount++;
-
- if (bridgeCount == maxBridges)
- break;
- else
- sbConfig.append("\n");
- }
- }
-
- setNewBridges(sbConfig.toString());
- }
-}
diff --git a/src/org/torproject/android/Prefs.java b/src/org/torproject/android/Prefs.java
deleted file mode 100644
index d79f160..0000000
--- a/src/org/torproject/android/Prefs.java
+++ /dev/null
@@ -1,134 +0,0 @@
-
-package org.torproject.android;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.text.TextUtils;
-
-import org.torproject.android.service.TorServiceUtils;
-
-import java.util.Locale;
-
-public class Prefs {
- private final static String PREF_BRIDGES_ENABLED = "pref_bridges_enabled";
- private final static String PREF_BRIDGES_LIST = "pref_bridges_list";
- private final static String PREF_DEFAULT_LOCALE = "pref_default_locale";
- private final static String PREF_ENABLE_LOGGING = "pref_enable_logging";
- private final static String PREF_EXPANDED_NOTIFICATIONS = "pref_expanded_notifications";
- private final static String PREF_HAS_ROOT = "has_root";
- private final static String PREF_PERSIST_NOTIFICATIONS = "pref_persistent_notifications";
- private final static String PREF_START_ON_BOOT = "pref_start_boot";
- private final static String PREF_ALLOW_BACKGROUND_STARTS = "pref_allow_background_starts";
- private final static String PREF_TRANSPARENT = "pref_transparent";
- private final static String PREF_TRANSPARENT_ALL = "pref_transparent_all";
- private final static String PREF_TRANSPARENT_TETHERING = "pref_transparent_tethering";
- private final static String PREF_TRANSPROXY_REFRESH = "pref_transproxy_refresh";
- private final static String PREF_USE_SYSTEM_IPTABLES = "pref_use_sys_iptables";
- private final static String PREF_USE_VPN = "pref_vpn";
- private final static String PREF_EXIT_NODES = "pref_exit_nodes";
-
- private static SharedPreferences prefs;
-
- public static void setContext(Context context) {
- if (prefs == null)
- prefs = TorServiceUtils.getSharedPrefs(context);
- }
-
- private static void putBoolean(String key, boolean value) {
- prefs.edit().putBoolean(key, value).apply();
- }
-
- private static void putString(String key, String value) {
- prefs.edit().putString(key, value).apply();
- }
-
- public static boolean bridgesEnabled() {
- return prefs.getBoolean(PREF_BRIDGES_ENABLED, false);
- }
-
- public static void putBridgesEnabled(boolean value) {
- putBoolean(PREF_BRIDGES_ENABLED, value);
- }
-
- public static String getBridgesList() {
- return prefs.getString(PREF_BRIDGES_LIST, "");
- }
-
- public static void setBridgesList(String value) {
- putString(PREF_BRIDGES_LIST, value);
- }
-
- public static String getDefaultLocale() {
- return prefs.getString(PREF_DEFAULT_LOCALE, Locale.getDefault().getLanguage());
- }
-
- public static void setDefaultLocale(String value) {
- putString(PREF_DEFAULT_LOCALE, value);
- }
-
- public static boolean useSystemIpTables() {
- return prefs.getBoolean(PREF_USE_SYSTEM_IPTABLES, false);
- }
-
- public static boolean useRoot() {
- return prefs.getBoolean(PREF_HAS_ROOT, false);
- }
-
- public static boolean useTransparentProxying() {
- return prefs.getBoolean(PREF_TRANSPARENT, false);
- }
-
- public static boolean transparentProxyAll() {
- return prefs.getBoolean(PREF_TRANSPARENT_ALL, false);
- }
-
- public static boolean transparentTethering() {
- return prefs.getBoolean(PREF_TRANSPARENT_TETHERING, false);
- }
-
- public static boolean transProxyNetworkRefresh() {
- return prefs.getBoolean(PREF_TRANSPROXY_REFRESH, false);
- }
-
- public static boolean expandedNotifications() {
- return prefs.getBoolean(PREF_EXPANDED_NOTIFICATIONS, false);
- }
-
- public static boolean useDebugLogging() {
- return prefs.getBoolean(PREF_ENABLE_LOGGING, false);
- }
-
- public static boolean persistNotifications() {
- return prefs.getBoolean(PREF_PERSIST_NOTIFICATIONS, true);
- }
-
- public static boolean allowBackgroundStarts() {
- return prefs.getBoolean(PREF_ALLOW_BACKGROUND_STARTS, true);
- }
-
- public static boolean useVpn() {
- return prefs.getBoolean(PREF_USE_VPN, false);
- }
-
- public static void putUseVpn(boolean value) {
- putBoolean(PREF_USE_VPN, value);
- }
-
- public static boolean startOnBoot() {
- return prefs.getBoolean(PREF_START_ON_BOOT, true);
- }
-
- public static void putStartOnBoot(boolean value) {
- putBoolean(PREF_START_ON_BOOT, value);
- }
-
- public static String getExitNodes ()
- {
- return prefs.getString(PREF_EXIT_NODES, "");
- }
-
- public static void setExitNodes (String exits)
- {
- putString(PREF_EXIT_NODES,exits);
- }
-}
diff --git a/src/org/torproject/android/service/DummyActivity.java b/src/org/torproject/android/service/DummyActivity.java
deleted file mode 100644
index 5400ba4..0000000
--- a/src/org/torproject/android/service/DummyActivity.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.torproject.android.service;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-/*
- * To combat background service being stopped/swiped
- */
-public class DummyActivity extends Activity {
- @Override
- public void onCreate( Bundle icicle ) {
- super.onCreate( icicle );
- finish();
- }
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/service/HiddenServiceManager.java b/src/org/torproject/android/service/HiddenServiceManager.java
deleted file mode 100644
index 6b0d32d..0000000
--- a/src/org/torproject/android/service/HiddenServiceManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.torproject.android.service;
-
-
-//list view with add/remove hidden services - user is prompted for port
-
-public class HiddenServiceManager {
-
-}
-/*
- *
- * ## Once you have configured a hidden service, you can look at the
-## contents of the file ".../hidden_service/hostname" for the address
-## to tell people.
-##
-## HiddenServicePort x y:z says to redirect requests on port x to the
-## address y:z.
-
-#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-
-#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/other_hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-#HiddenServicePort 22 127.0.0.1:22
-*/
-
diff --git a/src/org/torproject/android/service/OnBootReceiver.java b/src/org/torproject/android/service/OnBootReceiver.java
deleted file mode 100644
index 36891e8..0000000
--- a/src/org/torproject/android/service/OnBootReceiver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.torproject.android.service;
-
-
-import org.torproject.android.Prefs;
-import org.torproject.android.vpn.VPNEnableActivity;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-public class OnBootReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Prefs.setContext(context);
- if (Prefs.startOnBoot())
- {
-
- if (Prefs.useVpn())
- startVpnService(context); //VPN will start Tor once it is done
- else
- startService(TorServiceConstants.ACTION_START, context);
-
- }
- }
-
- public void startVpnService (final Context context)
- {
- Intent intent = new Intent(context,VPNEnableActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
- }
-
- private void startService (String action, Context context)
- {
-
- Intent torService = new Intent(context, TorService.class);
- torService.setAction(action);
- context.startService(torService);
-
-
- }
-
-
-}
-
diff --git a/src/org/torproject/android/service/StartTorReceiver.java b/src/org/torproject/android/service/StartTorReceiver.java
deleted file mode 100644
index 087b01f..0000000
--- a/src/org/torproject/android/service/StartTorReceiver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-
-package org.torproject.android.service;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.text.TextUtils;
-
-import org.torproject.android.Prefs;
-
-public class StartTorReceiver extends BroadcastReceiver implements TorServiceConstants {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- /* sanitize the Intent before forwarding it to TorService */
- Prefs.setContext(context);
- String action = intent.getAction();
- if (TextUtils.equals(action, ACTION_START)) {
- String packageName = intent.getStringExtra(EXTRA_PACKAGE_NAME);
- if (Prefs.allowBackgroundStarts()) {
- Intent startTorIntent = new Intent(context, TorService.class);
- startTorIntent.setAction(action);
- if (packageName != null)
- startTorIntent.putExtra(EXTRA_PACKAGE_NAME, packageName);
- context.startService(startTorIntent);
- } else if (!TextUtils.isEmpty(packageName)) {
- // let the requesting app know that the user has disabled
- // starting via Intent
- Intent startsDisabledIntent = new Intent(ACTION_STATUS);
- startsDisabledIntent.putExtra(EXTRA_STATUS, STATUS_STARTS_DISABLED);
- startsDisabledIntent.setPackage(packageName);
- context.sendBroadcast(startsDisabledIntent);
- }
- }
- }
-}
diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java
deleted file mode 100644
index 67dc32d..0000000
--- a/src/org/torproject/android/service/TorResourceInstaller.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.service;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.io.StringBufferInputStream;
-import java.util.ArrayList;
-import java.util.concurrent.TimeoutException;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.R;
-
-import android.content.Context;
-import android.os.Build;
-import android.util.Log;
-
-public class TorResourceInstaller implements TorServiceConstants {
-
-
- File installFolder;
- Context context;
-
- public TorResourceInstaller (Context context, File installFolder)
- {
- this.installFolder = installFolder;
-
- this.context = context;
- }
-
- public void deleteDirectory(File file) {
- if( file.exists() ) {
- if (file.isDirectory()) {
- File[] files = file.listFiles();
- for(int i=0; i<files.length; i++) {
- if(files[i].isDirectory()) {
- deleteDirectory(files[i]);
- }
- else {
- files[i].delete();
- }
- }
- }
-
- file.delete();
- }
- }
-
- private final static String COMMAND_RM_FORCE = "rm -f ";
- private final static String MP3_EXT = ".mp3";
- //
- /*
- * Extract the Tor resources from the APK file using ZIP
- */
- public boolean installResources () throws IOException, FileNotFoundException, TimeoutException
- {
-
- InputStream is;
- File outFile;
-
- String cpuPath = "armeabi";
-
- if (Build.CPU_ABI.contains("x86"))
- cpuPath = "x86";
-
- deleteDirectory(installFolder);
-
- installFolder.mkdirs();
-
- Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-
- is = context.getResources().openRawResource(R.raw.torrc);
- outFile = new File(installFolder, TORRC_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, false);
-
- is = context.getResources().openRawResource(R.raw.torpolipo);
- outFile = new File(installFolder, POLIPOCONFIG_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, false);
-
- //only install if ARM (GoLang only supports ARM for now)
- if (cpuPath.equals("armeabi"))
- {
- cpuPath = "armeabi";
- is = context.getAssets().open(cpuPath + "/" + OBFSCLIENT_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, OBFSCLIENT_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
- /**
- is = context.getAssets().open(cpuPath + "/" + MEEK_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, MEEK_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
- */
-
- }
-
- is = context.getAssets().open(cpuPath + '/' + TOR_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, TOR_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
-
- is = context.getAssets().open(cpuPath + '/' + POLIPO_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, POLIPO_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
-
- is = context.getAssets().open(cpuPath + '/' + IPTABLES_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, IPTABLES_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
-
- is = context.getAssets().open(cpuPath + '/' + PDNSD_ASSET_KEY + MP3_EXT);
- outFile = new File(installFolder, PDNSD_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, true);
- setExecutable(outFile);
-
- installGeoIP();
-
- return true;
- }
-
- public boolean updateTorConfigCustom (File fileTorRcCustom, String extraLines) throws IOException, FileNotFoundException, TimeoutException
- {
- if (fileTorRcCustom.exists())
- {
- fileTorRcCustom.delete();
- Log.d("torResources","deleting existing torrc.custom");
- }
- else
- fileTorRcCustom.createNewFile();
-
- FileOutputStream fos = new FileOutputStream(fileTorRcCustom, false);
- PrintStream ps = new PrintStream(fos);
- ps.print(extraLines);
- ps.close();
-
- return true;
- }
-
- public boolean updatePolipoConfig (File filePolipo, String extraLines) throws IOException, FileNotFoundException, TimeoutException
- {
-
- InputStream is;
-
- Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-
- is = context.getResources().openRawResource(R.raw.torpolipo);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + filePolipo.getAbsolutePath())).waitForFinish();
- streamToFile(is,filePolipo, false, false);
-
- if (extraLines != null && extraLines.length() > 0)
- {
- StringBufferInputStream sbis = new StringBufferInputStream('\n' + extraLines + '\n');
- streamToFile(sbis,filePolipo,true,false);
- }
-
- shell.close();
-
- return true;
- }
-
- public boolean installPolipoConf () throws IOException, FileNotFoundException, TimeoutException
- {
-
- InputStream is;
- File outFile;
-
- Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-
- is = context.getResources().openRawResource(R.raw.torpolipo);
- outFile = new File(installFolder, POLIPOCONFIG_ASSET_KEY);
- shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
- streamToFile(is,outFile, false, false);
-
- return true;
- }
-
- /*
- * Extract the Tor binary from the APK file using ZIP
- */
-
- private boolean installGeoIP () throws IOException, FileNotFoundException
- {
-
- InputStream is;
- File outFile;
-
- outFile = new File(installFolder, GEOIP_ASSET_KEY);
- is = context.getResources().openRawResource(R.raw.geoip);
- streamToFile(is, outFile, false, true);
-
- is = context.getResources().openRawResource(R.raw.geoip6);
- outFile = new File(installFolder, GEOIP6_ASSET_KEY);
- streamToFile(is, outFile, false, true);
-
- return true;
- }
-
- /*
- private static void copyAssetFile(Context ctx, String asset, File file) throws IOException, InterruptedException
- {
-
- DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
- InputStream is = new GZIPInputStream(ctx.getAssets().open(asset));
-
- byte buf[] = new byte[8172];
- int len;
- while ((len = is.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- out.close();
- is.close();
- }*/
-
- /*
- * Write the inputstream contents to the file
- */
- public static boolean streamToFile(InputStream stm, File outFile, boolean append, boolean zip) throws IOException
-
- {
- byte[] buffer = new byte[FILE_WRITE_BUFFER_SIZE];
-
- int bytecount;
-
- OutputStream stmOut = new FileOutputStream(outFile.getAbsolutePath(), append);
- ZipInputStream zis = null;
-
- if (zip)
- {
- zis = new ZipInputStream(stm);
- ZipEntry ze = zis.getNextEntry();
- stm = zis;
-
- }
-
- while ((bytecount = stm.read(buffer)) > 0)
- {
-
- stmOut.write(buffer, 0, bytecount);
-
- }
-
- stmOut.close();
- stm.close();
-
- if (zis != null)
- zis.close();
-
-
- return true;
-
- }
-
- //copy the file from inputstream to File output - alternative impl
- public static boolean copyFile (InputStream is, File outputFile)
- {
-
- try {
- if (outputFile.exists())
- outputFile.delete();
-
- boolean newFile = outputFile.createNewFile();
- DataOutputStream out = new DataOutputStream(new FileOutputStream(outputFile));
- DataInputStream in = new DataInputStream(is);
-
- int b = -1;
- byte[] data = new byte[1024];
-
- while ((b = in.read(data)) != -1) {
- out.write(data);
- }
-
- if (b == -1); //rejoice
-
- //
- out.flush();
- out.close();
- in.close();
- // chmod?
-
- return newFile;
-
-
- } catch (IOException ex) {
- Log.e(OrbotConstants.TAG, "error copying binary", ex);
- return false;
- }
-
- }
-
-
-
-
- /**
- * Copies a raw resource file, given its ID to the given location
- * @param ctx context
- * @param resid resource id
- * @param file destination file
- * @param mode file permissions (E.g.: "755")
- * @throws IOException on error
- * @throws InterruptedException when interrupted
- */
- public static void copyRawFile(Context ctx, int resid, File file, String mode, boolean isZipd) throws IOException, InterruptedException
- {
- final String abspath = file.getAbsolutePath();
- // Write the iptables binary
- final FileOutputStream out = new FileOutputStream(file);
- InputStream is = ctx.getResources().openRawResource(resid);
-
- if (isZipd)
- {
- ZipInputStream zis = new ZipInputStream(is);
- ZipEntry ze = zis.getNextEntry();
- is = zis;
- }
-
- byte buf[] = new byte[1024];
- int len;
- while ((len = is.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- out.close();
- is.close();
- // Change the permissions
- Runtime.getRuntime().exec("chmod "+mode+" "+abspath).waitFor();
- }
- /**
- * Asserts that the binary files are installed in the bin directory.
- * @param ctx context
- * @param showErrors indicates if errors should be alerted
- * @return false if the binary files could not be installed
- */
- /*
- public static boolean assertIpTablesBinaries(Context ctx, boolean showErrors) throws Exception {
- boolean changed = false;
-
- // Check iptables_g1
- File file = new File(ctx.getDir("bin",0), "iptables");
- copyRawFile(ctx, R.raw.iptables, file, CHMOD_EXEC, false);
-
- return true;
- }*/
-
-
- private void setExecutable(File fileBin) {
- fileBin.setReadable(true);
- fileBin.setExecutable(true);
- fileBin.setWritable(false);
- fileBin.setWritable(true, true);
- }
-
-}
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
deleted file mode 100644
index 5ab7bed..0000000
--- a/src/org/torproject/android/service/TorService.java
+++ /dev/null
@@ -1,2276 +0,0 @@
-/* Copyright (c) 2009-2011, Nathan Freitas, Orbot / The Guardian Project - https://guardianproject.info/apps/orbot */
-/* See LICENSE for licensing information */
-/*
- * Code for iptables binary management taken from DroidWall GPLv3
- * Copyright (C) 2009-2010 Rodrigo Zechin Rosauro
- */
-
-package org.torproject.android.service;
-
-
-import android.annotation.SuppressLint;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.VpnService;
-import android.os.Build;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.widget.RemoteViews;
-
-import org.torproject.android.control.ConfigEntry;
-import org.torproject.android.control.EventHandler;
-import org.torproject.android.control.TorControlConnection;
-
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.OrbotMainActivity;
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.settings.AppManager;
-import org.torproject.android.settings.TorifiedApp;
-import org.torproject.android.vpn.OrbotVpnManager;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.Socket;
-import java.net.URL;
-import java.net.URLConnection;
-import java.text.Normalizer;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeoutException;
-
-public class TorService extends VpnService implements TorServiceConstants, OrbotConstants, EventHandler
-{
-
- private String mCurrentStatus = STATUS_OFF;
-
- private final static int CONTROL_SOCKET_TIMEOUT = 0;
-
- private TorControlConnection conn = null;
- private Socket torConnSocket = null;
- private int mLastProcessId = -1;
-
- private int mPortHTTP = HTTP_PROXY_PORT_DEFAULT;
- private int mPortSOCKS = SOCKS_PROXY_PORT_DEFAULT;
-
- private static final int NOTIFY_ID = 1;
- private static final int TRANSPROXY_NOTIFY_ID = 2;
- private static final int ERROR_NOTIFY_ID = 3;
- private static final int HS_NOTIFY_ID = 4;
-
- private static final int MAX_START_TRIES = 3;
-
- private ArrayList<String> configBuffer = null;
- private ArrayList<String> resetBuffer = null;
-
- private boolean isTorUpgradeAndConfigComplete = false;
-
- private File fileControlPort;
-
- private TorTransProxy mTransProxy;
-
- private long mTotalTrafficWritten = 0;
- private long mTotalTrafficRead = 0;
- private boolean mConnectivity = true;
- private int mNetworkType = -1;
-
- private long lastRead = -1;
- private long lastWritten = -1;
-
- private NotificationManager mNotificationManager = null;
- private Notification.Builder mNotifyBuilder;
- private Notification mNotification;
- private boolean mNotificationShowing = false;
-
- boolean mIsLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
-
- private ExecutorService mExecutor = Executors.newFixedThreadPool(1);
-
- private NumberFormat mNumberFormat = null;
-
- private OrbotVpnManager mVpnManager;
-
- public void debug(String msg)
- {
- if (Prefs.useDebugLogging())
- {
- Log.d(TAG,msg);
- sendCallbackLogMessage(msg);
-
- }
- }
-
- public void logException(String msg, Exception e)
- {
- if (Prefs.useDebugLogging())
- {
- Log.e(TAG,msg,e);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- e.printStackTrace(new PrintStream(baos));
-
- sendCallbackLogMessage(msg + '\n'+ new String(baos.toByteArray()));
-
- }
- else
- sendCallbackLogMessage(msg);
-
-
- }
-
-
- private boolean findExistingTorDaemon() {
- try {
- mLastProcessId = initControlConnection(3, true);
-
- if (mLastProcessId != -1 && conn != null) {
- sendCallbackLogMessage(getString(R.string.found_existing_tor_process));
- sendCallbackStatus(STATUS_ON);
- return true;
- }
- } catch (Exception e) {
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see android.app.Service#onLowMemory()
- */
- @Override
- public void onLowMemory() {
- super.onLowMemory();
-
- logNotice( "Low Memory Warning!");
-
- }
-
- private void clearNotifications ()
- {
- if (mNotificationManager != null)
- mNotificationManager.cancelAll();
-
-
- hmBuiltNodes.clear();
- mNotificationShowing = false;
- }
-
- @SuppressLint("NewApi")
- private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
- {
-
- //Reusable code.
- Intent intent = new Intent(TorService.this, OrbotMainActivity.class);
- PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0);
-
- if (mNotifyBuilder == null)
- {
-
- mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-
- if (mNotifyBuilder == null)
- {
- mNotifyBuilder = new Notification.Builder(this)
- .setContentTitle(getString(R.string.app_name))
- .setSmallIcon(R.drawable.ic_stat_tor);
-
- mNotifyBuilder.setContentIntent(pendIntent);
- }
-
- }
-
- mNotifyBuilder.setContentText(notifyMsg);
- mNotifyBuilder.setSmallIcon(icon);
-
- if (notifyType != NOTIFY_ID)
- {
- mNotifyBuilder.setTicker(notifyMsg);
- // mNotifyBuilder.setLights(Color.GREEN, 1000, 1000);
- }
- else
- {
- mNotifyBuilder.setTicker(null);
- }
-
- mNotifyBuilder.setOngoing(Prefs.persistNotifications());
-
- mNotification = mNotifyBuilder.build();
-
- if (Build.VERSION.SDK_INT >= 16 && Prefs.expandedNotifications()) {
- // Create remote view that needs to be set as bigContentView for the notification.
- RemoteViews expandedView = new RemoteViews(this.getPackageName(),
- R.layout.layout_notification_expanded);
-
- StringBuffer sbInfo = new StringBuffer();
-
- if (notifyType == NOTIFY_ID)
- expandedView.setTextViewText(R.id.text, notifyMsg);
- else
- {
- expandedView.setTextViewText(R.id.info, notifyMsg);
- }
-
- if (hmBuiltNodes.size() > 0)
- {
- Set<String> itBuiltNodes = hmBuiltNodes.keySet();
- for (String key : itBuiltNodes)
- {
- Node node = hmBuiltNodes.get(key);
-
- if (node.ipAddress != null)
- {
- sbInfo.append(node.ipAddress);
-
- if (node.country != null)
- sbInfo.append(' ').append(node.country);
-
- if (node.organization != null)
- sbInfo.append(" (").append(node.organization).append(')');
-
- sbInfo.append('\n');
- }
-
- }
-
- expandedView.setTextViewText(R.id.text2, sbInfo.toString());
- }
-
- expandedView.setTextViewText(R.id.title, getString(R.string.app_name));
-
- expandedView.setImageViewResource(R.id.icon, icon);
- mNotification.bigContentView = expandedView;
- }
-
- if (Prefs.persistNotifications() && (!mNotificationShowing))
- {
- startForeground(NOTIFY_ID, mNotification);
- logNotice("Set background service to FOREGROUND");
- }
- else
- {
- mNotificationManager.notify(NOTIFY_ID, mNotification);
- }
-
- mNotificationShowing = true;
- }
-
-
- /* (non-Javadoc)
- * @see android.app.Service#onStart(android.content.Intent, int)
- */
- public int onStartCommand(Intent intent, int flags, int startId) {
- if (intent != null)
- new Thread (new IncomingIntentRouter(intent)).start();
- else
- Log.d(TAG, "Got null onStartCommand() intent");
-
- return Service.START_STICKY;
- }
-
- private class IncomingIntentRouter implements Runnable
- {
- Intent mIntent;
-
- public IncomingIntentRouter (Intent intent)
- {
- mIntent = intent;
- }
-
- public void run() {
- String action = mIntent.getAction();
-
- if (action != null) {
- if (action.equals(ACTION_START)) {
- replyWithStatus(mIntent);
- startTor();
- // stopTor() is called when the Service is destroyed
- }
- else if (action.equals(ACTION_STATUS)) {
- replyWithStatus(mIntent);
- }
- else if (action.equals(CMD_SIGNAL_HUP)) {
- requestTorRereadConfig();
- } else if (action.equals(CMD_NEWNYM)) {
- newIdentity();
- } else if (action.equals(CMD_FLUSH)) {
- flushTransparentProxyRules();
- } else if (action.equals(CMD_UPDATE_TRANS_PROXY)) {
- processTransparentProxying();
- } else if (action.equals(CMD_VPN)) {
- enableVpnProxy();
- } else if (action.equals(CMD_VPN_CLEAR)) {
- clearVpnProxy();
- } else if (action.equals(CMD_SET_EXIT)) {
-
- setExitNode(mIntent.getStringExtra("exit"));
-
- } else {
- Log.w(TAG, "unhandled TorService Intent: " + action);
- }
- }
- }
- }
-
- @Override
- public void onTaskRemoved(Intent rootIntent){
- Log.d(TAG,"task removed");
- Intent intent = new Intent( this, DummyActivity.class );
- intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
- startActivity( intent );
- }
-
- @Override
- public void onDestroy() {
- stopTor();
- unregisterReceiver(mNetworkStateReceiver);
- super.onDestroy();
- }
-
- @Override
- public void onRevoke ()
- {
- if (mVpnManager != null)
- mVpnManager.onRevoke();
-
- super.onRevoke();
- }
-
- private void stopTor() {
- Log.i("TorService", "stopTor");
- try {
- sendCallbackStatus(STATUS_STOPPING);
- sendCallbackLogMessage(getString(R.string.status_shutting_down));
-
- killAllDaemons();
-
- //stop the foreground priority and make sure to remove the persistant notification
- stopForeground(true);
-
- if (Prefs.useRoot() && Prefs.useTransparentProxying())
- {
- Shell shellRoot = Shell.startRootShell();
- disableTransparentProxy(shellRoot);
- shellRoot.close();
- }
-
- sendCallbackLogMessage(getString(R.string.status_disabled));
- }
- catch (Exception e)
- {
- logNotice("An error occured stopping Tor: " + e.getMessage());
- sendCallbackLogMessage(getString(R.string.something_bad_happened));
- }
- clearNotifications();
- sendCallbackStatus(STATUS_OFF);
- }
-
-
- private String getHiddenServiceHostname ()
- {
-
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- boolean enableHiddenServices = prefs.getBoolean("pref_hs_enable", false);
-
- StringBuffer result = new StringBuffer();
-
- if (enableHiddenServices)
- {
- String hsPorts = prefs.getString("pref_hs_ports","");
-
- StringTokenizer st = new StringTokenizer (hsPorts,",");
- String hsPortConfig = null;
-
- while (st.hasMoreTokens())
- {
-
- int hsPort = Integer.parseInt(st.nextToken().split(" ")[0]);;
-
- File fileDir = new File(OrbotApp.appCacheHome, "hs" + hsPort);
- File file = new File(fileDir, "hostname");
-
-
- if (file.exists())
- {
- try {
- String onionHostname = Utils.readString(new FileInputStream(file)).trim();
-
- if (result.length() > 0)
- result.append(",");
-
- result.append(onionHostname);
-
-
- } catch (FileNotFoundException e) {
- logException("unable to read onion hostname file",e);
- showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
- return null;
- }
- }
- else
- {
- showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
- return null;
-
- }
- }
-
- if (result.length() > 0)
- {
- String onionHostname = result.toString();
-
- showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor);
- Editor pEdit = prefs.edit();
- pEdit.putString("pref_hs_hostname",onionHostname);
- pEdit.commit();
-
- return onionHostname;
- }
-
- }
-
- return null;
- }
-
-
- private void killAllDaemons() throws Exception {
- if (conn != null) {
- logNotice("Using control port to shutdown Tor");
-
- try {
- logNotice("sending HALT signal to Tor process");
- conn.shutdownTor("HALT");
-
- } catch (IOException e) {
- Log.d(TAG, "error shutting down Tor via connection", e);
- }
-
- conn = null;
- }
-
- // try these separately in case one fails, then it can try the next
- File cannotKillFile = null;
- try {
- TorServiceUtils.killProcess(OrbotApp.fileObfsclient);
- } catch (IOException e) {
- // e.printStackTrace();
- Log.w(TAG,"could not kill obfsclient",e);
- cannotKillFile = OrbotApp.fileObfsclient;
- }
-
- try {
- TorServiceUtils.killProcess(OrbotApp.filePolipo);
- } catch (IOException e) {
- Log.w(TAG,"could not kill polipo",e);
- cannotKillFile = OrbotApp.filePolipo;
- }
- try {
- TorServiceUtils.killProcess(OrbotApp.fileTor);
- } catch (IOException e) {
- Log.w(TAG,"could not kill tor",e);
- cannotKillFile = OrbotApp.fileTor;
- }
- }
-
- private void requestTorRereadConfig() {
- try {
- conn.signal("HUP");
- return;
- } catch (IOException e) {
- e.printStackTrace();
- }
- // if that fails, try again using native utils
- try {
- TorServiceUtils.killProcess(OrbotApp.fileTor, "-1"); // this is -HUP
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- private void logNotice (String msg)
- {
- if (msg != null && msg.trim().length() > 0)
- {
- if (Prefs.useDebugLogging())
- Log.d(TAG, msg);
-
- sendCallbackLogMessage(msg);
- }
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- try
- {
- mNumberFormat = NumberFormat.getInstance(Locale.getDefault()); //localized numbers!
-
- if (mNotificationManager == null)
- {
-
- IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
- registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
-
- mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-
- }
-
- new Thread(new Runnable ()
- {
- public void run ()
- {
- try
- {
-
- torUpgradeAndConfig();
-
- findExistingTorDaemon();
- }
- catch (Exception e)
- {
- Log.e(TAG,"error onBind",e);
- logNotice("error finding exiting process: " + e.toString());
- }
-
- }
- }).start();
-
- }
- catch (Exception e)
- {
- //what error here
- Log.e(TAG, "Error installing Orbot binaries",e);
- logNotice("There was an error installing Orbot binaries");
- }
-
- Log.i("TorService", "onCreate end");
- }
-
- private void torUpgradeAndConfig() throws IOException, TimeoutException {
- if (isTorUpgradeAndConfigComplete)
- return;
-
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
- String version = prefs.getString(PREF_BINARY_TOR_VERSION_INSTALLED,null);
-
- logNotice("checking binary version: " + version);
-
- TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome);
-
- if (version == null || (!version.equals(BINARY_TOR_VERSION)) || (!OrbotApp.fileTor.exists()))
- {
- logNotice("upgrading binaries to latest version: " + BINARY_TOR_VERSION);
-
- boolean success = installer.installResources();
-
- if (success)
- prefs.edit().putString(PREF_BINARY_TOR_VERSION_INSTALLED,BINARY_TOR_VERSION).commit();
- }
-
- updateTorConfigFile ();
- isTorUpgradeAndConfigComplete = true;
- }
-
- private boolean updateTorConfigFile () throws FileNotFoundException, IOException, TimeoutException
- {
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome);
-
- StringBuffer extraLines = new StringBuffer();
-
- String TORRC_CONTROLPORT_FILE_KEY = "ControlPortWriteToFile";
- fileControlPort = new File(OrbotApp.appBinHome, "control.txt");
- extraLines.append(TORRC_CONTROLPORT_FILE_KEY).append(' ').append(fileControlPort.getCanonicalPath()).append('\n');
-
-// extraLines.append("RunAsDaemon 1").append('\n');
- // extraLines.append("AvoidDiskWrites 1").append('\n');
-
- String socksPortPref = prefs.getString(OrbotConstants.PREF_SOCKS,
- String.valueOf(TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT));
- if (socksPortPref.indexOf(':')!=-1)
- socksPortPref = socksPortPref.split(":")[1];
-
- if (!socksPortPref.equalsIgnoreCase("auto"))
- {
- boolean isPortUsed = TorServiceUtils.isPortOpen("127.0.0.1",Integer.parseInt(socksPortPref),500);
-
- if (isPortUsed) //the specified port is not available, so let Tor find one instead
- socksPortPref = "auto";
- }
-
- extraLines.append("SOCKSPort ").append(socksPortPref).append('\n');
- extraLines.append("SafeSocks 0").append('\n');
- extraLines.append("TestSocks 0").append('\n');
- extraLines.append("WarnUnsafeSocks 1").append('\n');
-
- String transPort = prefs.getString("pref_transport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
- String dnsPort = prefs.getString("pref_dnsport", TorServiceConstants.TOR_DNS_PORT_DEFAULT+"");
-
- extraLines.append("TransPort ").append(transPort).append('\n');
- extraLines.append("DNSPort ").append(dnsPort).append("\n");
-
- if (Prefs.useVpn())
- extraLines.append("DNSListenAddress 0.0.0.0").append('\n');
-
- if (Prefs.transparentTethering())
- {
- extraLines.append("TransListenAddress 0.0.0.0").append('\n');
- extraLines.append("DNSListenAddress 0.0.0.0").append('\n');
- }
-
- extraLines.append("VirtualAddrNetwork 10.192.0.0/10").append('\n');
- extraLines.append("AutomapHostsOnResolve 1").append('\n');
-
- extraLines.append("DisableNetwork 0").append('\n');
-
- if (Prefs.useDebugLogging())
- {
- extraLines.append("Log debug syslog").append('\n');
- extraLines.append("Log info syslog").append('\n');
- extraLines.append("SafeLogging 0").append('\n');
-
- }
-
- processSettingsImpl(extraLines);
-
- String torrcCustom = new String(prefs.getString("pref_custom_torrc", "").getBytes("US-ASCII"));
- extraLines.append(torrcCustom).append('\n');
-
- logNotice("updating torrc custom configuration...");
-
- debug("torrc.custom=" + extraLines.toString());
-
- File fileTorRcCustom = new File(OrbotApp.fileTorRc.getAbsolutePath() + ".custom");
- boolean success = installer.updateTorConfigCustom(fileTorRcCustom, extraLines.toString());
-
- if (success)
- {
- logNotice ("success.");
- }
-
- return success;
- }
-
- /**
- * Send Orbot's status in reply to an
- * {@link TorServiceConstants#ACTION_START} {@link Intent}, targeted only to
- * the app that sent the initial request.
- */
- private void replyWithStatus(Intent startRequest) {
- String packageName = startRequest.getStringExtra(EXTRA_PACKAGE_NAME);
-
- Intent reply = new Intent(ACTION_STATUS);
- reply.putExtra(EXTRA_STATUS, mCurrentStatus);
- reply.putExtra(EXTRA_SOCKS_PROXY, "socks://127.0.0.1:" + mPortSOCKS);
- reply.putExtra(EXTRA_SOCKS_PROXY_HOST, "127.0.0.1");
- reply.putExtra(EXTRA_SOCKS_PROXY_PORT, mPortSOCKS);
- reply.putExtra(EXTRA_HTTP_PROXY, "http://127.0.0.1" + mPortHTTP);
- reply.putExtra(EXTRA_HTTP_PROXY_HOST, "127.0.0.1");
- reply.putExtra(EXTRA_HTTP_PROXY_PORT, mPortHTTP);
-
- if (packageName != null)
- {
- reply.setPackage(packageName);
- sendBroadcast(reply);
- }
- else
- {
- LocalBroadcastManager.getInstance(this).sendBroadcast(reply);
-
- }
-
- }
-
- /**
- * The entire process for starting tor and related services is run from this method.
- */
- private void startTor() {
- // STATUS_STARTING is set in onCreate()
- if (mCurrentStatus == STATUS_STOPPING) {
- // these states should probably be handled better
- sendCallbackLogMessage("Ignoring start request, currently " + mCurrentStatus);
- return;
- } else if (mCurrentStatus == STATUS_ON && findExistingTorDaemon()) {
-
- sendCallbackLogMessage("Ignoring start request, already started.");
-
- return;
- }
-
-
- try {
-
- // make sure there are no stray daemons running
- killAllDaemons();
-
- sendCallbackStatus(STATUS_STARTING);
- sendCallbackLogMessage(getString(R.string.status_starting_up));
- logNotice(getString(R.string.status_starting_up));
-
- ArrayList<String> customEnv = new ArrayList<String>();
-
- if (Prefs.bridgesEnabled())
- if (Prefs.useVpn() && !mIsLollipop)
- {
- customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnManager.sSocksProxyLocalhost + ":" + OrbotVpnManager.sSocksProxyServerPort);
- }
-
- String baseDirectory = OrbotApp.fileTor.getParent();
- Shell shellUser = Shell.startShell(customEnv, baseDirectory);
-
- boolean success = runTorShellCmd(shellUser);
-
- if (success)
- {
- if (mPortHTTP != -1)
- runPolipoShellCmd(shellUser);
-
- if (Prefs.useRoot() && Prefs.useTransparentProxying())
- {
- Shell shellRoot = Shell.startRootShell();
-
- disableTransparentProxy(shellRoot);
- enableTransparentProxy(shellRoot);
-
- shellRoot.close();
- }
-
- getHiddenServiceHostname ();
- }
- else
- {
- showToolbarNotification(getString(R.string.unable_to_start_tor), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
- }
- shellUser.close();
-
- } catch (Exception e) {
- logException("Unable to start Tor: " + e.toString(), e);
- showToolbarNotification(
- getString(R.string.unable_to_start_tor) + ": " + e.getMessage(),
- ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
- stopTor();
- }
- }
-
- private boolean flushTransparentProxyRules () {
- if (Prefs.useRoot())
- {
- if (mTransProxy == null)
- mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
-
- try {
- mTransProxy.flushTransproxyRules(this);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
-
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /*
- * activate means whether to apply the users preferences
- * or clear them out
- *
- * the idea is that if Tor is off then transproxy is off
- */
- private boolean enableTransparentProxy (Shell shell) throws Exception
- {
-
- if (mTransProxy == null)
- {
- mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
-
- }
-
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
- String transProxy = prefs.getString("pref_transport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
- String dnsPort = prefs.getString("pref_dnsport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
-
- if (transProxy.indexOf(':')!=-1) //we just want the port for this
- transProxy = transProxy.split(":")[1];
-
- if (dnsPort.indexOf(':')!=-1) //we just want the port for this
- dnsPort = dnsPort.split(":")[1];
-
- mTransProxy.setTransProxyPort(Integer.parseInt(transProxy));
- mTransProxy.setDNSPort(Integer.parseInt(dnsPort));
-
- int code = 0; // Default state is "okay"
-
- if(Prefs.transparentProxyAll())
- {
-
- code = mTransProxy.setTransparentProxyingAll(this, true, shell);
- }
- else
- {
- ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
-
- code = mTransProxy.setTransparentProxyingByApp(this,apps, true, shell);
- }
-
- debug ("TorTransProxy resp code: " + code);
-
- if (code == 0)
- {
-
- if (Prefs.transparentTethering())
- {
- showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
- Shell shellRoot = Shell.startRootShell();
- mTransProxy.enableTetheringRules(this, shellRoot);
- shellRoot.close();
-
- }
- else
- {
- showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
- }
- }
- else
- {
- showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
- }
-
- return true;
- }
-
- /*
- * activate means whether to apply the users preferences
- * or clear them out
- *
- * the idea is that if Tor is off then transproxy is off
- */
- private boolean disableTransparentProxy (Shell shell) throws Exception
- {
-
- debug ("Transparent Proxying: disabling...");
-
- if (mTransProxy == null)
- mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
-
- mTransProxy.setTransparentProxyingAll(this, false, shell);
- ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
- mTransProxy.setTransparentProxyingByApp(this, apps, false, shell);
-
- return true;
- }
-
- private boolean runTorShellCmd(final Shell shell) throws Exception
- {
-
- String torrcPath = new File(OrbotApp.appBinHome, TORRC_ASSET_KEY).getCanonicalPath();
-
- updateTorConfigFile();
-
- sendCallbackLogMessage(getString(R.string.status_starting_up));
-
- String torCmdString = OrbotApp.fileTor.getCanonicalPath()
- + " DataDirectory " + OrbotApp.appCacheHome.getCanonicalPath()
- + " --defaults-torrc " + torrcPath
- + " -f " + torrcPath + ".custom";
-
- debug(torCmdString);
-
- SimpleCommand shellTorCommand = new SimpleCommand(torCmdString + " --verify-config");
- shell.add(shellTorCommand).waitForFinish();
-
- int exitCode = shellTorCommand.getExitCode();
- String output = shellTorCommand.getOutput();
-
- if (exitCode != 0 && output != null && output.length() > 0)
- {
- logNotice("Tor (" + exitCode + "): " + output);
- throw new Exception ("Torrc config did not verify");
-
- }
-
- shellTorCommand = new SimpleCommand(torCmdString);
- shell.add(shellTorCommand).waitForFinish();
- exitCode = shellTorCommand.getExitCode();
- output = shellTorCommand.getOutput();
-
- if (exitCode != 0 && output != null && output.length() > 0)
- {
- logNotice("Tor (" + exitCode + "): " + output);
- //throw new Exception ("unable to start");
- return false;
- }
-
- //now try to connect
- mLastProcessId = initControlConnection (100,false);
-
- if (mLastProcessId == -1)
- {
- logNotice(getString(R.string.couldn_t_start_tor_process_) + "; exit=" + shellTorCommand.getExitCode() + ": " + shellTorCommand.getOutput());
- sendCallbackLogMessage(getString(R.string.couldn_t_start_tor_process_));
-
- throw new Exception ("Unable to start Tor");
- }
- else
- {
-
- logNotice("Tor started; process id=" + mLastProcessId);
-
- }
-
- return true;
- }
-
- private void updatePolipoConfig () throws FileNotFoundException, IOException
- {
-
-
- File file = new File(OrbotApp.appBinHome, POLIPOCONFIG_ASSET_KEY);
-
- Properties props = new Properties();
-
- props.load(new FileReader(file));
-
- props.put("socksParentProxy", "\"localhost:" + mPortSOCKS + "\"");
- props.put("proxyPort",mPortHTTP+"");
-
- props.store(new FileWriter(file), "updated");
-
- }
-
-
- private void runPolipoShellCmd (Shell shell) throws Exception
- {
-
- logNotice( "Starting polipo process");
-
- int polipoProcId = TorServiceUtils.findProcessId(OrbotApp.filePolipo.getCanonicalPath());
-
- StringBuilder log = null;
-
- int attempts = 0;
-
- if (polipoProcId == -1)
- {
- log = new StringBuilder();
-
- updatePolipoConfig();
-
- String polipoConfigPath = new File(OrbotApp.appBinHome, POLIPOCONFIG_ASSET_KEY).getCanonicalPath();
- SimpleCommand cmdPolipo = new SimpleCommand(OrbotApp.filePolipo.getCanonicalPath() + " -c " + polipoConfigPath + " &");
-
- shell.add(cmdPolipo);
-
- //wait one second to make sure it has started up
- Thread.sleep(1000);
-
- while ((polipoProcId = TorServiceUtils.findProcessId(OrbotApp.filePolipo.getCanonicalPath())) == -1 && attempts < MAX_START_TRIES)
- {
- logNotice("Couldn't find Polipo process... retrying...\n" + log);
- Thread.sleep(3000);
- attempts++;
- }
-
- logNotice(log.toString());
- }
-
- sendCallbackLogMessage(getString(R.string.privoxy_is_running_on_port_) + mPortHTTP);
-
- logNotice("Polipo process id=" + polipoProcId);
-
- }
-
- private int initControlConnection (int maxTries, boolean isReconnect) throws Exception, RuntimeException
- {
- int controlPort = -1;
- int attempt = 0;
-
- logNotice( "Waiting for control port...");
-
- while (conn == null && attempt++ < maxTries)
- {
- try
- {
-
- controlPort = getControlPort();
-
- if (controlPort != -1)
- {
- logNotice( "Connecting to control port: " + controlPort);
-
- torConnSocket = new Socket(IP_LOCALHOST, controlPort);
- torConnSocket.setSoTimeout(CONTROL_SOCKET_TIMEOUT);
-
- conn = new TorControlConnection(torConnSocket);
- conn.launchThread(true);//is daemon
-
- break;
- }
-
- }
- catch (Exception ce)
- {
- conn = null;
- // logException( "Error connecting to Tor local control port: " + ce.getMessage(),ce);
-
- }
-
-
- try {
- // logNotice("waiting...");
- Thread.sleep(1000); }
- catch (Exception e){}
- }
-
- if (conn != null)
- {
- logNotice( "SUCCESS connected to Tor control port.");
-
- File fileCookie = new File(OrbotApp.appCacheHome, TOR_CONTROL_COOKIE);
-
- if (fileCookie.exists())
- {
- byte[] cookie = new byte[(int)fileCookie.length()];
- DataInputStream fis = new DataInputStream(new FileInputStream(fileCookie));
- fis.read(cookie);
- fis.close();
- conn.authenticate(cookie);
-
- logNotice( "SUCCESS - authenticated to control port.");
-
- sendCallbackLogMessage(getString(R.string.tor_process_starting) + ' ' + getString(R.string.tor_process_complete));
-
- addEventHandler();
-
- String torProcId = conn.getInfo("process/pid");
-
- String confSocks = conn.getInfo("net/listeners/socks");
- StringTokenizer st = new StringTokenizer(confSocks," ");
-
- confSocks = st.nextToken().split(":")[1];
- confSocks = confSocks.substring(0,confSocks.length()-1);
- mPortSOCKS = Integer.parseInt(confSocks);
-
- return Integer.parseInt(torProcId);
-
- }
- else
- {
- logNotice ("Tor authentication cookie does not exist yet");
- conn = null;
-
- }
- }
-
-
- return -1;
-
- }
-
- private int getControlPort ()
- {
- int result = -1;
-
- try
- {
- if (fileControlPort.exists())
- {
- debug("Reading control port config file: " + fileControlPort.getCanonicalPath());
- BufferedReader bufferedReader = new BufferedReader(new FileReader(fileControlPort));
- String line = bufferedReader.readLine();
-
- if (line != null)
- {
- String[] lineParts = line.split(":");
- result = Integer.parseInt(lineParts[1]);
- }
-
-
- bufferedReader.close();
-
- //store last valid control port
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
- prefs.edit().putInt("controlport", result).commit();
-
- }
- else
- {
- debug("Control Port config file does not yet exist (waiting for tor): " + fileControlPort.getCanonicalPath());
-
- }
-
-
- }
- catch (FileNotFoundException e)
- {
- debug("unable to get control port; file not found");
- }
- catch (Exception e)
- {
- debug("unable to read control port config file");
- }
-
- return result;
- }
-
- public void addEventHandler () throws Exception
- {
- // We extend NullEventHandler so that we don't need to provide empty
- // implementations for all the events we don't care about.
- // ...
- logNotice( "adding control port event handler");
-
- conn.setEventHandler(this);
-
- conn.setEvents(Arrays.asList(new String[]{
- "ORCONN", "CIRC", "NOTICE", "WARN", "ERR","BW"}));
- // conn.setEvents(Arrays.asList(new String[]{
- // "DEBUG", "INFO", "NOTICE", "WARN", "ERR"}));
-
- logNotice( "SUCCESS added control port event handler");
- }
-
- /**
- * Returns the port number that the HTTP proxy is running on
- */
- public int getHTTPPort() throws RemoteException {
- return mPortHTTP;
- }
-
-
- /**
- * Returns the port number that the HTTP proxy is running on
- */
- public int getSOCKSPort() throws RemoteException {
- return mPortSOCKS;
- }
-
- public void enableVpnProxy () {
- debug ("enabling VPN Proxy");
-
- Prefs.putUseVpn(true);
- processTransparentProxying();
-
- updateConfiguration("DNSPort",TOR_VPN_DNS_LISTEN_ADDRESS + ":" + TorServiceConstants.TOR_DNS_PORT_DEFAULT,false);
-
- if (mVpnManager == null)
- mVpnManager = new OrbotVpnManager (this);
-
- Intent intent = new Intent();
- intent.setAction("start");
- intent.putExtra("torSocks", mPortSOCKS);
-
- mVpnManager.handleIntent(new Builder(),intent);
-
- }
-
- public void clearVpnProxy ()
- {
- debug ("clearing VPN Proxy");
- Prefs.putUseVpn(false);
- processTransparentProxying();
-
- if (mVpnManager != null)
- {
- Intent intent = new Intent();
- intent.setAction("stop");
- mVpnManager.handleIntent(new Builder(), intent);
- mVpnManager = null;
- }
-
- }
-
- @Override
- public void message(String severity, String msg) {
- logNotice(severity + ": " + msg);
- }
-
- @Override
- public void newDescriptors(List<String> orList) {
- }
-
- @Override
- public void orConnStatus(String status, String orName) {
-
- StringBuilder sb = new StringBuilder();
- sb.append("orConnStatus (");
- sb.append(parseNodeName(orName) );
- sb.append("): ");
- sb.append(status);
-
- debug(sb.toString());
- }
-
- @Override
- public void streamStatus(String status, String streamID, String target) {
-
- StringBuilder sb = new StringBuilder();
- sb.append("StreamStatus (");
- sb.append((streamID));
- sb.append("): ");
- sb.append(status);
-
- logNotice(sb.toString());
- }
-
- @Override
- public void unrecognized(String type, String msg) {
-
- StringBuilder sb = new StringBuilder();
- sb.append("Message (");
- sb.append(type);
- sb.append("): ");
- sb.append(msg);
-
- logNotice(sb.toString());
- }
-
- @Override
- public void bandwidthUsed(long read, long written) {
-
- if (read != lastRead || written != lastWritten)
- {
- StringBuilder sb = new StringBuilder();
- sb.append(formatCount(read));
- sb.append(" \u2193");
- sb.append(" / ");
- sb.append(formatCount(written));
- sb.append(" \u2191");
-
- int iconId = R.drawable.ic_stat_tor;
-
- if (read > 0 || written > 0)
- iconId = R.drawable.ic_stat_tor_xfer;
-
- if (mConnectivity && Prefs.persistNotifications())
- showToolbarNotification(sb.toString(), NOTIFY_ID, iconId);
-
- mTotalTrafficWritten += written;
- mTotalTrafficRead += read;
- }
-
- lastWritten = written;
- lastRead = read;
-
- sendCallbackBandwidth(lastWritten, lastRead, mTotalTrafficWritten, mTotalTrafficRead);
- }
-
- private String formatCount(long count) {
- // Converts the supplied argument into a string.
-
- // Under 2Mb, returns "xxx.xKb"
- // Over 2Mb, returns "xxx.xxMb"
- if (mNumberFormat != null)
- if (count < 1e6)
- return mNumberFormat.format(Math.round((float)((int)(count*10/1024))/10)) + "kbps";
- else
- return mNumberFormat.format(Math.round((float)((int)(count*100/1024/1024))/100)) + "mbps";
- else
- return "";
-
- //return count+" kB";
- }
-
- public void circuitStatus(String status, String circID, String path) {
-
- /* once the first circuit is complete, then announce that Orbot is on*/
- if (mCurrentStatus == STATUS_STARTING && TextUtils.equals(status, "BUILT"))
- sendCallbackStatus(STATUS_ON);
-
- StringBuilder sb = new StringBuilder();
- sb.append("Circuit (");
- sb.append((circID));
- sb.append(") ");
- sb.append(status);
- sb.append(": ");
-
- StringTokenizer st = new StringTokenizer(path,",");
- Node node = null;
-
- while (st.hasMoreTokens())
- {
- String nodePath = st.nextToken();
- node = new Node();
-
- String[] nodeParts;
-
- if (nodePath.contains("="))
- nodeParts = nodePath.split("=");
- else
- nodeParts = nodePath.split("~");
-
- if (nodeParts.length == 1)
- {
- node.id = nodeParts[0].substring(1);
- node.name = node.id;
- }
- else if (nodeParts.length == 2)
- {
- node.id = nodeParts[0].substring(1);
- node.name = nodeParts[1];
- }
-
- node.status = status;
-
- sb.append(node.name);
-
- if (st.hasMoreTokens())
- sb.append (" > ");
- }
-
- if (Prefs.useDebugLogging())
- debug(sb.toString());
- else if(status.equals("BUILT"))
- logNotice(sb.toString());
- else if (status.equals("CLOSED"))
- logNotice(sb.toString());
-
- if (Prefs.expandedNotifications())
- {
- //get IP from last nodename
- if(status.equals("BUILT")){
-
- if (node.ipAddress == null)
- mExecutor.execute(new ExternalIPFetcher(node));
-
- hmBuiltNodes.put(node.id, node);
- }
-
- if (status.equals("CLOSED"))
- {
- hmBuiltNodes.remove(node.id);
-
- }
- }
-
- }
-
- private HashMap<String,Node> hmBuiltNodes = new HashMap<String,Node>();
-
- class Node
- {
- String status;
- String id;
- String name;
- String ipAddress;
- String country;
- String organization;
- }
-
- private class ExternalIPFetcher implements Runnable {
-
- private Node mNode;
- private int MAX_ATTEMPTS = 3;
- private final static String ONIONOO_BASE_URL = "https://onionoo.torproject.org/details?fields=country_name,as_name,or_addresses&lookup=";
-
- public ExternalIPFetcher (Node node)
- {
- mNode = node;
- }
-
- public void run ()
- {
-
- for (int i = 0; i < MAX_ATTEMPTS; i++)
- {
- if (conn != null)
- {
- try {
-
- URLConnection conn = null;
-
- Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8118));
- conn = new URL(ONIONOO_BASE_URL + mNode.id).openConnection(proxy);
-
- conn.setRequestProperty("Connection","Close");
- conn.setConnectTimeout(60000);
- conn.setReadTimeout(60000);
-
- InputStream is = conn.getInputStream();
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-
- // getting JSON string from URL
-
- StringBuffer json = new StringBuffer();
- String line = null;
-
- while ((line = reader.readLine())!=null)
- json.append(line);
-
- JSONObject jsonNodeInfo = new org.json.JSONObject(json.toString());
-
- JSONArray jsonRelays = jsonNodeInfo.getJSONArray("relays");
-
- if (jsonRelays.length() > 0)
- {
- mNode.ipAddress = jsonRelays.getJSONObject(0).getJSONArray("or_addresses").getString(0).split(":")[0];
- mNode.country = jsonRelays.getJSONObject(0).getString("country_name");
- mNode.organization = jsonRelays.getJSONObject(0).getString("as_name");
-
- StringBuffer sbInfo = new StringBuffer();
- sbInfo.append(mNode.ipAddress);
-
- if (mNode.country != null)
- sbInfo.append(' ').append(mNode.country);
-
- if (mNode.organization != null)
- sbInfo.append(" (").append(mNode.organization).append(')');
-
- logNotice(sbInfo.toString());
-
- }
-
- reader.close();
- is.close();
-
- break;
-
- } catch (Exception e) {
-
- debug ("Error getting node details from onionoo: " + e.getMessage());
-
-
- }
- }
- }
- }
-
-
- }
-
- private String parseNodeName(String node)
- {
- if (node.indexOf('=')!=-1)
- {
- return (node.substring(node.indexOf("=")+1));
- }
- else if (node.indexOf('~')!=-1)
- {
- return (node.substring(node.indexOf("~")+1));
- }
- else
- return node;
- }
-
- public void processTransparentProxying() {
- try{
- if (Prefs.useRoot())
- {
- Shell shell = Shell.startRootShell();
- if (Prefs.useTransparentProxying()){
- enableTransparentProxy(shell);
- } else {
- disableTransparentProxy(shell);
- }
- shell.close();
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
- public String getInfo (String key) {
- try {
- if(conn !=null){
- String m = conn.getInfo(key);
- return m;
- }
- }
- catch(Exception ioe){
- // Log.e(TAG,"Unable to get Tor information",ioe);
- logNotice("Unable to get Tor information"+ioe.getMessage());
- }
- return null;
- }
-
- public String getConfiguration (String name)
- {
- try
- {
- if (conn != null)
- {
- StringBuffer result = new StringBuffer();
-
- List<ConfigEntry> listCe = conn.getConf(name);
-
- Iterator<ConfigEntry> itCe = listCe.iterator();
- ConfigEntry ce = null;
-
-
-
- while (itCe.hasNext())
- {
- ce = itCe.next();
-
- result.append(ce.key);
- result.append(' ');
- result.append(ce.value);
- result.append('\n');
- }
-
- return result.toString();
- }
- }
- catch (Exception ioe)
- {
-
- logException("Unable to get Tor configuration: " + ioe.getMessage(),ioe);
- }
-
- return null;
- }
-
- private final static String RESET_STRING = "=\"\"";
- /**
- * Set configuration
- **/
- public boolean updateConfiguration (String name, String value, boolean saveToDisk)
- {
-
-
- if (configBuffer == null)
- configBuffer = new ArrayList<String>();
-
- if (resetBuffer == null)
- resetBuffer = new ArrayList<String>();
-
- if (value == null || value.length() == 0)
- {
- resetBuffer.add(name + RESET_STRING);
-
- }
- else
- {
- StringBuffer sbConf = new StringBuffer();
- sbConf.append(name);
- sbConf.append(' ');
- sbConf.append(value);
-
- configBuffer.add(sbConf.toString());
- }
-
- return false;
- }
-
- public void setTorNetworkEnabled (final boolean isEnabled)
- {
-
-
- //it is possible to not have a connection yet, and someone might try to newnym
- if (conn != null)
- {
- new Thread ()
- {
- public void run ()
- {
- try {
-
- conn.setConf("DisableNetwork", isEnabled ? "0" : "1");
-
- }
- catch (Exception ioe){
- debug("error requesting newnym: " + ioe.getLocalizedMessage());
- }
- }
- }.start();
- }
-
- }
-
- public void newIdentity ()
- {
- //it is possible to not have a connection yet, and someone might try to newnym
- if (conn != null)
- {
- new Thread ()
- {
- public void run ()
- {
- try {
-
- conn.signal("NEWNYM");
-
- }
- catch (Exception ioe){
-
- debug("error requesting newnym: " + ioe.getLocalizedMessage());
-
- }
- }
- }.start();
- }
- }
-
- public boolean saveConfiguration ()
- {
- try
- {
- if (conn != null)
- {
-
- if (resetBuffer != null && resetBuffer.size() > 0)
- {
- for (String value : configBuffer)
- {
-
- // debug("removing torrc conf: " + value);
-
-
- }
-
- // conn.resetConf(resetBuffer);
- resetBuffer = null;
- }
-
- if (configBuffer != null && configBuffer.size() > 0)
- {
-
- for (String value : configBuffer)
- {
-
- debug("Setting torrc conf: " + value);
-
-
- }
-
- conn.setConf(configBuffer);
-
- configBuffer = null;
- }
-
- // Flush the configuration to disk.
- //this is doing bad things right now NF 22/07/10
- //conn.saveConf();
-
- return true;
- }
- }
- catch (Exception ioe)
- {
- logException("Unable to update Tor configuration: " + ioe.getMessage(),ioe);
- }
-
- return false;
- }
-
- private void sendCallbackBandwidth(long upload, long download, long written, long read) {
- Intent intent = new Intent(LOCAL_ACTION_BANDWIDTH);
-
- intent.putExtra("up",upload);
- intent.putExtra("down",download);
- intent.putExtra("written",written);
- intent.putExtra("read",read);
- intent.putExtra(EXTRA_STATUS, mCurrentStatus);
-
- LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
- }
-
- private void sendCallbackLogMessage (String logMessage)
- {
-
- Intent intent = new Intent(LOCAL_ACTION_LOG);
- // You can also include some extra data.
- intent.putExtra(LOCAL_EXTRA_LOG, logMessage);
- intent.putExtra(EXTRA_STATUS, mCurrentStatus);
-
- LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
-
- }
-
- private void sendCallbackStatus(String currentStatus) {
- mCurrentStatus = currentStatus;
- Intent intent = getActionStatusIntent(currentStatus);
- // send for Orbot internals, using secure local broadcast
- sendBroadcastOnlyToOrbot(intent);
- // send for any apps that are interested
- sendBroadcast(intent);
- }
-
- /**
- * Send a secure broadcast only to Orbot itself
- * @see {@link ContextWrapper#sendBroadcast(Intent)}
- * @see {@link LocalBroadcastManager}
- */
- private boolean sendBroadcastOnlyToOrbot(Intent intent) {
- return LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
- }
-
- private Intent getActionStatusIntent(String currentStatus) {
- Intent intent = new Intent(ACTION_STATUS);
- intent.putExtra(EXTRA_STATUS, currentStatus);
- return intent;
- }
-
- /*
- * Another way to do this would be to use the Observer pattern by defining the
- * BroadcastReciever in the Android manifest.
- */
- private final BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
-
- if (mCurrentStatus != STATUS_ON)
- return;
-
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- boolean doNetworKSleep = prefs.getBoolean(OrbotConstants.PREF_DISABLE_NETWORK, true);
-
- final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
- final NetworkInfo netInfo = cm.getActiveNetworkInfo();
-
- boolean newConnectivityState = false;
- int newNetType = -1;
-
- boolean isChanged = false;
-
- if (netInfo!=null)
- newNetType = netInfo.getType();
-
- isChanged = ((mNetworkType != newNetType)&&(mConnectivity != newConnectivityState));
-
- if(netInfo != null && netInfo.isConnected()) {
- // WE ARE CONNECTED: DO SOMETHING
- newConnectivityState = true;
- }
- else {
- // WE ARE NOT: DO SOMETHING ELSE
- newConnectivityState = false;
- }
-
- mNetworkType = newNetType;
- mConnectivity = newConnectivityState;
-
- if (doNetworKSleep)
- {
- setTorNetworkEnabled (mConnectivity);
-
- if (!mConnectivity)
- {
- logNotice(context.getString(R.string.no_network_connectivity_putting_tor_to_sleep_));
- showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off);
-
- }
- else
- {
- logNotice(context.getString(R.string.network_connectivity_is_good_waking_tor_up_));
- showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor);
- }
-
- //is this a change in state?
- if (isChanged)
- {
- try {
-
- if (mCurrentStatus != STATUS_OFF)
- {
- if (mConnectivity)
- {
- if (Prefs.useRoot() && Prefs.useTransparentProxying() && Prefs.transProxyNetworkRefresh())
- {
-
- Shell shell = Shell.startRootShell();
-
- disableTransparentProxy(shell);
- enableTransparentProxy(shell);
-
- shell.close();
- }
- }
- }
-
- } catch (Exception e) {
- logException ("error updating state after network restart",e);
- }
-
- }
- }
-
-
- }
- };
-
- private boolean processSettingsImpl (StringBuffer extraLines) throws IOException
- {
- logNotice(getString(R.string.updating_settings_in_tor_service));
-
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- boolean useBridges = Prefs.bridgesEnabled();
-
- boolean becomeRelay = prefs.getBoolean(OrbotConstants.PREF_OR, false);
- boolean ReachableAddresses = prefs.getBoolean(OrbotConstants.PREF_REACHABLE_ADDRESSES,false);
- boolean enableHiddenServices = prefs.getBoolean("pref_hs_enable", false);
-
- boolean enableStrictNodes = prefs.getBoolean("pref_strict_nodes", false);
- String entranceNodes = prefs.getString("pref_entrance_nodes", "");
- String exitNodes = prefs.getString("pref_exit_nodes", "");
- String excludeNodes = prefs.getString("pref_exclude_nodes", "");
-
- if (!useBridges)
- {
-
- extraLines.append("UseBridges 0").append('\n');
-
- if (Prefs.useVpn()) //set the proxy here if we aren't using a bridge
- {
-
- if (!mIsLollipop)
- {
- String proxyType = "socks5";
- extraLines.append(proxyType + "Proxy" + ' ' + OrbotVpnManager.sSocksProxyLocalhost + ':' + OrbotVpnManager.sSocksProxyServerPort).append('\n');
- };
-
- }
- else
- {
- String proxyType = prefs.getString("pref_proxy_type", null);
- if (proxyType != null && proxyType.length() > 0)
- {
- String proxyHost = prefs.getString("pref_proxy_host", null);
- String proxyPort = prefs.getString("pref_proxy_port", null);
- String proxyUser = prefs.getString("pref_proxy_username", null);
- String proxyPass = prefs.getString("pref_proxy_password", null);
-
- if ((proxyHost != null && proxyHost.length()>0) && (proxyPort != null && proxyPort.length() > 0))
- {
- extraLines.append(proxyType + "Proxy" + ' ' + proxyHost + ':' + proxyPort).append('\n');
-
- if (proxyUser != null && proxyPass != null)
- {
- if (proxyType.equalsIgnoreCase("socks5"))
- {
- extraLines.append("Socks5ProxyUsername" + ' ' + proxyUser).append('\n');
- extraLines.append("Socks5ProxyPassword" + ' ' + proxyPass).append('\n');
- }
- else
- extraLines.append(proxyType + "ProxyAuthenticator" + ' ' + proxyUser + ':' + proxyPort).append('\n');
-
- }
- else if (proxyPass != null)
- extraLines.append(proxyType + "ProxyAuthenticator" + ' ' + proxyUser + ':' + proxyPort).append('\n');
-
-
-
- }
- }
- }
- }
- else
- {
-
-
- extraLines.append("UseBridges 1").append('\n');
-
- String bridgeList = new String(Prefs.getBridgesList().getBytes("ISO-8859-1"));
-
- if (bridgeList != null && bridgeList.length() > 1) //longer then 1 = some real values here
- {
-
- //check if any PT bridges are needed
- boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit");
-
- if (obfsBridges)
- {
- extraLines.append("ClientTransportPlugin obfs3 exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
- extraLines.append("ClientTransportPlugin obfs4 exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
- extraLines.append("ClientTransportPlugin scramblesuit exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
- }
-
- boolean meekBridges = bridgeList.contains("meek");
- if (meekBridges)
- {
- extraLines.append("ClientTransportPlugin meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
- }
-
- String[] bridgeListLines = bridgeList.split("\\r?\\n");
-
- for (String bridgeConfigLine : bridgeListLines)
- {
- if (!TextUtils.isEmpty(bridgeConfigLine))
- {
- extraLines.append("Bridge ");
-
- //bridgeConfigLine = bridgeConfigLine.replace('�', ' ');
-
- StringTokenizer st = new StringTokenizer (bridgeConfigLine," ");
- while (st.hasMoreTokens())
- extraLines.append(st.nextToken()).append(' ');
-
- extraLines.append("\n");
-
- }
-
- }
-
- }
- else
- {
- //time to do autobridges, aka meek
-
- debug ("Using meek bridges");
-
- // String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath();
- String bridgeConfig = "meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath();
-
- extraLines.append("ClientTransportPlugin" + ' ' + bridgeConfig).append('\n');
-
- int meekIdx = 2; //let's use Azure by default
-
- if (bridgeList != null && bridgeList.length() == 1)
- {
- try
- {
- meekIdx = Integer.parseInt(bridgeList);
-
- if (meekIdx+1 > BRIDGES_MEEK.length)
- throw new Exception("not valid meek idx");
- }
- catch (Exception e)
- {
- debug("invalid meek type; please enter 0=Google, 1=AWS, 2=Azure");
- }
- }
-
- extraLines.append("Bridge " + BRIDGES_MEEK[meekIdx]).append('\n');
-
- }
-
- }
-
-
- //only apply GeoIP if you need it
- File fileGeoIP = new File(OrbotApp.appBinHome, GEOIP_ASSET_KEY);
- File fileGeoIP6 = new File(OrbotApp.appBinHome, GEOIP6_ASSET_KEY);
-
- if (fileGeoIP.exists())
- {
- extraLines.append("GeoIPFile" + ' ' + fileGeoIP.getCanonicalPath()).append('\n');
- extraLines.append("GeoIPv6File" + ' ' + fileGeoIP6.getCanonicalPath()).append('\n');
- }
-
- if (!TextUtils.isEmpty(entranceNodes))
- extraLines.append("EntryNodes" + ' ' + entranceNodes).append('\n');
-
- if (!TextUtils.isEmpty(exitNodes))
- extraLines.append("ExitNodes" + ' ' + exitNodes).append('\n');
-
- if (!TextUtils.isEmpty(excludeNodes))
- extraLines.append("ExcludeNodes" + ' ' + excludeNodes).append('\n');
-
- extraLines.append("StrictNodes" + ' ' + (enableStrictNodes ? "1" : "0")).append('\n');
-
- try
- {
- if (ReachableAddresses)
- {
- String ReachableAddressesPorts =
- prefs.getString(OrbotConstants.PREF_REACHABLE_ADDRESSES_PORTS, "*:80,*:443");
-
- extraLines.append("ReachableAddresses" + ' ' + ReachableAddressesPorts).append('\n');
-
- }
-
- }
- catch (Exception e)
- {
- showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
-
- return false;
- }
-
- try
- {
- if (becomeRelay && (!useBridges) && (!ReachableAddresses))
- {
- int ORPort = Integer.parseInt(prefs.getString(OrbotConstants.PREF_OR_PORT, "9001"));
- String nickname = prefs.getString(OrbotConstants.PREF_OR_NICKNAME, "Orbot");
-
- String dnsFile = writeDNSFile ();
-
- extraLines.append("ServerDNSResolvConfFile" + ' ' + dnsFile).append('\n');
- extraLines.append("ORPort" + ' ' + ORPort).append('\n');
- extraLines.append("Nickname" + ' ' + nickname).append('\n');
- extraLines.append("ExitPolicy" + ' ' + "reject *:*").append('\n');
-
- }
- }
- catch (Exception e)
- {
- showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
-
-
- return false;
- }
-
- if (enableHiddenServices)
- {
- logNotice("hidden services are enabled");
-
- //updateConfiguration("RendPostPeriod", "600 seconds", false); //possible feature to investigate
-
- String hsPorts = prefs.getString("pref_hs_ports","");
-
- StringTokenizer st = new StringTokenizer (hsPorts,",");
- String hsPortConfig = null;
- int hsPort = -1;
-
- while (st.hasMoreTokens())
- {
- try
- {
- hsPortConfig = st.nextToken().trim();
-
- if (hsPortConfig.indexOf(":")==-1) //setup the port to localhost if not specifed
- {
- hsPortConfig = hsPortConfig + " 127.0.0.1:" + hsPortConfig;
- }
-
- hsPort = Integer.parseInt(hsPortConfig.split(" ")[0]);
-
- String hsDirPath = new File(OrbotApp.appCacheHome,"hs" + hsPort).getCanonicalPath();
-
- debug("Adding hidden service on port: " + hsPortConfig);
-
- extraLines.append("HiddenServiceDir" + ' ' + hsDirPath).append('\n');
- extraLines.append("HiddenServicePort" + ' ' + hsPortConfig).append('\n');
-
-
- } catch (NumberFormatException e) {
- Log.e(TAG,"error parsing hsport",e);
- } catch (Exception e) {
- Log.e(TAG,"error starting share server",e);
- }
- }
-
-
- }
-
- return true;
- }
-
- public static String flattenToAscii(String string) {
- char[] out = new char[string.length()];
- string = Normalizer.normalize(string, Normalizer.Form.NFD);
- int j = 0;
- for (int i = 0, n = string.length(); i < n; ++i) {
- char c = string.charAt(i);
- if (c <= '\u007F') out[j++] = c;
- }
- return new String(out);
- }
-
- //using Google DNS for now as the public DNS server
- private String writeDNSFile () throws IOException
- {
- File file = new File(OrbotApp.appBinHome, "resolv.conf");
-
- PrintWriter bw = new PrintWriter(new FileWriter(file));
- bw.println("nameserver 8.8.8.8");
- bw.println("nameserver 8.8.4.4");
- bw.close();
-
- return file.getCanonicalPath();
- }
-
- @SuppressLint("NewApi")
- @Override
- public void onTrimMemory(int level) {
- super.onTrimMemory(level);
-
- switch (level)
- {
-
- case TRIM_MEMORY_BACKGROUND:
- debug("trim memory requested: app in the background");
- return;
-
- /**
- public static final int TRIM_MEMORY_BACKGROUND
- Added in API level 14
- Level for onTrimMemory(int): the process has gone on to the LRU list. This is a good opportunity to clean up resources that can efficiently and quickly be re-built if the user returns to the app.
- Constant Value: 40 (0x00000028)
- */
-
- case TRIM_MEMORY_COMPLETE:
-
- debug("trim memory requested: cleanup all memory");
- return;
- /**
- public static final int TRIM_MEMORY_COMPLETE
- Added in API level 14
- Level for onTrimMemory(int): the process is nearing the end of the background LRU list, and if more memory isn't found soon it will be killed.
- Constant Value: 80 (0x00000050)
- */
- case TRIM_MEMORY_MODERATE:
-
- debug("trim memory requested: clean up some memory");
- return;
-
- /**
- public static final int TRIM_MEMORY_MODERATE
- Added in API level 14
- Level for onTrimMemory(int): the process is around the middle of the background LRU list; freeing memory can help the system keep other processes running later in the list for better overall performance.
- Constant Value: 60 (0x0000003c)
- */
-
- case TRIM_MEMORY_RUNNING_CRITICAL:
-
- debug("trim memory requested: memory on device is very low and critical");
- return;
- /**
- public static final int TRIM_MEMORY_RUNNING_CRITICAL
- Added in API level 16
- Level for onTrimMemory(int): the process is not an expendable background process, but the device is running extremely low on memory and is about to not be able to keep any background processes running. Your running process should free up as many non-critical resources as it can to allow that memory to be used elsewhere. The next thing that will happen after this is onLowMemory() called to report that nothing at all can be kept in the background, a situation that can start to notably impact the user.
- Constant Value: 15 (0x0000000f)
- */
-
- case TRIM_MEMORY_RUNNING_LOW:
-
- debug("trim memory requested: memory on device is running low");
- return;
- /**
- public static final int TRIM_MEMORY_RUNNING_LOW
- Added in API level 16
- Level for onTrimMemory(int): the process is not an expendable background process, but the device is running low on memory. Your running process should free up unneeded resources to allow that memory to be used elsewhere.
- Constant Value: 10 (0x0000000a)
- */
- case TRIM_MEMORY_RUNNING_MODERATE:
-
- debug("trim memory requested: memory on device is moderate");
- return;
- /**
- public static final int TRIM_MEMORY_RUNNING_MODERATE
- Added in API level 16
- Level for onTrimMemory(int): the process is not an expendable background process, but the device is running moderately low on memory. Your running process may want to release some unneeded resources for use elsewhere.
- Constant Value: 5 (0x00000005)
- */
- case TRIM_MEMORY_UI_HIDDEN:
-
- debug("trim memory requested: app is not showing UI anymore");
- return;
-
- /**
- public static final int TRIM_MEMORY_UI_HIDDEN
- Level for onTrimMemory(int): the process had been showing a user interface, and is no longer doing so. Large allocations with the UI should be released at this point to allow memory to be better managed.
- Constant Value: 20 (0x00000014)
- */
- }
-
- }
-
- @Override
- public IBinder onBind(Intent arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- private void setExitNode (String newExits)
- {
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- if (TextUtils.isEmpty(newExits))
- {
- prefs.edit().remove("pref_exit_nodes").apply();
-
- if (conn != null)
- {
- try
- {
- ArrayList<String> resetBuffer = new ArrayList<String>();
- resetBuffer.add("ExitNodes");
- resetBuffer.add("StrictNodes");
- conn.resetConf(resetBuffer);
- conn.setConf("DisableNetwork","1");
- conn.setConf("DisableNetwork","0");
-
- }
- catch (Exception ioe)
- {
- Log.e(TAG, "Connection exception occured resetting exits",ioe);
- }
- }
- }
- else
- {
- prefs.edit().putString("pref_exit_nodes", newExits).apply();
-
- if (conn != null)
- {
- try
- {
- File fileGeoIP = new File(OrbotApp.appBinHome, GEOIP_ASSET_KEY);
- File fileGeoIP6 = new File(OrbotApp.appBinHome, GEOIP6_ASSET_KEY);
-
- conn.setConf("GeoIPFile",fileGeoIP.getCanonicalPath());
- conn.setConf("GeoIPv6File",fileGeoIP6.getCanonicalPath());
-
- conn.setConf("ExitNodes", newExits);
- conn.setConf("StrictNodes","1");
-
- conn.setConf("DisableNetwork","1");
- conn.setConf("DisableNetwork","0");
-
- }
- catch (Exception ioe)
- {
- Log.e(TAG, "Connection exception occured resetting exits",ioe);
- }
- }
- }
-
- }
-
-}
diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java
deleted file mode 100644
index e2f0964..0000000
--- a/src/org/torproject/android/service/TorServiceConstants.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.service;
-
-import android.content.Intent;
-
-public interface TorServiceConstants {
-
- public final static String TOR_APP_USERNAME = "org.torproject.android";
- public final static String BROWSER_APP_USERNAME = "info.guardianproject.orfox";
-
- public final static String DIRECTORY_TOR_BINARY = "bin";
- public final static String DIRECTORY_TOR_DATA = "data";
-
- //name of the tor C binary
- public final static String TOR_ASSET_KEY = "tor";
-
- //torrc (tor config file)
- public final static String TORRC_ASSET_KEY = "torrc";
- public final static String TORRCDIAG_ASSET_KEY = "torrcdiag";
- public final static String TORRC_TETHER_KEY = "torrctether";
-
- public final static String TOR_CONTROL_COOKIE = "control_auth_cookie";
-
- //privoxy
- public final static String POLIPO_ASSET_KEY = "polipo";
-
- //privoxy.config
- public final static String POLIPOCONFIG_ASSET_KEY = "torpolipo.conf";
-
- //geoip data file asset key
- public final static String GEOIP_ASSET_KEY = "geoip";
- public final static String GEOIP6_ASSET_KEY = "geoip6";
-
- //various console cmds
- public final static String SHELL_CMD_CHMOD = "chmod";
- public final static String SHELL_CMD_KILL = "kill -9";
- public final static String SHELL_CMD_RM = "rm";
- public final static String SHELL_CMD_PS = "toolbox ps";
- public final static String SHELL_CMD_PS_ALT = "ps";
-
-
- //public final static String SHELL_CMD_PIDOF = "pidof";
- public final static String SHELL_CMD_LINK = "ln -s";
- public final static String SHELL_CMD_CP = "cp";
-
-
- public final static String CHMOD_EXE_VALUE = "770";
-
- public final static int FILE_WRITE_BUFFER_SIZE = 1024;
-
- public final static String IP_LOCALHOST = "127.0.0.1";
- public final static int UPDATE_TIMEOUT = 1000;
- public final static int TOR_TRANSPROXY_PORT_DEFAULT = 9040;
-
- public final static int STANDARD_DNS_PORT = 53;
- public final static int TOR_DNS_PORT_DEFAULT = 5400;
- public final static String TOR_VPN_DNS_LISTEN_ADDRESS = "127.0.0.1";
-
- public final static int CONTROL_PORT_DEFAULT = 9051;
- public final static int HTTP_PROXY_PORT_DEFAULT = 8118; // like Privoxy!
- public final static int SOCKS_PROXY_PORT_DEFAULT = 9050;
-
-
- //path to check Tor against
- public final static String URL_TOR_CHECK = "https://check.torproject.org";
-
- //control port
- public final static String TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE = "Bootstrapped 100%";
- public final static String LOG_NOTICE_HEADER = "NOTICE";
- public final static String LOG_NOTICE_BOOTSTRAPPED = "Bootstrapped";
-
- /**
- * A request to Orbot to transparently start Tor services
- */
- public final static String ACTION_START = "org.torproject.android.intent.action.START";
- /**
- * {@link Intent} send by Orbot with {@code ON/OFF/STARTING/STOPPING} status
- */
- public final static String ACTION_STATUS = "org.torproject.android.intent.action.STATUS";
- /**
- * {@code String} that contains a status constant: {@link #STATUS_ON},
- * {@link #STATUS_OFF}, {@link #STATUS_STARTING}, or
- * {@link #STATUS_STOPPING}
- */
- public final static String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS";
- /**
- * A {@link String} {@code packageName} for Orbot to direct its status reply
- * to, used in {@link #ACTION_START} {@link Intent}s sent to Orbot
- */
- public final static String EXTRA_PACKAGE_NAME = "org.torproject.android.intent.extra.PACKAGE_NAME";
- /**
- * The SOCKS proxy settings in URL form.
- */
- public final static String EXTRA_SOCKS_PROXY = "org.torproject.android.intent.extra.SOCKS_PROXY";
- public final static String EXTRA_SOCKS_PROXY_HOST = "org.torproject.android.intent.extra.SOCKS_PROXY_HOST";
- public final static String EXTRA_SOCKS_PROXY_PORT = "org.torproject.android.intent.extra.SOCKS_PROXY_PORT";
- /**
- * The HTTP proxy settings in URL form.
- */
- public final static String EXTRA_HTTP_PROXY = "org.torproject.android.intent.extra.HTTP_PROXY";
- public final static String EXTRA_HTTP_PROXY_HOST = "org.torproject.android.intent.extra.HTTP_PROXY_HOST";
- public final static String EXTRA_HTTP_PROXY_PORT = "org.torproject.android.intent.extra.HTTP_PROXY_PORT";
-
- public final static String LOCAL_ACTION_LOG = "log";
- public final static String LOCAL_ACTION_BANDWIDTH = "bandwidth";
- public final static String LOCAL_EXTRA_LOG = "log";
-
- /**
- * All tor-related services and daemons are stopped
- */
- public final static String STATUS_OFF = "OFF";
- /**
- * All tor-related services and daemons have completed starting
- */
- public final static String STATUS_ON = "ON";
- public final static String STATUS_STARTING = "STARTING";
- public final static String STATUS_STOPPING = "STOPPING";
- /**
- * The user has disabled the ability for background starts triggered by
- * apps. Fallback to the old Intent that brings up Orbot.
- */
- public final static String STATUS_STARTS_DISABLED = "STARTS_DISABLED";
-
- // actions for internal command Intents
- public static final String CMD_SIGNAL_HUP = "signal_hup";
- public static final String CMD_STATUS = "status";
- public static final String CMD_FLUSH = "flush";
- public static final String CMD_NEWNYM = "newnym";
- public static final String CMD_VPN = "vpn";
- public static final String CMD_VPN_CLEAR = "vpnclear";
- public static final String CMD_UPDATE_TRANS_PROXY = "update";
- public static final String CMD_SET_EXIT = "setexit";
-
-
-
- public static final String BINARY_TOR_VERSION = "0.2.7.5-020120160125";
- public static final String PREF_BINARY_TOR_VERSION_INSTALLED = "BINARY_TOR_VERSION_INSTALLED";
-
- //obfsproxy
- public static final String OBFSCLIENT_ASSET_KEY = "obfs4proxy";
-
- // public static final String MEEK_ASSET_KEY = "meek-client";
-
- //name of the iptables binary
- public final static String IPTABLES_ASSET_KEY = "xtables";
-
- //DNS daemon for TCP DNS over TOr
- public final static String PDNSD_ASSET_KEY = "pdnsd";
-
- //EXIT COUNTRY CODES
- public final static String[] COUNTRY_CODES = {"DE","AT","SE","CH","IS","CA","US","ES","FR","BG","PL","AU","BR","CZ","DK","FI","GB","HU","NL","JP","RO","RU","SG","SK"};
-
- //MEEK BRIDGEs
- public final static String[] BRIDGES_MEEK =
- {
- "meek_lite 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com",
- "meek_lite 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com",
- "meek_lite 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com"
- };
-
-}
diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/src/org/torproject/android/service/TorServiceUtils.java
deleted file mode 100644
index 9a072b9..0000000
--- a/src/org/torproject/android/service/TorServiceUtils.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-package org.torproject.android.service;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.ConnectException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.util.StringTokenizer;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.Prefs;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.util.Log;
-
-public class TorServiceUtils implements TorServiceConstants {
-
-
-
- public static int findProcessId(String command) throws IOException
- {
- int procId = findProcessIdWithPS(command);
- return procId;
- }
-
- //use 'pidof' command
- /**
- public static int findProcessIdWithPidOf(String command) throws Exception
- {
-
- int procId = -1;
-
- Runtime r = Runtime.getRuntime();
-
- Process procPs = null;
-
- String baseName = new File(command).getName();
- //fix contributed my mikos on 2010.12.10
- procPs = r.exec(new String[] {SHELL_CMD_PIDOF, baseName});
- //procPs = r.exec(SHELL_CMD_PIDOF);
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream()));
- String line = null;
-
- while ((line = reader.readLine())!=null)
- {
-
- try
- {
- //this line should just be the process id
- procId = Integer.parseInt(line.trim());
- break;
- }
- catch (NumberFormatException e)
- {
- Log.e("TorServiceUtils","unable to parse process pid: " + line,e);
- }
- }
-
-
- return procId;
-
- }
- * @throws IOException */
-
- //use 'ps' command
- public static int findProcessIdWithPS(String command) throws IOException
- {
-
- int procId = -1;
-
- Runtime r = Runtime.getRuntime();
-
- Process procPs = null;
-
- procPs = r.exec(SHELL_CMD_PS); // this is the android ps <name> command
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream()));
- String line = null;
-
- while ((line = reader.readLine())!=null)
- {
- if (line.contains("PID"))
- continue;
-
- if (line.contains(command))
- {
-
- String[] lineParts = line.split("\\s+");
-
- try {
-
- procId = Integer.parseInt(lineParts[1]); //for most devices it is the second number
- } catch(NumberFormatException e) {
- procId = Integer.parseInt(lineParts[0]); //but for samsungs it is the first
-
- }
-
-
- break;
- }
- }
-
- try { procPs.destroy(); } catch (Exception e) {} // try to destroy just to make sure we clean it up
-
- return procId;
-
- }
-
- public static SharedPreferences getSharedPrefs (Context context)
- {
- if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)
- return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS,0 | Context.MODE_MULTI_PROCESS);
- else
- return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS,Context.MODE_PRIVATE);
-
- }
-
- public static void killProcess(File fileProcBin) throws Exception {
- killProcess(fileProcBin, "-9"); // this is -KILL
- }
-
- public static void killProcess(File fileProcBin, String signal) throws Exception {
- int procId = -1;
- int killAttempts = 0;
-
- while ((procId = TorServiceUtils.findProcessId(fileProcBin.getCanonicalPath())) != -1) {
- killAttempts++;
- //logNotice("Found " + fileProcBin.getName() + " PID=" + procId + " - killing now...");
- String pidString = String.valueOf(procId);
- /*
- * first try as the normal app user to be safe, then if that fails,
- * try root since the process might be left over from
- * uninstall/reinstall with different UID.
- */
- Shell shell;
- if (Prefs.useRoot() && killAttempts > 2) {
- shell = Shell.startRootShell();
- Log.i(OrbotApp.TAG, "using a root shell");
- } else {
- shell = Shell.startShell();
- }
- shell.add(new SimpleCommand("busybox killall " + signal + " " + fileProcBin.getName()));
- shell.add(new SimpleCommand("toolbox kill " + signal + " " + pidString));
- shell.add(new SimpleCommand("busybox kill " + signal + " " + pidString));
- shell.add(new SimpleCommand("kill " + signal + " " + pidString));
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // ignored
- }
- shell.close();
- if (killAttempts > 4)
- throw new Exception("Cannot kill: " + fileProcBin.getAbsolutePath());
- }
- }
-
- public static boolean isPortOpen(final String ip, final int port, final int timeout) {
- try {
- Socket socket = new Socket();
- socket.connect(new InetSocketAddress(ip, port), timeout);
- socket.close();
- return true;
- }
-
- catch(ConnectException ce){
- //ce.printStackTrace();
- return false;
- }
-
- catch (Exception ex) {
- //ex.printStackTrace();
- return false;
- }
- }
-}
diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
deleted file mode 100644
index f88e46b..0000000
--- a/src/org/torproject/android/service/TorTransProxy.java
+++ /dev/null
@@ -1,763 +0,0 @@
-package org.torproject.android.service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.Prefs;
-import org.torproject.android.settings.TorifiedApp;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-public class TorTransProxy implements TorServiceConstants {
-
- private String mSysIptables = null;
- private TorService mTorService = null;
- private File mFileXtables = null;
-
- private final static String ALLOW_LOCAL = " ! -d 127.0.0.1";
-
- private int mTransProxyPort = TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT;
- private int mDNSPort = TorServiceConstants.TOR_DNS_PORT_DEFAULT;
-
- public TorTransProxy (TorService torService, File fileXTables)
- {
- mTorService = torService;
- mFileXtables = fileXTables;
- }
-
- public void setTransProxyPort (int transProxyPort)
- {
- mTransProxyPort = transProxyPort;
- }
-
- public void setDNSPort (int dnsPort)
- {
- mDNSPort = dnsPort;
- }
-
- public String getIpTablesPath (Context context)
- {
-
- String ipTablesPath = null;
-
- if (Prefs.useSystemIpTables())
- {
- ipTablesPath = findSystemIPTables();
- }
- else
- {
- ipTablesPath = mFileXtables.getAbsolutePath();
- ipTablesPath += " iptables"; //append subcommand since we are using xtables now
-
- }
-
- return ipTablesPath;
- }
-
- public String getIp6TablesPath (Context context)
- {
-
- String ipTablesPath = null;
-
- if (Prefs.useSystemIpTables())
- {
- ipTablesPath = findSystemIP6Tables();
- }
- else
- {
- ipTablesPath = mFileXtables.getAbsolutePath();
- ipTablesPath += " ip6tables"; //append subcommand since we are using xtables now
-
- }
-
- return ipTablesPath;
-
- }
-
- private String findSystemIPTables ()
- {
- if (mSysIptables != null)
- {
- return mSysIptables;
- }
- else
- {
-
- //if the user wants us to use the built-in iptables, then we have to find it
- File fileIpt = new File("/system/xbin/iptables");
-
- if (fileIpt.exists())
- mSysIptables = fileIpt.getAbsolutePath();
- else
- {
-
- fileIpt = new File("/system/bin/iptables");
-
- if (fileIpt.exists())
- mSysIptables = fileIpt.getAbsolutePath();
- }
- }
-
- return mSysIptables;
- }
-
-
-
- private String findSystemIP6Tables ()
- {
-
- //if the user wants us to use the built-in iptables, then we have to find it
- File fileIpt = new File("/system/xbin/ip6tables");
-
- if (fileIpt.exists())
- mSysIptables = fileIpt.getAbsolutePath();
- else
- {
-
- fileIpt = new File("/system/bin/ip6tables");
-
- if (fileIpt.exists())
- mSysIptables = fileIpt.getAbsolutePath();
- }
-
-
- return mSysIptables;
- }
-
- /*
- public int flushIptablesAll(Context context) throws Exception {
-
- String ipTablesPath = getIpTablesPath(context);
-
- final StringBuilder script = new StringBuilder();
-
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(" -F || exit\n");
-
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(" -F || exit\n");
-
- String[] cmd = {script.toString()};
- code = TorServiceUtils.doShellCommand(cmd, res, true, true);
- String msg = res.toString();
-
- TorService.logMessage(cmd[0] + ";errCode=" + code + ";resp=" + msg);
-
-
- return code;
-
- }*/
-
- /*
- public static int purgeIptablesByApp(Context context, TorifiedApp[] apps) throws Exception {
-
- //restoreDNSResolvConf(); //not working yet
-
- String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
-
- final StringBuilder script = new StringBuilder();
-
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- for (int i = 0; i < apps.length; i++)
- {
- //flush nat for every app
- script.append(ipTablesPath);
- script.append(" -t nat -m owner --uid-owner ");
- script.append(tApp.getUid());
- script.append(" -F || exit\n");
-
- script.append(ipTablesPath);
- script.append(" -t filter -m owner --uid-owner ");
- script.append(tApp.getUid());
- script.append(" -F || exit\n");
-
- }
-
-
- String[] cmd = {script.toString()};
- code = TorServiceUtils.doShellCommand(cmd, res, true, true);
- String msg = res.toString();
- logNotice(cmd[0] + ";errCode=" + code + ";resp=" + msg);
-
-
- return code;
-
- }*/
-
-
- /*
- // 9/19/2010 - NF This code is in process... /etc path on System partition
- // is read-only on Android for now.
- public static int redirectDNSResolvConf () throws Exception
- {
- StringBuilder script = new StringBuilder();
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- //mv resolv.conf to resolve.conf.bak
- String cmd = "mv /etc/resolv.conf /etc/resolv.conf.bak";
- script.append(cmd);
-
- //create new resolve.conf pointing to localhost/127.0.0.1
- cmd = "echo \"nameserver 127.0.0.1\" > /etc/resolv.conf";
- script.append(cmd);
-
- String[] cmdFlush = {script.toString()};
- code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
- //String msg = res.toString(); //get stdout from command
-
-
- return code;
- }
-
- public static int restoreDNSResolvConf () throws Exception
- {
- StringBuilder script = new StringBuilder();
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- //mv resolv.conf to resolve.conf.bak
- String cmd = "mv /etc/resolv.conf.bak /etc/resolv.conf";
- script.append(cmd);
- script.append(" || exit\n");
-
- String[] cmdFlush = {script.toString()};
- code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
- //String msg = res.toString(); //get stdout from command
-
- return code;
- }
- */
- /*
- public int testOwnerModule(Context context, String ipTablesPath) throws Exception
- {
-
- TorBinaryInstaller.assertIpTablesBinaries(context, false);
-
- boolean runRoot = true;
- boolean waitFor = true;
-
- int torUid = context.getApplicationInfo().uid;
-
- StringBuilder script = new StringBuilder();
-
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- // Allow everything for Tor
- script.append(ipTablesPath);
- script.append(" -A OUTPUT");
- script.append(" -t filter");
- script.append(" -m owner --uid-owner ");
- script.append(torUid);
- script.append(" -j ACCEPT");
- script.append(" || exit\n");
-
- script.append(ipTablesPath);
- script.append(" -D OUTPUT");
- script.append(" -t filter");
- script.append(" -m owner --uid-owner ");
- script.append(torUid);
- script.append(" -j ACCEPT");
- script.append(" || exit\n");
-
- String[] cmdAdd = {script.toString()};
-
- code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
- String msg = res.toString();
-
- if (mTorService != null)
- logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
-
-
- return code;
- }
- */
-
- /*
- public int clearTransparentProxyingByApp (Context context, ArrayList<TorifiedApp> apps) throws Exception
- {
- boolean runRoot = true;
- boolean waitFor = true;
-
- String ipTablesPath = getIpTablesPath(context);
-
- StringBuilder script = new StringBuilder();
-
- StringBuilder res = new StringBuilder();
- int code = -1;
-
- String chainName = "ORBOT";
- String jumpChainName = "OUTPUT";
-
- script.append(ipTablesPath);
- script.append(" --flush ").append(chainName); //delete previous user-defined chain
- script.append(" || exit\n");
-
- script.append(ipTablesPath);
- script.append(" -D ").append(jumpChainName);
- script.append(" -j ").append(chainName);
- script.append(" || exit\n");
-
- script.append(ipTablesPath);
- script.append(" -X ").append(chainName); //delete previous user-defined chain
- script.append(" || exit\n");
-
- String[] cmdAdd = {script.toString()};
-
- code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
- String msg = res.toString();
-
- logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
-
- return code;
- }*/
-
- public int setTransparentProxyingByApp(Context context, ArrayList<TorifiedApp> apps, boolean enableRule, Shell shell)
- {
- String ipTablesPath = getIpTablesPath(context);
-
- //StringBuilder script = new StringBuilder();
-
- String action = " -A ";
- String srcChainName = "OUTPUT";
-
- if (!enableRule)
- action = " -D ";
-
- //run the delete commands in a separate process as it might error out
- //String[] cmdExecClear = {script.toString()};
- //code = TorServiceUtils.doShellCommand(cmdExecClear, res, runRoot, waitFor);
-
- //reset script
-
- int lastExit = -1;
- StringBuilder script;
-
-
- // Same for DNS
- script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -p udp");
- //script.append(" -m owner --uid-owner ");
- //script.append(tApp.getUid());
- //script.append(" -m udp --dport ");
- script.append(" --dport ");
- script.append(STANDARD_DNS_PORT);
- script.append(" -j REDIRECT --to-ports ");
- script.append(mDNSPort);
- executeCommand (shell, script.toString());
-
- // Allow everything for Tor
-
- //build up array of shell cmds to execute under one root context
- for (TorifiedApp tApp:apps)
- {
-
- if (((!enableRule) || tApp.isTorified())
- && (!tApp.getUsername().equals(TorServiceConstants.TOR_APP_USERNAME))
- ) //if app is set to true
- {
-
-
- logMessage("transproxy for app: " + tApp.getUsername() + " (" + tApp.getUid() + "): enable=" + enableRule);
-
- dropAllIPv6Traffic(context, tApp.getUid(),enableRule, shell);
-
- script = new StringBuilder();
-
- // Allow loopback
- /**
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -m owner --uid-owner ");
- script.append(tApp.getUid());
- script.append(" -o lo");
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
- **/
-
- // Set up port redirection
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(ALLOW_LOCAL);
- script.append(" -m owner --uid-owner ");
- script.append(tApp.getUid());
- script.append(" -m tcp --syn");
- script.append(" -j REDIRECT --to-ports ");
- script.append(mTransProxyPort);
-
- executeCommand (shell, script.toString());
-
-
- script = new StringBuilder();
-
- // Reject all other outbound packets
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -m owner --uid-owner ");
- script.append(tApp.getUid());
- script.append(ALLOW_LOCAL);
- script.append(" -j REJECT");
-
- lastExit = executeCommand (shell, script.toString());
-
-
- }
- }
-
- return lastExit;
- }
-
- private int executeCommand (Shell shell, String cmdString) {
- SimpleCommand cmd = new SimpleCommand(cmdString);
- try {
- shell.add(cmd);
- } catch (IOException e) {
- e.printStackTrace();
- }
- int exitCode = cmd.getExitCode();
- String output = cmd.getOutput();
-
- logMessage(cmdString + "; exit=" + exitCode + ";output=" + output);
-
- return exitCode;
- }
-
-
- public int enableTetheringRules (Context context, Shell shell) throws Exception
- {
-
- String ipTablesPath = getIpTablesPath(context);
-
- StringBuilder script = new StringBuilder();
-
- String[] hwinterfaces = {"usb0","wl0.1"};
-
-
- int lastExit = -1;
-
- for (int i = 0; i < hwinterfaces.length; i++)
- {
-
- script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -t nat -A PREROUTING -i ");
- script.append(hwinterfaces[i]);
- script.append(" -p udp --dport 53 -j REDIRECT --to-ports ");
- script.append(mDNSPort);
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
-
- script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -t nat -A PREROUTING -i ");
- script.append(hwinterfaces[i]);
- script.append(" -p tcp -j REDIRECT --to-ports ");
- script.append(mTransProxyPort);
-
- lastExit = executeCommand (shell, script.toString());
- script = new StringBuilder();
-
-
- }
-
- return lastExit;
- }
-
- private void logMessage (String msg)
- {
- if (mTorService != null)
- mTorService.debug(msg);
- }
-
-
-
- public int fixTransproxyLeak (Context context, Shell shell) throws Exception
- {
- String ipTablesPath = getIpTablesPath(context);
-
- StringBuilder script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -I OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,FIN ACK,FIN -j DROP");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -I OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,RST ACK,RST -j DROP");
-
- int lastExit = executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- return lastExit;
-
- }
-
- public int dropAllIPv6Traffic (Context context, int appUid, boolean enableDrop, Shell shell) {
-
- String action = " -A ";
- String chain = "OUTPUT";
-
- if (!enableDrop)
- action = " -D ";
-
- String ip6tablesPath = getIp6TablesPath(context);
-
- StringBuilder script;
-
- script = new StringBuilder();
- script.append(ip6tablesPath);
- script.append(action);
- script.append(chain);
-
- if (appUid != -1)
- {
- script.append(" -m owner --uid-owner ");
- script.append(appUid);
- }
-
- script.append(" -j DROP");
-
- int lastExit = executeCommand (shell, script.toString());
-
- return lastExit;
- }
-
- /*
- public int clearAllIPv6Filters (Context context) throws Exception
- {
-
- String ip6tablesPath = getIp6TablesPath(context);
- Shell shell = Shell.startRootShell();
-
- StringBuilder script;
-
- script = new StringBuilder();
- script.append(ip6tablesPath);
- script.append(" -t filter");
- script.append(" -F OUTPUT");
- int lastExit = executeCommand (shell, script.toString());
-
- shell.close();
-
- return lastExit;
- }*/
-
- public int flushTransproxyRules (Context context) throws IOException {
- int exit = -1;
-
- String ipTablesPath = getIpTablesPath(context);
- Shell shell = Shell.startRootShell();
-
- StringBuilder script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -t nat ");
- script.append(" -F ");
-
- executeCommand (shell, script.toString());
-
- script = new StringBuilder();
- script.append(ipTablesPath);
- script.append(" -t filter ");
- script.append(" -F ");
- executeCommand (shell, script.toString());
-
- dropAllIPv6Traffic(context,-1,false, shell);
-
- shell.close();
-
- return exit;
- }
-
- public int setTransparentProxyingAll(Context context, boolean enable, Shell shell) throws Exception
- {
-
- String action = " -A ";
- String srcChainName = "OUTPUT";
-
- if (!enable)
- action = " -D ";
-
- dropAllIPv6Traffic(context,-1,enable, shell);
-
- String ipTablesPath = getIpTablesPath(context);
-
-
- int torUid = context.getApplicationInfo().uid;
-
- StringBuilder script = new StringBuilder();
-
- // Allow everything for Tor
-
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -m owner --uid-owner ");
- script.append(torUid);
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- // Allow loopback
-
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -o lo");
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- // Set up port redirection
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(ALLOW_LOCAL); //allow access to localhost
- script.append(" -m owner ! --uid-owner ");
- script.append(torUid);
- script.append(" -m tcp --syn");
- script.append(" -j REDIRECT --to-ports ");
- script.append(mTransProxyPort);
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- // Same for DNS
- script.append(ipTablesPath);
- script.append(" -t nat");
- script.append(action).append(srcChainName);
- script.append(" -p udp");
- script.append(ALLOW_LOCAL); //allow access to localhost
- script.append(" -m owner ! --uid-owner ");
- script.append(torUid);
- //script.append(" -m udp --dport ");
- script.append(" --dport ");
- script.append(STANDARD_DNS_PORT);
- script.append(" -j REDIRECT --to-ports ");
- script.append(mDNSPort);
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
-
- if (Prefs.useDebugLogging())
- {
- //XXX: Comment the following rules for non-debug builds
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p udp");
- script.append(" --dport ");
- script.append(STANDARD_DNS_PORT);
- script.append(" -j LOG");
- script.append(" --log-prefix='ORBOT_DNSLEAK_PROTECTION'");
- script.append(" --log-uid");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(" -j LOG");
- script.append(" --log-prefix='ORBOT_TCPLEAK_PROTECTION'");
- script.append(" --log-uid");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- }
-
- //allow access to transproxy port
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(" -m tcp");
- script.append(" --dport ").append(mTransProxyPort);
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- //allow access to local HTTP port
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(" -m tcp");
- script.append(" --dport ").append(mTorService.getHTTPPort());
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- //allow access to local SOCKS port
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p tcp");
- script.append(" -m tcp");
- script.append(" --dport ").append(mTorService.getSOCKSPort());
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- //allow access to local DNS port
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -p udp");
- script.append(" -m udp");
- script.append(" --dport ").append(mDNSPort);
- script.append(" -j ACCEPT");
-
- executeCommand (shell, script.toString());
- script = new StringBuilder();
-
- // Reject all other packets
- script.append(ipTablesPath);
- script.append(" -t filter");
- script.append(action).append(srcChainName);
- script.append(" -m owner ! --uid-owner ");
- script.append(torUid);
- script.append(ALLOW_LOCAL); //allow access to localhost
- script.append(" -j REJECT");
-
- int lastExit = executeCommand (shell, script.toString());
-
- // fixTransproxyLeak (context);
-
- return lastExit;
- }
-
-
-}
diff --git a/src/org/torproject/android/service/TorrcConfig.java b/src/org/torproject/android/service/TorrcConfig.java
deleted file mode 100644
index 92bfb9b..0000000
--- a/src/org/torproject/android/service/TorrcConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.torproject.android.service;
-
-public class TorrcConfig {
-
-}
-
-/*
- * GeoIPFile
- */
-/*
-HTTPProxy host[:port]
-Tor will make all its directory requests through this host:port (or host:80 if port is not specified), rather than connecting directly to any directory servers.
-
-HTTPProxyAuthenticator username:password
-If defined, Tor will use this username:password for Basic HTTP proxy authentication, as in RFC 2617. This is currently the only form of HTTP proxy authentication that Tor supports; feel free to submit a patch if you want it to support others.
-
-HTTPSProxy host[:port]
-Tor will make all its OR (SSL) connections through this host:port (or host:443 if port is not specified), via HTTP CONNECT rather than connecting directly to servers. You may want to set FascistFirewall to restrict the set of ports you might try to connect to, if your HTTPS proxy only allows connecting to certain ports.
-
-HTTPSProxyAuthenticator username:password
-If defined, Tor will use this username:password for Basic HTTPS proxy authentication, as in RFC 2617. This is currently the only form of HTTPS proxy authentication that Tor supports; feel free to submit a patch if you want it to support others.
-
-Socks4Proxy host[:port]
-Tor will make all OR connections through the SOCKS 4 proxy at host:port (or host:1080 if port is not specified).
-
-Socks5Proxy host[:port]
-Tor will make all OR connections through the SOCKS 5 proxy at host:port (or host:1080 if port is not specified).
-
-Socks5ProxyUsername username
-
-Socks5ProxyPassword password
-If defined, authenticate to the SOCKS 5 server using username and password in accordance to RFC 1929. Both username and password must be between 1 and 255 characters.
-*/
\ No newline at end of file
diff --git a/src/org/torproject/android/service/Utils.java b/src/org/torproject/android/service/Utils.java
deleted file mode 100644
index a89e03f..0000000
--- a/src/org/torproject/android/service/Utils.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-
-package org.torproject.android.service;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-public class Utils {
-
-
- public static String readString (InputStream stream)
- {
- String line = null;
-
- StringBuffer out = new StringBuffer();
-
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
-
- while ((line = reader.readLine()) != null)
- {
- out.append(line);
- out.append('\n');
-
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return out.toString();
-
- }
- /*
- * Load the log file text
- */
- public static String loadTextFile (String path)
- {
- String line = null;
-
- StringBuffer out = new StringBuffer();
-
- try {
- BufferedReader reader = new BufferedReader((new FileReader(new File(path))));
-
- while ((line = reader.readLine()) != null)
- {
- out.append(line);
- out.append('\n');
-
- }
-
- reader.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return out.toString();
-
- }
-
-
- /*
- * Load the log file text
- */
- public static boolean saveTextFile (String path, String contents)
- {
-
- try {
-
- FileWriter writer = new FileWriter( path, false );
- writer.write( contents );
-
- writer.close();
-
-
-
- return true;
-
- } catch (IOException e) {
- // Log.d(TAG, "error writing file: " + path, e);
- e.printStackTrace();
- return false;
- }
-
-
-
- }
-
-
-
-}
diff --git a/src/org/torproject/android/settings/AppManager.java b/src/org/torproject/android/settings/AppManager.java
deleted file mode 100644
index 6bb1437..0000000
--- a/src/org/torproject/android/settings/AppManager.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.settings;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.torproject.android.R;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.service.TorServiceUtils;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.ImageView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-//import android.R;
-
-public class AppManager extends Activity implements OnCheckedChangeListener, OnClickListener, OrbotConstants {
-
- private ListView listApps;
- private final static String TAG = "Orbot";
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- this.setContentView(R.layout.layout_apps);
-
- Button buttonSelectAll, buttonSelectNone, buttonInvert;
-
- buttonSelectAll = (Button) findViewById(R.id.button_proxy_all);
- buttonSelectNone = (Button) findViewById(R.id.button_proxy_none);
- buttonInvert = (Button) findViewById(R.id.button_invert_selection);
-
- buttonSelectAll.setOnClickListener(new OnAutoClickListener(0));
- buttonSelectNone.setOnClickListener(new OnAutoClickListener(1));
- buttonInvert.setOnClickListener(new OnAutoClickListener(2));
- }
-
- class OnAutoClickListener implements Button.OnClickListener {
- private int status;
- public OnAutoClickListener(int status){
- this.status = status;
- }
- @SuppressWarnings("unchecked")
- public void onClick(View button){
- ListView listView;
- ViewGroup viewGroup;
- View parentView, currentView;
- ArrayAdapter<TorifiedApp> adapter;
- TorifiedApp app;
- CheckBox box;
- float buttonId;
- boolean[] isSelected;
- int posI, selectedI, lvSz;
-
- buttonId = button.getId();
- listView = (ListView) findViewById(R.id.applistview);
- lvSz = listView.getCount();
- isSelected = new boolean[lvSz];
-
- selectedI = -1;
-
- if (this.status == 0){
- Log.d(TAG, "Proxifying ALL");
- }else if (this.status == 1){
- Log.d(TAG, "Proxifying NONE");
- }else {
- Log.d(TAG, "Proxifying invert");
- }
-
- Context context = getApplicationContext();
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(context);
- ArrayList<TorifiedApp> apps = getApps(context, prefs);
- parentView = (View) findViewById(R.layout.layout_apps);
- viewGroup = (ViewGroup) listView;
-
- adapter = (ArrayAdapter<TorifiedApp>) listApps.getAdapter();
- if (adapter == null){
- Log.w(TAG, "List adapter is null. Getting apps.");
- loadApps(prefs);
- adapter = (ArrayAdapter<TorifiedApp>) listApps.getAdapter();
- }
-
- for (int i = 0 ; i < adapter.getCount(); ++i){
- app = (TorifiedApp) adapter.getItem(i);
- currentView = adapter.getView(i, parentView, viewGroup);
- box = (CheckBox) currentView.findViewById(R.id.itemcheck);
- if (this.status == 0){
- if (!box.isChecked())
- box.performClick();
- }else if (this.status == 1){
- if (box.isChecked())
- box.performClick();
- }else {
- box.performClick();
- }
- }
- saveAppSettings(context);
- loadApps(prefs);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- listApps = (ListView)findViewById(R.id.applistview);
-
- Button btnSave = (Button)findViewById(R.id.btnsave);
- btnSave.setOnClickListener(new OnClickListener()
- {
-
- public void onClick(View v) {
- finish();
- }
- });
-
- mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
- loadApps(mPrefs);
- }
-
- SharedPreferences mPrefs = null;
- ArrayList<TorifiedApp> mApps = null;
-
- private void loadApps (SharedPreferences prefs)
- {
-
- mApps = getApps(getApplicationContext(), prefs);
-
- /*
- Arrays.sort(apps, new Comparator<TorifiedApp>() {
- public int compare(TorifiedApp o1, TorifiedApp o2) {
- if (o1.isTorified() == o2.isTorified()) return o1.getName().compareTo(o2.getName());
- if (o1.isTorified()) return -1;
- return 1;
- }
- });*/
-
- final LayoutInflater inflater = getLayoutInflater();
-
- ListAdapter adapter = new ArrayAdapter<TorifiedApp>(this,R.layout.layout_apps_item,R.id.itemtext,mApps) {
- public View getView(int position, View convertView, ViewGroup parent) {
- ListEntry entry;
- if (convertView == null) {
- // Inflate a new view
- convertView = inflater.inflate(R.layout.layout_apps_item, parent, false);
- entry = new ListEntry();
- entry.icon = (ImageView) convertView.findViewById(R.id.itemicon);
- entry.box = (CheckBox) convertView.findViewById(R.id.itemcheck);
- entry.text = (TextView) convertView.findViewById(R.id.itemtext);
-
- entry.text.setOnClickListener(AppManager.this);
- entry.text.setOnClickListener(AppManager.this);
-
- convertView.setTag(entry);
-
- entry.box.setOnCheckedChangeListener(AppManager.this);
- } else {
- // Convert an existing view
- entry = (ListEntry) convertView.getTag();
- }
-
-
- final TorifiedApp app = mApps.get(position);
-
- if (app.getIcon() != null)
- entry.icon.setImageDrawable(app.getIcon());
- else
- entry.icon.setVisibility(View.GONE);
-
- entry.text.setText(app.getName());
-
- final CheckBox box = entry.box;
- box.setTag(app);
- box.setChecked(app.isTorified());
-
- entry.text.setTag(box);
- entry.icon.setTag(box);
-
- return convertView;
- }
- };
-
- listApps.setAdapter(adapter);
-
- }
-
- private static class ListEntry {
- private CheckBox box;
- private TextView text;
- private ImageView icon;
- }
-
- /* (non-Javadoc)
- * @see android.app.Activity#onStop()
- */
- @Override
- protected void onStop() {
- super.onStop();
-
- }
-
-
- public static ArrayList<TorifiedApp> getApps (Context context, SharedPreferences prefs)
- {
-
- String tordAppString = prefs.getString(PREFS_KEY_TORIFIED, "");
- String[] tordApps;
-
- StringTokenizer st = new StringTokenizer(tordAppString,"|");
- tordApps = new String[st.countTokens()];
- int tordIdx = 0;
- while (st.hasMoreTokens())
- {
- tordApps[tordIdx++] = st.nextToken();
- }
-
- Arrays.sort(tordApps);
-
- //else load the apps up
- PackageManager pMgr = context.getPackageManager();
-
- List<ApplicationInfo> lAppInfo = pMgr.getInstalledApplications(0);
-
- Iterator<ApplicationInfo> itAppInfo = lAppInfo.iterator();
-
- ArrayList<TorifiedApp> apps = new ArrayList<TorifiedApp>();
-
- ApplicationInfo aInfo = null;
-
- int appIdx = 0;
- TorifiedApp app = null;
-
- while (itAppInfo.hasNext())
- {
- aInfo = itAppInfo.next();
-
- app = new TorifiedApp();
-
- try {
- PackageInfo pInfo = pMgr.getPackageInfo(aInfo.packageName, PackageManager.GET_PERMISSIONS);
-
- if (pInfo != null && pInfo.requestedPermissions != null)
- {
- for (String permInfo:pInfo.requestedPermissions)
- {
- if (permInfo.equals("android.permission.INTERNET"))
- {
- app.setUsesInternet(true);
-
- }
- }
-
- }
-
-
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1)
- {
- //System app
- app.setUsesInternet(true);
- }
-
-
- if (!app.usesInternet())
- continue;
- else
- {
- apps.add(app);
- }
-
-
- app.setEnabled(aInfo.enabled);
- app.setUid(aInfo.uid);
- app.setUsername(pMgr.getNameForUid(app.getUid()));
- app.setProcname(aInfo.processName);
- app.setPackageName(aInfo.packageName);
-
- try
- {
- app.setName(pMgr.getApplicationLabel(aInfo).toString());
- }
- catch (Exception e)
- {
- app.setName(aInfo.packageName);
- }
-
-
- //app.setIcon(pMgr.getApplicationIcon(aInfo));
-
- // check if this application is allowed
- if (Arrays.binarySearch(tordApps, app.getUsername()) >= 0) {
- app.setTorified(true);
- }
- else
- {
- app.setTorified(false);
- }
-
- appIdx++;
- }
-
- Collections.sort(apps);
-
- return apps;
- }
-
-
- public void saveAppSettings (Context context)
- {
-
- StringBuilder tordApps = new StringBuilder();
-
- for (TorifiedApp tApp:mApps)
- {
- if (tApp.isTorified())
- {
- tordApps.append(tApp.getUsername());
- tordApps.append("|");
- }
- }
-
- Editor edit = mPrefs.edit();
- edit.putString(PREFS_KEY_TORIFIED, tordApps.toString());
- edit.commit();
-
- }
-
-
- /**
- * Called an application is check/unchecked
- */
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- final TorifiedApp app = (TorifiedApp) buttonView.getTag();
- if (app != null) {
- app.setTorified(isChecked);
- }
-
- saveAppSettings(this);
-
- }
-
-
-
-
- public void onClick(View v) {
-
- CheckBox cbox = (CheckBox)v.getTag();
-
- final TorifiedApp app = (TorifiedApp)cbox.getTag();
- if (app != null) {
- app.setTorified(!app.isTorified());
- cbox.setChecked(app.isTorified());
- }
-
- saveAppSettings(this);
-
- }
-
-
-
-
-}
diff --git a/src/org/torproject/android/settings/SettingsPreferences.java b/src/org/torproject/android/settings/SettingsPreferences.java
deleted file mode 100644
index 8d861f4..0000000
--- a/src/org/torproject/android/settings/SettingsPreferences.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.settings;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceActivity;
-import android.widget.Toast;
-
-import info.guardianproject.util.Languages;
-
-import org.sufficientlysecure.rootcommands.RootCommands;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.service.TorServiceUtils;
-
-import java.util.Locale;
-
-
-public class SettingsPreferences
- extends PreferenceActivity implements OnPreferenceClickListener {
- private static final String TAG = "SettingsPreferences";
-
- private CheckBoxPreference prefCBTransProxy = null;
- private CheckBoxPreference prefcBTransProxyAll = null;
- private Preference prefTransProxyFlush = null;
-
- private Preference prefTransProxyApps = null;
- private CheckBoxPreference prefHiddenServices = null;
- private EditTextPreference prefHiddenServicesPorts;
- private EditTextPreference prefHiddenServicesHostname;
- private CheckBoxPreference prefRequestRoot = null;
- private ListPreference prefLocale = null;
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- addPreferencesFromResource(R.xml.preferences);
- getPreferenceManager().setSharedPreferencesMode(Context.MODE_MULTI_PROCESS);
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
- prefRequestRoot = (CheckBoxPreference) findPreference("has_root");
- prefRequestRoot.setOnPreferenceClickListener(this);
-
- prefLocale = (ListPreference) findPreference("pref_default_locale");
- prefLocale.setOnPreferenceClickListener(this);
- Languages languages = Languages.get(this);
- prefLocale.setEntries(languages.getAllNames());
- prefLocale.setEntryValues(languages.getSupportedLocales());
- prefLocale.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String language = (String) newValue;
- if (preference == prefLocale) {
- SharedPreferences settings = TorServiceUtils
- .getSharedPrefs(getApplicationContext());
-
- String lang = settings.getString("pref_default_locale",
- Locale.getDefault().getLanguage());
- OrbotApp app = (OrbotApp) getApplication();
- Languages.setLanguage(app, language, true);
- lang = settings.getString("pref_default_locale",
- Locale.getDefault().getLanguage());
- OrbotApp.forceChangeLanguage(SettingsPreferences.this);
- }
- return false;
- }
- });
-
- prefCBTransProxy = (CheckBoxPreference) findPreference("pref_transparent");
- prefcBTransProxyAll = (CheckBoxPreference) findPreference("pref_transparent_all");
-
- prefTransProxyFlush = (Preference) findPreference("pref_transproxy_flush");
- prefTransProxyFlush.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-
- @Override
- public boolean onPreferenceClick(Preference arg0) {
-
- Intent data = new Intent();
- data.putExtra("transproxywipe", true);
- setResult(RESULT_OK, data);
-
- finish();
- return false;
- }
-
- });
-
-
- prefTransProxyApps = findPreference("pref_transparent_app_list");
- prefTransProxyApps.setOnPreferenceClickListener(this);
- prefCBTransProxy.setOnPreferenceClickListener(this);
- prefcBTransProxyAll.setOnPreferenceClickListener(this);
- prefHiddenServices = (CheckBoxPreference) findPreference("pref_hs_enable");
- prefHiddenServices.setOnPreferenceClickListener(this);
- prefHiddenServicesHostname = (EditTextPreference) findPreference("pref_hs_hostname");
-
-
- prefCBTransProxy.setEnabled(prefRequestRoot.isChecked());
-
- prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());
-
- if (prefCBTransProxy.isChecked())
- prefTransProxyApps.setEnabled((!prefcBTransProxyAll.isChecked()));
-
- prefHiddenServicesPorts = (EditTextPreference) findPreference("pref_hs_ports");
- prefHiddenServicesHostname.setEnabled(prefHiddenServices.isChecked());
- prefHiddenServicesPorts.setEnabled(prefHiddenServices.isChecked());
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
- {
- prefTransProxyApps.setEnabled(true);
- }
-
-
- }
-
- public boolean onPreferenceClick(Preference preference) {
-
- setResult(RESULT_OK);
-
- if (preference == prefRequestRoot)
- {
- if (prefRequestRoot.isChecked())
- {
-
- boolean canRoot = RootCommands.rootAccessGiven();
- prefRequestRoot.setChecked(canRoot);
-
- if (!canRoot)
- {
- try
- {
- Shell shell = Shell.startRootShell();
- shell.close();
-
- prefRequestRoot.setChecked(true);
- prefCBTransProxy.setEnabled(true);
-
- }
- catch (Exception e)
- {
- Toast.makeText(this, R.string.wizard_permissions_no_root_msg, Toast.LENGTH_LONG).show();
- }
- }
- }
- }
- else if (preference == prefTransProxyApps)
- {
- startActivity(new Intent(this, AppManager.class));
-
- }
- else if (preference == prefHiddenServices)
- {
- prefHiddenServicesPorts.setEnabled(prefHiddenServices.isChecked());
- prefHiddenServicesHostname.setEnabled(prefHiddenServices.isChecked());
- }
- else
- {
- prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());
- prefTransProxyApps.setEnabled(prefCBTransProxy.isChecked() && (!prefcBTransProxyAll.isChecked()));
-
-
- }
-
- return true;
- }
-
-
-}
diff --git a/src/org/torproject/android/settings/TorifiedApp.java b/src/org/torproject/android/settings/TorifiedApp.java
deleted file mode 100644
index ceada4d..0000000
--- a/src/org/torproject/android/settings/TorifiedApp.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.torproject.android.settings;
-
-import android.graphics.drawable.Drawable;
-
-public class TorifiedApp implements Comparable {
-
- private boolean enabled;
- private int uid;
- private String username;
- private String procname;
- private String name;
- private Drawable icon;
- private String packageName;
-
- private boolean torified = false;
- private boolean usesInternet = false;
-
- public boolean usesInternet() {
- return usesInternet;
- }
- public void setUsesInternet(boolean usesInternet) {
- this.usesInternet = usesInternet;
- }
- /**
- * @return the torified
- */
- public boolean isTorified() {
- return torified;
- }
- /**
- * @param torified the torified to set
- */
- public void setTorified(boolean torified) {
- this.torified = torified;
- }
- private int[] enabledPorts;
-
- /**
- * @return the enabledPorts
- */
- public int[] getEnabledPorts() {
- return enabledPorts;
- }
- /**
- * @param enabledPorts the enabledPorts to set
- */
- public void setEnabledPorts(int[] enabledPorts) {
- this.enabledPorts = enabledPorts;
- }
- /**
- * @return the enabled
- */
- public boolean isEnabled() {
- return enabled;
- }
- /**
- * @param enabled the enabled to set
- */
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
- /**
- * @return the uid
- */
- public int getUid() {
- return uid;
- }
- /**
- * @param uid the uid to set
- */
- public void setUid(int uid) {
- this.uid = uid;
- }
- /**
- * @return the username
- */
- public String getUsername() {
- return username;
- }
- /**
- * @param username the username to set
- */
- public void setUsername(String username) {
- this.username = username;
- }
- /**
- * @return the procname
- */
- public String getProcname() {
- return procname;
- }
- /**
- * @param procname the procname to set
- */
- public void setProcname(String procname) {
- this.procname = procname;
- }
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
-
- public Drawable getIcon() {
- return icon;
- }
-
- public void setIcon(Drawable icon) {
- this.icon = icon;
- }
-
- @Override
- public int compareTo(Object another) {
-
- return this.toString().compareTo(another.toString());
- }
-
- @Override
- public String toString ()
- {
- return getName();
- }
-
-
- public String getPackageName() {
- return packageName;
- }
- public void setPackageName(String packageName) {
- this.packageName = packageName;
- }
-}
diff --git a/src/org/torproject/android/ui/BridgeSetupActivity.java b/src/org/torproject/android/ui/BridgeSetupActivity.java
deleted file mode 100644
index 7cabe35..0000000
--- a/src/org/torproject/android/ui/BridgeSetupActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.torproject.android.ui;
-
-public class BridgeSetupActivity {
-
-}
diff --git a/src/org/torproject/android/ui/ImageProgressView.java b/src/org/torproject/android/ui/ImageProgressView.java
deleted file mode 100644
index 641c444..0000000
--- a/src/org/torproject/android/ui/ImageProgressView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.torproject.android.ui;
-
-import java.util.Random;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-
-public class ImageProgressView extends ImageView
-{
-
- private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
-
- private float progress = 0f; // 0 to 1
-
- private RectF circle;
-
- public ImageProgressView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- init();
-
- }
-
- public ImageProgressView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public ImageProgressView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- init();
- }
-
- private void init(){
- paint.setStyle(Paint.Style.STROKE);
- paint.setColor(Color.GREEN);
- paint.setAntiAlias(true);
- paint.setStrokeWidth(20);
-
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
- MeasureSpec.getSize(heightMeasureSpec));
-
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
-
- super.onDraw(canvas);
-
- if (circle == null)
- {
- circle = new RectF(getWidth()/2,getHeight()/2+getHeight()/8, getWidth()/3,getHeight()/3);
- }
-
- float sweepAngle = 360f * progress;
-
- canvas.drawArc(circle, 0, sweepAngle, true, paint);
-
- }
-
-
-
-
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java b/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java
deleted file mode 100644
index 5a01a94..0000000
--- a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package org.torproject.android.ui;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.R;
-import org.torproject.android.service.TorResourceInstaller;
-import org.torproject.android.service.TorServiceConstants;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.Message;
-import android.os.StatFs;
-import android.text.format.Formatter;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.TextView;
-
-
-public class OrbotDiagnosticsActivity extends Activity {
-
- private TextView mTextView = null;
- private final static String TAG = "OrbotDiag";
- private StringBuffer log = new StringBuffer();
- Process mProcess;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.layout_diag);
-
- mTextView = (TextView)findViewById(R.id.diaglog);
-
- }
-
- private String getFreeStorage ()
- {
- File path = Environment.getDataDirectory();
- StatFs stat = new StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long availableBlocks = stat.getAvailableBlocks();
- return Formatter.formatFileSize(this, availableBlocks * blockSize);
- }
-
- @Override
- protected void onPause() {
- super.onPause();
-
- stopTor();
- }
-
- @Override
- protected void onDestroy() {
-
- super.onDestroy();
-
- }
-
- private void stopTor ()
- {
- File appBinHome = this.getDir("bin", Context.MODE_PRIVATE);
-
- File fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
-
- if (mProcess != null)
- mProcess.destroy();
-
-
- }
-
-
-
- @Override
- protected void onResume() {
- super.onResume();
-
-
- log("Hello, Orbot!");
-
- try
- {
- log(android.os.Build.DEVICE);
- log(android.os.Build.HARDWARE);
- log(android.os.Build.MANUFACTURER);
- log(android.os.Build.MODEL);
- log(android.os.Build.VERSION.CODENAME);
- log(android.os.Build.VERSION.RELEASE);
- }
- catch (Exception e)
- {
- log("error getting device info");
- }
-
- showFileTree ();
-
- runTorTest();
- }
-
- private void runTorTest ()
- {
- try
- {
- File appBinHome = this.getDir("bin", Context.MODE_PRIVATE);
- File appDataHome = this.getDir("data", Context.MODE_PRIVATE);
-
- File fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
- enableBinExec (fileTor, appBinHome);
-
- InputStream is = getResources().openRawResource(R.raw.torrc);
- File fileTorrc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY + "diag");
- TorResourceInstaller.streamToFile(is,fileTorrc, false, false);
-
- /**
- ArrayList<String> alEnv = new ArrayList<String>();
- alEnv.add("HOME=" + appBinHome.getAbsolutePath());
- Shell shell = Shell.startShell(alEnv,appBinHome.getAbsolutePath());
- SimpleCommand cmdTor = new SimpleCommand(fileTor.getAbsolutePath() + " DataDirectory " + appDataHome.getAbsolutePath() + " -f " + fileTorrc.getAbsolutePath());
- shell.add(cmdTor);
- **/
-
- String cmd = fileTor.getAbsolutePath() + " DataDirectory " + appDataHome.getAbsolutePath() + " -f " + fileTorrc.getAbsolutePath();
-
- log ("Executing command> " + cmd);
-
- mProcess = Runtime.getRuntime().exec(cmd);
-
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
- StreamGobbler sg = new StreamGobbler();
- sg.reader = bufferedReader;
- sg.process = mProcess;
- new Thread(sg).start();
-
- if (mProcess.getErrorStream() != null)
- {
- bufferedReader = new BufferedReader(new InputStreamReader(mProcess.getErrorStream()));
- sg = new StreamGobbler();
- sg.reader = bufferedReader;
- sg.process = mProcess;
- new Thread(sg).start();
- }
-
-
- }
- catch (Exception e)
- {
- Log.d(TAG,"runTorTest exception",e);
- }
-
- }
-
- class StreamGobbler implements Runnable
- {
- BufferedReader reader;
- Process process;
-
- public void run ()
- {
- String line = null;
- try {
- while ( (line = reader.readLine()) != null)
- {
- Message msg = mHandler.obtainMessage(0);
- msg.getData().putString("log", line);
- mHandler.sendMessage(msg);
- }
-
- } catch (IOException e) {
- Log.d(TAG, "error reading line",e);
- }
-
- //log("Tor exit code=" + process.exitValue() + ";");
-
- }
- }
-
- private boolean enableBinExec (File fileBin, File appBinHome) throws Exception
- {
-
- log(fileBin.getName() + ": PRE: Is binary exec? " + fileBin.canExecute());
-
- if (!fileBin.canExecute())
- {
- log("(re)Setting permission on binary: " + fileBin.getAbsolutePath());
- Shell shell = Shell.startShell(new ArrayList<String>(), appBinHome.getAbsolutePath());
-
- shell.add(new SimpleCommand("chmod " + TorServiceConstants.CHMOD_EXE_VALUE + ' ' + fileBin.getAbsolutePath())).waitForFinish();
-
- File fileTest = new File(fileBin.getAbsolutePath());
- log(fileTest.getName() + ": POST: Is binary exec? " + fileTest.canExecute());
-
- shell.close();
- }
-
- return fileBin.canExecute();
- }
-
- private void showFileTree ()
- {
-
- File fileDir = this.getDir("bin", Context.MODE_PRIVATE);
-
- if (fileDir.exists())
- {
- log("checking file tree: " + fileDir.getAbsolutePath());
- printDir (fileDir.getName(), fileDir);
- }
- else
- {
- log("app_bin does not exist");
- }
-
- fileDir = this.getDir("data", Context.MODE_PRIVATE);
- if (fileDir.exists())
- {
- log("checking file tree: " + fileDir.getAbsolutePath());
- printDir (fileDir.getName(), fileDir);
- }
- else
- {
- log ("app_data does not exist");
- }
-
-
- }
-
- private void printDir (String path, File fileDir)
- {
- File[] files = fileDir.listFiles();
-
- if (files != null && files.length > 0)
- {
- for (File file : files)
- {
-
- try
- {
- if (file.isDirectory())
- {
- printDir(path + '/' + file.getName(), file);
- }
- else
- {
- log(path + '/' + file.getName() + " len:" + file.length() + " exec:" + file.canExecute());
-
- }
- }
- catch (Exception e)
- {
- log("problem printing out file information");
- }
-
- }
- }
- }
-
- Handler mHandler = new Handler ()
- {
-
- @Override
- public void handleMessage(Message msg) {
-
- super.handleMessage(msg);
-
- String logMsg = msg.getData().getString("log");
- log(logMsg);
- }
-
- };
-
- private void log (String msg)
- {
- Log.d(TAG, msg);
- mTextView.append(msg + '\n');
- log.append(msg + '\n');
- }
-
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate menu resource file.
- getMenuInflater().inflate(R.menu.share_menu, menu);
-
- // Locate MenuItem with ShareActionProvider
- MenuItem item = menu.findItem(R.id.menu_item_share);
-
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
-
- case R.id.menu_item_share:
- sendLog();
- return true;
-
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- private void sendLog ()
- {
- int maxLength = 5000;
-
- String logShare = null;
-
- if (log.length() > maxLength)
- logShare = log.substring(0, maxLength);
- else
- logShare = log.toString();
-
- Intent sendIntent = new Intent();
- sendIntent.setAction(Intent.ACTION_SEND);
- sendIntent.putExtra(Intent.EXTRA_TEXT, logShare);
- sendIntent.setType("text/plain");
- startActivity(sendIntent);
- }
-
-
-}
diff --git a/src/org/torproject/android/ui/PromoAppsActivity.java b/src/org/torproject/android/ui/PromoAppsActivity.java
deleted file mode 100644
index e51885c..0000000
--- a/src/org/torproject/android/ui/PromoAppsActivity.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package org.torproject.android.ui;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.R;
-import org.torproject.android.service.TorServiceConstants;
-
-import java.util.List;
-
-public class PromoAppsActivity extends Activity implements OrbotConstants {
-
- final static String MARKET_URI = "market://details?id=";
- final static String FDROID_APP_URI = "https://f-droid.org/repository/browse/?fdid=";
- final static String PLAY_APP_URI = "https://play.google.com/store/apps/details?id=";
- final static String FDROID_URI = "https://f-droid.org/repository/browse/?fdfilter=info.guardianproject";
- final static String PLAY_URI = "https://play.google.com/store/apps/developer?id=The+Guardian+Project";
-
- private final static String FDROID_PACKAGE_NAME = "org.fdroid.fdroid";
- private final static String PLAY_PACKAGE_NAME = "com.android.vending";
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- protected void onStart() {
-
- super.onStart();
- setContentView(R.layout.layout_promo_apps);
-
- stepFive();
-
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
-
- }
-
- void stepFive(){
-
-
- String title = getString(R.string.wizard_tips_title);
-
- setTitle(title);
-
- Button btnLink = (Button)findViewById(R.id.WizardRootButtonInstallGibberbot);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("info.guardianproject.otr.app.im"));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallOrweb);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent(TorServiceConstants.BROWSER_APP_USERNAME));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallDuckgo);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
-
- finish();
- startActivity(getInstallIntent("com.duckduckgo.mobile.android"));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallTwitter);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
-
- String url = getString(R.string.twitter_setup_url);
- finish();
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallStoryMaker);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("info.guardianproject.mrapp"));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallMartus);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("org.martus.android"));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonGooglePlay);
- PackageManager pm = getPackageManager();
- final Intent intent = new Intent(Intent.ACTION_VIEW);
- // change text and icon based on which app store is installed (or not)
- try {
- if (isAppInstalled(pm, FDROID_PACKAGE_NAME)) {
- Drawable icon = pm.getApplicationIcon(FDROID_PACKAGE_NAME);
- btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
- btnLink.setText(R.string.wizard_tips_fdroid);
- intent.setPackage(FDROID_PACKAGE_NAME);
- intent.setData(Uri.parse(FDROID_URI));
- } else if (isAppInstalled(pm, PLAY_PACKAGE_NAME)) {
- Drawable icon = pm.getApplicationIcon(PLAY_PACKAGE_NAME);
- btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
- btnLink.setText(R.string.wizard_tips_play);
- intent.setPackage(PLAY_PACKAGE_NAME);
- intent.setData(Uri.parse(PLAY_URI));
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- btnLink.setText(R.string.wizard_tips_fdroid_org);
- intent.setData(Uri.parse(FDROID_URI));
- }
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- startActivity(intent);
- }
- });
-
- Button next = ((Button)findViewById(R.id.btnWizard2));
- next.setOnClickListener(new View.OnClickListener() {
-
- public void onClick(View v) {
- finish();
- }
- });
-
- }
-
- boolean isAppInstalled(PackageManager pm, String packageName) {
- try {
- pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
- return true;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- Intent getInstallIntent(String packageName) {
- final Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse(MARKET_URI + packageName));
-
- PackageManager pm = getPackageManager();
- List<ResolveInfo> resInfos = pm.queryIntentActivities(intent, 0);
-
- String foundPackageName = null;
- for (ResolveInfo r : resInfos) {
- Log.i(TAG, "market: " + r.activityInfo.packageName);
- if (TextUtils.equals(r.activityInfo.packageName, FDROID_PACKAGE_NAME)
- || TextUtils.equals(r.activityInfo.packageName, PLAY_PACKAGE_NAME)) {
- foundPackageName = r.activityInfo.packageName;
- break;
- }
- }
-
- if (foundPackageName == null) {
- intent.setData(Uri.parse(FDROID_APP_URI + packageName));
- } else {
- intent.setPackage(foundPackageName);
- }
- return intent;
- }
-}
diff --git a/src/org/torproject/android/ui/Rotate3dAnimation.java b/src/org/torproject/android/ui/Rotate3dAnimation.java
deleted file mode 100644
index 7829d2d..0000000
--- a/src/org/torproject/android/ui/Rotate3dAnimation.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.torproject.android.ui;
-
-import android.graphics.Camera;
-import android.graphics.Matrix;
-import android.view.animation.Animation;
-import android.view.animation.Transformation;
-
-/**
- * An animation that rotates the view on the Y axis between two specified angles.
- * This animation also adds a translation on the Z axis (depth) to improve the effect.
- */
-public class Rotate3dAnimation extends Animation {
- private final float mFromDegrees;
- private final float mToDegrees;
- private final float mCenterX;
- private final float mCenterY;
- private final float mDepthZ;
- private final boolean mReverse;
- private Camera mCamera;
-
- /**
- * Creates a new 3D rotation on the Y axis. The rotation is defined by its
- * start angle and its end angle. Both angles are in degrees. The rotation
- * is performed around a center point on the 2D space, definied by a pair
- * of X and Y coordinates, called centerX and centerY. When the animation
- * starts, a translation on the Z axis (depth) is performed. The length
- * of the translation can be specified, as well as whether the translation
- * should be reversed in time.
- *
- * @param fromDegrees the start angle of the 3D rotation
- * @param toDegrees the end angle of the 3D rotation
- * @param centerX the X center of the 3D rotation
- * @param centerY the Y center of the 3D rotation
- * @param reverse true if the translation should be reversed, false otherwise
- */
- public Rotate3dAnimation(float fromDegrees, float toDegrees,
- float centerX, float centerY, float depthZ, boolean reverse) {
- mFromDegrees = fromDegrees;
- mToDegrees = toDegrees;
- mCenterX = centerX;
- mCenterY = centerY;
- mDepthZ = depthZ;
- mReverse = reverse;
- }
-
- @Override
- public void initialize(int width, int height, int parentWidth, int parentHeight) {
- super.initialize(width, height, parentWidth, parentHeight);
- mCamera = new Camera();
- }
-
- @Override
- protected void applyTransformation(float interpolatedTime, Transformation t) {
- final float fromDegrees = mFromDegrees;
- float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
-
- final float centerX = mCenterX;
- final float centerY = mCenterY;
- final Camera camera = mCamera;
-
- final Matrix matrix = t.getMatrix();
-
- camera.save();
- if (mReverse) {
- camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
- } else {
- camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
- }
- camera.rotateY(degrees);
- camera.getMatrix(matrix);
- camera.restore();
-
- matrix.preTranslate(-centerX, -centerY);
- matrix.postTranslate(centerX, centerY);
- }
-}
diff --git a/src/org/torproject/android/ui/VPNSetupActivity.java b/src/org/torproject/android/ui/VPNSetupActivity.java
deleted file mode 100644
index d8674c0..0000000
--- a/src/org/torproject/android/ui/VPNSetupActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.torproject.android.ui;
-
-public class VPNSetupActivity {
-
-}
diff --git a/src/org/torproject/android/vpn/OrbotVpnManager.java b/src/org/torproject/android/vpn/OrbotVpnManager.java
deleted file mode 100644
index bfb564c..0000000
--- a/src/org/torproject/android/vpn/OrbotVpnManager.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.torproject.android.vpn;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.concurrent.TimeoutException;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.R;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-import org.torproject.android.service.TorServiceUtils;
-import org.torproject.android.settings.AppManager;
-import org.torproject.android.settings.TorifiedApp;
-
-import android.annotation.TargetApi;
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.VpnService;
-import android.net.VpnService.Builder;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
-import com.runjva.sourceforge.jsocks.server.ServerAuthenticatorNone;
-
-@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
-
-public class OrbotVpnManager implements Handler.Callback {
- private static final String TAG = "OrbotVpnService";
-
- private PendingIntent mConfigureIntent;
-
- private Thread mThreadVPN;
-
- private String mSessionName = "OrbotVPN";
- private ParcelFileDescriptor mInterface;
-
- private int mTorSocks = TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT;
-
- public static int sSocksProxyServerPort = -1;
- public static String sSocksProxyLocalhost = null;
- private ProxyServer mSocksProxyServer;
-
-
- private final static int VPN_MTU = 1500;
-
- private final static boolean mIsLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
-
- //this is the actual DNS server we talk to over UDP or TCP (now using Tor's DNS port)
- private final static String DEFAULT_ACTUAL_DNS_HOST = "127.0.0.1";
- private final static int DEFAULT_ACTUAL_DNS_PORT = TorServiceConstants.TOR_DNS_PORT_DEFAULT;
-
- private boolean isRestart = false;
-
- private TorService mService;
-
-
- static{
- System.loadLibrary("tun2socks");
- }
-
- public OrbotVpnManager (TorService service)
- {
- mService = service;
- }
-
- //public int onStartCommand(Intent intent, int flags, int startId) {
- public int handleIntent(Builder builder, Intent intent) {
-
- if (intent != null)
- {
- String action = intent.getAction();
-
- if (action.equals("start"))
- {
-
- // Stop the previous session by interrupting the thread.
- if (mThreadVPN == null || (!mThreadVPN.isAlive()))
- {
- Log.d(TAG,"starting OrbotVPNService service!");
-
- mTorSocks = intent.getIntExtra("torSocks", TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT);
-
- if (!mIsLollipop)
- {
-
- startSocksBypass();
- }
-
- setupTun2Socks(builder);
- }
- }
- else if (action.equals("stop"))
- {
- Log.d(TAG,"stop OrbotVPNService service!");
-
- stopVPN();
- //if (mHandler != null)
- //mHandler.postDelayed(new Runnable () { public void run () { stopSelf(); }}, 1000);
- }
- else if (action.equals("refresh"))
- {
- Log.d(TAG,"refresh OrbotVPNService service!");
-
- if (!mIsLollipop)
- startSocksBypass();
-
- if (!isRestart)
- setupTun2Socks(builder);
- }
- }
-
-
- return Service.START_STICKY;
- }
-
- private void startSocksBypass()
- {
-
- new Thread ()
- {
-
- public void run ()
- {
-
- //generate the proxy port that the
- if (sSocksProxyServerPort == -1)
- {
- try {
-
- sSocksProxyLocalhost = "127.0.0.1";// InetAddress.getLocalHost().getHostAddress();
- sSocksProxyServerPort = (int)((Math.random()*1000)+10000);
-
- } catch (Exception e) {
- Log.e(TAG,"Unable to access localhost",e);
- throw new RuntimeException("Unable to access localhost: " + e);
-
- }
-
- }
-
-
- if (mSocksProxyServer != null)
- {
- stopSocksBypass ();
- }
-
- try
- {
- mSocksProxyServer = new ProxyServer(new ServerAuthenticatorNone(null, null));
- ProxyServer.setVpnService(mService);
- mSocksProxyServer.start(sSocksProxyServerPort, 5, InetAddress.getLocalHost());
-
- }
- catch (Exception e)
- {
- Log.e(TAG,"error getting host",e);
- }
- }
- }.start();
-
- }
-
- private synchronized void stopSocksBypass ()
- {
-
- if (mSocksProxyServer != null){
- mSocksProxyServer.stop();
- mSocksProxyServer = null;
- }
-
-
- }
-
- /**
- @Override
- public void onCreate() {
- super.onCreate();
-
- // Set the locale to English (or probably any other language that^M
- // uses Hindu-Arabic (aka Latin) numerals).^M
- // We have found that VpnService.Builder does something locale-dependent^M
- // internally that causes errors when the locale uses its own numerals^M
- // (i.e., Farsi and Arabic).^M
- Locale.setDefault(new Locale("en"));
-
- }
-
-
- @Override
- public void onDestroy() {
- stopVPN();
- }*/
-
- private void stopVPN ()
- {
- if (mIsLollipop)
- stopSocksBypass ();
-
- if (mInterface != null){
- try
- {
- Log.d(TAG,"closing interface, destroying VPN interface");
-
- mInterface.close();
- mInterface = null;
-
- }
- catch (Exception e)
- {
- Log.d(TAG,"error stopping tun2socks",e);
- }
- catch (Error e)
- {
- Log.d(TAG,"error stopping tun2socks",e);
- }
- }
-
- Tun2Socks.Stop();
-
- try {
- TorServiceUtils.killProcess(OrbotApp.filePdnsd);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- mThreadVPN = null;
-
-
- }
-
- @Override
- public boolean handleMessage(Message message) {
- if (message != null) {
- Toast.makeText(mService, message.what, Toast.LENGTH_SHORT).show();
- }
- return true;
- }
-
-
- private synchronized void setupTun2Socks(final Builder builder) {
-
-
- if (mInterface != null) //stop tun2socks now to give it time to clean up
- {
- isRestart = true;
- Tun2Socks.Stop();
- }
-
- mThreadVPN = new Thread ()
- {
-
- public void run ()
- {
- try
- {
-
- if (isRestart)
- {
- Log.d(TAG,"is a restart... let's wait for a few seconds");
- Thread.sleep(3000);
- }
-
- //start PDNSD daemon pointing to actual DNS
- startDNS(DEFAULT_ACTUAL_DNS_HOST,DEFAULT_ACTUAL_DNS_PORT);
-
- final String vpnName = "OrbotVPN";
- final String localhost = "127.0.0.1";
-
- final String virtualGateway = "10.10.10.1";
- final String virtualIP = "10.10.10.2";
- final String virtualNetMask = "255.255.255.0";
- final String dummyDNS = "8.8.8.8"; //this is intercepted by the tun2socks library, but we must put in a valid DNS to start
- final String defaultRoute = "0.0.0.0";
-
- final String localSocks = localhost + ':'
- + String.valueOf(mTorSocks);
-
- final String localDNS = virtualGateway + ':' + "8091";//String.valueOf(TorServiceConstants.TOR_DNS_PORT_DEFAULT);
- final boolean localDnsTransparentProxy = true;
-
- builder.setMtu(VPN_MTU);
- builder.addAddress(virtualGateway,32);
-
- builder.setSession(vpnName);
-
- builder.addDnsServer(dummyDNS);
- builder.addRoute(dummyDNS,32);
-
- //route all traffic through VPN (we might offer country specific exclude lists in the future)
- builder.addRoute(defaultRoute,0);
-
- //handle ipv6
- //builder.addAddress("fdfe:dcba:9876::1", 126);
- //builder.addRoute("::", 0);
-
- if (mIsLollipop)
- doLollipopAppRouting(builder);
-
- // Create a new interface using the builder and save the parameters.
- ParcelFileDescriptor newInterface = builder.setSession(mSessionName)
- .setConfigureIntent(mConfigureIntent)
- .establish();
-
- if (mInterface != null)
- {
- Log.d(TAG,"Stopping existing VPN interface");
- mInterface.close();
- mInterface = null;
- }
-
- mInterface = newInterface;
-
- Tun2Socks.Start(mInterface, VPN_MTU, virtualIP, virtualNetMask, localSocks , localDNS , localDnsTransparentProxy);
-
- isRestart = false;
-
- }
- catch (Exception e)
- {
- Log.d(TAG,"tun2Socks has stopped",e);
- }
- }
-
- };
-
- mThreadVPN.start();
-
- }
-
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- private void doLollipopAppRouting (Builder builder) throws NameNotFoundException
- {
-
- ArrayList<TorifiedApp> apps = AppManager.getApps(mService, TorServiceUtils.getSharedPrefs(mService.getApplicationContext()));
-
- boolean perAppEnabled = false;
-
- for (TorifiedApp app : apps)
- {
- if (app.isTorified() && (!app.getPackageName().equals(mService.getPackageName())))
- {
- builder.addAllowedApplication(app.getPackageName());
- perAppEnabled = true;
- }
-
- }
-
- if (!perAppEnabled)
- builder.addDisallowedApplication(mService.getPackageName());
-
- }
-
-
- public void onRevoke() {
-
- Log.w(TAG,"VPNService REVOKED!");
-
- if (!isRestart)
- {
- SharedPreferences prefs = TorServiceUtils.getSharedPrefs(mService.getApplicationContext());
- prefs.edit().putBoolean("pref_vpn", false).commit();
- stopVPN();
- }
-
- isRestart = false;
-
- //super.onRevoke();
-
- }
-
-
- private void startDNS (String dns, int port) throws IOException, TimeoutException
- {
- makePdnsdConf(mService, dns, port,OrbotApp.filePdnsd.getParentFile() );
-
- ArrayList<String> customEnv = new ArrayList<String>();
- String baseDirectory = OrbotApp.filePdnsd.getParent();
- Shell shell = Shell.startShell(customEnv, baseDirectory);
-
- String cmdString = OrbotApp.filePdnsd.getCanonicalPath() +
- " -c " + baseDirectory + "/pdnsd.conf";
-
- SimpleCommand shellCommand = new SimpleCommand(cmdString);
-
- shell.add(shellCommand).waitForFinish();
-
- Log.i(TAG,"PDNSD: " + shellCommand.getExitCode() + ": " + shellCommand.getOutput());
-
- }
-
- public static void makePdnsdConf(Context context, String dns, int port, File fileDir) throws FileNotFoundException {
- String conf = String.format(context.getString(R.string.pdnsd_conf), dns, port);
-
- File f = new File(fileDir,"pdnsd.conf");
-
- if (f.exists()) {
- f.delete();
- }
-
- FileOutputStream fos = new FileOutputStream(f, false);
- PrintStream ps = new PrintStream(fos);
- ps.print(conf);
- ps.close();
-
- //f.withWriter { out -> out.print conf };
-
-
- File cache = new File(fileDir,"pdnsd.cache");
-
- if (!cache.exists()) {
- try {
- cache.createNewFile();
- } catch (Exception e) {
-
- }
- }
-}
-
-
-}
diff --git a/src/org/torproject/android/vpn/Tun2Socks.java b/src/org/torproject/android/vpn/Tun2Socks.java
deleted file mode 100644
index a7c638e..0000000
--- a/src/org/torproject/android/vpn/Tun2Socks.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.torproject.android.vpn;
-
-/*
- * Copyright (c) 2013, Psiphon Inc.
- * All rights reserved.
- *
- * 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 <http://www.gnu.org/licenses/>.
- *
- */
-
-import java.net.DatagramSocket;
-import java.net.Socket;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
-public class Tun2Socks
-{
- public static interface IProtectSocket
- {
- boolean doVpnProtect(Socket socket);
- boolean doVpnProtect(DatagramSocket socket);
- };
-
- private static final String TAG = Tun2Socks.class.getSimpleName();
- private static final boolean LOGD = true;
-
- private static Thread mThread;
- private static ParcelFileDescriptor mVpnInterfaceFileDescriptor;
- private static int mVpnInterfaceMTU;
- private static String mVpnIpAddress;
- private static String mVpnNetMask;
- private static String mSocksServerAddress;
- private static String mUdpgwServerAddress;
- private static boolean mUdpgwTransparentDNS;
-
- // Note: this class isn't a singleton, but you can't run more
- // than one instance due to the use of global state (the lwip
- // module, etc.) in the native code.
-
- private static boolean mLibLoaded = false;
-
- public static void Start(
- ParcelFileDescriptor vpnInterfaceFileDescriptor,
- int vpnInterfaceMTU,
- String vpnIpAddress,
- String vpnNetMask,
- String socksServerAddress,
- String udpgwServerAddress,
- boolean udpgwTransparentDNS)
- {
-
- if (!mLibLoaded)
- {
- System.loadLibrary("tun2socks");
- mLibLoaded = true;
- }
-
- mVpnInterfaceFileDescriptor = vpnInterfaceFileDescriptor;
- mVpnInterfaceMTU = vpnInterfaceMTU;
- mVpnIpAddress = vpnIpAddress;
- mVpnNetMask = vpnNetMask;
- mSocksServerAddress = socksServerAddress;
- mUdpgwServerAddress = udpgwServerAddress;
- mUdpgwTransparentDNS = udpgwTransparentDNS;
-
- if (mVpnInterfaceFileDescriptor != null)
- runTun2Socks(
- mVpnInterfaceFileDescriptor.detachFd(),
- mVpnInterfaceMTU,
- mVpnIpAddress,
- mVpnNetMask,
- mSocksServerAddress,
- mUdpgwServerAddress,
- mUdpgwTransparentDNS ? 1 : 0);
- }
-
- public static void Stop()
- {
-
- terminateTun2Socks();
-
- }
-
- public static void logTun2Socks(
- String level,
- String channel,
- String msg)
- {
- String logMsg = level + "(" + channel + "): " + msg;
- if (0 == level.compareTo("ERROR"))
- {
- Log.e(TAG, logMsg);
- }
- else
- {
- if (LOGD) Log.d(TAG, logMsg);
- }
- }
-
- private native static int runTun2Socks(
- int vpnInterfaceFileDescriptor,
- int vpnInterfaceMTU,
- String vpnIpAddress,
- String vpnNetMask,
- String socksServerAddress,
- String udpgwServerAddress,
- int udpgwTransparentDNS);
-
- private native static void terminateTun2Socks();
-
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/vpn/VPNEnableActivity.java b/src/org/torproject/android/vpn/VPNEnableActivity.java
deleted file mode 100644
index 8b7dbc6..0000000
--- a/src/org/torproject/android/vpn/VPNEnableActivity.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.torproject.android.vpn;
-
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.VpnService;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.TextView;
-
-/*
- * To combat background service being stopped/swiped
- */
-public class VPNEnableActivity extends Activity {
-
- private final static int REQUEST_VPN = 7777;
- private Intent intent = null;
- private boolean checkVpn = true;
- private Handler h = new Handler();
-
- @Override
- public void onCreate( Bundle icicle ) {
-
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
- super.onCreate( icicle );
-
- Log.d("VPNEnableActivity","prompting user to start Orbot VPN");
-
-
- }
-
- public void onResume ()
- {
- super.onResume();
-
- if (checkVpn)
- {
- intent = VpnService.prepare(this);
-
- if (intent != null)
- promptStartVpnService();
- else
- startVpnService ();
-
- checkVpn = false;
- }
- }
-
- public void promptStartVpnService ()
- {
-
- AlertDialog dialog = new AlertDialog.Builder(this)
- .setTitle(getString(R.string.app_name) + ' ' + getString(R.string.apps_mode))
- .setMessage(getString(R.string.you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_))
- .setPositiveButton(R.string.activate, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Prefs.putUseVpn(true);
-
- startVpnService();
-
- }
-
-
- })
- .setNegativeButton(R.string.btn_cancel, new Dialog.OnClickListener ()
- {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- h.postDelayed(new Runnable () {
-
- public void run ()
- {
- VPNEnableActivity.this.finish();
-
- }
- }, 100);
- }
-
- }).create();
-
- dialog.show();
-
-
- }
-
- private void startVpnService ()
- {
- if (intent == null)
- {
- Log.d("VPNEnableActivity","VPN enabled, starting Tor...");
- sendIntentToService(TorServiceConstants.CMD_VPN);
-
- Handler h = new Handler();
- h.postDelayed(new Runnable () {
-
- public void run ()
- {
- sendIntentToService(TorServiceConstants.ACTION_START);
- finish();
- }
- }, 100);
-
-
- }
- else
- {
- Log.w("VPNEnableActivity","prompt for VPN");
- startActivityForResult(intent,REQUEST_VPN);
-
- }
-
- }
-
- @Override
- protected void onActivityResult(int request, int response, Intent data) {
- super.onActivityResult(request, response, data);
-
- if (request == REQUEST_VPN && response == RESULT_OK)
- {
- sendIntentToService(TorServiceConstants.CMD_VPN);
-
- h.postDelayed(new Runnable () {
-
- public void run ()
- {
- sendIntentToService(TorServiceConstants.ACTION_START);
- finish();
- }
- }, 1000);
-
-
-
- }
- }
-
-
- private void sendIntentToService(String action) {
- Intent torService = new Intent(this, TorService.class);
- torService.setAction(action);
- startService(torService);
- }
-
-}
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits