diff --git a/.gitignore b/.gitignore index 0098ce34..e47272eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,47 @@ +# auto-generated files from Android builds +build.xml +ant.properties +default.properties +proguard.cfg +proguard-project.txt +# +releases +docs +doc +.directory + +#built application files +*.apk +*.ap_ + +# files for the dex VM +*.dex + +# Java class files +*.class + +# subdirs for generated files +bin/ +gen/ + +# Local configuration file (sdk path, etc) +local.properties + +# Windows thumbnail db +Thumbs.db + +# OSX files +.DS_Store + +# Android Studio +*.iml +.idea/ +.gradle/ +build/ + +#tfx +.transifexrc + /external/appcompat/bin/ /external/appcompat/gen/ /external/bin/ @@ -14,17 +58,11 @@ native libs/jtorctl.jar local.properties builds -/patches/* +external/patches/* obj -releases -.transifexrc -# native build products -*.so -pdnsd -*.mp3 -# ant build products -build.xml -proguard-project.txt -ant.properties \ No newline at end of file +app/src/main/jniLibs/ +app/src/main/libs/ +orbotservice/src/main/libs/ +orbotservice/src/main/assets/armeabi/ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9a80a30b..fd25aca4 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,11 +1,11 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/google/zxing/integration/android/IntentIntegrator.java b/app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java similarity index 100% rename from src/com/google/zxing/integration/android/IntentIntegrator.java rename to app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java diff --git a/src/com/google/zxing/integration/android/IntentResult.java b/app/src/main/java/com/google/zxing/integration/android/IntentResult.java similarity index 100% rename from src/com/google/zxing/integration/android/IntentResult.java rename to app/src/main/java/com/google/zxing/integration/android/IntentResult.java diff --git a/src/org/torproject/android/service/OnBootReceiver.java b/app/src/main/java/org/torproject/android/OnBootReceiver.java similarity index 69% rename from src/org/torproject/android/service/OnBootReceiver.java rename to app/src/main/java/org/torproject/android/OnBootReceiver.java index 36891e86..722f4f1b 100644 --- a/src/org/torproject/android/service/OnBootReceiver.java +++ b/app/src/main/java/org/torproject/android/OnBootReceiver.java @@ -1,26 +1,30 @@ -package org.torproject.android.service; +package org.torproject.android; -import org.torproject.android.Prefs; -import org.torproject.android.vpn.VPNEnableActivity; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import org.torproject.android.service.util.Prefs; +import org.torproject.android.service.TorService; +import org.torproject.android.service.TorServiceConstants; +import org.torproject.android.vpn.VPNEnableActivity; + public class OnBootReceiver extends BroadcastReceiver { - + + private static boolean sReceivedBoot = false; + @Override public void onReceive(Context context, Intent intent) { - Prefs.setContext(context); - if (Prefs.startOnBoot()) - { + if (Prefs.startOnBoot() && (!sReceivedBoot)) + { if (Prefs.useVpn()) startVpnService(context); //VPN will start Tor once it is done else startService(TorServiceConstants.ACTION_START, context); - + + sReceivedBoot = true; } } @@ -34,7 +38,7 @@ public class OnBootReceiver extends BroadcastReceiver { private void startService (String action, Context context) { - Intent torService = new Intent(context, TorService.class); + Intent torService = new Intent(context, TorService.class); torService.setAction(action); context.startService(torService); diff --git a/src/org/torproject/android/OrbotApp.java b/app/src/main/java/org/torproject/android/OrbotApp.java similarity index 56% rename from src/org/torproject/android/OrbotApp.java rename to app/src/main/java/org/torproject/android/OrbotApp.java index 7bbb6496..e6fd014d 100644 --- a/src/org/torproject/android/OrbotApp.java +++ b/app/src/main/java/org/torproject/android/OrbotApp.java @@ -6,15 +6,15 @@ import android.app.Activity; import android.app.Application; import android.content.Intent; import android.content.res.Configuration; +import android.net.VpnService; import android.os.Build; -import android.text.TextUtils; import android.util.Log; -import org.torproject.android.service.TorServiceConstants; +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.util.Prefs; -import info.guardianproject.util.Languages; +import org.torproject.android.settings.Languages; -import java.io.File; import java.util.Locale; public class OrbotApp extends Application implements OrbotConstants @@ -22,18 +22,6 @@ 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(); @@ -42,16 +30,6 @@ public class OrbotApp extends Application implements OrbotConstants 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 diff --git a/src/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java similarity index 96% rename from src/org/torproject/android/OrbotMainActivity.java rename to app/src/main/java/org/torproject/android/OrbotMainActivity.java index 0a4c25ad..5e57c2c7 100644 --- a/src/org/torproject/android/OrbotMainActivity.java +++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java @@ -3,8 +3,6 @@ package org.torproject.android; -import static org.torproject.android.OrbotConstants.TAG; - import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; @@ -18,9 +16,11 @@ import java.util.Random; import java.util.StringTokenizer; import org.json.JSONArray; +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.util.Prefs; import org.torproject.android.service.TorService; import org.torproject.android.service.TorServiceConstants; -import org.torproject.android.service.TorServiceUtils; +import org.torproject.android.service.util.TorServiceUtils; import org.torproject.android.settings.SettingsPreferences; import org.torproject.android.ui.ImageProgressView; import org.torproject.android.ui.PromoAppsActivity; @@ -52,6 +52,7 @@ 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.SwitchCompat; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; @@ -70,10 +71,10 @@ import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.CompoundButton; 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; @@ -89,9 +90,9 @@ public class OrbotMainActivity extends AppCompatActivity private TextView uploadText = null; private TextView mTxtOrbotLog = null; - private Button mBtnBrowser = null; - private ToggleButton mBtnVPN = null; - private ToggleButton mBtnBridges = null; + // private Button mBtnBrowser = null; + private SwitchCompat mBtnVPN = null; + private SwitchCompat mBtnBridges = null; private Spinner spnCountries = null; @@ -156,16 +157,20 @@ public class OrbotMainActivity extends AppCompatActivity 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 sendIntentToService(final String action) { + + Intent torService = new Intent(OrbotMainActivity.this, TorService.class); + torService.setAction(action); + startService(torService); + } private void stopTor() { - imgStatus.setImageResource(R.drawable.torstarting); - Intent torService = new Intent(this, TorService.class); + + imgStatus.setImageResource(R.drawable.torstarting); + Intent torService = new Intent(OrbotMainActivity.this, TorService.class); stopService(torService); + } /** @@ -253,7 +258,7 @@ public class OrbotMainActivity extends AppCompatActivity // Gesture detection mGestureDetector = new GestureDetector(this, new MyGestureDetector()); - + /** mBtnBrowser = (Button)findViewById(R.id.btnBrowser); mBtnBrowser.setOnClickListener(new View.OnClickListener () { @@ -267,8 +272,9 @@ public class OrbotMainActivity extends AppCompatActivity }); mBtnBrowser.setEnabled(false); - - mBtnVPN = (ToggleButton)findViewById(R.id.btnVPN); + */ + + mBtnVPN = (SwitchCompat)findViewById(R.id.btnVPN); boolean canDoVPN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH; @@ -288,24 +294,26 @@ public class OrbotMainActivity extends AppCompatActivity 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(); - - } - - }); + mBtnVPN.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() + { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + + Prefs.putUseVpn(isChecked); + + if (isChecked) + startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class)); + else + stopVpnService(); + } + }); + + } - mBtnBridges = (ToggleButton)findViewById(R.id.btnBridges); + mBtnBridges = (SwitchCompat)findViewById(R.id.btnBridges); mBtnBridges.setChecked(Prefs.bridgesEnabled()); mBtnBridges.setOnClickListener(new View.OnClickListener () { @@ -319,7 +327,6 @@ public class OrbotMainActivity extends AppCompatActivity } 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 } } @@ -824,9 +831,15 @@ public class OrbotMainActivity extends AppCompatActivity } } - else if (request == REQUEST_VPN && response == RESULT_OK) + else if (request == REQUEST_VPN) { - sendIntentToService(TorServiceConstants.CMD_VPN); + if (response == RESULT_OK) + sendIntentToService(TorServiceConstants.CMD_VPN); + else + { + Prefs.putUseVpn(false); + + } } IntentResult scanResult = IntentIntegrator.parseActivityResult(request, response, data); @@ -1059,11 +1072,7 @@ public class OrbotMainActivity extends AppCompatActivity protected void onResume() { super.onResume(); - if (mPrefs != null) - { - mBtnVPN.setChecked(Prefs.useVpn()); - mBtnBridges.setChecked(Prefs.bridgesEnabled()); - } + mBtnBridges.setChecked(Prefs.bridgesEnabled()); requestTorStatus(); @@ -1120,7 +1129,7 @@ public class OrbotMainActivity extends AppCompatActivity imgStatus.setImageResource(R.drawable.toron); - mBtnBrowser.setEnabled(true); + //mBtnBrowser.setEnabled(true); if (torServiceMsg != null) { @@ -1166,7 +1175,7 @@ public class OrbotMainActivity extends AppCompatActivity else lblStatus.setText(getString(R.string.status_starting_up)); - mBtnBrowser.setEnabled(false); + // mBtnBrowser.setEnabled(false); } else if (torStatus == TorServiceConstants.STATUS_STOPPING) { @@ -1175,13 +1184,13 @@ public class OrbotMainActivity extends AppCompatActivity imgStatus.setImageResource(R.drawable.torstarting); lblStatus.setText(torServiceMsg); - mBtnBrowser.setEnabled(false); + // 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); +// mBtnBrowser.setEnabled(false); } if (torServiceMsg != null && torServiceMsg.length() > 0) @@ -1197,6 +1206,7 @@ public class OrbotMainActivity extends AppCompatActivity */ private void startTor() { sendIntentToService(TorServiceConstants.ACTION_START); + mTxtOrbotLog.setText(""); } /** diff --git a/src/info/guardianproject/util/Languages.java b/app/src/main/java/org/torproject/android/settings/Languages.java similarity index 99% rename from src/info/guardianproject/util/Languages.java rename to app/src/main/java/org/torproject/android/settings/Languages.java index 6219661f..dabddea2 100644 --- a/src/info/guardianproject/util/Languages.java +++ b/app/src/main/java/org/torproject/android/settings/Languages.java @@ -1,7 +1,6 @@ -package info.guardianproject.util; +package org.torproject.android.settings; import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.app.Activity; import android.content.ContextWrapper; import android.content.Intent; diff --git a/src/org/torproject/android/settings/SettingsPreferences.java b/app/src/main/java/org/torproject/android/settings/SettingsPreferences.java similarity index 88% rename from src/org/torproject/android/settings/SettingsPreferences.java rename to app/src/main/java/org/torproject/android/settings/SettingsPreferences.java index 8d861f47..00fd251f 100644 --- a/src/org/torproject/android/settings/SettingsPreferences.java +++ b/app/src/main/java/org/torproject/android/settings/SettingsPreferences.java @@ -15,16 +15,11 @@ 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 org.torproject.android.ui.AppManager; +import org.torproject.android.service.util.TorServiceUtils; import java.util.Locale; @@ -136,26 +131,9 @@ public class SettingsPreferences { 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(); - } - } + prefCBTransProxy.setEnabled(true); + } } else if (preference == prefTransProxyApps) diff --git a/src/org/torproject/android/settings/AppManager.java b/app/src/main/java/org/torproject/android/ui/AppManager.java similarity index 97% rename from src/org/torproject/android/settings/AppManager.java rename to app/src/main/java/org/torproject/android/ui/AppManager.java index 6bb14375..82a20b3c 100644 --- a/src/org/torproject/android/settings/AppManager.java +++ b/app/src/main/java/org/torproject/android/ui/AppManager.java @@ -1,7 +1,7 @@ /* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */ /* See LICENSE for licensing information */ -package org.torproject.android.settings; +package org.torproject.android.ui; import java.util.ArrayList; import java.util.Arrays; @@ -10,9 +10,10 @@ import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; +import org.torproject.android.service.OrbotConstants; import org.torproject.android.R; -import org.torproject.android.OrbotConstants; -import org.torproject.android.service.TorServiceUtils; +import org.torproject.android.service.util.TorServiceUtils; +import org.torproject.android.service.transproxy.TorifiedApp; import android.app.Activity; import android.content.Context; @@ -36,7 +37,6 @@ 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 { @@ -94,7 +94,7 @@ public class AppManager extends Activity implements OnCheckedChangeListener, OnC Context context = getApplicationContext(); SharedPreferences prefs = TorServiceUtils.getSharedPrefs(context); ArrayList apps = getApps(context, prefs); - parentView = (View) findViewById(R.layout.layout_apps); + parentView = (View) findViewById(R.id.applistview); viewGroup = (ViewGroup) listView; adapter = (ArrayAdapter) listApps.getAdapter(); @@ -160,7 +160,7 @@ public class AppManager extends Activity implements OnCheckedChangeListener, OnC final LayoutInflater inflater = getLayoutInflater(); - ListAdapter adapter = new ArrayAdapter(this,R.layout.layout_apps_item,R.id.itemtext,mApps) { + ListAdapter adapter = new ArrayAdapter(this, R.layout.layout_apps_item, R.id.itemtext,mApps) { public View getView(int position, View convertView, ViewGroup parent) { ListEntry entry; if (convertView == null) { diff --git a/src/org/torproject/android/ui/BridgeSetupActivity.java b/app/src/main/java/org/torproject/android/ui/BridgeSetupActivity.java similarity index 100% rename from src/org/torproject/android/ui/BridgeSetupActivity.java rename to app/src/main/java/org/torproject/android/ui/BridgeSetupActivity.java diff --git a/src/org/torproject/android/ui/ImageProgressView.java b/app/src/main/java/org/torproject/android/ui/ImageProgressView.java similarity index 100% rename from src/org/torproject/android/ui/ImageProgressView.java rename to app/src/main/java/org/torproject/android/ui/ImageProgressView.java diff --git a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java b/app/src/main/java/org/torproject/android/ui/OrbotDiagnosticsActivity.java similarity index 94% rename from src/org/torproject/android/ui/OrbotDiagnosticsActivity.java rename to app/src/main/java/org/torproject/android/ui/OrbotDiagnosticsActivity.java index 5a01a942..63c54378 100644 --- a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java +++ b/app/src/main/java/org/torproject/android/ui/OrbotDiagnosticsActivity.java @@ -5,12 +5,9 @@ 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.util.TorResourceInstaller; import org.torproject.android.service.TorServiceConstants; import android.app.Activity; @@ -193,14 +190,12 @@ public class OrbotDiagnosticsActivity extends Activity { if (!fileBin.canExecute()) { log("(re)Setting permission on binary: " + fileBin.getAbsolutePath()); - Shell shell = Shell.startShell(new ArrayList(), appBinHome.getAbsolutePath()); - - shell.add(new SimpleCommand("chmod " + TorServiceConstants.CHMOD_EXE_VALUE + ' ' + fileBin.getAbsolutePath())).waitForFinish(); + + Runtime.getRuntime().exec("chmod " + TorServiceConstants.CHMOD_EXE_VALUE + ' ' + fileBin.getAbsolutePath()).waitFor(); File fileTest = new File(fileBin.getAbsolutePath()); log(fileTest.getName() + ": POST: Is binary exec? " + fileTest.canExecute()); - - shell.close(); + } return fileBin.canExecute(); diff --git a/src/org/torproject/android/ui/PromoAppsActivity.java b/app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java similarity index 99% rename from src/org/torproject/android/ui/PromoAppsActivity.java rename to app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java index e51885c2..01c24831 100644 --- a/src/org/torproject/android/ui/PromoAppsActivity.java +++ b/app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java @@ -14,7 +14,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; -import org.torproject.android.OrbotConstants; +import org.torproject.android.service.OrbotConstants; import org.torproject.android.R; import org.torproject.android.service.TorServiceConstants; diff --git a/src/org/torproject/android/ui/Rotate3dAnimation.java b/app/src/main/java/org/torproject/android/ui/Rotate3dAnimation.java similarity index 100% rename from src/org/torproject/android/ui/Rotate3dAnimation.java rename to app/src/main/java/org/torproject/android/ui/Rotate3dAnimation.java diff --git a/src/org/torproject/android/ui/VPNSetupActivity.java b/app/src/main/java/org/torproject/android/ui/VPNSetupActivity.java similarity index 100% rename from src/org/torproject/android/ui/VPNSetupActivity.java rename to app/src/main/java/org/torproject/android/ui/VPNSetupActivity.java diff --git a/src/org/torproject/android/vpn/VPNEnableActivity.java b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java similarity index 95% rename from src/org/torproject/android/vpn/VPNEnableActivity.java rename to app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java index 8b7dbc64..9ed87d64 100644 --- a/src/org/torproject/android/vpn/VPNEnableActivity.java +++ b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java @@ -1,7 +1,7 @@ package org.torproject.android.vpn; -import org.torproject.android.Prefs; import org.torproject.android.R; +import org.torproject.android.service.util.Prefs; import org.torproject.android.service.TorService; import org.torproject.android.service.TorServiceConstants; @@ -12,19 +12,16 @@ 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 */ + +@TargetApi(14) public class VPNEnableActivity extends Activity { private final static int REQUEST_VPN = 7777; @@ -74,7 +71,6 @@ public class VPNEnableActivity extends Activity { @Override public void onClick(DialogInterface dialog, int which) { Prefs.putUseVpn(true); - startVpnService(); } @@ -159,6 +155,8 @@ public class VPNEnableActivity extends Activity { Intent torService = new Intent(this, TorService.class); torService.setAction(action); startService(torService); + + } } diff --git a/res/drawable-hdpi-v11/ic_stat_notifyerr.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-hdpi-v11/ic_stat_notifyerr.png rename to app/src/main/res/drawable-hdpi-v11/ic_stat_notifyerr.png diff --git a/res/drawable-hdpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-hdpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-hdpi-v11/ic_stat_tor.png diff --git a/res/drawable-hdpi-v11/ic_stat_tor_off.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_tor_off.png similarity index 100% rename from res/drawable-hdpi-v11/ic_stat_tor_off.png rename to app/src/main/res/drawable-hdpi-v11/ic_stat_tor_off.png diff --git a/res/drawable-hdpi-v11/ic_stat_tor_xfer.png b/app/src/main/res/drawable-hdpi-v11/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-hdpi-v11/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-hdpi-v11/ic_stat_tor_xfer.png diff --git a/res/drawable-hdpi-v11/inverse.png b/app/src/main/res/drawable-hdpi-v11/inverse.png similarity index 100% rename from res/drawable-hdpi-v11/inverse.png rename to app/src/main/res/drawable-hdpi-v11/inverse.png diff --git a/res/drawable-hdpi-v9/ic_stat_notifyerr.png b/app/src/main/res/drawable-hdpi-v9/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-hdpi-v9/ic_stat_notifyerr.png rename to app/src/main/res/drawable-hdpi-v9/ic_stat_notifyerr.png diff --git a/res/drawable-hdpi-v9/ic_stat_tor.png b/app/src/main/res/drawable-hdpi-v9/ic_stat_tor.png similarity index 100% rename from res/drawable-hdpi-v9/ic_stat_tor.png rename to app/src/main/res/drawable-hdpi-v9/ic_stat_tor.png diff --git a/res/drawable-hdpi-v9/inverse.png b/app/src/main/res/drawable-hdpi-v9/inverse.png similarity index 100% rename from res/drawable-hdpi-v9/inverse.png rename to app/src/main/res/drawable-hdpi-v9/inverse.png diff --git a/res/drawable-hdpi/ic_action_settings.png b/app/src/main/res/drawable-hdpi/ic_action_settings.png similarity index 100% rename from res/drawable-hdpi/ic_action_settings.png rename to app/src/main/res/drawable-hdpi/ic_action_settings.png diff --git a/res/drawable-hdpi/ic_launcher.png b/app/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from res/drawable-hdpi/ic_launcher.png rename to app/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/res/drawable-hdpi/ic_stat_notifyerr.png b/app/src/main/res/drawable-hdpi/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-hdpi/ic_stat_notifyerr.png rename to app/src/main/res/drawable-hdpi/ic_stat_notifyerr.png diff --git a/res/drawable-hdpi/ic_stat_tor.png b/app/src/main/res/drawable-hdpi/ic_stat_tor.png similarity index 100% rename from res/drawable-hdpi/ic_stat_tor.png rename to app/src/main/res/drawable-hdpi/ic_stat_tor.png diff --git a/res/drawable-hdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-hdpi/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-hdpi/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-hdpi/ic_stat_tor_xfer.png diff --git a/res/drawable-hdpi/inverse.png b/app/src/main/res/drawable-hdpi/inverse.png similarity index 100% rename from res/drawable-hdpi/inverse.png rename to app/src/main/res/drawable-hdpi/inverse.png diff --git a/res/drawable-ldpi-v11/ic_stat_notifyerr.png b/app/src/main/res/drawable-ldpi-v11/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-ldpi-v11/ic_stat_notifyerr.png rename to app/src/main/res/drawable-ldpi-v11/ic_stat_notifyerr.png diff --git a/res/drawable-ldpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-ldpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-ldpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-ldpi-v11/ic_stat_tor.png diff --git a/res/drawable-ldpi-v11/inverse.png b/app/src/main/res/drawable-ldpi-v11/inverse.png similarity index 100% rename from res/drawable-ldpi-v11/inverse.png rename to app/src/main/res/drawable-ldpi-v11/inverse.png diff --git a/res/drawable-ldpi-v9/ic_stat_notifyerr.png b/app/src/main/res/drawable-ldpi-v9/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-ldpi-v9/ic_stat_notifyerr.png rename to app/src/main/res/drawable-ldpi-v9/ic_stat_notifyerr.png diff --git a/res/drawable-ldpi-v9/ic_stat_tor.png b/app/src/main/res/drawable-ldpi-v9/ic_stat_tor.png similarity index 100% rename from res/drawable-ldpi-v9/ic_stat_tor.png rename to app/src/main/res/drawable-ldpi-v9/ic_stat_tor.png diff --git a/res/drawable-ldpi-v9/inverse.png b/app/src/main/res/drawable-ldpi-v9/inverse.png similarity index 100% rename from res/drawable-ldpi-v9/inverse.png rename to app/src/main/res/drawable-ldpi-v9/inverse.png diff --git a/res/drawable-ldpi/ic_action_settings.png b/app/src/main/res/drawable-ldpi/ic_action_settings.png similarity index 100% rename from res/drawable-ldpi/ic_action_settings.png rename to app/src/main/res/drawable-ldpi/ic_action_settings.png diff --git a/res/drawable-ldpi/ic_launcher.png b/app/src/main/res/drawable-ldpi/ic_launcher.png similarity index 100% rename from res/drawable-ldpi/ic_launcher.png rename to app/src/main/res/drawable-ldpi/ic_launcher.png diff --git a/res/drawable-ldpi/ic_stat_notifyerr.png b/app/src/main/res/drawable-ldpi/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-ldpi/ic_stat_notifyerr.png rename to app/src/main/res/drawable-ldpi/ic_stat_notifyerr.png diff --git a/res/drawable-ldpi/ic_stat_tor.png b/app/src/main/res/drawable-ldpi/ic_stat_tor.png similarity index 100% rename from res/drawable-ldpi/ic_stat_tor.png rename to app/src/main/res/drawable-ldpi/ic_stat_tor.png diff --git a/res/drawable-ldpi/inverse.png b/app/src/main/res/drawable-ldpi/inverse.png similarity index 100% rename from res/drawable-ldpi/inverse.png rename to app/src/main/res/drawable-ldpi/inverse.png diff --git a/res/drawable-mdpi-v11/ic_stat_notifyerr.png b/app/src/main/res/drawable-mdpi-v11/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-mdpi-v11/ic_stat_notifyerr.png rename to app/src/main/res/drawable-mdpi-v11/ic_stat_notifyerr.png diff --git a/res/drawable-mdpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-mdpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-mdpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-mdpi-v11/ic_stat_tor.png diff --git a/res/drawable-mdpi-v11/ic_stat_tor_xfer.png b/app/src/main/res/drawable-mdpi-v11/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-mdpi-v11/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-mdpi-v11/ic_stat_tor_xfer.png diff --git a/res/drawable-mdpi-v11/inverse.png b/app/src/main/res/drawable-mdpi-v11/inverse.png similarity index 100% rename from res/drawable-mdpi-v11/inverse.png rename to app/src/main/res/drawable-mdpi-v11/inverse.png diff --git a/res/drawable-mdpi-v9/ic_stat_notifyerr.png b/app/src/main/res/drawable-mdpi-v9/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-mdpi-v9/ic_stat_notifyerr.png rename to app/src/main/res/drawable-mdpi-v9/ic_stat_notifyerr.png diff --git a/res/drawable-mdpi-v9/ic_stat_tor.png b/app/src/main/res/drawable-mdpi-v9/ic_stat_tor.png similarity index 100% rename from res/drawable-mdpi-v9/ic_stat_tor.png rename to app/src/main/res/drawable-mdpi-v9/ic_stat_tor.png diff --git a/res/drawable-mdpi-v9/inverse.png b/app/src/main/res/drawable-mdpi-v9/inverse.png similarity index 100% rename from res/drawable-mdpi-v9/inverse.png rename to app/src/main/res/drawable-mdpi-v9/inverse.png diff --git a/res/drawable-mdpi/ic_action_settings.png b/app/src/main/res/drawable-mdpi/ic_action_settings.png similarity index 100% rename from res/drawable-mdpi/ic_action_settings.png rename to app/src/main/res/drawable-mdpi/ic_action_settings.png diff --git a/res/drawable-mdpi/ic_launcher.png b/app/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from res/drawable-mdpi/ic_launcher.png rename to app/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/res/drawable-mdpi/ic_stat_notifyerr.png b/app/src/main/res/drawable-mdpi/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-mdpi/ic_stat_notifyerr.png rename to app/src/main/res/drawable-mdpi/ic_stat_notifyerr.png diff --git a/res/drawable-mdpi/ic_stat_tor.png b/app/src/main/res/drawable-mdpi/ic_stat_tor.png similarity index 100% rename from res/drawable-mdpi/ic_stat_tor.png rename to app/src/main/res/drawable-mdpi/ic_stat_tor.png diff --git a/res/drawable-mdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-mdpi/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png diff --git a/res/drawable-mdpi/inverse.png b/app/src/main/res/drawable-mdpi/inverse.png similarity index 100% rename from res/drawable-mdpi/inverse.png rename to app/src/main/res/drawable-mdpi/inverse.png diff --git a/res/drawable-xhdpi-v11/ic_stat_notifyerr.png b/app/src/main/res/drawable-xhdpi-v11/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-xhdpi-v11/ic_stat_notifyerr.png rename to app/src/main/res/drawable-xhdpi-v11/ic_stat_notifyerr.png diff --git a/res/drawable-xhdpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-xhdpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-xhdpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-xhdpi-v11/ic_stat_tor.png diff --git a/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xhdpi-v11/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png diff --git a/res/drawable-xhdpi-v11/inverse.png b/app/src/main/res/drawable-xhdpi-v11/inverse.png similarity index 100% rename from res/drawable-xhdpi-v11/inverse.png rename to app/src/main/res/drawable-xhdpi-v11/inverse.png diff --git a/res/drawable-xhdpi-v9/ic_stat_notifyerr.png b/app/src/main/res/drawable-xhdpi-v9/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-xhdpi-v9/ic_stat_notifyerr.png rename to app/src/main/res/drawable-xhdpi-v9/ic_stat_notifyerr.png diff --git a/res/drawable-xhdpi-v9/ic_stat_tor.png b/app/src/main/res/drawable-xhdpi-v9/ic_stat_tor.png similarity index 100% rename from res/drawable-xhdpi-v9/ic_stat_tor.png rename to app/src/main/res/drawable-xhdpi-v9/ic_stat_tor.png diff --git a/res/drawable-xhdpi-v9/inverse.png b/app/src/main/res/drawable-xhdpi-v9/inverse.png similarity index 100% rename from res/drawable-xhdpi-v9/inverse.png rename to app/src/main/res/drawable-xhdpi-v9/inverse.png diff --git a/res/drawable-xhdpi/ic_action_settings.png b/app/src/main/res/drawable-xhdpi/ic_action_settings.png similarity index 100% rename from res/drawable-xhdpi/ic_action_settings.png rename to app/src/main/res/drawable-xhdpi/ic_action_settings.png diff --git a/res/drawable-xhdpi/ic_launcher.png b/app/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xhdpi/ic_launcher.png rename to app/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/res/drawable-xhdpi/ic_stat_notifyerr.png b/app/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png similarity index 100% rename from res/drawable-xhdpi/ic_stat_notifyerr.png rename to app/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png diff --git a/res/drawable-xhdpi/ic_stat_tor.png b/app/src/main/res/drawable-xhdpi/ic_stat_tor.png similarity index 100% rename from res/drawable-xhdpi/ic_stat_tor.png rename to app/src/main/res/drawable-xhdpi/ic_stat_tor.png diff --git a/res/drawable-xhdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xhdpi/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png diff --git a/res/drawable-xhdpi/inverse.png b/app/src/main/res/drawable-xhdpi/inverse.png similarity index 100% rename from res/drawable-xhdpi/inverse.png rename to app/src/main/res/drawable-xhdpi/inverse.png diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-xxhdpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-xxhdpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-xxhdpi-v11/ic_stat_tor.png diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png diff --git a/res/drawable-xxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xxhdpi/ic_launcher.png rename to app/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/res/drawable-xxhdpi/ic_stat_tor.png b/app/src/main/res/drawable-xxhdpi/ic_stat_tor.png similarity index 100% rename from res/drawable-xxhdpi/ic_stat_tor.png rename to app/src/main/res/drawable-xxhdpi/ic_stat_tor.png diff --git a/res/drawable-xxhdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xxhdpi/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png diff --git a/res/drawable-xxhdpi/inverse.png b/app/src/main/res/drawable-xxhdpi/inverse.png similarity index 100% rename from res/drawable-xxhdpi/inverse.png rename to app/src/main/res/drawable-xxhdpi/inverse.png diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor.png b/app/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor.png similarity index 100% rename from res/drawable-xxxhdpi-v11/ic_stat_tor.png rename to app/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor.png diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png diff --git a/res/drawable-xxxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxxhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xxxhdpi/ic_launcher.png rename to app/src/main/res/drawable-xxxhdpi/ic_launcher.png diff --git a/res/drawable-xxxhdpi/ic_stat_tor.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png similarity index 100% rename from res/drawable-xxxhdpi/ic_stat_tor.png rename to app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png diff --git a/res/drawable-xxxhdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable-xxxhdpi/ic_stat_tor_xfer.png rename to app/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png diff --git a/res/drawable-xxxhdpi/inverse.png b/app/src/main/res/drawable-xxxhdpi/inverse.png similarity index 100% rename from res/drawable-xxxhdpi/inverse.png rename to app/src/main/res/drawable-xxxhdpi/inverse.png diff --git a/res/drawable/button.xml b/app/src/main/res/drawable/button.xml similarity index 94% rename from res/drawable/button.xml rename to app/src/main/res/drawable/button.xml index 4bff5791..9f44d248 100644 --- a/res/drawable/button.xml +++ b/app/src/main/res/drawable/button.xml @@ -1,4 +1,4 @@ - + diff --git a/res/drawable/button_off.xml b/app/src/main/res/drawable/button_off.xml similarity index 94% rename from res/drawable/button_off.xml rename to app/src/main/res/drawable/button_off.xml index 18da2869..1304d1b6 100644 --- a/res/drawable/button_off.xml +++ b/app/src/main/res/drawable/button_off.xml @@ -1,4 +1,4 @@ - + diff --git a/res/drawable/button_on.xml b/app/src/main/res/drawable/button_on.xml similarity index 94% rename from res/drawable/button_on.xml rename to app/src/main/res/drawable/button_on.xml index 348a6df0..27dc0922 100644 --- a/res/drawable/button_on.xml +++ b/app/src/main/res/drawable/button_on.xml @@ -1,4 +1,4 @@ - + diff --git a/res/drawable/classyfabric.png b/app/src/main/res/drawable/classyfabric.png similarity index 100% rename from res/drawable/classyfabric.png rename to app/src/main/res/drawable/classyfabric.png diff --git a/res/drawable/error.png b/app/src/main/res/drawable/error.png similarity index 100% rename from res/drawable/error.png rename to app/src/main/res/drawable/error.png diff --git a/res/drawable/ic_chatsecure.png b/app/src/main/res/drawable/ic_chatsecure.png similarity index 100% rename from res/drawable/ic_chatsecure.png rename to app/src/main/res/drawable/ic_chatsecure.png diff --git a/res/drawable/ic_duckduckgo.png b/app/src/main/res/drawable/ic_duckduckgo.png similarity index 100% rename from res/drawable/ic_duckduckgo.png rename to app/src/main/res/drawable/ic_duckduckgo.png diff --git a/res/drawable/ic_launcher.png b/app/src/main/res/drawable/ic_launcher.png similarity index 100% rename from res/drawable/ic_launcher.png rename to app/src/main/res/drawable/ic_launcher.png diff --git a/res/drawable/ic_menu_about.png b/app/src/main/res/drawable/ic_menu_about.png similarity index 100% rename from res/drawable/ic_menu_about.png rename to app/src/main/res/drawable/ic_menu_about.png diff --git a/res/drawable/ic_menu_exit.png b/app/src/main/res/drawable/ic_menu_exit.png similarity index 100% rename from res/drawable/ic_menu_exit.png rename to app/src/main/res/drawable/ic_menu_exit.png diff --git a/res/drawable/ic_menu_goto.png b/app/src/main/res/drawable/ic_menu_goto.png similarity index 100% rename from res/drawable/ic_menu_goto.png rename to app/src/main/res/drawable/ic_menu_goto.png diff --git a/res/drawable/ic_play.png b/app/src/main/res/drawable/ic_play.png similarity index 100% rename from res/drawable/ic_play.png rename to app/src/main/res/drawable/ic_play.png diff --git a/res/drawable/ic_stat_tor_off.png b/app/src/main/res/drawable/ic_stat_tor_off.png similarity index 100% rename from res/drawable/ic_stat_tor_off.png rename to app/src/main/res/drawable/ic_stat_tor_off.png diff --git a/res/drawable/ic_stat_tor_xfer.png b/app/src/main/res/drawable/ic_stat_tor_xfer.png similarity index 100% rename from res/drawable/ic_stat_tor_xfer.png rename to app/src/main/res/drawable/ic_stat_tor_xfer.png diff --git a/res/drawable/ic_twitter.png b/app/src/main/res/drawable/ic_twitter.png similarity index 100% rename from res/drawable/ic_twitter.png rename to app/src/main/res/drawable/ic_twitter.png diff --git a/res/drawable/icon_martus.png b/app/src/main/res/drawable/icon_martus.png similarity index 100% rename from res/drawable/icon_martus.png rename to app/src/main/res/drawable/icon_martus.png diff --git a/res/drawable/icon_orfox.png b/app/src/main/res/drawable/icon_orfox.png similarity index 100% rename from res/drawable/icon_orfox.png rename to app/src/main/res/drawable/icon_orfox.png diff --git a/res/drawable/icon_story_maker.png b/app/src/main/res/drawable/icon_story_maker.png similarity index 100% rename from res/drawable/icon_story_maker.png rename to app/src/main/res/drawable/icon_story_maker.png diff --git a/res/drawable/inverse.png b/app/src/main/res/drawable/inverse.png similarity index 100% rename from res/drawable/inverse.png rename to app/src/main/res/drawable/inverse.png diff --git a/res/drawable/n8fr8.jpg b/app/src/main/res/drawable/n8fr8.jpg similarity index 100% rename from res/drawable/n8fr8.jpg rename to app/src/main/res/drawable/n8fr8.jpg diff --git a/res/drawable/oldtoroff.png b/app/src/main/res/drawable/oldtoroff.png similarity index 100% rename from res/drawable/oldtoroff.png rename to app/src/main/res/drawable/oldtoroff.png diff --git a/res/drawable/oldtoron.png b/app/src/main/res/drawable/oldtoron.png similarity index 100% rename from res/drawable/oldtoron.png rename to app/src/main/res/drawable/oldtoron.png diff --git a/res/drawable/oldtorstarting.png b/app/src/main/res/drawable/oldtorstarting.png similarity index 100% rename from res/drawable/oldtorstarting.png rename to app/src/main/res/drawable/oldtorstarting.png diff --git a/res/drawable/onion32.png b/app/src/main/res/drawable/onion32.png similarity index 100% rename from res/drawable/onion32.png rename to app/src/main/res/drawable/onion32.png diff --git a/res/drawable/tilebg.xml b/app/src/main/res/drawable/tilebg.xml similarity index 100% rename from res/drawable/tilebg.xml rename to app/src/main/res/drawable/tilebg.xml diff --git a/res/drawable/toggle.xml b/app/src/main/res/drawable/toggle.xml similarity index 100% rename from res/drawable/toggle.xml rename to app/src/main/res/drawable/toggle.xml diff --git a/res/drawable/tor.png b/app/src/main/res/drawable/tor.png similarity index 100% rename from res/drawable/tor.png rename to app/src/main/res/drawable/tor.png diff --git a/res/drawable/tor25.png b/app/src/main/res/drawable/tor25.png similarity index 100% rename from res/drawable/tor25.png rename to app/src/main/res/drawable/tor25.png diff --git a/res/drawable/toroff.png b/app/src/main/res/drawable/toroff.png similarity index 100% rename from res/drawable/toroff.png rename to app/src/main/res/drawable/toroff.png diff --git a/res/drawable/toron.png b/app/src/main/res/drawable/toron.png similarity index 100% rename from res/drawable/toron.png rename to app/src/main/res/drawable/toron.png diff --git a/res/drawable/torstarting.png b/app/src/main/res/drawable/torstarting.png similarity index 100% rename from res/drawable/torstarting.png rename to app/src/main/res/drawable/torstarting.png diff --git a/res/layout-v21/layout_notification_expanded.xml b/app/src/main/res/layout-v21/layout_notification_expanded.xml similarity index 100% rename from res/layout-v21/layout_notification_expanded.xml rename to app/src/main/res/layout-v21/layout_notification_expanded.xml diff --git a/res/layout/layout_about.xml b/app/src/main/res/layout/layout_about.xml similarity index 100% rename from res/layout/layout_about.xml rename to app/src/main/res/layout/layout_about.xml diff --git a/res/layout/layout_apps.xml b/app/src/main/res/layout/layout_apps.xml similarity index 100% rename from res/layout/layout_apps.xml rename to app/src/main/res/layout/layout_apps.xml diff --git a/res/layout/layout_apps_item.xml b/app/src/main/res/layout/layout_apps_item.xml similarity index 100% rename from res/layout/layout_apps_item.xml rename to app/src/main/res/layout/layout_apps_item.xml diff --git a/res/layout/layout_diag.xml b/app/src/main/res/layout/layout_diag.xml similarity index 100% rename from res/layout/layout_diag.xml rename to app/src/main/res/layout/layout_diag.xml diff --git a/res/layout/layout_help.xml b/app/src/main/res/layout/layout_help.xml similarity index 100% rename from res/layout/layout_help.xml rename to app/src/main/res/layout/layout_help.xml diff --git a/res/layout/layout_log.xml b/app/src/main/res/layout/layout_log.xml similarity index 100% rename from res/layout/layout_log.xml rename to app/src/main/res/layout/layout_log.xml diff --git a/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml similarity index 51% rename from res/layout/layout_main.xml rename to app/src/main/res/layout/layout_main.xml index 4a041c3b..b8341359 100644 --- a/res/layout/layout_main.xml +++ b/app/src/main/res/layout/layout_main.xml @@ -30,92 +30,7 @@ android:layout_height="wrap_content" > - - - - - - - - - - - - - - - - - - + @@ -154,20 +68,20 @@ android:layout_gravity="center_horizontal|center_vertical"/> android:fontFamily="sans-serif-light" android:text="" android:lines="2" - android:maxLines="2" + android:maxLines="2" android:layout_gravity="center_horizontal" android:layout_margin="0dp" - android:layout_marginLeft="5dp" + android:layout_marginLeft="5dp" android:layout_marginRight="5dp" /> - + + - - - - + - - + + + + + + + + + + + + + + + + + + + + + diff --git a/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml similarity index 78% rename from res/values-ar/strings.xml rename to app/src/main/res/values-ar/strings.xml index 0830fb8b..0b2a1f63 100644 --- a/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1,4 +1,4 @@ - + اوربوت اوربوت هو تطبيق الوكيل-البروكسي الحر الذي يمكّن تطبيقات أخرى لاستخدام الإنترنت بأمان أكثر . يُستخدم اوربوت تور لتشفير تحركات مرورك على الإنترنت ، ثم يخفيك ويجعلك وهمي من خلال سلسلة من أجهزة الكمبيوتر في جميع أنحاء العالم . تور هو تطبيق حر وشبكة مفتوحة والتي تساعدك على حماية نفسك من مراقبة الشبكات التي تهدد الحرية الشخصية والخصوصية ، والأنشطة التجارية السرية والعلاقات ، وأمن الدولة والحكومات القمعيّة والتي تستخدم مايعرف باسم تحليل حركة مرور البيانات . @@ -99,15 +99,21 @@ HTTP: / /tinyurl.com/proxyandroid\n فعل اوربوت و اتصل بتور تلقائياً عندما يبدء جهاز الأندرويد الخاص بك بالعمل + اوربت يجعل تور ممكناً على نظام الأندرويد. يساعدك تور في الدفاع ضد عملية ترشيح المحتويات, تحليل مسارات المرور, ومراقبة الشبكة والتي تهدد خصوصيتك, المعلومات السرية والعلاقات الشخصية. هذه الأداة ستساعدك من تهيئة اوربت مع تور على جهازك تحذير + لن يقوم اوربت بأخفاء هوية مسارك بشكل اوتوماتيكي او آلي بمجرد تنصيبه. بل يجب عليك ان تقوم بتهيئته مع جهازك بالأضافة الى تهيئة تطبيقات اخرى لتستطيع استخدام تور بنجاح. الصلاحيات يمكنك اعطاء اوربوت صلاحيات حساب رووت لتشغيل المميزات المتقدمة مثل البروكسي الضمني. إذا كنت لا تريد أن تفعل هذا, الرجاء إستخدام برامج معدة للعمل مع اوربوت برامج معدة للعمل مع اوربوت + جات سكيور: هو تطبيق للدردشة بشكل آمن مع تشفير عالي جداً + اورفوكس: متصفح ذو خصوصية متقدمة يعمل ظمن او من خلال تور يمكنك الحصول علي جميع تطبيقات مشروع الجاردين على جوجل بلاي + اكتشف كل تطبيقات مشروع الجارديان على اف-درويد + اكتشف كل تطبيقات مشروع الجارديان على https://f-droid.org بروكسي ضمني هذه ستسمح للبرامج بالاتصال بشبكة تور تلقائياً دون اعداد مسبق. @@ -123,6 +129,11 @@ HTTP: / /tinyurl.com/proxyandroid\n نقاط الدخول بصمات، اسماء مستعارة، البلدان و العناوين لأول نقطة اتصال أدخل نقاط الدخول + إسمح للخلفية بألبدأ + إسمح لأي تطبيق بأن يُخبِر اوربت بأن يفعل تور مع الخدمات المرتبطة به + اُخوِّل الكل + بدون تخويل + اعكس المُحدد بروكسي الشبكة الصادرة (اختياري) نوع البروكسي الصادر البروتوكول المستخدم لخادم البروكسي: HTTP, HTTPS, Socks4, Socks5 @@ -147,6 +158,7 @@ HTTP: / /tinyurl.com/proxyandroid\n تحذير: حصل خطأ بتشغيل البروكسي الضمني! تم مسح قواعد البروكسي الضمني لقد تعذر بدء تشغيل تور: + بوليبو يعمل على المحمول يتم إعداد البروكسي الضمني حسب المنفذ... خطأ بالجسر حتي تستطيع إستخدم ميزة الجسور، يجب عليك ادخال عنوان انترنت لجسر واحد علي الأقل. @@ -190,25 +202,61 @@ HTTP: / /tinyurl.com/proxyandroid\n اسم العنوان لخدمتك المخفية (يتم انشائه تلقائياً) شغل سجل الـdebug ( للمراجعة يجب استخدام adb أو LogCat) الموقع الرسمي للمشروع (المشاريع): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ رخصة استخدام تور https://torproject.org برامج من الطرف الثالث: + تور: https://www.torproject.org + لب إيفينت النسخة http://www.monkey.org/~provos/libevent/ :v2.0.21 + بوليبو النسخة 1.1.9 : https://github.com/jech/polipo + آي بي تايبلز النسخة 1.4.21: http://www.netfilter.org + اوبن اس اس ال النسخة: http://www.openssl.org 1.0.1q هناك برنامج يحاول فتح منفذ لخادم مخفي %S إلي شبكة تور. هذا السلوك آمن إذا كنت تثق بهذا البرنامج. عُثر علي عملية تور سابقة تعمل... حصل خطأ ما. افحص السجل الخدمات المخفية التي تعمل حالياً: غير قادر على قراءة اسم الخدمة المخفية غير قادر على بدء تور: + أعِد تشغيل جهازك, غير قادر على اعادة تشغيل تور استخدم الـiptables التلقائية استخدم مكونات الـiptables الموجودة ضمناً بالجهاز بدل النسخة المرفقة مع اوربوت غير قادرة على تثبيت أو تحديث تور دائما ضع الأيقونة في شريط الأدوات عندما يكون اوربوت متصلاً تنبيهات دائمة + قم بأظهار التنبيه بشكل موسع بأستخدام تور. أخرج من البلد ورقم الآي بي رقم العنوان على الشبكة + تنبيه موسّع تم تفعيل الجسور! + اللغة اختار الإعدادات المحلية و اللغة لاوربوت اختار اللغة إما ان تترك اللغة الافتراضية او إما ان تغير اللغة + مدعومة من قبل تور حفظ الإعدادات + لا يوجد ارتباط بألانترنيت: تور في وضع الوقف المؤقت + عرض النطاق + اسفل + أعلى + لاتوجد شبكة نوم-آلي + ضع تور في وضع النوم عند عدم وجود الأنترنيت + لقد تحولت الى هوية تور جديدة + متصفح + استخدم جات سكيور + أدارة تور + قم بتمكين هذا التطبيق من التحكم بخدمات تور + لا يبدو بأن لديك اورفوكس منصباً. هل تريد مساعدتاً في ذلك او لنقم فقط بتشغيل المتصفح؟ + هل ترغب بتنصيب التطبيقات؟ + لا يوجد اتصال بألشبكة. سيدخل تور الى وضع النوم + الاتصال بألشبكة جيد. تنبيه تور من النوم + تحديث الاعدادات في خدمات تور + تور سوكس + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى وحدة الخدمة النائبة البروكسي في سوكس. (التقصير 9050 او 0 عدم القدرة) + تهيئة منفذ الشبكات الحاسوبية بورت في سوكس + منفذ الشبكات الحاسوبية في وحدة الخدمة النائبة البروكسي في تور + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى البروكسي الشفاف (التقصير 9040 او 0 عدم القدرة) + تهيئة بورت البروكسي الشفاف + تور, نظام اسماء النطاقات, بورت + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى خدمة اسماء النطاق دي ان اس. (التقصير 5400 او 0 لعدم القدرة) + إعدادات بورت خادم اسماء النطاق في بي ان شبكة وهمية خاصة diff --git a/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml similarity index 90% rename from res/values-az/strings.xml rename to app/src/main/res/values-az/strings.xml index 456bab7f..0a84a251 100644 --- a/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -132,6 +132,7 @@ Hər şeyi proksilə Heç nəyi proksiləmə + Seçiminin yerini dəyiş İxrac Edilən Şəbəkə Proksisi (istəyə bağlı) İxrac Edilən Proksi Növü Proksi serveri istifadə etmək üçün protokol: HTTP, HTTPS, Socks4, Socks5 @@ -250,32 +251,45 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ İnternetlə əlaqə yaxşıdır. Tor iş rejiminə keçir... Tor xidmətində quraşdırmalar yüklənir Tor SOCKS + Torun təklif etdiyi Port SOCKS proksi işləyir (standart: 9050, yaxud söndürmək üçün 0) SOCKS Port Config Tor TransProxy Port + Torun təklif etdiyi Port Transparent proksi işləyir (standart: 9040, yaxud söndürmək üçün 0) TransProxy Port Config Tor DNS Port + Torun təklif etdiyi Port DNS işləyir (standart: 5400, yaxud söndürmək üçün 0) DNS Port Config Torrc Custom Config YALNIZ EKSPERTLƏR: birbaşa torrc config xətlərini daxil edin Custom Torrc Mobile Martus - Benetech İnsan haqları Sənədləri tətbiqetməsi Sizin ictimai Tor İP-ləriniz + Orbotla bağlı probleminiz varsa, lütfən, Android->Settings->Apps-də bu tətbiqetməni söndürün; Tətbiqetmə konflikti + Transproxy avtomatik yeniləmə + Şəbəkə vəziyyəti dəyişəndə Transproxy qaydalarını yenidən tətbiq edin + Transproxy MƏCBURİ POZMA + Bütün transproxy şəbəkə qaydalarını elə İNDİ ləğv etmək üçün bura klikləyin + Transparent proksi qaydaları ləğv edildi + Root girişiniz yoxdur + 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. VPN kbps mbps KB MB Körpülər yeniləndi - Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər ətətbiq edilsin. + Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər tətbiq edilsin. QR kodlar + 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Ç. Körpü rejimi Emeyl Veb Aktivləşdir Tətbiqetmələr VPN Rejimi + 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. Emeyl göndərin - 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. + 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. Orfoxu quraşdırın Standart Brauzer QEYD: Intel X86/ATOM cihazlarında yalnız standart Tor körpülər işləyir. diff --git a/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml similarity index 98% rename from res/values-bg/strings.xml rename to app/src/main/res/values-bg/strings.xml index d79a4059..22aff363 100644 --- a/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -1,4 +1,4 @@ - + Орбот Orbot е безплатна прокси програма, която дава възможноста на други програми да използват интерент по-сигурно. Orbot използва Tor, за да криптира Интернет трафика и след това го скрива като препраща през няколко компютъра по целия свят. Tor е безплатен софтуер и отворена мрежа, която ти помага да се предпазиш от шпиониране по мрежата, което заплашва твоята свобода и лично пространство, конфиденциални бизнес отношение и връзки, и от вид правителствено следене наречено трафик анализ. @@ -277,6 +277,7 @@ Мостове включени! Моля, рестартирай Orbot, за да влязат в действие промените QR Кодове + Ако вашата мрежа целенасочено блирва Tor, може да използвате Мост, за да се свържете. ИЗБЕРЕТЕ един от видовете мостове изброени по-горе, за да включите тази функционалност. Режим мост Имейл Уеб diff --git a/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml similarity index 96% rename from res/values-bn-rBD/strings.xml rename to app/src/main/res/values-bn-rBD/strings.xml index 979056e5..d179a61e 100644 --- a/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -1,4 +1,4 @@ - + অরবট Orbot একটি ফ্রি প্রক্সি অ্যাপ্লিকেশন যা অন্যান্য Apps কে আরও নিরাপদভাবে ইন্টারনেট ব্যবহার করার ক্ষমতাপ্রদান করে। Orbot আপনার ইন্টারনেট ট্রাফিক এনক্রিপ্ট করতে টর ব্যবহার এবং তারপর সারা বিশ্বের কম্পিউটারের সিরিজের moddho diye porichalito kore gopon kore. টর ফ্রি সফটওয়্যার এবং আপনি ট্রাফিক বিশ্লেষণ হিসেবে পরিচিত ব্যক্তিগত স্বাধীনতা ও গোপনীয়তা, গোপনীয় বাণিজ্যিক কার্যক্রম এবং সম্পর্ক, এবং রাষ্ট্রীয় নিরাপত্তা হুমকির মুখে পড়ে নেটওয়ার্ক নজরদারি একটি ফর্ম বিরুদ্ধে রক্ষা করতে সাহায্য করে যে একটি খোলা নেটওয়ার্ক. @@ -6,7 +6,6 @@ অরবট চালু হচ্ছে . . . টর নেটওয়ার্কের সাথে সংযুক্ত হয়েছে অরবট নিষ্ক্রিয় করা হয়েছে - অরবট বন্ধ হয়ে যাচ্ছে টর ক্লায়েন্ট চালু করা হচ্ছে সম্পূর্ণ অপেক্ষা করা হচ্ছে diff --git a/res/values-bn/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml similarity index 88% rename from res/values-bn/strings.xml rename to app/src/main/res/values-bn-rIN/strings.xml index de5c3894..844f834c 100644 --- a/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -1,4 +1,4 @@ - + diff --git a/res/values-ach/strings.xml b/app/src/main/res/values-bn/strings.xml similarity index 88% rename from res/values-ach/strings.xml rename to app/src/main/res/values-bn/strings.xml index de5c3894..844f834c 100644 --- a/res/values-ach/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -1,4 +1,4 @@ - + diff --git a/res/values-bn-rIN/strings.xml b/app/src/main/res/values-brx/strings.xml similarity index 88% rename from res/values-bn-rIN/strings.xml rename to app/src/main/res/values-brx/strings.xml index de5c3894..844f834c 100644 --- a/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-brx/strings.xml @@ -1,4 +1,4 @@ - + diff --git a/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml similarity index 68% rename from res/values-bs/strings.xml rename to app/src/main/res/values-bs/strings.xml index 7c1b196a..bcef3470 100644 --- a/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -1,4 +1,4 @@ - + Pomoć Pomoć @@ -13,12 +13,6 @@ - - - - - diff --git a/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml similarity index 99% rename from res/values-ca/strings.xml rename to app/src/main/res/values-ca/strings.xml index 715c6fa0..709b1e45 100644 --- a/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml similarity index 99% rename from res/values-cs-rCZ/strings.xml rename to app/src/main/res/values-cs-rCZ/strings.xml index a77614e3..468e0b44 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml similarity index 93% rename from res/values-cs/strings.xml rename to app/src/main/res/values-cs/strings.xml index adc9376c..65e386fa 100644 --- a/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -24,7 +24,6 @@ Zapnout Vypnout O aplikaci - Průvodce Pomoc Zavřít O aplikaci @@ -64,18 +63,12 @@ Varování - - - - - Transparentní proxy Není - Status Chyba Uloz nastaveni + Aplikace diff --git a/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml similarity index 94% rename from res/values-cy/strings.xml rename to app/src/main/res/values-cy/strings.xml index 23af4ad9..a48a10a4 100644 --- a/res/values-cy/strings.xml +++ b/app/src/main/res/values-cy/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -7,9 +7,8 @@ https://check.torproject.org/?TorButton=true cychwyn a stopio Tor gwasanaethdirpwrytor - Mae Orbot yn cychwyn… + Mae Orbot yn cychwyn... Wedi cysylltu â rhwydwaith Tor - Mae Orbot yn cau Yn cychwyn cleient Tor Wedi ei gwblhau. yn aros. @@ -19,11 +18,9 @@ Gosodiadau Log Help - Apps Cychwyn Stop Amdanom ni - Dewin Llwytho i lawr Llwytho i fyny Help diff --git a/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml similarity index 99% rename from res/values-da/strings.xml rename to app/src/main/res/values-da/strings.xml index 0ddf38a8..2c63a078 100644 --- a/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/app/src/main/res/values-de-rAT/strings.xml b/app/src/main/res/values-de-rAT/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-de-rAT/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml similarity index 83% rename from res/values-de/strings.xml rename to app/src/main/res/values-de/strings.xml index b95dd073..acf26626 100644 --- a/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,7 +1,7 @@ - + Orbot - Orbot ist eine freie Proxy-Anwendung, mithilfe derer andere Anwendung das Internet sicherer nutzen können. Orbot nutzt Tor, um Ihren Internetverkehr zu verschlüsseln und zu verstecken, indem er über eine Reihe weltweit verteilter Computer geleitet wird. Tor ist ein freies Programm und ein offenes Netzwerk, dass Ihnen dabei hilft, sich vor Angriffen auf die persönliche Freiheit, die Privatsphäre und vertraulichen Geschäftsbeziehungen sowie vor staatlicher Datenverkehrsanalyse des Internetverkehrs zu schützen. + 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. http://orbot/ http://check.torproject.org https://check.torproject.org @@ -11,7 +11,7 @@ Orbot startet … Verbunden mit dem Tor-Netzwerk Orbot ist deaktiviert - Tor-Service wird heruntergefahren + TorService wird heruntergefahren Tor-Programm wird gestartet … abgeschlossen. warten. @@ -25,7 +25,7 @@ Start Stopp Über - Apps holen... + Weitere Apps … Heruntergeladen Hochgeladen Hilfe @@ -61,16 +61,16 @@ Abbrechen Nähere Informationen zu Orbot - Orbot ist ein Open-Source Programm, welches Tor, LibEvent und Polipo enthält. Es stellt einen lokalen HTTP-Proxy (Port: 8118) und einen SOCKS-Proxy (Port: 9050) in das Tor-Netzwerk zur Verfügung. Orbot hat auch die Möglichkeit sämtlichen Verkehr auf gerooteten Geräten durch Tor umzuleiten. + 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. Berechtigung erteilt Orbot-Berechtigungen - Exzellent! Wir haben festgestellt, dass Sie Orbot Root-Rechte eingeräumt haben. Wir werden diese Macht weise nutzen. - Obwohl es nicht nötig ist, kann Orbot ein mächtigeres Werkzeug werden, wenn Sie ihm Root-Rechte einräumen. Drücken Sie auf den Knopf unten, um Orbot diese Superkräfte einzuräumen. + Ausgezeichnet! Sie haben Orbot Root-Rechte eingeräumt. Orbot wird diese Berechtigung sinnvoll verwenden. + 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. Falls Sie keinen Root-Zugriff haben oder nicht wissen, was das ist, achten Sie darauf, dass Sie Anwendungen verwenden, die Orbot nutzen können. Ich habe verstanden und möchte ohne Systemverwalterzugriff weitermachen Orbot Root-Rechte einräumen Torification konfigurieren - Orbot gibt Ihnen die Wahl, den Datenverkehr aller Anwendungen durch Tor zu leiten ODER einzelne Anwendungen auszuwählen. + Orbot lässt Ihnen die Wahl, den Datenverkehr aller Anwendungen durch Tor zu leiten ODER einzelne Anwendungen auszuwählen. Den Verkehr aller Anwendungen durch Tor leiten Anwendungen einzeln für Tor auswählen Orbot aktivierte Anwendungen @@ -82,27 +82,27 @@ StoryMaker - Schreiben Sie eine Geschichte und überlassen Sie Tor das Sicherheitsmanagement! https://guardianproject.info/2012/05/02/orbot-your-twitter/ Vermittlungseinstellungen - Wenn die Android App, welche Sie nutzen HTTP oder SOCKS Proxys unterstützt, lässt sie sich über Orbot mit Tor nutzen.\n\nIm Feld \'Host\' wird 127.0.0.1 oder \'localhost\' eingetragen. Für HTTP wird der Port 8118 eingetragen. Für SOCKS ist der Port 9050 zu verwenden. Sie sollten SOCKS4A oder SOCKS5 verwenden, falls möglich.\n\n\n\n Für mehr Informationen zu Proxy-Verwendung auf Android, besuchen Sie das FAQ auf http://tinyurl.com/proxyandroid\n + 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 Orbot ist bereit! - Millionen Menschen weltweit nutzen Tor aus sehr verschiedenen 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! + 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! Bitte konfigurieren Sie Orbot, bevor Sie es verwenden können! - Sie haben sich erfolgreich mit dem Tor-Netzwerk verbunden - was aber NICHT bedeutet, dass Ihr Gerät sicher ist. Sie können den \'Browser\' Knopf 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@guardianproject.info, um mehr zu erfahren. + 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@guardianproject.info, um mehr zu erfahren. 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. Versteckte Dienste Allgemein Orbot beim Systemstart ausführen - Automatisches Starten von Orbot und Verbinden von Tor beim Start des Android-Gerätes + Automatisches Starten von Orbot und Verbinden mit Tor beim Start des Android-Gerätes - Orbot bringt Tor zu Android!\n\nTor hilft Ihnen sich gegen Zensur, Verfolgung und Überwachung, welche die Privatsphäre gefährdet, sowie Informationssammlung zu verteidigen.\n\nDieser Assistent hilft Ihnen dabei Orbot und Tor einzurichten. + 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. Warnung 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. Zugriffsrechte Sie können Orbot wahlweise Systemverwalterzugriff geben, um erweiterte Funktionen zu aktivieren, wie z.B. transparente Vermittlung. - Wenn Sie dieses nicht möchten, dann verwenden Sie bitte Anwendungen, die mit Orbot zusammen arbeiten können + Wenn Sie dies nicht möchten, stellen Sie bitte sicher, Anwendungen zu verwenden, die für die Zusammenarbeit mit Orbot geschrieben wurden. 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. Orbot aktivierte Anwendungen @@ -150,10 +150,10 @@ Status Voll transparente Vermittlung wird eingestellt … Anwendungsbasierte transparente Vermittlung wird eingestellt … - Transparentes Vermittlung AKTIVIERT + Transparente Vermittlung AKTIVIERT TransProxy für Anbindung aktiviert! WARNUNG: Fehler beim Starten der transparenten Vermittlung! - TransProxy Regeln gelöscht + TransProxy-Regeln gelöscht Tor-Prozess konnte nicht gestartet werden: Polipo läuft auf Port: Anschlussbasierte transparente Vermittlung wird eingestellt … @@ -161,8 +161,8 @@ Um die Brückenfunktion nutzen zu können, müssen Sie mindestens eine Brücken-IP-Adresse eingeben. Von Ihrem Gmail-Konto eine E-Mail an bridges@torproject.org mit dem Text »get bridges« im Nachrichtenfeld senden. Fehler - Ihre eingestellten erreichbaren Adressen haben einen Ausnahmefehler erzeugt! - Ihre Relaiseinstellungen haben einen Ausnahmefehler erzeugt! + Ihre eingestellten erreichbaren Adressen haben einen Ausnahmefehler verursacht! + Ihre Relaiseinstellungen haben einen Ausnahmefehler verursacht! Ausgangsnetzknoten Fingerabdrücke, Spitznamen, Länder und Adressen für den letzten Knotenpunkt. Ausgangsnetzknoten eingeben @@ -180,7 +180,7 @@ Brückenadressen eingeben Relais Weiterleitung - Ihr Gerät aktivieren, dass es ein Nichtausgangsrelais ist + Ihr Gerät als Nichtausgangsrelais aktivieren Relaisanschluss Anschluss, auf dem bei Ihrem Tor-Relais gehört werden soll OR-Port eingeben @@ -193,7 +193,7 @@ Die Anschlüsse sind hinter einer restriktiven Firewall erreichbar Ports eingeben Versteckte Dienste - Auf dem Gerät einen Servern betreiben, über den auf das Tor-Netzwerk zugegriffen werden kann + Auf dem Gerät einen Server betreiben, auf den das Tor-Netzwerk zugreifen kann Lokale Ports für versteckte Dienste eingeben Ports der versteckten Dienste Der adressierbare Name für Ihren versteckten Dienst (wird automatisch generiert) @@ -208,18 +208,18 @@ Polipo v1.1.9: https://github.com/jech/polipo IPtables v1.4.21: http://www.netfilter.org OpenSSL v1.0.1q: http://www.openssl.org - Eine Anwendungen möchte den versteckten Server-Anschluss %S öffnen. Das ist sicher, wenn Sie der Anwendung vertrauen. - existierender Tor-Prozess gefunden… + Eine Anwendung möchte den versteckten Server-Anschluss %S öffnen. Das ist sicher, wenn Sie der Anwendung vertrauen. + bestehender Tor-Prozess gefunden … Etwas ist schief gelaufen. Bitte Protokoll prüfen Versteckte Dienste auf: Name des versteckten Dienstes kann nicht gelesen werden Tor kann nicht gestartet werden: Starten Sie Ihr Gerät neu, Tor konnte nicht zurückgesetzt werden! - Die vorgegeben IPtables verwenden + Vorgegebene IPtables verwenden Die vorhandene IPtables-Datei verwenden, anstatt der von Orbot mitgelieferten. Die Tor-Programmdateien konnten nicht installiert oder aktualisiert werden. Wenn Orbot verbunden ist immer das Orbot-Symbol in der Statusleiste anzeigen - Aktivitätsbenachrichtigungen + Aktivitätsanzeige Erweiterte Benachrichtigung mit Tor-Austrittsland und IP anzeigen Erweiterte Benachrichtigungen Brücken aktiviert! @@ -230,12 +230,12 @@ Voreinstellung beibehalten oder Sprache ändern betrieben mit Tor Einstellungen speichern - Keine Internetverbindung; Tor ist auf Standby... + Keine Internetverbindung; Tor ist in Bereitschaft … Bandbreite: runter hoch - Kein Netzwerkautoschlaf - Tor schlafen legen, wenn kein Internet verfügbar ist + Bereitschaft wenn kein Netz + Tor in Bereitschaft versetzen, wenn kein Internet verfügbar ist Sie haben zu einer neuen Tor-Identität gewechselt! Browser ChatSecure benutzen @@ -243,8 +243,8 @@ Diese Anwendung aktivieren, um den Tor-Dienst zu kontrollieren Es sieht nicht so aus, dass Sie Orfox installiert haben. Wollen Sie dabei Hilfe oder sollen wir einfach den Browser öffnen? Anwendungen installieren? - Keine Netzwerkverbindung. Tor geht auf Standby... - Netzwerkverbindung aktiv. Tor wird aktiviert... + Keine Netzwerkverbindung. Tor wird in Bereitschaft versetzt … + Netzwerkverbindung ist vorhanden. Tor wird aktiviert … Einstellungen im Tor-Dienst werden aktualisiert Tor SOCKS Port auf dem der SOCKS-Proxy bereitgestellt wird (Standard: 9050 oder 0 zum deaktivieren) @@ -277,6 +277,7 @@ Brücken aktualisiert Bitte Orbot zum Aktivieren der Änderungen neustarten QR-Codes + 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. Brückemodus E-Mail Netz diff --git a/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml similarity index 99% rename from res/values-el/strings.xml rename to app/src/main/res/values-el/strings.xml index aa3bb553..30c827c2 100644 --- a/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 00000000..4ddc60d8 --- /dev/null +++ b/app/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,13 @@ + + + Next + + + + + + + + + + diff --git a/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml similarity index 96% rename from res/values-eo/strings.xml rename to app/src/main/res/values-eo/strings.xml index 4b45efb0..3c103de7 100644 --- a/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -10,7 +10,6 @@ Orbot ŝaltiĝas... Konektita al Tor-reto Orbot estas malaktivigita - Orbot malŝaltiĝas Ŝaltiĝas Tor-kliento... kompleta. atendas. @@ -20,11 +19,9 @@ Agordoj Protokolo Helpo - Aplikaĵoj Starti Halti Pri - Asistanto Elŝutado Alŝutado Helpo @@ -144,8 +141,6 @@ Kapacito: el al - Kontroli Retumilon Uzi ChatSecure Instali aplikaĵojn? - Instali Orweb diff --git a/res/values-es-rAR/strings.xml b/app/src/main/res/values-es-rAR/strings.xml similarity index 90% rename from res/values-es-rAR/strings.xml rename to app/src/main/res/values-es-rAR/strings.xml index 1ec6b048..b921a402 100644 --- a/res/values-es-rAR/strings.xml +++ b/app/src/main/res/values-es-rAR/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -7,24 +7,21 @@ https://check.torproject.org/?TorButton=true reiniciar Tor torproxyservice - Orbot está iniciándose… + Orbot está iniciándose... Conectado a la red Tor \"Orbot está Desactivado - Orbot se está apagando - Iniciando el cliente Tor… + Iniciando el cliente Tor... Completar - esperando… + esperando... 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 Inicio Navegar Configuración Registro Ayuda - Apps Iniciar Detener Acerca de - Asistente Descargar Subir Ayuda diff --git a/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml similarity index 98% rename from res/values-es/strings.xml rename to app/src/main/res/values-es/strings.xml index f491357e..15c5d59c 100644 --- a/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -278,6 +278,7 @@ direcciones (o rangos). No prevalecen sobre las configuraciones de exclusión de Bridges actualizados Por favor, reinicie Orbot para habilitar los cambios Códigos QR + 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. Modo bridge Correo electrónico Página web diff --git a/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml similarity index 99% rename from res/values-et/strings.xml rename to app/src/main/res/values-et/strings.xml index e5a9adad..9ef3be46 100644 --- a/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml similarity index 99% rename from res/values-eu/strings.xml rename to app/src/main/res/values-eu/strings.xml index d8a85673..198c6121 100644 --- a/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml similarity index 98% rename from res/values-fa/strings.xml rename to app/src/main/res/values-fa/strings.xml index d455dfed..b70cc0f1 100644 --- a/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -1,4 +1,4 @@ - + ربات پیازی اربت یک برنامه پروکسی مجانی است که دیگر برنامه ها را به استفاده امن از اینترنت توانمند می کند . اربوت از تور برای رمزگذاری کردن ترافیک اینترنت شما استفاده می کند و بعد آن ها را از طریق کامپیوترهای متفاوت در نقاط مختلف جهان مخفی می کند. تور یک برنامه مجانی و شبکه باز است که شما از شما در مقابل تحت نظر بودن در شبکه٬‌ تهدید آزادی های شخصی٬ خصوصی٬ فعالیت های کاری و رابطه های شخصی بطور امن محافظت می کند. @@ -88,6 +88,7 @@ بسیاری از مردم در سرتاسر جهان از تور به دلایل متفاوت استفاده می کنند.\n\n خبرنگارها و بلاگرها٬ فعالان حقوق بشر٬ سربازان٬ ماموران اجرای قانون٬ شهروندان رژیم های سرکوبگر و مردم معمولی... و حالا تو لطفا اوربوت را پیکربندی کنید قبل از اینکه شما شروع به استفاده از آن کنید! + با موفقیت به شبکه Tor متصل شده اید - اما این بدان معنا نیست دستگاه شما امن است. شما می توانید استفاده کنید از کلید \"مرورگر\" برای تست اتصال . \n\n درباره ما در https://guardianproject.info/apps/orbot و یا ارسال ایمیل به help@guardianproject.info برای کسب اطلاعات بیشتر. با این قدم پیشفرض مرورگر وب شما به صفحه https://check.torproject.org باز می شود تا شما مشاهده کنید آیا ربات پیازی تنظیم شده است و آیا شما به تور وصل شده اید یا نه. سرويس های مخفی هاست کلی @@ -125,6 +126,7 @@ گره های ورودی اثرانگشت ها، اسامی مستعار، کشورها و آدرسهای جهش اول گره های ورودی را وارد کنید + اجازه دادن اجرا در پس زمینه همه پروکسی ها هیچ پروکسی انتخاب برعکس شود @@ -277,6 +279,7 @@ ایمیل وب فعال + حالت نرم افزار VPN با استفاده از امکان وی پی ان اندروید٬ اوربات ترافیک تمام اپلیکیشن های موبایل شما را از طریق شبکه تور انتقال میدهد. \n\n*هشدار* امکان تونل تمام گوشی هنوز جدید و در حال آزمایش است. به همین دلیل امکان دارد که به صورت خودکار فعال نشود یا هنگام استفاده قطع شود. از این امکان برای ناشناس بودن در وب هرگز نباید استفاده کنید و باید فقط از آن برای عبور از فایروال ها و دور زدن فیلترینگ استفاده شود. diff --git a/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml similarity index 99% rename from res/values-fi/strings.xml rename to app/src/main/res/values-fi/strings.xml index 5eb1777a..01794933 100644 --- a/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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ä. diff --git a/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml similarity index 98% rename from res/values-fr-rFR/strings.xml rename to app/src/main/res/values-fr-rFR/strings.xml index 4817a92c..3a11d068 100644 --- a/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -277,6 +277,7 @@ Ponts mis à jour Veuillez redémarrer Orbot pour activer les changements Codes QR + 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. Mode pont Courriel Web diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..fa051335 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,54 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Démarrer et arrêter Tor + torproxyservice + Démarrage de Orbot... + Connecté au réseau Tor + Orbot est désactivé + Le service Tor est en cours de fermeture + Démarrage du client Tor... + terminé. + en attente. + 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 + Accueil + Naviguer + Paramètres + Log + Aide + VPN + Démarrer + Arrêter + A propos + Obtenir des applications + Télécharger + Envoyer + Aide + Fermer + A propos + Effacer la log + Vérifier + Quitter + Analyser BridgeQR + Partager BridgeQR + - appui long pour commencer - + Passage du trafic Internet de manière transparente (Requiert le Root) + Passage du trafic Internet de manière transparente + Orbot + + + + + + + + + Passage du trafic Internet de manière transparente + + VPN + diff --git a/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml similarity index 96% rename from res/values-gl/strings.xml rename to app/src/main/res/values-gl/strings.xml index d13502da..8496d4b6 100644 --- a/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -1,6 +1,7 @@ - + Orbot + 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. http://orbot/ http://check.torproject.org https://check.torproject.org diff --git a/res/values-gu-rIN/strings.xml b/app/src/main/res/values-gu-rIN/strings.xml similarity index 62% rename from res/values-gu-rIN/strings.xml rename to app/src/main/res/values-gu-rIN/strings.xml index 228d2985..bfb4b94f 100644 --- a/res/values-gu-rIN/strings.xml +++ b/app/src/main/res/values-gu-rIN/strings.xml @@ -1,4 +1,4 @@ - + રદ કરો @@ -9,12 +9,6 @@ - - - - - diff --git a/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml similarity index 69% rename from res/values-gu/strings.xml rename to app/src/main/res/values-gu/strings.xml index e5a9cbd8..3965a3d3 100644 --- a/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -1,4 +1,4 @@ - + મદદ મદદ @@ -12,12 +12,6 @@ - - - - - diff --git a/res/values-iw/strings.xml b/app/src/main/res/values-he/strings.xml similarity index 99% rename from res/values-iw/strings.xml rename to app/src/main/res/values-he/strings.xml index e894ce3a..e5e33f9b 100644 --- a/res/values-iw/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbot הינה אפליקציית פרוקסי חינמית המאפשרת לאפליקציות אחרות להשתמש באינטרנט בבטחה. Orbot נעזרת ב-Tor כדי להצפין את תעבורת האינטרנט שלך ולהסוותה באמצעותה ניתובה דרך מספר מחשבים ברחבי העולם. Tor היא תוכנה חופשית ורשת פתוחה המסייעת לך להתגונן מפני סוגים מסוימים של אמצעי ניטור ומעקב אחר רשת האינטרנט המאיימים על הפרטיות, החירות האישית, פעילויות עסקיות ומערכות יחסים חשאיות. diff --git a/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml similarity index 82% rename from res/values-hi/strings.xml rename to app/src/main/res/values-hi/strings.xml index 76854700..9156dfa2 100644 --- a/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -1,10 +1,13 @@ - + + Orbot + औरबौट एक मुफ्त अैप ब्राउज़ सेटिंग्स मदद मदद बंद करें + Orbot वापस रद्द करें diff --git a/res/values-hr-rHR/strings.xml b/app/src/main/res/values-hr-rHR/strings.xml similarity index 81% rename from res/values-hr-rHR/strings.xml rename to app/src/main/res/values-hr-rHR/strings.xml index 01c7dd20..717ae740 100644 --- a/res/values-hr-rHR/strings.xml +++ b/app/src/main/res/values-hr-rHR/strings.xml @@ -1,4 +1,4 @@ - + Polazno Pretraži @@ -21,14 +21,8 @@ Upozorenje - - - - Nepoznato - Status Greška diff --git a/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml similarity index 92% rename from res/values-hr/strings.xml rename to app/src/main/res/values-hr/strings.xml index af0b8bbb..19ddf3e5 100644 --- a/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -11,6 +11,7 @@ Orbot se pokreće... Spojen na Tor mrežu Orbot je deaktiviran + TorService se gasi Pokrećem Tor klijent... gotovo. čekam. @@ -20,9 +21,11 @@ Postavke Dnevnik Pomoć + VPN Početak Zaustavi O + Dohvati aplikacije... Preuzimanje Slanje Pomoć @@ -84,6 +87,7 @@ 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! Molimo konfigurirajte Orbot prije nego ga počnete koristiti! + 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@guardianproject.info kako bi naučili više. Ovo će otvoriti Vaš web preglednik na https://check.torproject.org kako bi vidjeli je li Orbot konfiguriran i jeste li povezani na Tor. Hosting Skrivenih Usluga Općenito @@ -103,6 +107,7 @@ Orbot-Omogućene Aplikacije ChatSecure: Sigurna aplikacija za čavrljanje s Povjerljivom Enkripcijom + Orfox: Preglednik s pojačanom privatnosti koji radi kroz Tor Pronađi sve Guardian Projekt aplikacije na Google Play Pronađi sve Guardian Project aplikacije na F-Droid-u Pronađi sve Guardian Project aplikacije na https://f-droid.org @@ -121,6 +126,8 @@ Ulazni Čvorovi Otisci prstiju, nadimci, države i adrese za prvi skok Unesi Ulazne Čvorove + Dozvoli pokretanja u pozadini + Dopusti bilo kojoj aplikaciji da kaže Orbot-u da pokrene Tor i povezane usluge Proxy-raj sve Ne proxy-raj ništa Izokreni odabrano @@ -200,6 +207,7 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ Polipo v1.1.9: https://github.com/jech/polipo IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org Aplikacija želi otvoriti port %S skrivenog poslužitelja Tor mreži. Ovo je sigurno ako vjerujete aplikaciji. pronađeni postojeći Tor procesi... Nešto loše se dogodilo. Provjerite dnevnik @@ -229,9 +237,11 @@ Nema mrežnog auto-spavanja Stavi Tor na spavanje kad internet nije dostupan Prebacili ste se na nov Tor identitet! + Preglednik Koristi ChatSecure Upravljaj Tor-om Omogući ovoj palikaciji da upravlja Tor-om + Čini se da nemate Orfox instaliran. Želite li pomoć s tim ili da samo otvorimo preglednik? Instaliraj aplikacije? Nema mrežne povezivosti. Stavljam Tor na spavanje... Mrežan povezanost je dobra. Budim Tor... @@ -259,6 +269,7 @@ Pravila transparentnog proxy-a očišćena! Nema omogućen root pristup Možda će te morati zaustaviti i pokrenuti Orbot da bi se omogućile promjenjene postavke. + VPN kbps mbps KB @@ -266,13 +277,17 @@ Mostova ažurirano Ponovno pokrenite Orbot da bi omogućili promjene QR kodovi + 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. Način rada Most Email Web Aktiviraj + VPN način rada aplikacija 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. Pošalji email 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. + Instaliraj Orfox Standardni preglendik NAPOMENA: samo standardni Tor mostovi rade na Intel X86/ATOM uređajima + Svijet diff --git a/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml similarity index 98% rename from res/values-hu/strings.xml rename to app/src/main/res/values-hu/strings.xml index e4795c7b..6b4e2644 100644 --- a/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -277,6 +277,7 @@ Hidak frissítve Kérlek indítsd újra az Orbot-ot a változások engedélyezéséhez QR kódok + 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. Híd mód Email Web diff --git a/app/src/main/res/values-hy-rAM/strings.xml b/app/src/main/res/values-hy-rAM/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-hy-rAM/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml similarity index 96% rename from res/values-ia/strings.xml rename to app/src/main/res/values-ia/strings.xml index fa922908..db863c61 100644 --- a/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -1,4 +1,4 @@ - + Initio Navigar diff --git a/res/values-in-rID/strings.xml b/app/src/main/res/values-id/strings.xml similarity index 98% rename from res/values-in-rID/strings.xml rename to app/src/main/res/values-id/strings.xml index 0a541cff..344037a2 100644 --- a/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -11,6 +11,7 @@ Orbot sedang dimulai... Tersambung ke Jaringan Tor Orbot telah dibatalkan + TorService dimatikan Memulai klien Tor... selesai. menunggu. @@ -20,9 +21,11 @@ Pengaturan Log Bantuan + VPN Mulai Berhenti Tentang + Dapatkan aplikasi... Unduh Unggah Bantuan @@ -121,6 +124,7 @@ Simpul Masuk Sidik jari, alias, negara dan alamat untuk loncatan pertama Masukkan Simpul Masuk + Ijinkan Latar Belakang Berjalan Proxy Semuanya Tanpa Proxy Balik Pilihan @@ -229,6 +233,7 @@ Auto-Tidur Tidak Ada Jaringan Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia Anda telah beralih ke identitas Tor baru! + Peramban Gunakan ChatSecure Kelola Tor Aktifkan aplikasi ini untuk mengontrol layanan Tor @@ -259,6 +264,7 @@ Rule proxy transparan telah kosong! Anda tidak punya akses ROOT Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif. + VPN kbps mbps KB diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml new file mode 100644 index 00000000..344037a2 --- /dev/null +++ b/app/src/main/res/values-in-rID/strings.xml @@ -0,0 +1,284 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mulai dan akhiri Tor + torproxyservice + Orbot sedang dimulai... + Tersambung ke Jaringan Tor + Orbot telah dibatalkan + TorService dimatikan + Memulai klien Tor... + selesai. + menunggu. + 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 + Beranda + Jelajah + Pengaturan + Log + Bantuan + VPN + Mulai + Berhenti + Tentang + Dapatkan aplikasi... + Unduh + Unggah + Bantuan + Tutup + Tentang + Hapus Log + Periksa + Keluar + Pindai BridgeQR + Bagikan BridgeQR + - sentuh dan tahan untuk memulai - + Proxy Transparan (Dibutuhkan Root) + Proxy Transparan + Otomatis Torfying Aplikasi + Tor Semuanya + Trafik proxy untuk semua aplikasi melalui Tor + Alternatif Port Proxy + PERINGATAN: Temukan port umum (80, 443, dll). *Gunakan Hanya* jika \'Semua\' atau \'Aplikasi\' mode tidak bekerja. + Daftar Port + Daftar port untuk proxy. *GUNAKAN HANYA* jika modus \'Semua\' atau \'Apl\' tidak bekerja + Masukkan port untuk proxy + Minta Akses Root + Meminta akses root untuk proxy transparan + Binary Tor berhasil dipasang! + File binary Tor tidak dapat dipasang. Silahkan periksa log dan beritahukan ke tor-assistants@torprojects.org + Kesalahan Pada Aplikasi + Orbot + Tentang Orbot + Berikutnya + Kembali + Selesai + Oke + Batal + + Beberapa Rincian Orbot + 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. + Izin Diberikan + Perizinan Orbot + Baik sekali! Kami telah mendeteksi bahwa anda telah mengaktifkan perizinan root untuk Orbot. Kami akan menggunakan kekuatan ini secara bijak. + 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! + Jika anda tidak memiliki akses root atau tidak tahu tentang apa yang kita bicarakan, pastikan untuk menggunakan aplikasi yang dibuat untuk bekerja dengan Orbot. + Saya mengerti dan ingin melanjutkan tanpa Superuser + Berikan Akses Root untuk Orbot + Konfigurasi Torifikasi + Orbot memberikan pilihan kepada anda untuk mengerahkan semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi anda secara individu. + Proxy Semua Aplikasi Melalui Tor + Pilih Individu Aplikasi untuk Tor + Orbot- Aplikasi teraktifkan + 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 + ChatSecure - Client instant messaging aman untuk Android + Pengaturan Proxy - Pelajari bagaimana mengkonfigurasikan aplikasi untuk bekerja dengan Orbot + Aplikasi Mesin Pencari DuckDuckGo + Setel proxy Twitter ke host \"localhost\" dan port 8118 + StoryMaker - Tulis cerita dan biarkan Tor yang mengurus keamanannya! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Pengaturan Proxy + 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 + Orbot sudah siap! + 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! + Konfigurasi Orbot terlebih dahulu sebelum anda menggunakannya! + + 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. + Jasa Penyimpanan Rahasia + Umum + Mulai Orbot saat Boot + Secara otomatis memulai Orbot dan menghubungkan dengan Tor ketika perangkat Android anda boot + + + 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. + + Peringatan + 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. + + Perizinan + Anda dapat secara opsional memberikan Orbot akses \'Superuser\' untuk mengaktifkan fitur lanjutan, seperti Transparan Proxying. + Jika anda tidak ingin melakukan ini, mohon pastikan bahwa anda menggunakan aplikasi yang dibuat untuk dapat bekerja dengan Orbot. + Perangkat anda belum di-root atau tidak punya akses \'Superuser\'. Silakan coba mode \'Aplikasi\' di tampilan utama. + + Orbot-Aplikasi Teraktifkan + ChatSecure: Aplikasi obrolan aman dengan Enkripsi Off-the-Record + Temukan semua aplikasi Guardian Project di Google Play + Temukan semua aplikasi Guardian Project di F-Droid + Temukan semua aplikasi Guardian Project di https://f-droid.org + + Transparan Proxying + Hal ini akan memungkinkan aplikasi anda untuk secara otomatis berjalan melalui jaringan Tor tanpa konfigurasi apapun. + (Tandai box ini jika anda tidak tahu apa yang kita bicarakan) + Tidak ada + Tor Tethering + Mengaktifkan Transparan Proxying Tor untuk Wifi dan Perangkat Tether USB (diperlukan restart) + Meminta Akses Superuser + Pilih Aplikasi + Pilih Aplikasi untuk Mengerahkan Melalui Tor + Konfigurasi Simpul + Itu adalah pengaturan lanjutan yang dapat mengurangi anonimitas anda + Simpul Masuk + Sidik jari, alias, negara dan alamat untuk loncatan pertama + Masukkan Simpul Masuk + Ijinkan Latar Belakang Berjalan + Proxy Semuanya + Tanpa Proxy + Balik Pilihan + Outbound Proxy Jaringan (Opsional) + Outbound Jenis Proxy + Protokol yang digunakan untuk server proxy: HTTP, HTTPS, Socks4, Socks5 + Masukkan Jenis Proxy + Outbound Host Proxy + Nama host Server Proxy + Masukkan Host Proxy + Outbound Port Proxy + Port Server Proxy + Masukkan port Proxy + Outbound Nama Pengguna Proxy + Nama Pengguna Proxy (Opsional) + Masukkan Nama Pengguna Proxy + Outbound Sandi Proxy + Sandi Proxy (Opsional) + Masukkan Sandi Proxy + Status + Menyetel transparan proxying penuh... + Menyetel apl-berbasis proxying transparan... + Proxying transparan DIAKTIFKAN + TransProxy diaktifkan untuk Tethering! + PERINGATAN: kesalahan dalam memulai proxying transparan! + Aturan TransProxy dibersihkan + Tidak dapat memulai proses Tor: + Polipo aktif di port: + Menyetel proxying transparan berbasis-port... + Kesalahan pada Bridge + Agar dapat menggunakan fitur bridge, anda perlu memasukkan minimal satu alamat IP bridge. + Kirimkan email ke bridges@torproject.org dengan baris \"get bridges\" dengan sendirinya dalam tubuh surat dari akun gmail. + Kesalahan + Pengaturan ReachableAddresses anda menyebabkan kesalahan! + Pengaturan relay anda menyebabkan kesalahan! + Node Keluar + fingerprints, nama, negara dan alamat untuk hop terakhir + Memasuki Node Keluar + Node pengecualian + Pengecualian fingerprints,nama, negara dan alamat + Memasuki Node Pengecualian + Node Terlarang + Pakai *hanya* spesifik node + Bridges + Pakai Bridges + Bridges Terobfuskasi + Nyalakan alternatif node masuk ke dalam Tor Network + Nyalakan jika pengaturan bridges adalah bridges terobfuskasi + Alamat IP dan port bridges + Memasuki Alamat Bridge + Relays + Sedang me-Relay + Nyalakan perangkat anda menjadi non-exit relay + Port Relay + Port mendengarkan untuk TOR relay anda + Memasuki OR port + Nama Relay + sebuah nama untuk Tor Relay anda + Masukkan nama relay + Addresses Terjangkau + Jalankan sebagai client dibalik firewall dengan ketentuan ketat + Ports terjangkau + Port terjangkau dibalik firewall ketat + Memasuki ports + Layanan Penyimpanan Rahasia + Membolehkan perangkat-nyala untuk diakses lewat Tor Network + memasuki localhost port untuk layanan rahasia + Ports Layanan Rahasia + nama teralamatkan untuk layanan rahasia anda (otomatis dibuat) + nyalakan debug log untuk output (harus menggunakan adb atau aLogCat untuk menampilkan) + Beranda Projek: + https://www.torproject.org/docs/android https://guardianproject.info/apps/orbot/ + Lisensi Tor + https://torproject.org + Perangkat Lunak Pihak Ke-3: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Sebuah aplikasi ingin membuka port %S server tersembunyi ke jaringan Tor. Hal ini aman jika anda mempercayai aplikasi tersebut. + menemukan proses Tor yang ada... + Sesuatu yang buruk terjadi. Periksa log + layanan tersembunyi pada: + tidak dapat membaca nama layanan tersembunyi + Tidak dapat memulai Tor: + Boot ulang perangkat anda, gagal me-reset Tor! + Gunakan Iptables Default + menggunakan binary iptables built-in daripada yang disertakan dengan Orbot + Binary Tor tidak dapat dipasang atau ditingkatkan + Selalu pelihara icon dalam toolbar ketika Orbot terhubung + Pemberitahuan Selalu-Hidup + Tampilkan notifikasi melebar dengan negara dan IP keluar Tor + Notifikasi Melebar + Bridge diaktifkan! + + Bahasa + Pilih lokal dan bahasa untuk Orbot + Pilih Bahasa + Biarkan default atau berlaih ke bahasa saat ini + diperkuat dengan Tor + Simpan Pengaturan + Tidak ada koneksi internet; Tor sedang standby... + Bandwidth: + unduh + unggah + Auto-Tidur Tidak Ada Jaringan + Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia + Anda telah beralih ke identitas Tor baru! + Peramban + Gunakan ChatSecure + Kelola Tor + Aktifkan aplikasi ini untuk mengontrol layanan Tor + Pasang aplikasi? + Tidak ada jaringan terhubung. Menidurkan Tor... + Jaringan terhubung baik. Memanggil Tor... + memperbarui setting pada layanan Tor + SOCKS Tor + Port tempat proxy SOCKS Tor aktif (standar: 9050 atau 0 untuk mematikan) + Konfigurasi Port SOCKS + Port TransProxy Tor + Port tempat Proxy Transparan Tor aktif (standar: 9040 atau 0 untuk mematikan) + Konfigurasi Port TransProxy + Port DNS Tor + Port tempat DNS Tor aktif (standar: 5400 atau 0 untuk mematikan) + Konfigurasi Port DNS + Konfigurasi Torrc + HANYA UNTUK AHLI: masukkan baris konfigurasi direct Torrc + Torrc Custom + Mobile Martus - Aplikasi Dokumentasi Hak Asasi Manusia milik Benetech + IP Publik Tor Anda: + Mohon nonaktifkan aplikasi ini di Android Settings Apps jika Orbot anda bermasalah + Konflik Aplikasi + Auto-Refresh Transproxy + Pasang ulang rule Transproxy saat status jaringan berubah + BUANG PAKSA Transproxy + Ketuk disini untuk mengosongkan semua rule jaringan Transproxy SEKARANG + Rule proxy transparan telah kosong! + Anda tidak punya akses ROOT + Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif. + VPN + kbps + mbps + KB + MB + Bridge Telah Diperbarui + Silakan start ulang Orbot untuk mengaktifkan perubahan + Kode QR + Mode Bridge + Email + Laman + Aktivasi + 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. + Kirim Email + 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. + Peramban Standar + CATATAN: Hanya bridge Tor yang standar yang bekerja di perangkat Intel X86/ATOM + diff --git a/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml similarity index 98% rename from res/values-in/strings.xml rename to app/src/main/res/values-in/strings.xml index f2cf3c65..42c44612 100644 --- a/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml similarity index 99% rename from res/values-is/strings.xml rename to app/src/main/res/values-is/strings.xml index f169370c..ca2f9cbd 100644 --- a/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml similarity index 98% rename from res/values-it/strings.xml rename to app/src/main/res/values-it/strings.xml index 18756bbb..62f1455a 100644 --- a/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -277,6 +277,7 @@ Bridge attivati Per favore riavvia Orbot per rendere effettive le modifiche Codici QR + 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 Modalità Bridge Email Web diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml new file mode 100644 index 00000000..e5e33f9b --- /dev/null +++ b/app/src/main/res/values-iw/strings.xml @@ -0,0 +1,233 @@ + + + Orbot + Orbot הינה אפליקציית פרוקסי חינמית המאפשרת לאפליקציות אחרות להשתמש באינטרנט בבטחה. Orbot נעזרת ב-Tor כדי להצפין את תעבורת האינטרנט שלך ולהסוותה באמצעותה ניתובה דרך מספר מחשבים ברחבי העולם. Tor היא תוכנה חופשית ורשת פתוחה המסייעת לך להתגונן מפני סוגים מסוימים של אמצעי ניטור ומעקב אחר רשת האינטרנט המאיימים על הפרטיות, החירות האישית, פעילויות עסקיות ומערכות יחסים חשאיות. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + התחל ועצור את Tor + שירות פרוקסי Tor + Orbot מתחיל… + מחובר לרשת Tor + Orbot כבוי + מתחיל לקוח Tor... + הושלם. + מחכה. + אזהרה: התעבורה שלך אינה אנונימית עדיין! בבקשה הגדר את האפליקציות שלך כך שיתאפשר שימוש בפרוקסי HTTP (קרי 127.0.0.1:8118) או SOCKS4A או SOCKS5 (קרי 127.0.0.1:9050) + בית + דפדף + הגדרות + רישום + עזרה + התחל + עצור + אודות + הורדה + העלאה + עזרה + סגור + אודות + נקה רישום + בדוק + יציאה + סרוק BridgeQR + שתף BridgeQR + -נגיעה ארוכה להתחלה- + פרוקסי שקוף (שורש נדרש) + פרוקסי שקוף + עבודה אוטומטית עם אפליקציות דרך Tor + הכל דרך Tor + תעבור דרך פרוקסי עבור כל האפליקציות דרך Tor + מפלט פורט פרוקסי + אזהרה: עקוף פורטים נפוצים (80,443 וכו\'). *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + רשימת פורטים + רשימת פורטים לפרוקסי. *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + הזן פורטים לפרוקסי + דרושה גישת שורש + בקש גישה עליונה עבור שימוש בפרוקסי שקוף + קבצים ברי הרצה של Tor הותקנו בהצלחה! + הקבצים ברי ההרצה של Tor לא ניתנו להתקנה. בבקשה בדוק את הלוג והודע ל +tor-assistants@torproject.org + שגיאת אפליקציה + Orbot + אודות Orbot + הבא + הקודם + סיים + אישור + ביטול + + פרטים מסוימים של Orbot + Orbot היא אפליקציית קוד פתוח הכוללת את Tor, LibEvent ו-Polipo. היא מתחבר לרשת Tor באמצעות שרת פרוקסי HTTP מקומי (8118) ושרת פרוקסי SOCKS (פורט 9050). Orbot יכולה בנוסף עם הרשאות רוט לנתב את כל תעבורת האינטרנט של המכשיר דרך Tor כברירת מחדל. + ניתנה הרשאה + הרשאות Orbot + מצוין! גילינו כי יש לך הרשאות שורש מאופשרות בשביל Orbot. אנחנו נשתמש בכוח הזה בחוכמה. + בזמן שזה לא נדרש, Orbot יכולה להפוך להיות כלי חזק יותר אם למכשיר שלך יש גישה עליונה. תשתמש בכפתור למטה כדי לקבל כוחות על של Orbot ! + אם אין לך גישה עליונה או אין לך מושג על מה אנחנו מדברים, רק תוודא שתשתמש באפליקציות שנועדו לעבוד עם Orbot. + הבנתי ואני מעדיף להמשיך בלי Superuser + אפשר גישת שורש עבור Orbot + הגדר עבודה באמצעות Tor + Orbot נותנת לך אפשרות לכוון את כל תעבורת האפליקציות דרך Tor או לבחור את האפליקציות שלך בנפרד. + השתמש בפרוקסי בכל האפליקציות דרך Tor + בחר אפליקציות מסוימות עבור Tor + Orbot מתאפשר על ידי אפליקציות + האפליקציות מתחת פותחו לעבודה עם Orbot. לחץ על כל כפתור להתקנה מיידית, או שאתה יכול למצוא אותם אחר כך ב Google Play, באתר GuardianProject.info או +דרך F-Droid.org + ChatSecure - תוכנת מסרים מידיים מאובטחת לאנדרואיד + הגדרות פרוקסי - למד איך להגדיר אפליקציות לעבוד עם Orbot + DuckDuckGo אפליקציית מנוע חיפוש + קבע פרוקסי Twitter למארח \"localhost\" ולפורט 8118 + StoryMaker - מערך שיעורים לעיתונאים על שימוש ב-Tor להגנה על עבודתם. + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + הגדרות פרוקסי + אם אפליקצת האנדרואיד שאתה משתמש תומכת בפרוקסי מבוסס 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 + Orbot מוכן! + מיליוני אנשים ברחבי העולם משתמשים בTor מסיבות רבות.\n\n עיתונאים ובלוגרים, פעילי זכויות אדם, שוטרים, חיילים, תאגידים, אזרחי במשטרים מדוגאים וגם אזרחים פשוטים... ועכשיו גם אתה! + אנא הגדר את Orbot לפני שתוכל להתחיל להשתמש בה! + + דבר זה יוביל את דפדפן הרשת שלך למוד https://check.torproject.org כדי לראות אם Orbot הוגדרה כראוי וכן כי אתה מחובר לרשת Tor. + איחסון שירותים נסתרים + כללי + התחל את Orbot בהדלקת המכשיר + התחל את Orbot והתחבר לרשת Tor אוטומטית כאשר המכשיר נדלק + + + + אזהרה + + הרשאות + אתה יכול להעניק לאפליקציה Orbot גישת \'Superuser\' כדי לאפשר מאפיינים מתקדמים כמו למשל, פרוקסי שקוף. + אם אתה לא רוצה לעשות את זה, אנא הקפד להשתמש באפליקציות שיועדו לעבוד עם Orbot + + Orbot-יישומים מופעלים + ChatSecure: אפליקציית מסרים עם הצפנת Off-the-Record + מצא את כל אפליציות Guardian Project אצל Google Play + + פרוקסי שקוף + זה מאפשר לאפליקציות שלך לרוץ באופן אוטומטי דרך רשת Tor ללא כל תצורה. + (סמן תיבה זו אם אין לך מושג על מה אנחנו מדברים) + כלום + Tor Tethering + מאפשר עבודה עם פרוקסי שקוף עבור רשת אלחוטית ומכשירי USB Tethered (דורש אתחול מחדש) + דרוש אישור Superuser + בחר אפלקציות + בחר אפלקציות + הגדרות Node + קיימות הגדרות מתקדמות שיכולות להפחית את האנונימיות שלך + Entrance Nodes + טביעות אצבע, כינויים, ארצות וכתובות עבור המעבר הראשון + הכנס Entrance Nodes + העבר הכל דרך פרוקסי + אל תשתמש בפרוקסי + הפוך בחירה + Outbound Proxy Type + פרוטוקול שימוש בשרת פרוקסי: HTTP, HTTPS, Socks4,Socks5 + סוג הפרוקסי + מארח של Outbound Proxy + שם מארח שרת פרוקסי + הכנס מארח פרוקסי + פורט של Outbound Proxy + פורט שרת פרוקסי + הכנס פורט של פרוקסי + שם משתמש של Outbound Proxy + שם משתמש פרוקסי (רשות) + הזן שם משתמש פרוקסי + סיסמא של Outbound Proxy + סיסמת פרוקסי (רשות) + הזן סיסמת פרוקסי + סטטוס + הכנה של הפרוקסי השקוף... + הכנה של הפרוקסי השקוף מבוסס אפליקציות... + פרוקסי שקוף מאופשר + פרוקסי שקוף מאופשר ל Tathering! + אזהרה: שגיאה התחילה את הפרוקסי השקוף! + כללי TransProxy טוהרו + אין אפשרות להתחיל תהליך Tor: + Polipo רץ על פורט: + הכנה של הפרוקסי השקוף מבוסס פורט... + שגיאת גשר + שגיאה + צמתי יציאה + הזן צמתי יציאה + צמתים מוצאים + הזן צמתים מוצאים + צמתים קפדנים + השתמש *רק* בצמתים מצוינים אלו + גשרים + השתמש בגשרים + גשרים מעורפלים + כתובת ה-IP ויציאה של הגשרים + הכנס כתובות גשר + ממסרים + ממסור + אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה + פורט הממסר + פורט מאזין עבור Tor relay + הכנס יציאת OR + כינוי הממסר + הכינוי לממסר Tor שלך + הזן כינוי עבור ממסר + כתובות בהישג יד + פורטים בהישג יד + הזן פורטים + אחסון שירותים נסתרים + הזן פורטים של localhost עבור שירותים נסתרים + פורט השירותים הנסתרים + אתרי הפרויקט: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + הרשיון של Tor + https://torproject.org/ + תוכנה-צד-ג׳: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + נמצא תהליך Tor קיים… + משהו רע התרחש. בדוק את היומן + שירות נסתר ב: + לא מסוגל לקרוא שם שירות נסתר + לא מסוגל להתחיל את Tor: + אתחל את המכשיר שלך, אין אפשרות להפעיל מחדש את Tor! + השתמש בברירות המחדל של iptables + לשמור תמיד את האיקון בסרגל כלים כשאורבוט מחובר + גשרים מאופשרים! + + שפה + בחר את המקומיות והשפה של Orbot + בחר שפה + השאר ברירת מחדל או החלף לשפה הנוכחית + מופעל באמצעות Tor + שמירת הגדרות + אין חיבור לאינטרנט; תור ממתין... + רוחב פס: + מטה + מעלה + כבה את Tor כאשר אין חיבור לאינטרנט + החלפת אל זהות Tor חדשה! + הפעל את ChatSecure + נהל Tor + אפשר את אפליקציה זו כדי לשלוט בשירות Tor + להתקין אפליקציה? + אין חיבור לרשת. מכבה את Tor.... + החיבור עובד טוב. מעיר את Tor... + מעדכן הגדרות Tor במכשיר + Tor SOCKS + הגדרות SOCKS Port + Tor TransProxy Port + הגדרת הפורט של TransProxy + Tor DNS Port + הIPs החיצוניים שלך עם Tor: + אין לך גישת רוט מאופשרת + תצטרך לכבות ולהפעיל את Orbot על מנת להחיל את השינוי בהגדרות. + kbps + mbps + KB + MB + קוד QR + דוא\"ל + אתר + הפעל + שלח דוא\"ל + דפדפן רגיל + diff --git a/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml similarity index 97% rename from res/values-ja/strings.xml rename to app/src/main/res/values-ja/strings.xml index a780cd8b..1f117565 100644 --- a/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbotは他のアプリがインターネットをより安全に使うことを可能にするフリーのプロキシアプリです。Orbotでは、Torを用いてあなたの端末のトラフィックを暗号化し、世界中のコンピューターを中継することで、そのトラフィックを隠します。Torはフリーのソフトウェアとオープンなネットワークであり、ユーザーの自由とプライバシーを脅かす監視活動や、機密のビジネス活動、国家によるトラフィック分析から身を守ることを助けてくれます。 @@ -277,6 +277,7 @@ ブリッジを更新しました 変更を有効にするにはOrbotを再起動してください QRコード + モバイルネットワークが積極的にTorをブロックする場合、ブリッジを使用してネットワークにアクセスすることができます。\n\nブリッジを有効にするため、上のいずれかのブリッジタイプを選択してください。 ブリッジ モード メール Web diff --git a/app/src/main/res/values-kn-rIN/strings.xml b/app/src/main/res/values-kn-rIN/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-kn-rIN/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-kn/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml similarity index 99% rename from res/values-ko/strings.xml rename to app/src/main/res/values-ko/strings.xml index f5361d01..765b5720 100644 --- a/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml similarity index 74% rename from res/values-ky/strings.xml rename to app/src/main/res/values-ky/strings.xml index 88c07a4e..89c837cc 100644 --- a/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -1,4 +1,4 @@ - + Ырастоолор Жардам @@ -14,13 +14,7 @@ - - - - - Абал Ката diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-lt-rLT/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml similarity index 96% rename from res/values-lt/strings.xml rename to app/src/main/res/values-lt/strings.xml index 515fd235..b9253dd9 100644 --- a/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -1,4 +1,4 @@ - + Naršyti Nustatymai diff --git a/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml similarity index 99% rename from res/values-lv/strings.xml rename to app/src/main/res/values-lv/strings.xml index 6aeabd6a..194c7b0b 100644 --- a/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml similarity index 99% rename from res/values-mk/strings.xml rename to app/src/main/res/values-mk/strings.xml index 85f76a5d..c5ca87f6 100644 --- a/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbot е слободна прокси апликација која им овозможува на другите апликации да го користат интернетот побезбедно. Orbot користи Tor за шифрирање на интернет-сообраќајот, а потоа го сокрива и го доставува преку неколку компјутери во целиот свет. Tor е слободен софтвер и отворена мрежа која се справува со вид надзор на мрежата која штети на личната слобода и приватноста, доверливи деловни активности и односи, и државната безбедност позната како анализа на сообраќајот. diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-ml/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/values-mn/strings.xml b/app/src/main/res/values-mn/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-mn/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/values-mr-rIN/strings.xml b/app/src/main/res/values-mr-rIN/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-mr-rIN/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-ms-rMY/strings.xml b/app/src/main/res/values-ms-rMY/strings.xml similarity index 99% rename from res/values-ms-rMY/strings.xml rename to app/src/main/res/values-ms-rMY/strings.xml index 4b1355c2..e281414a 100644 --- a/res/values-ms-rMY/strings.xml +++ b/app/src/main/res/values-ms-rMY/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml similarity index 99% rename from res/values-ms/strings.xml rename to app/src/main/res/values-ms/strings.xml index 32f8aa79..c327e579 100644 --- a/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml similarity index 97% rename from res/values-my/strings.xml rename to app/src/main/res/values-my/strings.xml index c7c4e757..07ab4759 100644 --- a/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -1,4 +1,4 @@ - + ပင်မ စာမျက်နှာ ဖွင့်ကြည့်ရန် diff --git a/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml similarity index 99% rename from res/values-nb/strings.xml rename to app/src/main/res/values-nb/strings.xml index 1c0ce162..6fe4aebd 100644 --- a/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml similarity index 99% rename from res/values-nl/strings.xml rename to app/src/main/res/values-nl/strings.xml index 51c4892b..bbd3c17e 100644 --- a/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml similarity index 73% rename from res/values-pa/strings.xml rename to app/src/main/res/values-pa/strings.xml index 8fdc9bb1..2756370d 100644 --- a/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -1,4 +1,4 @@ - + ਚਰਨਾ ਪਰਿਸਥਿਤੀ @@ -13,13 +13,7 @@ - - - - ਖਾਲੀ - diff --git a/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml similarity index 92% rename from res/values-pl/strings.xml rename to app/src/main/res/values-pl/strings.xml index 87ee636f..e550da5c 100644 --- a/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -11,6 +11,7 @@ Orbot startuje... Podłączony do sieci Tor Orbot wyłączony + TorService wyłącza się Uruchamianie klienta sieci Tor... gotowe. czekaj. @@ -20,9 +21,11 @@ Ustawienia Logi Pomoc + VPN Start Stop O programie + Zdobądź aplikacje Pobieranie (prędkość/suma) Wysyłanie (prędkość/suma) Pomoc @@ -84,6 +87,7 @@ 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! Proszę skonfiguruj Orbot zanim zaczniesz go uzywać! + 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@guardianproject.info aby dowiedzieć się więcej. 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. Usługi ukryte Ogólne @@ -103,6 +107,7 @@ Orbot-Włączone Aplikacje ChatSecure: Bezpieczny komunikator z szyfrowaniem Off-the-Record + Orfox: Przeglądarka, która działa przez Tora Znajdź wszystkie aplikacje Guardian Project na Google Play Zobacz wszystkie aplikacje Guardian Project na F-Droid Zobacz wszystkie aplikacje Guardian Project na https://f-droid.org @@ -121,6 +126,8 @@ Węzły wejściowe Odciski palców, nicki, państwa i adresy na pierwszy raz Wpisz Węzły Wejściowe + Pozwól na start z tle + Pozwól każdej aplikacji powiedzieć, aby Orbot uruchomił Tor i inne związane z nim usługi Przepuszczaj wszystko przez proxy Nie przepuszczaj niczego przez proxy Odwróć zaznaczone @@ -200,6 +207,7 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ Polipo v1.1.9: https://github.com/jech/polipo IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org Aplikacja chce otworzyć port ukrytego serwera %S do Sieci Tor. Jest to bezpieczne, jeśli ufasz aplikacji. znaleziono istniejący proces Tora... Coś nie poszło nie tak. Sprawdź logi @@ -229,9 +237,11 @@ Brak Auto-Uśpienia Sieci Ustaw Tor\'a w tryb uśpienia kiedy połączenie internetowe będzie niedostępne Nowa tożsamość Tor\'a została zmieniona! + Przeglądarka Użyj ChatSecure Administruj Tor\'em Pozwól tej aplikacji kontrolować serwis Tor + Wygląda na to, że nie masz zainstalowanej Orfoxa. Chcesz abyśmy Ci pomogli, czy chcesz abyśmy otworzyli to w przeglądarce? Zainstalować aplikacje? Brak połączenia internetowego. Tor będzie w trybie snu... Połączenie internetowe jest dobre. Trwa budzenie Tora... @@ -259,6 +269,7 @@ Ustawienia Transproxy zostały wyczyszczone! Nie masz praw użytkownika root. Możesz zatrzymać i uruchomić ponownie Orbota, aby zmiany ustawień weszły w życie. + VPN kbps mbps KB @@ -266,13 +277,17 @@ Zaktualizowane Bridges Proszę zrestartować Orbot, aby zmiany mogły wejść w życie Kody QR + 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. Tryb Bridge Email Web Aktywuj + Tryb VPN Aplikacji 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. Wyślij Email 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. + Zainstaluj Orfox Standardowa przeglądarka UWAGA: Tylko standardowe bridges działają na urządzeniach z Intel X86/ATOM. + Świat diff --git a/app/src/main/res/values-ps/strings.xml b/app/src/main/res/values-ps/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/app/src/main/res/values-ps/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml similarity index 71% rename from res/values-pt-rBR/strings.xml rename to app/src/main/res/values-pt-rBR/strings.xml index 182ebaae..b23e3043 100644 --- a/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -25,6 +25,7 @@ Iniciar Parar Sobre + Obter aplicativos... Download Upload Ajuda @@ -60,6 +61,7 @@ Cancelar Alguns detalhes do Orbot + 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. Permissão Concedida Permissões do Orbot Excelente! Detectamos que você habilitou permissões de root para Orbot. Nós usaremos este poder com sabedoria. @@ -77,11 +79,15 @@ Configurações de Proxy - Aprenda como configurar apps para trabalhar com Orbot Ferramenta de Busca DuckDuckGo Define o proxy do Twitter para \"localhost\" e a porta 8118 + StoryMaker - Faça uma história e deixe-a para o tor por segurança! https://guardianproject.info/2012/05/02/orbot-your-twitter/ Configurações de Proxy + 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 Orbot está pronto! + 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! Por favor, configure o Orbot antes de começar a usá-lo! + 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@guardianproject.info para saber mais. 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. Serviços Ocultos Geral @@ -89,16 +95,22 @@ Automaticamente iniciar o Orbot e conectar o Tor quando seu Android bootar. + 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. Aviso + 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. Permissões Você pode opcionalmente garantir ao Orbot acesso de \'Superusuário\' para habilitar recursos avançados, como um proxy transparente. Se você não quiser fazer isto, tenha certeza de usar apps feitas para trabalhar com o Orbot. + 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. Apps Orbot Habilitadas ChatSecure: app de chat seguro com criptografia Off-the-Record + Orfox: navegador de privacidade aprimorada que funciona através do Tor Encontre todos os aplicativos da Guardian Project no Google Play + Encontre todos os aplicativos da Guardian Project no F-Droid + Encontre todos os aplicativos da Guardian Project no https://f-droid.org Proxy Transparente Isto permite à suas apps automaticamente rodarem através da rede Tor sem nenhuma configuração. @@ -114,6 +126,9 @@ Nós de Entrada Impressões digitais, apelidos, países e endereços para a primeira etapa Insira os Nós de Entrada + Permitir estrelas em segundo plano + Todo o Proxy + Nenhum Proxy Inverter Sele Proxy de saída da rede (Opcional) Tipo de Proxy @@ -139,6 +154,7 @@ AVISO: erro ao iniciar o proxy transparente! Regras TransProxy limpas Não foi possível iniciar o processo Tor: + Polipo está rodando na porta: Configurando proxy transparente baseado em porta... Erro na Ponte Como condição para usar o recurso de ponte, você deve inserir pelo menos um endereço IP de ponte. @@ -190,24 +206,30 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ Polipo v1.1.9: https://github.com/jech/polipo IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org Uma app quer abrir a porta %S oculta do servidor para a rede Tor. Isto é seguro se você confia na app. procurando processos Tor existentes... Algo ruim aconteceu. Cheque o lo serviço oculto em: habilitar ler o nome do serviço oculto Habilitar iniciar o Tor: + Reinicie seu dispositivo, incapaz de resetar Tor! Usar tabelas de IP padrão: usar as tabelas ip binárias embutidas ao invés das tabelas do pacote Orbot Os binários Tor não estão disponíveis para serem instalados ou atualizados. Sempre manter o ícone na barra de tarefas quando o Orbot está conectado Notificações Sempre Ligadas + Mostrar notificação expandida com Tor país de saída e IP + Notificações Expandidas Pontes habilitadas! Idioma Escolha o local e idioma para o Orbot Escolha o Idioma Deixe o padrão ou troque o idioma atual + distribuído por Tor Salvar Configurações + Sem conexão na internet; Tor está na espera... Largura de banda: down up @@ -218,17 +240,46 @@ Usar ChatSecure Gerenciar Tor Habilitar este app a controlar o serviço Tor + Parece que você não tem o Orweb instalado. Quer ajuda com isso ou devemos apenas abrir o navegador? Instalar apps? + Sem conectividade na rede. Colocando o Tor para dormir... + Conectividade da rede está boa. Acordando Tor + atualizando configurações no serviço Tor + Tor SOCKS + Porta que Tor oferece seu proxy SOCKS (padrão: 9050 ou 0 para desativar) + Config da Porta SOCKS + Porta TransProxy Tor + Porta que Tor oferece seu Proxy Transparente no (padrão: 9040 ou 0 para desativar) + Config da Porta TransProxy + Porta DNS Tor + Porta que Tor oferece seu DNS no (padrão: 5400 ou 0 para desativar) + Config da Porta DNS + Config Personalizada do Torrc + Torrc Personalizado + Seus IPs Públicos do Tor: Conflito de aplicattivo + Transproxy FORÇAR REMOÇÃO + Você não tem acesso root ativado + Você pode precisar parar e iniciar Orbot para as configurações de mudar para ser ativado. VPN kbps mbps KB MB + Pontes Atualizadas + Por favor reinicie Orbot para habilitar as mundanças QR Codes + 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. + Modo Ponte Email Web Atvar + Modo Apps VPN + 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. Enviar Email + 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. + Instalar Orfox Navegador Padrão + NOTA: Apenas pontes Tor padrão funcionam em dispositivos Atom/Intel X86 + Mundo diff --git a/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml similarity index 91% rename from res/values-pt-rPT/strings.xml rename to app/src/main/res/values-pt-rPT/strings.xml index d580cae9..20ba24b2 100644 --- a/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbot diff --git a/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml similarity index 99% rename from res/values-pt/strings.xml rename to app/src/main/res/values-pt/strings.xml index a36ed0f4..69f7a770 100644 --- a/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml similarity index 96% rename from res/values-ro-rRO/strings.xml rename to app/src/main/res/values-ro-rRO/strings.xml index d0e466c0..f0ae485d 100644 --- a/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -1,4 +1,4 @@ - + Pagina de start Răsfoieşte diff --git a/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml similarity index 99% rename from res/values-ro/strings.xml rename to app/src/main/res/values-ro/strings.xml index 571f5122..01166b4f 100644 --- a/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-rs-rAR/strings.xml b/app/src/main/res/values-rs-rAR/strings.xml similarity index 98% rename from res/values-rs-rAR/strings.xml rename to app/src/main/res/values-rs-rAR/strings.xml index 0f876c9b..132b67e8 100644 --- a/res/values-rs-rAR/strings.xml +++ b/app/src/main/res/values-rs-rAR/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 00000000..94029fb0 --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + Orbot - это свободная программа для прокси-соединений, она позволяет другим приложениям более безопасно использовать интернет-соединение. Orbot использует Tor для шифрования интернет-трафика, который затем скрывается в ходе пересылки через несколько компьютеров в разных частях планеты. Tor является свободным программным приложением, а также открытой сетью, помогающей защититься от слежки в сетях, угрожающей личной свободе и частной жизни, конфиденциальным бизнес-деятельности и контактам, а также государственной программе безопасности, известной как анализ трафика. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Запуск и остановка Tor + torproxyservice + Запуск Orbot... + Подключён к сети Tor + Orbot отключён + Служба Tor выключается + Запускается клиент Tor... + завершено. + ожидание. + ПРЕДУПРЕЖДЕНИЕ: ваш трафик ещё не анонимен! Пожалуйста, настройте свои приложения на использование HTTP-прокси 127.0.0.1:8118 или же SOCKS4A или SOCKS5-прокси 127.0.0.1:9050 + Домашняя страница + Просмотр + Настройки + Журнал + Справка + VPN + Запустить + Остановить + О программе + Получить приложения... + Загрузка + Отправка + Справка + Закрыть + О программе + Очистить журнал + Проверка + Выход + Сканировать QR-код моста + Опубликовать QR-код моста + - долгое нажатие для запуска - + Прозрачный прокси (требуется root-доступ) + Прозрачный прокси + Автоматическая Tor-ификация приложений + Направлять всё через Tor + Направлять трафик всех приложений через Tor + Резервный порт прокси + ПРЕДУПРЕЖДЕНИЕ: обходит общие порты (80, 443, и т.д.). *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. + Список портов + Список портов для проксификации. *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. + Введите порты для проксификации + Запросить root-доступ + Запросить root-доступ для прозрачной проксификации + Программа Tor успешно установлена! + Не удалось установить программу Tor. Пожалуйста, проверьте системный журнал и сообщите нам: tor-assistants@torproject.org + Ошибка приложения + Orbot + Об Orbot + Вперёд + Назад + Завершить + OK + Отмена + + Некоторые сведения о программе Orbot + Orbot — это приложение с открытым исходным кодом, которое содержит Tor, LibEvent и Privoxy. Оно предоставляет локальный HTTP-прокси (8118) и SOCKS-прокси (9050) в сеть Tor. Orbot также позволяет на устройствах с правами root пересылать весь интернет-трафик через Tor. + Разрешение получено + Разрешения Orbot + Отлично! Мы определили, что вы предоставили root-права для Orbot. Мы будем использовать эту возможность с умом. + Хотя это и не требуется, Orbot может быть более мощным инструментом, если ваше устройство имеет права root. Нажмите на кнопку ниже и предоставьте Orbot супервозможности! + Если у вас нет root-прав или вы не имеете представления о чём мы говорим, просто убедитесь, что используете приложения, разработанные для Orbot. + Я понимаю и хочу продолжить без прав суперпользователя + Дать root-права Orbot + Настроить Tor-ификацию + Программа Orbot даёт вам возможность направлять трафик всех приложений через Tor ИЛИ выбрать приложения для перенаправления самостоятельно. + Направлять все приложения через Tor + Направлять выбранные приложения через Tor + Orbot-задействованные приложения + Мы советуем вам скачать и использовать приложения, которые умеют работать напрямую через Orbot. Нажмите на кнопки ниже, чтобы запустить процесс установки. + ChatSecure - защищённый обмен сообщениями в Android + Настройки прокси: узнайте, как настроить приложения для работы с Orbot + Приложение поисковой системы DuckDuckGo + Twitter поддерживает http-прокси \"localhost:8118\" + StoryMaker - напишите рассказ и оставьте его Tor для обеспечения безопасности! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Настройки прокси + Если используемое вами приложение для 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 + Orbot готов к использованию! + Миллионы людей во всём мире используют Tor по различным причинам. Журналисты и блоггеры, правозащитники, сотрудники правоохранительных органов, солдаты, корпорации, граждане стран с репрессивным режимом и просто обычные граждане..., а теперь готовы и вы! + Пожалуйста, настройте Orbot прежде чем приступить к использованию! + + Вы успешно подключились к сети Tor, но это НЕ значит, что ваше устройство безопасно. Вы можете воспользоваться функцией \'Проверка\' из меню, чтобы протестировать ваш браузер.\n\nПосетите наш сайт https://guardianproject.info/apps/orbot или отправьте письмо на адрес help@guardianproject.info, чтобы узнать больше. + Это приведёт к запуску браузера, выбранного на вашем устройстве по умолчанию, и подключению к сайту https://check.torproject.org с целью проверки правильности работы Orbot и определения, подключены ли вы к сети Tor. + Скрытые службы + Общие + Запускать Orbot при загрузке + Автоматически запускать Orbot и подключаться к сети Tor при загрузке вашего Android-устройства + + + Orbot позволяет использовать Tor на Android!\n\nTor позволяет вам защититься от фильтрации содержимого, анализа трафика и наблюдения за сетью, которые ставят под угрозу приватность, конфиденциальную информацию и личные отношения.\n\nЭтот мастер поможет вам настроить Orbot и Tor на вашем устройстве. + + Предупреждение + Сама по себе установка Orbot не сделает автоматически ваш мобильный трафик анонимным.\n\nВы должны правильно настроить Orbot, ваше устройство и другие приложения, что бы успешно использовать Tor. + + Разрешения + Вы так же можете по желанию дать Orbot права \'Суперпользователя\' для доступа к дополнительным возможностям типа прозрачной проксификации. + Если вы не хотите делать это, пожалуйста, удостоверьтесь, что используете приложения, созданные для работы с Orbot. + Похоже, ваше устройство не имеет root-прав и не предоставляет доступ \'Суперпользователя\'.\n\nЧтобы использовать Tor, вам надо использовать приложения, построенные для работы с Orbot или те, которые поддерживают использование HTTP или SOCKS-прокси. + + Приложения, работающие с Orbot: + ChatSecure: приложение для безопасной переписки с конфиденциальным шифрованием + Orfox: конфиденциальный браузер, работающий через Tor + Найти все приложения Guardian Project на Google Play + Найти все приложения Guardian Project на F-Droid + Найти все приложения Guardian Project на сайте https://f-droid.org + + Прозрачное проксирование + Это позволяет вашим приложениям автоматически работать по сети Tor без какого-либо конфигурирования. + (Отметьте данный пункт, если вы не знаете о чём идёт речь) + Нет + Тетеринг Tor + Включить прозрачную проксификацию Tor для устройств с тетерингом по Wi-Fi и USB (требуется перезапуск) + Запросить доступ Суперпользователя + Выбранные приложения + Выбрать приложения для направления через Tor + Конфигурация узла + Это дополнительные настройки, которые могут снизить вашу анонимность + Входные узлы + Отпечатки, псевдонимы, страны и адреса для первого прыжка + Введите входные узлы + Разрешить фоновую загрузку + Позволить любому приложению требовать от Orbot запускать Tor и относящиеся к нему сервисы + Проксировать всё + Не проксировать + Инвертировать выделенное + Исходящий сетевой прокси (необязательно) + Тип прокси + Протокол для использования прокси-сервером: HTTP, HTTPS, Socks4, Socks5 + Введите тип прокси + Хост прокси + Имя хоста прокси-сервера + Введите хост прокси + Порт прокси + Порт прокси-сервера + Введите порт прокси + Имя пользователя прокси + Имя пользователя прокси-сервера (необязательно) + Введите имя пользователя прокси + Пароль пользователя прокси + Пароль пользователя прокси-сервера (необязательно) + Введите пароль пользователя прокси + Статус + Установка общей прозрачной проксификации... + Установка основанной на приложениях прозрачной проксификации... + Прозрачная проксификация ВКЛЮЧЕНА + Прозрачный прокси поддерживает тетеринг! + ВНИМАНИЕ: ошибка запуска прозрачной проксификации! + Правила прозрачного прокси удалены + Невозможно запустить Tor: + Polipo работает на порту: + Установка основанной на портах прозрачной проксификации... + Ошибка моста + Для использования необходимо задать IP-адрес как минимум одного моста. + Отправьте письмо на адрес bridges@torproject.org со строкой \"get bridges\" в теле сообщения из учётной записи GMail. + Ошибка + Ваши настройки доступных адресов вызвали исключение! + Настройки вашего ретранслятора вызвали исключение! + Выходные узлы + Отпечатки, псевдонимы, страны и адреса для последнего прыжка + Введите выходные узлы + Исключённые узлы + Отпечатки, псевдонимы, страны и адреса на исключение + Введите исключённые узлы + Точные узлы + Использовать *только* эти заданные узлы + Мосты + Использовать мосты + Обфусцированные мосты + Включить альтернативные входные узлы в сеть Tor + Заданные мосты обфусцированы + IP-адреса и порты мостов + Введите адреса мостов + Ретрансляторы + Ретрансляция + Разрешить вашему устройству быть невыходным ретранслятором + Порт ретранслятора + Слушающий порт для вашего ретранслятора Tor + Введите порт OR + Имя ретранслятора + Имя для вашего ретранслятора Tor + Введите пользовательское имя ретранслятора + Доступные адреса + Запускать как клиент за межсетевым экраном с ограничивающими политиками + Доступные порты + Порты, доступные из-за ограничительного сетевого экрана + Введите порты + Включить скрытые службы + Запустить сервера, доступные через сеть Tor + Введите локальные порты для скрытых служб + Порты скрытой службы + Адресуемое имя для вашей скрытой службы (создаётся автоматически) + Включить вывод журнала отладки (требует использовать adb или aLogCat для просмотра) + Домашняя страница проекта: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Лицензия Tor + https://torproject.org + Программы сторонних разработчиков: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Приложение хочет открыть скрытый порт сервера %S сети Tor. Это безопасно, если вы доверяете данному приложению. + найден существующий процесс Tor... + Произошла какая-то ошибка. Проверьте журнал. + скрытая служба на: + невозможно прочитать имя скрытой службы + Невозможно запустить Tor: + Перезагрузите устройство, невозможно переустановить Tor! + Использовать Iptables по умолчанию + Использовать встроенный файл iptables вместо поставляемого с Orbot + Исполняемые файлы Tor не смогли установиться или обновится. + Всегда отображать иконку в панели задач когда Orbot подключен + Постоянное уведомление о работе + Показать расширенное уведомление Tor со страной выхода и IP + Расширенные уведомления + Мосты включены! + + Язык + Выбрать язык интерфейса для Orbot + Выбрать язык + Оставить по умолчанию или переключить текущий язык + основано на Tor + Сохранить настройки + Отсутствует подключение к интернету, Tor находится в режиме ожидания… + Канал: + к нам + от нас + Автозасыпание без сети + Переводить Tor в спящий режим при отсутствии интернета + Вы переключились на новый идентификатор Tor! + Проверить браузер + Использовать ChatSecure + Управление Tor + Разрешить приложению управлять сервисом Tor + Не похоже, что у вас установлен Orfox. Хотите справку на эту тему или просто открыть браузер? + Установить приложения? + Нет подключения к сети. Tor входит в режим сна... + Подключение к сети установлено. Tor просыпается... + обновление настроек в сервисе Tor + Tor SOCKS + Порт, на котором Tor предоставляет свой SOCKS-прокси (по умолчанию: 9050, 0 - для отключения) + Настройка порта SOCKS + Порт прозрачного прокси Tor + Порт, на котором Tor предоставляет свой прозрачный прокси (по умолчанию: 9040, 0 - для отключения) + Настройка порта прозрачного прокси + Порт DNS Tor + Порт, на котором Tor предоставляет свой DNS (по умолчанию: 5400, 0 - для отключения) + Настройка порта DNS + Пользовательские настройки Torrc + ТОЛЬКО ДЛЯ ЭКСПЕРТОВ: внесите настройки напрямую в строки файла конфигурации torrc + Пользовательские Torrc + Mobile Martus - приложение Benetech документация по правам человека + Ваши публичные IP-адреса Tor: + Пожалуйста, отключите эту программу в Android->Настройки->Приложения, если у вас возникли проблемы с Orbot: + Конфликт приложений + Автообновление прозрачного прокси + Повторно применить правила прозрачного прокси при изменении состояния сети + ПРИНУДИТЕЛЬНОЕ УДАЛЕНИЕ прозрачного прокси + Нажмите здесь, чтобы НЕМЕДЛЕННО очистить все сетевые правила прозрачного прокси + Правила прозрачного прокси удалены! + У вас не включён root-доступ + Возможно, потребуется остановить и запустить Orbot заново для подключения изменений настроек. + VPN + кбит/с + мбит/с + КБ + МБ + Мосты обновлены + Пожалуйста, перезапустите Orbot для вступления изменения в силу + QR-коды + Если ваша сеть мобильной связи активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из типов мостов выше, чтобы включить эту функцию. + Режим моста + Эл. почта + Сайт + Активация + VPN-режим приложений + Вы можете включить функцию перенаправления всех приложений на вашем устройстве через сеть Tor, используя функцию VPN в Android.\n\n* ПРЕДУПРЕЖДЕНИЕ * Это новая экспериментальная функция и в некоторых случаях может остановиться или не запуститься автоматически. Она не должна быть использована для анонимности, а ТОЛЬКО для прохождения фильтров и межсетевых экранов. + Отправить письмо + Вы можете получить адрес моста по электронной почте, с сайта или путём сканирования QR-кода. Выберите \"Эл. почта\" или \"Сайт\" ниже, чтобы запросить адрес моста.\n\nПолученный адрес скопируйте и вставьте его в разделе настроек Orbot \"Мосты\", после чего перезапустите приложение. + Установить Orfox + Стандартный браузер + ПРИМЕЧАНИЕ: только стандартные мосты Tor работают на устройствах Intel X86/Atom + Мир + diff --git a/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml similarity index 99% rename from res/values-si-rLK/strings.xml rename to app/src/main/res/values-si-rLK/strings.xml index 32a0f134..e4dc474e 100644 --- a/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml similarity index 63% rename from res/values-sk-rSK/strings.xml rename to app/src/main/res/values-sk-rSK/strings.xml index 13a4974f..b7578c49 100644 --- a/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -1,4 +1,4 @@ - + Pomocník Pomocník @@ -10,12 +10,6 @@ - - - - - diff --git a/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml similarity index 91% rename from res/values-sk/strings.xml rename to app/src/main/res/values-sk/strings.xml index 593b5acf..2f648ef5 100644 --- a/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -10,8 +10,7 @@ Orbot štartuje… Pripojený do Tor siete Orbot je deaktivovaný - Orbot sa vypína - Štartujem Tor klienta… + Štartujem Tor klienta... hotovo. čakám. 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 @@ -19,7 +18,6 @@ Prehliadať Nastavenia Pomocník - Apps O aplikácií Pomocník Zatvoriť diff --git a/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml similarity index 94% rename from res/values-sl/strings.xml rename to app/src/main/res/values-sl/strings.xml index 6c5756cd..1b8a4c6b 100644 --- a/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -7,11 +7,10 @@ https://check.torproject.org/?TorButton=true začni in ustavi Tor torproxyservice - Orbot se zaganja… + Orbot se zaganja... Povezan v omrežje Tor Orbot ni aktiviran - Orbot se zaustavlja - Zagon Tor klijenta… + Zagon Tor klijenta... končano. čakam. 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 @@ -20,11 +19,9 @@ Nastavitve Dnevnik Pomoč - Programi Začni Ustavi O programu - Čarovnik Prenesi Naloži Pomoč diff --git a/res/values-sn/strings.xml b/app/src/main/res/values-sn/strings.xml similarity index 95% rename from res/values-sn/strings.xml rename to app/src/main/res/values-sn/strings.xml index fdb4e7db..ad1cd1de 100644 --- a/res/values-sn/strings.xml +++ b/app/src/main/res/values-sn/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://check.torproject.org diff --git a/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml similarity index 96% rename from res/values-sq/strings.xml rename to app/src/main/res/values-sq/strings.xml index 19f4a4ca..5a7c9897 100644 --- a/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -1,4 +1,4 @@ - + Shpi Lundro diff --git a/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml similarity index 95% rename from res/values-sr/strings.xml rename to app/src/main/res/values-sr/strings.xml index 42484d68..b3cc7ed5 100644 --- a/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -1,12 +1,13 @@ - + Орбот + Орбот је бесплатна прокси апликација која даје моћ другим апликацијама да безбедније користе интернет. Орбот користи Тор за шифровање вашег интернет саобраћаја и онда га скрива слањем кроз низ рачунара широм света. Тор је слободан софтвер и отворена мрежа која помаже да се одбраните од разних облика надзора мрежа који угрожавају личну слободу и приватност, поверљиве пословне активности и личне односе и државне безбедности познате као анализа саобраћаја. http://orbot/ http://check.torproject.org https://check.torproject.org https://check.torproject.org/?TorButton=true покрени и заустави Tor - Тор прокси сервис + Тор прокси услуга Орбот се покреће... Повезан са Тор мрежом Орбот је деактивиран @@ -19,6 +20,7 @@ Подешавања Логови Помоћ + ВПН Крени Заустави О нама @@ -194,4 +196,5 @@ Изаберите језик Користи подразумевајући или пребаци на тренутни језик Сачувај подешавања + ВПН diff --git a/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml similarity index 98% rename from res/values-sv/strings.xml rename to app/src/main/res/values-sv/strings.xml index c8b27c07..5654a28f 100644 --- a/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -277,6 +277,7 @@ Bryggor uppdaterade Vänligen starta om Orbot för att aktivera ändringarna QR-koder + 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. Bryggläge E-post Webb diff --git a/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml similarity index 83% rename from res/values-ta/strings.xml rename to app/src/main/res/values-ta/strings.xml index 2961c0cc..5a24f449 100644 --- a/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -1,4 +1,4 @@ - + ஆர்பாட் ஆர்பாட், இன்னும பாதுகாப்பான முறையில் இணைய பயன்படுத்த மற்ற பயன்பாடுகள் பலப்படுத்துகிறார் என்று ஒரு இலவச ப்ராக்ஸி பயன்பாடு ஆகும். ஆர்பாட் உங்கள் இணைய போக்குவரத்து குறியாக்க தோர் பயன்படுத்துகிறது மற்றும் அதன் பின்னர் உலகம் முழுவதும் கணினிகள் ஒரு தொடர் மூலம் எதிர்க்கிறது அதை மறுத்தவர். தோர் இலவச மென்பொருள் மற்றும் நீங்கள் போக்குவரத்து பகுப்பாய்வு என்ற தனிப்பட்ட சுதந்திரம் மற்றும் தனியுரிமை, ரகசிய வணிக நடவடிக்கைகள் மற்றும் உறவுகள், மற்றும் மாநில பாதுகாப்பை அச்சுறுத்தும் நெட்வொர்க் கண்காணிப்பு வடிவ எதிராக பாதுகாக்க உதவுகிறது என்று ஒரு திறந்த நெட்வொர்க் ஆகும். @@ -11,7 +11,6 @@ ஆர்பாட் துவங்குகிறது... தோர் நெட்வொர்க் இணைக்கப்பட்ட ஆர்பாட் நிறுத்தப்பட்டது - Orbot நிறுத்தப்படுகிறது தோர் துவங்கப்படுகிறது... முடிந்தது. காத்திருக்கிறது @@ -21,11 +20,9 @@ அமைப்புகள் பதிவுகள் உதவி - ஆப்ஸ் துவங்கு நிறுத்து ஆர்பாட் பற்றி - வழிகாட்டி பதிவிறக்கு பதிவேற்று உதவி @@ -49,13 +46,23 @@ ஆர்பாட் பற்றிய தகவல் Orbot தோர், LibEvent மற்றும் Polipo கொண்டுள்ளது என்று ஒரு திறந்த மூல பயன்பாடு ஆகும். இது ஒரு local HTTP பதிலாள் (8118) மற்றும் தோர் நெட்வொர்க் ஒரு SOCKS ப்ராக்ஸி (9050) வழங்குகிறது. Orbot மேலும் தோர் மூலம் அனைத்து இணைய போக்குவரத்து அனுப்பும் திறனை, ROOTED சாதனத்தில் கொண்டிருக்கிறது. அனுமதி வழங்கப்பட்டது + டக் டக் கோ தேடுபொறி செயலி + பதிலாள் அமைப்புகள் + ஆர்பாட் தயாராக உள்ளது! + தயவு செய்து, ஆர்பாடை கட்மைத்த பின் பயன்படுத்தவும் + எச்சரிக்கை + அனுமதிகள் + ஆர்பாடுடன் செயல்படும் செயலிகள் + செயலிகளை தேர்ந்தெடு + பதிலாள் கடவுச்சொல் (கட்டாயமற்ற) + பதிலாள் கடவுச்சொல்லை உள்ளிடவும் + நிலை - ஆப்ஸ் diff --git a/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml similarity index 99% rename from res/values-th/strings.xml rename to app/src/main/res/values-th/strings.xml index efe4d5d7..81d5f0f1 100644 --- a/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ diff --git a/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml similarity index 51% rename from res/values-tl/strings.xml rename to app/src/main/res/values-tl/strings.xml index 1953ff3c..25b99db0 100644 --- a/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -10,7 +10,6 @@ Nagsisimula na ang Orbot… Konektado sa Tor network Naka-deactivate ang Orbot - Ang Orbot ay magsasara na Binubuksan ang Tor client… kumpleto na. nag-hihintay @@ -20,11 +19,10 @@ Settings Tala Tulong - Apps + VPN Simulan Ihinto Tungkol - Pantas Download Upload Tulong @@ -33,6 +31,7 @@ Linisin ang tala Tiyakin Labasan + Ipamahagi ang BridgeQR - pindutin ng matagal para mag umpisa - Nanganganinag na pag Po-proxy (Kailangan ang Root) Nanganganinag na pag Po-proxy @@ -58,6 +57,7 @@ Kanselahin Ilang detalye sa Orbot + 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. Napahintulotan na Pahintulot ng Orbot Mahusay! Natuklasan namin na mayroon pahintulot ang Orbot para sa root. Gagamitin namin ito ng mabuti. @@ -77,6 +77,7 @@ I-set ang Twitter proxy sa host \"localhost\" at port 8118 https://guardianproject.info/2012/05/02/orbot-your-twitter/ Proxy Settings + 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 Handa na ang Orbot! Bubuksan nito ang iyong browser sa https://check.torproject.org para matignan kung ang Orbot ay na-kompigura at konektado ka sa Tor. @@ -86,17 +87,22 @@ Kusang umpisahan ang Orbot at kumonekta sa Tor sa pag bukas ng iyong Android Device + 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. Babala + 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. Mga Pahintulot Maari mong piliin bigyan ng pahintulot ang Orbot ng \'Superuser\' access para ma-enable ang mga advanced features tulad ng Transparent Proxying. Kapag ayaw mo itong gawin, siguraduhing gumamit ng apps na ginawa upang gumana kasama ang Orbot. + 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. Orbot-Enabled Apps ChatSecure: Isang secure chat app na may Off-the-Record Encryption - Orweb: rivacy-enhanced browser na gumagana sa Tor + Orfox: Privacy-enhanced browser na gumagana sa pamamagitan ng Tor. Hanapin ang lahat ng Guardian Project apps sa Google Play + Hanapin ang lahat ng Guardian Project apps sa F-Droid + Hanapin ang lahat ng Guardian Project apps sa https://f-droid.org Transparent Proxying Ito ay bibigyan ng pahintulot ang iyong mga apps na kusang mag-run sa Tor network kahit walang pag-kompigura na ginawa. @@ -112,18 +118,37 @@ Entrance Nodes Fingerprints, nicks, mga bansa at mga address para sa unang lukso Pumasok sa Entrance Nodes + Pahintulutan na magsimula sa background + Hayaan ang kahit anong app na sabihin kay Orbot na magsimula ng Tor at anumang malapit na serbisyo. + Proxy All + Proxy None + Baliktarin ang napili Outbound Network Proxy (Optional) Outbound Proxy Type Mga protocol na gagamitin para sa proxy server: HTTP, HTTPS, Socks4, Socks5 Ilagay ang Proxy Type + Outbound Proxy Host + Proxy Server hostname Ilagay ang Proxy Host + Outbound Proxy + Proxy Server Port Ilagay ang Proxy port + Outbound Proxy Username + Proxy Username (Optional) + Ilagay ang Proxy Username + Outbound Proxy Password + Proxy Password (Optional) + Ilagay ang Proxy Password Katayuan + Isinasaayos ang kabuuang transparent proxying... + Isinasaayos ang app-based transparent proxying... Na i-enable na ang Transparent proxying Na i-enable na ang TransProxy para sa Thethering! BABALA: error sa pag start ng transparent proxying! Nalinis na ang mga batas ng TransProxy Hindi ma umpisahan ang proseso ng Tor: + Ang Polipo ay gumagana ngayon sa port: + Isinasaayos ang port-based transpaprent proxying... Error sa Bridge Para magamit ang feature ng bridge, kailangan mong mag lagay ng kahit isang bridge IP address. Magpadala ng email sa bridges@torproject.org na mayroong linyang \"get bridges\" at wala ng iba pang kasama sa katawa ng email gamit ang isang gmail account. @@ -135,5 +160,90 @@ Enter Exit Nodes Hindi kasama ang Nodes Fingerprints, nicks, mga bansa at mga address na hindi isasama + Enter Exclude Nodes + Strict Nodes + Gumamit ng *only* sa mga ispesipikong nodes + Bridges + Gumamit ng Bridges + Obfuscated Bridges + I-enable ang kahaliling entrance nodes sa Tor Network + I-enable kung ang naisaayos na bridges ay obfuscated bridges + IP address at port ng bridges + Ilagay ang Bridge Addresses + Relays + Relaying + I-enable ang iyong device na non-exit relay + Relay Port + Pinapakinggan ang port para sa iyong Tor relay + I-lagay ang OR port + Relay nickname + Ang nickname para sa iyong Tor relay + I-lagay ang pasadyang relay nickname + Reachable Addresses + Patakbuhin bilang kliente sa likod ng firewall na may istriktong polisiya + Reachable Ports + Ports reachable sa likod ng istriktong firewall + I-lagay ang ports + Nakatagong Service Hosting + pahintulutan sa on-device server na maging malalapitan sa pamamagitan ng Tor network + I-lagay ang localhost ports para sa nakatagong serbisyo + Tagong Service Ports + ang addressable na pangalan sa iyong tagong serbisyo (awtomatikong nabuo) + paganahiin ang debug log para sa output (kailangang gamitin ang adb o aLogCat para makita) + Project Home(s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + + Ang Tor License + https://torproject.org + 3rd-Party-Software: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + May app na gustong buksan ang nakatagong server port %S sa Tor network. Ito ay ligtas kung pinagkakatiwalaan ang app. + nakakita ng umiiral na Tor process... + May nangyaring masama. Tingnan ang log + nakatagong serbisyo sa: + hindi mabasa ang pangalan ng tagong serbisyo + Hindi masimulan ang Tor: + I-reboot ang iyong device, hindi ma-reset ang Tor! + Gumamit ng Default na Iptables + gamitin ang built-in iptables binary kaysa sa isang nabigkis kasama ng Orbot + Ang Tor binaries ay hindi ma-install o ma-upgrade. + Palaging panatilihin ang icon sa toolbar kapag ang Orbot ay naka-connect + Palaging i-On ang Notifications + Ipakita ang pinalaking notification kasama ng Tor exit country at IP + Pinalawak na Notifications + Bridges enabled! + Wika + Pumili ng locale at wika para sa Orbot + Pumili ng Wika + Iwanang default o palitan ang kasalukuyang wika + powered by Tor + I-Save ang Settings + Walang connection sa internet; Ang Tor ay naka-standby mode... + Bandwidth: + baba + taas + Walang Auto-Sleep sa Network + Ilagay ang Tor sa sleep kapag walang internet na pwede + Ikaw ay nagpalit ng bagong pagkakakilanlan sa Tor! + Browser + Gamitin ang ChatSecure + Manage Tor + VPN + kbps + mbps + KB + MB + Email + Web + Activate + Apps VPN Mode + Send Email + I-install ang Orfox + Standard Browser + Mundo diff --git a/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml similarity index 99% rename from res/values-tr/strings.xml rename to app/src/main/res/values-tr/strings.xml index 8958de8e..ac750255 100644 --- a/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml similarity index 99% rename from res/values-uk/strings.xml rename to app/src/main/res/values-uk/strings.xml index a57001dd..9672e2c2 100644 --- a/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbot — це вільна програма для проксі-з\'єднань, яка дозволяє іншим додаткам безпечніше використовувати інтернет-з\'єднання. Orbot використовує Tor для шифрування інтернет-трафіку, який далі приховується під час пересилання через кілька комп\'ютерів у різних частинах планети. Tor є вільним програмним забезпеченням, а також відкритою мережею, що допомагає захиститися від мережевого стеження, яке загрожує особистій свободі та приватному життю, конфіденційній бізнес-діяльності і контактам, а також державної програми безпеки, що відома як аналіз трафіку. diff --git a/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml similarity index 69% rename from res/values-ur/strings.xml rename to app/src/main/res/values-ur/strings.xml index c484ae7e..21abd16d 100644 --- a/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -1,4 +1,4 @@ - + براؤز کیجیے مدد @@ -13,12 +13,6 @@ - - - - - diff --git a/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml similarity index 95% rename from res/values-uz/strings.xml rename to app/src/main/res/values-uz/strings.xml index 0fe7e1f8..785d9672 100644 --- a/res/values-uz/strings.xml +++ b/app/src/main/res/values-uz/strings.xml @@ -1,4 +1,4 @@ - + Orbot http://orbot/ @@ -10,7 +10,6 @@ Uy Moslamalar Yordam - Dasturlar Dastur haqida Yuklab olish Yuklash @@ -40,7 +39,7 @@ Xato Tor litsenziyasi https://torproject.org - Mavjud bo\'lgan Tor jarayoni topildi… + Mavjud bo\'lgan Tor jarayoni topildi... Orbot uchun lokal va tilni tanlash Tilni tanlansh diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml new file mode 100644 index 00000000..6562b4eb --- /dev/null +++ b/app/src/main/res/values-vi/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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... + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + khởi động và ngừng Tor + dịch vụ tor proxy + Ortbot đang khởi động... + Đã kết nối với mạng Tor + Orbot đã được vô hiệu hóa + Đang tắt dịch vụ Tor + Bắt đầu Tor + hoàn thành. + đang chờ. + 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 + Trang chủ + Trình duyệt + Thiết lập + Nhật ký + Giúp đỡ + Mạng riêng ảo + Bắt đầu + Ngừng + Về + Các ứng dụng khác... + Tải về + Tải lên + Giúp đỡ + Đóng + Giới thiệu + Xóa nhật ký + Kiểm tra + Thoát + Quét mã BridgeQR + Xuất mã BridgeQR + - nhấn giữ để khởi động - + Proxy trong suốt (Yêu cầu root) + Proxy trong suốt + Tự động áp dụng Tor cho ứng dụng + Áp dụng Tor cho tất cả ứng dụng + Chuyển tất cả các kết nối của các ứng dụng qua Tor + Cổng Proxy dự phòng + 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. + Danh sách cổng + 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. + Điền số cổng để áp dụng proxy + Yêu cầu root + Yêu cầu root để kích hoạt proxy trong suốt + Tập nhị phân của Tor đã được cài đặt! + 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@torproject.org + Ứng dụng bị lỗi + Orbot + Về Orbot + Tiếp + Trở về + Kết thúc + Đồng ý + Hủy + + Vài chi tiết về Orbot + 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. + Đã cho phép quyền + Quyền truy cập của Orbot + 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. + 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\"! + 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. + Tôi hiểu rõ và sẽ tiếp tục dùng mà không cần root + Cho phép Orbot truy cập root + Cài đặt thông báo cho Tor + 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ẻ. + Áp dụng proxy Tor cho tất cả các ứng dụng + Lựa chọn từng ứng dụng để áp dụng Tor + Các ứng dụng đã được áp dụng Tor + 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. + ChatSecure - Ứng dụng IM (tin nhắn tức thời) bảo mật cho Android + Cài đặt Proxy - Tìm hiểu cách thiết lập ứng dụng để dùng với Orbot + Ứng dụng tìm kiếm DuckDuckGo + Cài proxy của Twitter với host là \"localhost\" và cổng là 8118 + StoryMaker - Viết một câu chuyện rồi để nó cho Tor để bảo mật! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Cài đặt proxy + 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 + Orbot đã sẵn sàng! + 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ọ! + Vui lòng thiết lập Orbot trước khi bạn sử dụng nó! + + 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@guardianproject.info để biết thêm chi tiết. + 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. + Dịch vụ web hosting ẩn + Tổng quát + Chạy Orbot khi khởi động thiết bị + 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 + + + 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. + + Cảnh báo + 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. + + Quyền ứng dụng + 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. + 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. + 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ế. + + Các ứng dụng đã được áp dụng Orbot + ChatSecure: ứng dụng chat an toàn với mã hóa không-theo-dõi + 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 + Tìm những ứng dụng của Guardian Project trên Google Play + Tìm những ứng dụng của Guardian Project trên F-Droid + Tìm những ứng dụng của Guardian Project trên https://f-droid.org + + Proxy trong suốt + 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. + (Hãy chọn ô này nếu bạn không hiểu những gì chúng tôi đang nói) + Không có + Tor Tethering + Kích hoạt proxy Tor trong suốt để dùng cho WiFi/USB Tethering (cần khởi động lại) + Yều cầu truy cập root + Chọn ứng dụng + Chọn những ứng dụng mà bạn muốn kết nối qua Tor + Cấu hình nút + Những cài đặt nâng cao này có thể giảm sự ẩn danh của bạn + Nút vào (Entrace Nodes) + Dấu theo dõi (Fingerprint), biệt hiệu, quốc gia và địa chỉ cho nút đầu tiên + Nhập thông tin nút vào + Cho phép khởi động ngầm + 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 + Proxy tất cả + Không dùng proxy + Đảo ngược lựa chọn + Proxy mạng ngõ ra (Outbound Network) (Tùy chọn) + Loại proxy ngõ ra + Giao thức dùng cho proxy: HTTP, HTTPS, SOCKS4, SOCKS5 + Nhập loại proxy + Host proxy ngõ ra + Hostname của proxy + Nhập host của proxy + Cổng Proxy ngõ ra + Cổng của proxy + Nhập cổng Proxy + Tên tài khoản proxy ngõ ra + Tên tài khoản proxy (tùy chọn) + Nhập tên tài khoản proxy + Mật khẩu Proxy ngõ ra + Mật khẩu proxy (tùy chọn) + Nhập mật khẩu proxy + Tình trạng + Đang cấu hình proxy trong suốt cho tất cả... + Đang cấu hình proxy trong suốt cho các ứng dụng được chọn... + Proxy trong suốt ĐƯỢC KÍCH HOẠT + TransProxy đã được kích hoạt để dùng cho tethering! + CHÚ Ý: có lỗi khi khởi động proxy trong suốt! + Quy tắc TransProxy đã được xóa + Không thể khởi động tiến trình Tor: + Polipo đang chạy ở cổng: + Đang cài đặt proxy trong suốt theo cổng + Lỗi bridge + Để 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. + Gửi một email đến bridges@torproject.org với dòng chữ \"get bridges\" trong thư từ một tài khoản gmail. + Lỗi + Thiết lập ReachableAddresses đã gây ra một vấn đề! + Thiết lập relay của bạn đã gây ra một vấn đề! + Nút cuối (Exit Nodes) + Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ cho nút cuối cùng + Nhập thông tin nút cuối + Loại trừ nút + Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ để loại trừ + Nhập vào những nút để loại trừ + Nút chỉ định + *Chỉ* dùng những nút được liệt kê + Bridge + Dùng bridge + Các bridge được che giấu + Kích hoạt các nút vào khác để vào mạng Tor + Kích hoạt nếu như các bridge đã được cấu hình là bridge đã được che giấu + Địa chỉ IP và cổng của bridge + Nhập địa chỉ bridge + Relay + Chức năng 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) + Cổng cho relay + Cổng tiếp nhận cho việc relay + Nhập cổng OR + Biệt hiệu nút relay + Biệt hiệu cho nút Tor-relay của bạn + Nhập biệt hiệu tuỳ ý + Địa chỉ truy cập được (Reachable Addresses) + 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 + Cổng truy cập được + Cổng truy cập được đằng sau tường lửa + Nhập số cổng + Host web ẩn + 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. + Nhập cổng localhost cho web ẩn + Cổng web ẩn + Địa chỉ hợp lệ cho web ẩn của bạn (được tự động tạo ra) + Kích hoạt nhật ký gỡ lỗi ở đầu ra (phải dùng adb hoặc aLogCat để xem) + Các trang chủ dự án: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Giấy phép của Tor + https://torproject.org + Phần mềm bên thứ 3: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + 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. + tìm ra tiến trình hiện hành của Tor... + Có gì đó không ổn. Xin xem lại nhật ký + web ẩn trong: + không thể đọc được tên dịch vụ ẩn + Không thể khởi động Tor được: + Khởi động lại thiết bị của bạn, không thể thiết đặt lại Tor! + Dùng Iptables mặc định + 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 + Tập nhị phân của Tor không thể cài hoặc nâng cấp được. + Luôn giữ thông báo trong thanh trạng thái khi Orbot được kết nối + Thông báo thường trực + 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) + Thông báo mở rộng + Bridge đã được kích hoạt! + + Ngôn ngữ + Chọn ngôn ngữ cho Orbot + Chọn ngôn ngữ + Giữ cài đặt mặc định hoặc chuyển qua ngôn ngữ khác + được hỗ trợ bởi Tor + Lưu thiết lập + Không có kết nối Internet; Tor đang ở chế độ chờ... + Băng thông: + tải xuống + tải lên + Tự động \"ngủ\" khi không có mạng + Chuyển Tor sang chế độ ngủ nếu không có Internet + Bạn đã chuyển sang một mạch Tor mới! + Trình duyệt + Dùng ChatSecure + Quản lý Tor + Cho phép ứng dụng này điều khiển dịch vụ Tor + 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? + Cài đặt ứng dụng? + Không có mạng. Đang chuyển Tor sang chế độ ngủ... + Kết nối mạng tốt. Đang \"đánh thức\" Tor... + đang cập nhật cài đặt dịch vụ Tor + Cổng SOCKS + Cổng để Tor đặt proxy SOCKS lên (mặc định: 9050 hoặc 0 để vô hiệu hóa) + Cấu hình cổng SOCKS + Cổng proxy trong suốt của Tor + Cổng để Tor đặt proxy trong suốt lên (mặc định: 9040 hoặc 0 để vô hiệu hóa) + Cấu hình cổng proxy trong suốt + Cổng DNS Tor + Cổng để Tor đặt DNS của nó lên (mặc định: 5400 hoặc 0 để vô hiệu hóa) + Cấu hình cổng DNS + Cấu hình tùy chỉnh cho Torrc + CHỈ NGƯỜI DÙNG CHUYÊN MÔN: nhập các thiết lập trực tiếp cho torrc + Torrc tùy chỉnh + Mobile Martus - Ứng dụng cung cấp các tài liệu về nhân quyền của Benetech + Các IP Tor công cộng của bạn là: + 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: + Xung đột ứng dụng + Tự động làm mới proxy trong suốt + Áp dụng lại các quy tắc proxy trong suốt khi trạng thái mạng thay đổi + ÉP BUỘC XÓA các quy tắc proxy trong suốt + Chạm vào đây để xóa sạch các quy tắc proxy trong suốt NGAY BÂY GIỜ + Quy tắc proxy trong suốt đã được xóa! + Bạn không có quyền truy cập ROOT + Bạn có thể cần kết nối lại Orbot để các thay đổi được áp dụng + VPN + kbps + mbps + KB + MB + Bridge được cập nhật + Vui lòng khởi động lại Orbot để áp dụng thay đổi + Mã QR + 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. + Chế độ bridge + Email + Web + Kích hoạt + Chế độ ứng dụng VPN + 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. + Gửi email + 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. + Cài đặt Orfox + Trình duyệt thường + LƯU Ý: Chỉ có bridge Tor chuẩn mới hoạt động trên các thiết bị Intel x86/Atom + Toàn cầu + diff --git a/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml similarity index 99% rename from res/values-zh-rCN/strings.xml rename to app/src/main/res/values-zh-rCN/strings.xml index fdfe180f..e050c23f 100644 --- a/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,4 +1,4 @@ - + Orbot Orbot 是一款免费的代理应用,能够让其他应用更安全地使用互联网。通过在位于世界各地的一系列计算机之间进行跳转,Orbot 可利用 Tor 对网络通信进行加密并隐藏。Tor 是一款免费的软件,并且是一个开放的网络。它可以保护用户免受流量分析的危害,这种网络监控可对个人自由与隐私、商业机密活动和关系以及国家安全造成威胁。 diff --git a/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml similarity index 59% rename from res/values-zh-rTW/strings.xml rename to app/src/main/res/values-zh-rTW/strings.xml index 31b055f2..b255c75c 100644 --- a/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1,8 +1,8 @@ - + Orbot - Orbot是一款強力而免費的proxy應用程式用來保護其他應用的上網安全。 -orbot使用tor + Orbot是一款免費的網絡代理應用程式,用來保護其他應用程式的上網安全。 +Orbot使用Tor在全球一系列的電腦間跳躍,以便隱藏網路流量並加密。Tor是個免費軟體也是個開放網路,能幫您抵禦流量分析。它是某一種網路監控,牽涉到個人的自由與隱私、商業部分的機密關係和活動、甚至國家安全。 http://orbot/ http://check.torproject.org https://check.torproject.org @@ -10,9 +10,9 @@ orbot使用tor 開始和停止 Tor tor 代理服務 Orbot 正在啟動中... - 連接至 Tor 網路 + 已連線至 Tor 網路 Orbot 已停用 - Orbot 已關閉 + Tor服務 正在關閉 啟動Tor 用戶端... 完成。 等待。 @@ -22,11 +22,11 @@ orbot使用tor 設定 記錄檔 說明 - 應用程式 + VPN 開始 停止 關於 - 精靈 + 取得應用程式… 下載 上傳 說明 @@ -35,13 +35,16 @@ orbot使用tor 清除記錄檔 檢查 離開 + 掃描連接橋QR + 分享連接橋QR - 請長按以開始 - 通透式代理伺服器(需要 Root) 通透式代理伺服器 自動啟動 Tor於應用程式 Tor Everything - 所有應用程式皆通過Tor 代理伺服器 - 返回代理伺服器連接埠 + 所有應用程式皆透過Tor 代理伺服器 + 備用連接埠代理 + 警告: 避免常用的埠口(80、443等等)。在「所有」或是「App」模式都失效的時候*才使用*。 埠清單 輸入代理埠 請求 Root 存取權 @@ -52,13 +55,16 @@ orbot使用tor 關於 Orbot 前進 返回 + 結束 + 確定 取消 Orbot 的一些詳細資料 - 已取得許可權 - Orbot 許可權 + Orbot是個開源的應用程式,包含了Tor,LibEvent和Polipo。它提供了本地HTTP代理 (8118)和SOCKS代理 (9050)以進入Tor網路。Orbot也能夠在已Root的裝置上,以Tor傳送所有的網路流量。 + 已取得權限 + Orbot 權限 組態 Tor 網路 - 所有應用程式都通過 Tor 代理 + 所有應用程式都透過 Tor 代理 DuckDuckGo 搜尋引擎應用程式 https://guardianproject.info/2012/05/02/orbot-your-twitter/ 代理伺服器設定 @@ -70,20 +76,41 @@ orbot使用tor 警告 - 許可權 + 權限 在 Google Play 尋找所有的 Guardian Project 應用程式 通透式代理 選擇應用程式 + 反向選擇 狀態 錯誤 輸入埠 專案首頁: + https://torproject.org + 第三方軟體: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + 語言 選擇語言 儲存設定 + 瀏覽器 + 管理 Tor 安裝應用程式? - 應用程式 + Tor SOCKS + Tor DNS 埠 + VPN + kbps + mbps + KB + MB + QR 碼 + 寄送電子信件 + 標準版瀏覽器 + 世界 diff --git a/res/values/arrays.xml b/app/src/main/res/values/arrays.xml similarity index 100% rename from res/values/arrays.xml rename to app/src/main/res/values/arrays.xml diff --git a/res/values/colors.xml b/app/src/main/res/values/colors.xml similarity index 100% rename from res/values/colors.xml rename to app/src/main/res/values/colors.xml diff --git a/res/values/dimens.xml b/app/src/main/res/values/dimens.xml similarity index 100% rename from res/values/dimens.xml rename to app/src/main/res/values/dimens.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..bef8abe7 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,339 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + start and stop Tor + torproxyservice + Orbot is starting… + Connected to the Tor network + Orbot is deactivated + TorService is shutting down + Starting Tor client… + complete. + waiting. + 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 + Home + Browse + Settings + Log + Help + VPN + Start + Stop + About + Get apps… + Download + Upload + Help + Close + About + Clear Log + Check + Exit + Scan BridgeQR + Share BridgeQR + - long press to start - + Transparent Proxying (Requires Root) + Transparent Proxying + Automatic Torifying of Apps + Tor Everything + Proxy traffic for all apps through Tor + Port Proxy Fallback + WARNING: Circumvents common ports (80, 443, etc). *USE ONLY* if \'All\' or \'App\' mode doesn\'t work. + Port List + List of ports to proxy. *USE ONLY* if \'All\' or \'App\' mode doesn\'t work + Enter ports to proxy + Request Root Access + Request root access for transparent proxying + Tor binaries successfully installed! + The Tor binary files were unable to be installed. Please check the log and notify tor-assistants@torproject.org + Application Error + Orbot + About Orbot + Next + Back + Finish + Okay + Cancel + + Some Orbot Details + 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. + Permission Granted + Orbot Permissions + Excellent! We\'ve detected that you have root permissions enabled for Orbot. We will use this power wisely. + 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! + 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. + I understand and would like to continue without Superuser + Grant Root for Orbot + Configure Torification + Orbot gives you the option to route all application traffic through Tor OR to choose your applications individually. + Proxy All Apps Through Tor + Select Individual Apps for Tor + Orbot-enabled Apps + 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. + ChatSecure - Secure instant messaging client for Android + Proxy Settings - Learn how to configure apps to work with Orbot + DuckDuckGo Search Engine app + Set Twitter proxy to host \"localhost\" and port 8118 + StoryMaker - Make a story and leave it to tor for security! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy Settings + 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 + Orbot is ready! + 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! + Please configure Orbot before you can start using it! + + 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@guardianproject.info to learn more. + 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. + Hidden Service Hosting + General + Start Orbot on Boot + Automatically start Orbot and connect Tor when your Android device boots + + + 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. + + Warning + 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. + + Permissions + You can optionally grant Orbot \'Superuser\' access to enable advanced features, such as Transparent Proxying. + If you do not want to do this, please make sure to use apps made to work with Orbot + 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. + + Orbot-Enabled Apps + ChatSecure: Secure chat app with Off-the-Record Encryption + Orfox: Privacy-enhanced browser that works through Tor + Find all Guardian Project apps on Google Play + Find all Guardian Project apps on F-Droid + Find all Guardian Project apps on https://f-droid.org + + Transparent Proxying + This allows your apps to automatically run through the Tor network without any configuration. + (Check this box if you have no idea what we are talking about) + None + Tor Tethering + Enable Tor Transparent Proxying for Wifi and USB Tethered Devices (requires restart) + Request Superuser Access + Select Apps + Choose Apps to Route Through Tor + Node Configuration + These are advanced settings that can reduce your anonymity + Entrance Nodes + Fingerprints, nicks, countries and addresses for the first hop + Enter Entrance Nodes + Allow Background Starts + Let any app tell Orbot to start Tor and related services + + Proxy All + Proxy None + Invert Selection + + Outbound Network Proxy (Optional) + + Outbound Proxy Type + Protocol to use for proxy server: HTTP, HTTPS, Socks4, Socks5 + Enter Proxy Type + + Outbound Proxy Host + Proxy Server hostname + Enter Proxy Host + + Outbound Proxy Port + Proxy Server port + Enter Proxy port + + Outbound Proxy Username + Proxy Username (Optional) + Enter Proxy Username + + Outbound Proxy Password + Proxy Password (Optional) + Enter Proxy Password + + + + Status + Setting up full transparent proxying… + Setting up app-based transparent proxying… + Transparent proxying ENABLED + TransProxy enabled for Tethering! + WARNING: error starting transparent proxying! + TransProxy rules cleared + Couldn\'t start Tor process: + Polipo is running on port: + Setting up port-based transparent proxying… + Bridge Error + In order to use the bridge feature, you must enter at least one bridge IP address. + Send an email to bridges@torproject.org with the line \"get bridges\" by itself in the body of the mail from a gmail account. + Error + Your ReachableAddresses settings caused an exception! + Your relay settings caused an exception! + Exit Nodes + Fingerprints, nicks, countries and addresses for the last hop + Enter Exit Nodes + Exclude Nodes + Fingerprints, nicks, countries and addresses to exclude + Enter Exclude Nodes + Strict Nodes + Use *only* these specified nodes + Bridges + Use Bridges + Obfuscated Bridges + Enable alternate entrance nodes into the Tor Network + Enable if configured bridges are obfuscated bridges + IP address and port of bridges + Enter Bridge Addresses + Relays + Relaying + Enable your device to be a non-exit relay + Relay Port + Listening port for your Tor relay + Enter OR port + Relay nickname + The nickname for your Tor relay + Enter a custom relay nickname + Reachable Addresses + Run as a client behind a firewall with restrictive policies + Reachable ports + Ports reachable behind a restrictive firewall + Enter ports + Hidden Service Hosting + allow on-device server to be accessible via the Tor network + enter localhost ports for hidden services + Hidden Service Ports + the addressable name for your hidden service (generated automatically) + enable debug log to output (must use adb or aLogCat to view) + Project Home(s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + The Tor License + https://torproject.org + 3rd-Party-Software: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + An app wants to open hidden server port %S to the Tor network. This is safe if you trust the app. + found existing Tor process… + Something bad happened. Check the log + hidden service on: + unable to read hidden service name + Unable to start Tor: + Reboot your device, unable to reset Tor! + Use Default Iptables + use the built-in iptables binary instead of the one bundled with Orbot + + The Tor binaries were not able to be installed or upgraded. + + Always keep the icon in toolbar when Orbot is connected + Always-On Notifications + + Show expanded notification with Tor exit country and IP + Expanded Notifications + + Bridges enabled! + + Language + Choose the locale and language for Orbot + Choose Language + Leave default or switch the current language + powered by Tor + Save Settings + No internet connection; Tor is on standby… + Bandwidth: + down + up + No Network Auto-Sleep + Put Tor to sleep when there is no internet available + You\'ve switched to a new Tor identity! + + Browser + Use ChatSecure + + Manage Tor + Enable this app to control the Tor service + It doesn\'t seem like you have Orfox installed. Want help with that, or should we just open the browser? + Install apps? + No network connectivity. Putting Tor to sleep… + Network connectivity is good. Waking Tor up… + updating settings in Tor service + + Tor SOCKS + Port that Tor offers its SOCKS proxy on (default: 9050 or 0 to disable) + SOCKS Port Config + + Tor TransProxy Port + Port that Tor offers its Transparent Proxy on (default: 9040 or 0 to disable) + TransProxy Port Config + + + Tor DNS Port + Port that Tor offers its DNS on (default: 5400 or 0 to disable) + DNS Port Config + + + Torrc Custom Config + EXPERTS ONLY: enter direct torrc config lines + Custom Torrc + + Mobile Martus - Benetech Human Rights Documentation App + Your Tor Public IPs: + "Please disable this app in Android->Settings->Apps if you are having problems with Orbot: " + App Conflict + + + Transproxy Auto-Refresh + Re-apply Transproxy rules when the network state changes + + Transproxy FORCE REMOVE + Tap here to flush all transproxy network rules NOW + Transparent proxy rules flushed! + You do not have ROOT access enabled + You may need to stop and start Orbot for settings change to be enabled. + + Apps + + kbps + + mbps + + KB + + MB + + Bridges Updated + + Please restart Orbot to enable the changes + + QR Codes + + 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. + + Bridge Mode + + Email + Web + + Activate + + Apps VPN Mode + + 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. + + Send Email + + 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. + + Install Orfox + + Standard Browser + + NOTE: Only standard Tor bridges work on Intel X86/ATOM devices + + World + diff --git a/res/values/styles.xml b/app/src/main/res/values/styles.xml similarity index 100% rename from res/values/styles.xml rename to app/src/main/res/values/styles.xml diff --git a/res/values/theme.xml b/app/src/main/res/values/theme.xml similarity index 100% rename from res/values/theme.xml rename to app/src/main/res/values/theme.xml diff --git a/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml similarity index 100% rename from res/xml/preferences.xml rename to app/src/main/res/xml/preferences.xml diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..856d3d7f --- /dev/null +++ b/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.1.0' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/description/bs.xlf b/description/bs.xlf new file mode 100644 index 00000000..49f6f0de --- /dev/null +++ b/description/bs.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/cs.xlf b/description/cs.xlf new file mode 100644 index 00000000..768e94a5 --- /dev/null +++ b/description/cs.xlf @@ -0,0 +1,86 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/de.xlf b/description/de.xlf index e4080626..917f8018 100644 --- a/description/de.xlf +++ b/description/de.xlf @@ -11,16 +11,16 @@ Protect your privacy with this proxy with Tor - Schützen Sie Ihre Privatsphäre mit diesem Proxys mit Tor + Schützen Sie Ihre Privatsphäre mit diesem Proxy ins Tor-Netzwerk This is limited by Google to 80 characters 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. - Orbot ist eine freie Proxy-Anwendung, mithilfe derer andere Anwendung das Internet sicherer nutzen können. Orbot nutzt Tor, um Ihren Internetverkehr zu verschlüsseln und zu verstecken, indem er über eine Reihe weltweit verteilter Computer geleitet wird. Tor ist ein freies Programm und ein offenes Netzwerk, dass Ihnen dabei hilft, sich vor Angriffen auf die persönliche Freiheit, die Privatsphäre und vertraulichen Geschäftsbeziehungen sowie vor staatlicher Datenverkehrsanalyse des Internetverkehrs zu schützen. + 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 dabei hilft, sich vor jeder Form der Datenüberwachung zu schützen, die Ihre persönliche Freiheit, Privatsphäre oder vertrauliche Geschäftsbeziehungen bedrohen, sowie sich gegen die Datenauswertung aus Staatssicherheitsgründen zu wehren. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. - Orbot ist die einzige Anwendung, die eine wirklich vertrauliche Internetverbindung herstellt. Die New York Times schreibt dazu: »Wenn Verbindungen über Tor eintreffen, weiss man nie von wem oder woher sie kommt.« Tor erhielt 2012 den Electronic Frontier Foundation (EFF) Pioneer Award. + Orbot ist die einzige Anwendung, die eine wirklich vertrauliche Internetverbindung herstellt. Die New York Times schreibt dazu: »Wenn eine Kommunikation über Tor eintrifft, weiß man nie von wem oder woher sie stammen.« Tor erhielt 2012 den Electronic Frontier Foundation (EFF) Pioneer Award. ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -71,7 +71,7 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow - ★ ÜBER UNS: Guardian Project ist eine Entwickler-Gruppe, die sichere, mobile Anwendung und quelloffenen Code für eine bessere Zukunft erstellen + ★ ÜBER UNS: Guardian Project ist eine Gruppe von Entwicklern, die sichere, mobile Anwendungen und quelloffenen Code für eine bessere Zukunft erstellen ★ OUR WEBSITE: https://GuardianProject.info diff --git a/description/el.xlf b/description/el.xlf new file mode 100644 index 00000000..409befe7 --- /dev/null +++ b/description/el.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/en-rGB.xlf b/description/en-rGB.xlf new file mode 100644 index 00000000..4106a7da --- /dev/null +++ b/description/en-rGB.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/fr.xlf b/description/fr.xlf index 85f9e67e..ff23457d 100644 --- a/description/fr.xlf +++ b/description/fr.xlf @@ -6,17 +6,21 @@ Orbot + Orbot This is limited by Google to 30 characters Protect your privacy with this proxy with Tor + Protégez votre vie privée avec ce proxy avec Tor This is limited by Google to 80 characters 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. + 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. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + Orbot est la seule application qui crée une connexion à Internet réellement privée. Pour citer le New York Times : "Quand une communication arrive par Tor, on ne peut jamais savoir d'où, ou de qui elle vient." Tor a gagné le Pioneer Award 2012 de l'Electronic Frontier Foundation (EFF). ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -37,48 +41,62 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** + ***Mode Root Expert*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + MODE UNIVERSEL : Orbot peut être configuré pour faire passer tout votre trafic Internet de manière transparente par Tor. Vous pouvez également choisir quelles applications en particulier vous voulez faire transiter par Tor. ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + ★ NOUS PARLONS VOTRE LANGUE : Orbot est disponible pour les amis qui parlent : العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) Do not translate the names of the languages, leave them just like this. Don’t see your language? Join us and help translate the app: + Vous ne voyez pas votre langue ? Rejoignez nous et aidez nous à traduire cette application : https://www.transifex.com/projects/p/orbot + https://www.transifex.com/projects/p/orbot Do not translate this. ***Learn More*** + ***En savoir plus*** ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + ★ A PROPOS DE NOUS : Guardian Project est un groupe de développeurs qui créé des applications mobile sécursées et des codes open-source pour un futur meilleur ★ OUR WEBSITE: https://GuardianProject.info + ★ NOTRE SITE WEB : https://GuardianProject.info ★ ABOUT TOR: https://TorProject.org + ★ A PROPOS DE TOR : https://TorProject.org ★ ON TWITTER: https://twitter.com/guardianproject + ★ SUR TWITTER : https://twitter.com/guardianproject ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + ★ LOGICIEL GRATUIT : Orbot est un logiciel gratuit. Regardez le our code source, ou rejoignez la communauté pour le rendre meilleur : https://gitweb.torproject.org/orbot.git + https://gitweb.torproject.org/orbot.git Do not translate this. ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + ★ CONTACTEZ NOUS : Est-ce que votre fonctionnalité favorite manque ? Vous avez trouvé un bug ennuyant ? Veuillez nous le dire ! Nous adorerions vous entendre. Envoyez nous un email : support@guardianproject.info ou trouvez nous dans notre salle de discussion : https://guardianproject.info/contact diff --git a/description/gl.xlf b/description/gl.xlf index f073c57b..e71949a3 100644 --- a/description/gl.xlf +++ b/description/gl.xlf @@ -10,10 +10,12 @@
Protect your privacy with this proxy with Tor + Protexe a túa privacidade con iste proxy con Tor This is limited by Google to 80 characters 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. + 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. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. diff --git a/description/gu-rIN.xlf b/description/gu-rIN.xlf new file mode 100644 index 00000000..47382298 --- /dev/null +++ b/description/gu-rIN.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/gu.xlf b/description/gu.xlf new file mode 100644 index 00000000..c64b8bbd --- /dev/null +++ b/description/gu.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/hi.xlf b/description/hi.xlf index 41449e40..3d09cf6e 100644 --- a/description/hi.xlf +++ b/description/hi.xlf @@ -6,14 +6,17 @@ Orbot + Orbot This is limited by Google to 30 characters Protect your privacy with this proxy with Tor + टौर प्रॉक्सी के साथ अपनीक एकांत की रक्षा करो. This is limited by Google to 80 characters 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. + औरबौट एक मुफ्त अैप Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. diff --git a/description/hr-rHR.xlf b/description/hr-rHR.xlf new file mode 100644 index 00000000..10c6923a --- /dev/null +++ b/description/hr-rHR.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/in.xlf b/description/in.xlf index b01b029f..43587ce5 100644 --- a/description/in.xlf +++ b/description/in.xlf @@ -6,6 +6,7 @@ Orbot + Orbot This is limited by Google to 30 characters @@ -14,6 +15,7 @@ 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. + 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. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. diff --git a/description/ky.xlf b/description/ky.xlf new file mode 100644 index 00000000..995b3433 --- /dev/null +++ b/description/ky.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/ms.xlf b/description/ms.xlf new file mode 100644 index 00000000..4bc1143b --- /dev/null +++ b/description/ms.xlf @@ -0,0 +1,86 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/pa.xlf b/description/pa.xlf new file mode 100644 index 00000000..96cd401e --- /dev/null +++ b/description/pa.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/pt-rBR.xlf b/description/pt-rBR.xlf index e5e7f2e0..4bc421ab 100644 --- a/description/pt-rBR.xlf +++ b/description/pt-rBR.xlf @@ -11,6 +11,7 @@
Protect your privacy with this proxy with Tor + Proteja sua privacidade com este Tor proxy This is limited by Google to 80 characters @@ -19,6 +20,7 @@ Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + Orbot é o único aplicativo que cria uma conexão verdadeiramente privada com a internet. Como o New York Times descreveu: "Quando uma comunicação chega a partir da rede Tor, você pode nunca saber de onde ou de quem veio." Tor ganhou em 2012 o prêmio Electronic Frontier Foundation (EFF) Pioneer Award. ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -39,6 +41,7 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** + ***Modo Especialista Root*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. diff --git a/description/ru.xlf b/description/ru.xlf index 75c11949..71d5547d 100644 --- a/description/ru.xlf +++ b/description/ru.xlf @@ -11,16 +11,16 @@ Protect your privacy with this proxy with Tor - Защитите вашу частную жизнь с этой прокси Tor + Защитите вашу частную жизнь с Tor-прокси This is limited by Google to 80 characters 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. - Orbot это бесплатное прокси приложение, которое позволяет другим приложениям безопаснее пользоваться Интернетом. Orbot использует Tor для шифрования вашего интернет-трафика, а затем прячет его перенаправливая через многочисленные компьютеры по всему миру. Тор является свободным программным обеспечением и открытой сетью, которая помогает вам защититься от сетевого надзора, угрожющий персональной свободе и приватности, конфиденциальности бизнес контактов и связей, а также общегосударственной безопасности, известный как анализ трафика. + Orbot — это бесплатное прокси-приложение, которое позволяет другим приложениям безопаснее пользоваться интернетом. Orbot использует Tor для шифрования вашего интернет-трафика, а затем прячет его, перенаправляя через многочисленные компьютеры по всему миру. Тор является свободным программным обеспечением и открытой сетью, которая помогает вам защититься от сетевого надзора, угрожающего персональной свободе и приватности, конфиденциальности бизнес-контактов и связей, а также общегосударственной безопасности, известной как анализ трафика. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. - Orbot это единственное приложение, которое по-настоящему создает личное подключение к интернету. Как пишет New York Times, "когда сообщение поступает от Tor, вы никогда не можете знать, где и от кого оно." Тор выиграл 2012 Electronic Frontier Foundation (EFF) Pioneer премию. + Orbot — это единственное приложение, которое по настоящему создаёт приватное подключение к интернету. Как пишет New York Times, "когда сообщение поступает от Tor, вы никогда не можете знать, где и от кого оно." Tor получил премию 2012 Electronic Frontier Foundation (EFF) Pioneer. ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -41,15 +41,15 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** - *** Режим Эксперт Рутинг*** + *** Root-режим для экспертов*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. - УГИВЕРСАЛЬНЫЙ РЕЖИМ: Orbot может быть сконфигурирован для прозрачной прокси на весь ваш интернет-трафика через Tor. Вы также можете выбрать, какие конкретные приложения вы хотите использовать через Tor. + УНИВЕРСАЛЬНЫЙ РЕЖИМ: Orbot может быть настроен для прозрачного перенаправления всего вашего интернет-трафика через Tor. Вы также можете выбрать, какие конкретные приложения вы хотите направлять через Tor. ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: - ★ МЫ ГОВОРОИМ НА ВАШЕМ ЯЗЫКЕ: Orbot доступен для друзей, которые говорят на: + ★ МЫ ГОВОРИМ НА ВАШЕМ ЯЗЫКЕ: Orbot доступен для друзей, которые говорят на: العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) @@ -67,11 +67,11 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Learn More*** - ***Узнать Больше*** + ***Узнать больше*** ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow - ★ О НАС: Guardian Project это группа разработчиков, которые создают безопасные мобильные приложения и открытый исходный код для лучшего будущего + ★ О НАС: Guardian Project — это группа разработчиков, которые создают безопасные мобильные приложения и открытый исходный код для лучшего будущего ★ OUR WEBSITE: https://GuardianProject.info @@ -83,11 +83,11 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ★ ON TWITTER: https://twitter.com/guardianproject - ★ В Твиттере: https://twitter.com/guardianproject + ★ В TWITTER: https://twitter.com/guardianproject ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: - ★БЕСПЛАТНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: Orbot это свободное программное обеспечение. Взгляните на наш исходный код или присоединиться к сообществу, чтобы его улучщить: + ★БЕСПЛАТНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: Orbot — это свободное программное обеспечение. Взгляните на наш исходный код или присоединиться к сообществу, чтобы его улучшить: https://gitweb.torproject.org/orbot.git @@ -96,7 +96,7 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact - ★ПИШИТЕ НАМ: У нас нет вашей любимой функции? Обнаружили ошибку? Пожалуйста сообщите нам! Мы хотим от вас услышать. Отправите письмо: support@guardianproject.info или найдите нас в чате https://guardianproject.info/contact + ★ ПИШИТЕ НАМ: У нас нет вашей любимой функции? Обнаружили ошибку? Пожалуйста, сообщите нам! Мы хотим вас услышать. Отправите письмо: support@guardianproject.info или найдите нас в чате https://guardianproject.info/contact diff --git a/description/sk-rSK.xlf b/description/sk-rSK.xlf new file mode 100644 index 00000000..ec4faeca --- /dev/null +++ b/description/sk-rSK.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/sr.xlf b/description/sr.xlf index 794cb411..c85906b3 100644 --- a/description/sr.xlf +++ b/description/sr.xlf @@ -6,18 +6,21 @@ Orbot + Орбот This is limited by Google to 30 characters Protect your privacy with this proxy with Tor - Zaštitite svoju privatnost ovim proksijem sa Tor-om + Заштитите вашу приватност овим проксијем помоћу Тора This is limited by Google to 80 characters 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. + Орбот је бесплатна прокси апликација која даје моћ другим апликацијама да безбедније користе интернет. Орбот користи Тор за шифровање вашег интернет саобраћаја и онда га скрива слањем кроз низ рачунара широм света. Тор је слободан софтвер и отворена мрежа која помаже да се одбраните од разних облика надзора мрежа који угрожавају личну слободу и приватност, поверљиве пословне активности и личне односе и државне безбедности познате као анализа саобраћаја. Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + Орбот је једина апликација која прави истински приватну везу са интернетом. Како Нјујорк Тајмс магазин пише: „када комуникација дође са Тор мреже, никада не можете да будете сигурни одакле или од кога је.“ Тор је добио пионир награду Електронске граничне фондације (ЕFF) 2012. године. ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -38,55 +41,62 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** + ***Корени режим за стручњаке*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + УНИВЕРЗАЛНИ РЕЖИМ: Орбот може да се подеси да транспарентно шаље кроз прокси сав ваш интернет саобраћај. Можете и да изаберете одређене апликације које желите да користите кроз Тор мрежу. ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: - MI GOVORIMO TVOJIM JEZIKOM: Orbot je dostupan prijateljima koji govore: + ★ МИ ГОВОРИМО ВАШИМ ЈЕЗИКОМ: Орбот је доступан за пријатеље који говоре: العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) Do not translate the names of the languages, leave them just like this. Don’t see your language? Join us and help translate the app: - Ne vidiš svoj jezik na listi? Pridruzi nam se i pomozi da prevedemo aplikaciju: + Не видите ваш језик на списку? Придружите нам се помозите да преведемо апликацију: https://www.transifex.com/projects/p/orbot + https://www.transifex.com/projects/p/orbot Do not translate this. ***Learn More*** - *** Nauči više *** + *** Сазнајте више *** ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + ★ О НАМА: Гардијан пројекат (Guardian Project) је група програмера који праве безбедне мобилне апликације отвореног кôда за боље сутра ★ OUR WEBSITE: https://GuardianProject.info - NAŠ VEB SAJT: https://GuardianProject.info + ★ НАШ ВЕБСАЈТ: https://GuardianProject.info ★ ABOUT TOR: https://TorProject.org - INFORMACIJE O TORU: https://TorProject.org + ★ О ТОРУ: https://TorProject.org ★ ON TWITTER: https://twitter.com/guardianproject - NAŠ TWITTER: https://twitter.com/guardianproject + ★ НА ТВИТЕРУ: https://twitter.com/guardianproject ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + ★ СЛОБОДАН СОФТВЕР: Орбот је слободан софтвер. Погледајте изворни кôд, или се придружите заједници да је учините још бољом: https://gitweb.torproject.org/orbot.git + https://gitweb.torproject.org/orbot.git Do not translate this. ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact - KONTAKTIRAJTE NAS: Da li smo propustili vaš omiljeni sadržaj? Naišli ste smetnje? Molim vas recite nam! Voleli bismo da čujemo vaše mišljenje. Pošaljite nam e-mail: support@guardianproject.info ili nas pronađite u čet sobi https://guardianproject.info/contact + ★ ПОШАЉИТЕ НАМ ПОРУКУ: Фали нам ваша омиљена функционалност? Пронашли сте иритирајућу грешку? Волели бисмо да чујемо ваше мишљење! Пошаљите нам е-пошту на support@guardianproject.info или нас пронађите у нашој соби за ћаскање https://guardianproject.info/contact diff --git a/description/ur.xlf b/description/ur.xlf new file mode 100644 index 00000000..383935a2 --- /dev/null +++ b/description/ur.xlf @@ -0,0 +1,85 @@ + + +
+ Google places strick character limits on the various text fields in Google Play. The title is 30 characters, the short description is 80 characters, and the rest of the strings, which all go together in the description, are limited to 4000 characters. +
+ + + Orbot + This is limited by Google to 30 characters + + + Protect your privacy with this proxy with Tor + This is limited by Google to 80 characters + + + 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. + + + Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + + + ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. + + + PRIVATE WEB SURFING: Use with Orweb, the most anonymous way to access any website, even if it’s normally blocked, monitored, or on the hidden web. Get Orweb: https://goo.gl/s3mLa + + + PRIVATE CHAT MESSAGING: Use Gibberbot with Orbot to chat confidentially with anyone, anywhere for free. Get Gibberbot: https://goo.gl/O3FfS + + + PRIVACY FOR APPS: Any installed app can use Tor if it has a proxy feature, using the settings found here: https://goo.gl/2OA1y Use Orbot with Twitter, or try private web searching with DuckDuckGo: https://goo.gl/lgh1p + + + PRIVACY FOR EVERYONE: Tor can help you confidentially research a competitor, get around the Facebook block at school, or circumvent a firewall to watch sports at work. +PRIVACY MADE EASY: Check out our fun, interactive walkthrough: https://guardianproject.info/howto/browsefreely +IT’S OFFICIAL: This is the official version of the Tor onion routing service for Android. + + + ***Expert Root Mode*** + + + UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + + + ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + + + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + Do not translate the names of the languages, leave them just like this. + + + Don’t see your language? Join us and help translate the app: + + + https://www.transifex.com/projects/p/orbot + Do not translate this. + + + ***Learn More*** + + + ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + + + ★ OUR WEBSITE: https://GuardianProject.info + + + ★ ABOUT TOR: https://TorProject.org + + + ★ ON TWITTER: https://twitter.com/guardianproject + + + ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + + + https://gitweb.torproject.org/orbot.git + Do not translate this. + + + ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + + +
+
\ No newline at end of file diff --git a/description/vi.xlf b/description/vi.xlf index 58a2c0d4..ad16e543 100644 --- a/description/vi.xlf +++ b/description/vi.xlf @@ -6,17 +6,21 @@ Orbot + Orbot This is limited by Google to 30 characters Protect your privacy with this proxy with Tor + Bảo vệ sự riêng tư của bạn với proxy sử dụng Tor This is limited by Google to 80 characters 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. + 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... Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + Chỉ có Orbot là ứng dụng duy nhất tạo ra một kết nối Internet thật sự riêng tư. Như tờ New York Times viết, "khi mà nhận được thông tin truyền qua mạng Tor, bạn sẽ không bao giờ biết nó từ đâu tới, hay ai tạo ra nó." Tor đã được trao giải 2012 EFF Pioneer Award. ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -37,48 +41,62 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** + ***Chế độ root cho chuyên gia*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + CHẾ ĐỘ KẾT NỐI TẤT CẢ: Orbot có thể được thiết lập để áp dụng proxy trong suốt cho tất cả các kết nối mạng để cho chúng đi qua mạng Tor. Bạn cũng có thể chọn riêng từng ứng dụng mà bạn muốn sử dụng với Tor. ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + ★ CHÚNG TÔI CÓ NGÔN NGỮ CỦA BẠN: Orbot khả dụng cho những ai hiểu ngôn ngữ: العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) Do not translate the names of the languages, leave them just like this. Don’t see your language? Join us and help translate the app: + Không tìm thấy ngôn ngữ của bạn? Hãy tham gia phiên dịch cùng chúng tôi: https://www.transifex.com/projects/p/orbot + https://www.transifex.com/projects/p/orbot Do not translate this. ***Learn More*** + ***Tìm hiểu thêm*** ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + ★ VỀ CHÚNG TÔI: Guardian Project ("Dự án Người Bảo Vệ") là một nhóm những nhà phát triển, làm ra những ứng dụng di động an toàn, bảo mật và mã nguồn mở, nhằm xây dựng một tương lai tốt đẹp hơn ★ OUR WEBSITE: https://GuardianProject.info + ★ WEBSITE CỦA CHÚNG TÔI: https://GuardianProject.info ★ ABOUT TOR: https://TorProject.org + ★ VỀ TOR: https://TorProject.org ★ ON TWITTER: https://twitter.com/guardianproject + ★ TWITTER: https://twitter.com/guardianproject ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + ★ PHẦN MỀM MIỄN PHÍ: Orbot là phần mềm miễn phí. Bạn có thể khám phá mã nguồn của nó, hoặc tham gia với chúng tôi để làm cho nó trở nên tốt hơn: https://gitweb.torproject.org/orbot.git + https://gitweb.torproject.org/orbot.git Do not translate this. ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + ★ LIÊN HỆ VỚI CHÚNG TÔI: Chúng tôi chưa phát triển tính năng bạn thích? Tìm thấy lỗi gây khó chịu? Báo cho chúng tôi! Chúng tôi mong muốn được nghe ý kiến từ bạn. Gửi email cho chúng tôi: support@guardianproject.info hoặc tìm chúng tôi ở phòng chat https://guardianproject.info/contact diff --git a/description/zh-rTW.xlf b/description/zh-rTW.xlf index 129c5c08..3d28b52c 100644 --- a/description/zh-rTW.xlf +++ b/description/zh-rTW.xlf @@ -11,16 +11,17 @@
Protect your privacy with this proxy with Tor - 使用tor的proxy來保護你的個人隱私 + 使用Tor的proxy來保護你的個人隱私 This is limited by Google to 80 characters 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. - Orbot是一款強力而免費的proxy應用程式用來保護其他應用的上網安全。 -orbot使用tor + Orbot是一款免費的網路代理應用程式,用來保護其他應用的上網安全。 +Orbot使用Tor在一系列全球的電腦間跳躍,用以加密並隱藏您的網路流量。Tor是個免費軟體也是個開放網路,能幫您抵禦某一種網路監控,也就是流量分析。該監控威脅了個人的自由和隱私、商業的機密關係和活動、甚至國家安全。 Orbot is the only app that creates a truly private internet connection. As the New York Times writes, “when a communication arrives from Tor, you can never know where or whom it’s from.” Tor won the 2012 Electronic Frontier Foundation (EFF) Pioneer Award. + Orbot是唯一能建立真正私人網路連接的應用程式。如紐約時報寫道,「當一則資訊從Tor抵達時,您永遠也無法知道它從誰或從哪裡而來。」Tor贏得了2012電子前哨基金會(EFF)的先鋒獎。 ACCEPT NO SUBSTITUTES: Orbot is the safest way to use the Internet on Android. Period. Orbot bounces your encrypted traffic several times through computers around the world, instead of connecting you directly like VPNs and proxies. This process takes a little longer, but the strongest privacy and identity protection available is worth the wait. @@ -41,48 +42,63 @@ IT’S OFFICIAL: This is the official version of the Tor onion routing service f ***Expert Root Mode*** + ***專家Root模式*** UNIVERSAL MODE: Orbot can be configured to transparently proxy all of your Internet traffic through Tor. You can also choose which specific apps you want to use through Tor. + 廣用模式: 設置過的Orbot可以透過Tor將所有網路流量透明代理。您也可以選擇特定的應用程式來使用Tor。 ★ WE SPEAK YOUR LANGUAGE: Orbot is available for friends who speak: + ★我們使用你的語言: Orbot 適用於朋友們使用的語言: العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体), 中文(台灣) + 中文(台灣), العربية, azərbaycanca, български, català, Čeština, dansk, Deutsch, Ελληνικά, English, español, eesti, euskara, فارسی, suomi, français, galego, hrvatski, magyar, עברית, íslenska, italiano, 日本語, 한국어, lietuvių, latviešu, Македонци, Bahasa Melayu, Nederlands, norsk, polski, português, Русский, slovenčina, slovenščina, српски, svenska, Türkçe, українська, Tagalog, Tiếng Việt, 中文(简体) Do not translate the names of the languages, leave them just like this. Don’t see your language? Join us and help translate the app: + 還沒看見您的語言嗎? 請加入我們,並幫助我們翻譯這個應用程式: https://www.transifex.com/projects/p/orbot + https://www.transifex.com/projects/p/orbot Do not translate this. ***Learn More*** + ***了解更多*** ★ ABOUT US: Guardian Project is a group of developers that make secure mobile apps and open-source code for a better tomorrow + ★關於我們: 保護者計畫是一個開發者組成的團體,製作安全的手機應用程式和開源碼,都是為了更美好的未來 ★ OUR WEBSITE: https://GuardianProject.info + ★我們的網站: https://GuardianProject.info ★ ABOUT TOR: https://TorProject.org + ★ 關於 Tor: https://TorProject.org ★ ON TWITTER: https://twitter.com/guardianproject + ★ Twitter: https://twitter.com/guardianproject ★ FREE SOFTWARE: Orbot is free software. Take a look at our source code, or join the community to make it better: + ★自由軟體: Orbot是自由軟體。請看看我們的開源碼,或是加入討論社區以把它改善: https://gitweb.torproject.org/orbot.git + https://gitweb.torproject.org/orbot.git Do not translate this. ★ MESSAGE US: Are we missing your favorite feature? Found an annoying bug? Please tell us! We’d love to hear from you. Send us an email: support@guardianproject.info or find us in our chat room https://guardianproject.info/contact + ★通知我們: 我們是否漏掉了您喜愛的特點呢? 發現了煩人的小錯誤嗎? 請和我們說! +我們很想聽您說。請寄信給我們: support@guardianproject.info或在我們的聊天室找我們https://guardianproject.info/contact diff --git a/external/0001-add-limits.h-to-support-MAX_SIZE-on-Android.patch b/external/0001-add-limits.h-to-support-MAX_SIZE-on-Android.patch new file mode 100644 index 00000000..51dce9be --- /dev/null +++ b/external/0001-add-limits.h-to-support-MAX_SIZE-on-Android.patch @@ -0,0 +1,28 @@ +From 74ef555267f83e6e0e365112749dd8b743ee2b87 Mon Sep 17 00:00:00 2001 +From: n8fr8 +Date: Mon, 19 Sep 2016 16:04:04 -0400 +Subject: [PATCH 1/1] add limits.h to support MAX_SIZE on Android + +--- + src/ext/trunnel/trunnel.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/ext/trunnel/trunnel.c b/src/ext/trunnel/trunnel.c +index 0ed75aa..dbb9476 100644 +--- a/src/ext/trunnel/trunnel.c ++++ b/src/ext/trunnel/trunnel.c +@@ -13,6 +13,11 @@ + #include + #include + #include "trunnel-impl.h" ++ /* Get SIZE_MAX. */ ++#ifdef __BIONIC__ ++#include ++#endif ++ + + #if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \ + __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +-- +1.9.1 + diff --git a/external/Makefile b/external/Makefile index 211df769..850e92cc 100644 --- a/external/Makefile +++ b/external/Makefile @@ -27,6 +27,7 @@ NDK_PLATFORM_LEVEL ?= 16 NDK_TOOLCHAIN_VERSION=4.8 APP_ABI ?= armeabi NDK_ABI ?= $(APP_ABI) +PIE_MODE ?= pie ifneq ($(filter arm%, $(APP_ABI)),) NDK_ABI := arm endif @@ -72,6 +73,10 @@ STRIP := $(NDK_TOOLCHAIN_BASE)/bin/$(HOST)-strip \ # PIEFLAGS for SDK 16/Android L must be set to -fPIE -pie, but can override for earlier targets PIEFLAGS ?= -fPIE -pie +ifeq ($(PIEMODE),nopie) + PIEFLAGS = +endif + CFLAGS = -DANDROID $(TARGET_CFLAGS) $(PIEFLAGS) LDFLAGS = -llog $(TARGET_LDFLAGS) $(PIEFLAGS) @@ -225,9 +230,12 @@ tor/configure: ./autogen.sh tor/Makefile: tor/configure - cp fix_android_0.2.6.4rc_build.patch tor + cp 0001-add-limits.h-to-support-MAX_SIZE-on-Android.patch tor cd tor && \ - git apply fix_android_0.2.6.4rc_build.patch + git apply 0001-add-limits.h-to-support-MAX_SIZE-on-Android.patch +# cp fix_android_0.2.6.4rc_build.patch tor +# cd tor && \ +# git apply fix_android_0.2.6.4rc_build.patch cp config.sub tor cp config.guess tor cd tor && \ @@ -297,26 +305,26 @@ pluto-clean: #this is related to a bug in compression of assets and resources > 1MB assets: tor polipo iptables pluto - install -d ../libs - install -d ../assets/$(APP_ABI) + install -d ../orbotservice/src/main/assets/$(APP_ABI) -$(STRIP) bin/polipo - -zip ../assets/$(APP_ABI)/polipo.mp3 bin/polipo + -zip ../orbotservice/src/main/assets/$(APP_ABI)/polipo.mp3 bin/polipo -$(STRIP) bin/tor - -zip ../assets/$(APP_ABI)/tor.mp3 bin/tor + -zip ../orbotservice/src/main/assets/$(APP_ABI)/tor.mp3 bin/tor -$(STRIP) bin/xtables - -zip ../assets/$(APP_ABI)/xtables.mp3 bin/xtables + -zip ../orbotservice/src/main/assets/$(APP_ABI)/xtables.mp3 bin/xtables -$(STRIP) bin/obfs4proxy - -zip ../assets/$(APP_ABI)/obfs4proxy.mp3 bin/obfs4proxy - -$(STRIP) ../libs/$(APP_ABI)/pdnsd - -zip ../assets/$(APP_ABI)/pdnsd.mp3 ../libs/$(APP_ABI)/pdnsd - -rm ../libs/$(APP_ABI)/pdnsd + -zip ../orbotservice/src/main/assets/$(APP_ABI)/obfs4proxy.mp3 bin/obfs4proxy + -$(STRIP) ../orbotservice/src/main/libs/$(APP_ABI)/pdnsd + -zip ../orbotservice/src/main/assets/$(APP_ABI)/pdnsd.mp3 ../orbotservice/src/main/libs/$(APP_ABI)/pdnsd + -rm ../orbotservice/src/main/libs/$(APP_ABI)/pdnsd assets-clean: - -rm ../assets/$(APP_ABI)/polipo.mp3 - -rm ../assets/$(APP_ABI)/tor.mp3 - -rm ../assets/$(APP_ABI)/xtables.mp3 - -rm ../assets/$(APP_ABI)/obfs4proxy.mp3 - -rm ../assets/$(APP_ABI)/pdnsd.mp3 + -rm ../orbotservice/src/main/assets/$(APP_ABI)/polipo.mp3 + -rm ../orbotservice/src/main/assets/$(APP_ABI)/tor.mp3 + -rm ../orbotservice/src/main/assets/$(APP_ABI)/xtables.mp3 + -rm ../orbotservice/src/main/assets/$(APP_ABI)/obfs4proxy.mp3 + -rm ../orbotservice/src/main/assets/$(APP_ABI)/pdnsd.mp3 + #------------------------------------------------------------------------------# # cleanup, cleanup, put the toys away diff --git a/patches/UDP-block.patch b/external/patches/UDP-block.patch similarity index 100% rename from patches/UDP-block.patch rename to external/patches/UDP-block.patch diff --git a/patches/orbot-patch-sporkbomb-20110501/Part 1.4 b/external/patches/orbot-patch-sporkbomb-20110501/Part 1.4 similarity index 100% rename from patches/orbot-patch-sporkbomb-20110501/Part 1.4 rename to external/patches/orbot-patch-sporkbomb-20110501/Part 1.4 diff --git a/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch b/external/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch similarity index 100% rename from patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch rename to external/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch diff --git a/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report b/external/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report similarity index 100% rename from patches/orbot-patch-sporkbomb-20110501/orbot_leak_report rename to external/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report diff --git a/patches/transproxy.patch b/external/patches/transproxy.patch similarity index 100% rename from patches/transproxy.patch rename to external/patches/transproxy.patch diff --git a/patches/udptransproxyfinal.patch b/external/patches/udptransproxyfinal.patch similarity index 100% rename from patches/udptransproxyfinal.patch rename to external/patches/udptransproxyfinal.patch diff --git a/patches/update_GibberBot_info/ic_launcher_gibberbot.png b/external/patches/update_GibberBot_info/ic_launcher_gibberbot.png similarity index 100% rename from patches/update_GibberBot_info/ic_launcher_gibberbot.png rename to external/patches/update_GibberBot_info/ic_launcher_gibberbot.png diff --git a/patches/update_GibberBot_info/update_GibberBot_info.diff b/external/patches/update_GibberBot_info/update_GibberBot_info.diff similarity index 100% rename from patches/update_GibberBot_info/update_GibberBot_info.diff rename to external/patches/update_GibberBot_info/update_GibberBot_info.diff diff --git a/external/tor b/external/tor index 7a489a63..26308863 160000 --- a/external/tor +++ b/external/tor @@ -1 +1 @@ -Subproject commit 7a489a638911012069981702065b952a5809d249 +Subproject commit 263088633a63982a8d6ddffd3ed3e3d85cffd6f1 diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..f6a934d9 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,16 @@ +## Project-wide Gradle settings. +# +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +#Mon Jun 20 21:44:59 EDT 2016 +android.useDeprecatedNdk=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..13372aef Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..122a0dca --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Dec 28 10:00:20 PST 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..9d82f789 --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/jni/pdnsd/doc/Makefile.am b/jni/pdnsd/doc/Makefile.am deleted file mode 100644 index b3e21984..00000000 --- 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 7f07fe69..00000000 --- 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 f5e8f86d..00000000 --- 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 3f9c6140..00000000 --- a/jni/pdnsd/doc/html/dl.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - pdnsd Download Page - - - - - - - - - - - - - -
- pdnsd Homepage - - pdnsd FAQ - - Documentation - - GNU GPL (pdnsd's License) - - Download Section -
- -

pdnsd Download Page

- -

The original author of pdnsd is Thomas Moestl, - but since 2003, he no longer maintains pdnsd. - However, Paul A. Rombouts has extensively revised the code and maintains - a version with many fixes and improvements at - http://members.home.nl/p.a.rombouts/pdnsd.html.
- He has pre-patched tarballs and RPM packages available for download at this site.
-

-

- If you are interested in the very latest code or if you want to participate in - pdnsd development, checkout the pdnsd git repository - at gitorious.org. -

- - The most recent tarball is pdnsd-1.2.9b-par.tar.gz - (GPG signature).
- The most recent RPM packages are: - - - - - - - - - - - - - - - - - - - - - -
Package NameSizeDescription
pdnsd-1.2.9b-par.src.rpm514kBSource RPM (binary packages can also be built directly from the tarball). -
pdnsd-1.2.9b-par_sl6.i686.rpm???i686 binary built on a Scientific Linux 6.2 system. -
pdnsd-1.2.9b-par_sl6.x86_64.rpm282kBx86_64 binary built on a Scientific Linux 6.2 system. -
- If you want to check the signatures on these packages you will need a copy of my GPG key - which you can get here - or from a public key server. -

- There are also Debian, - Ubuntu, - Gentoo, - Mandriva - and FreeBSD - packages, but these may not include the latest version.
- If you are looking for other versions released by Paul Rombouts, visit this - download directory. -

-
-
-

- Last revised: 24 Apr 2012 by Paul A. Rombouts -

- - diff --git a/jni/pdnsd/doc/html/dl.html.in b/jni/pdnsd/doc/html/dl.html.in deleted file mode 100644 index dffe2b02..00000000 --- a/jni/pdnsd/doc/html/dl.html.in +++ /dev/null @@ -1,96 +0,0 @@ - - - - pdnsd Download Page - - - - - - - - - - - - - -
- pdnsd Homepage - - pdnsd FAQ - - Documentation - - GNU GPL (pdnsd's License) - - Download Section -
- -

pdnsd Download Page

- -

The original author of pdnsd is Thomas Moestl, - but since 2003, he no longer maintains pdnsd. - However, Paul A. Rombouts has extensively revised the code and maintains - a version with many fixes and improvements at - http://members.home.nl/p.a.rombouts/pdnsd.html.
- He has pre-patched tarballs and RPM packages available for download at this site.
-

-

- If you are interested in the very latest code or if you want to participate in - pdnsd development, checkout the pdnsd git repository - at gitorious.org. -

- - The most recent tarball is pdnsd-$version.tar.gz - (GPG signature).
- The most recent RPM packages are: - - - - - - - - - - - - - - - - - - - - - -
Package NameSizeDescription
pdnsd-$version.src.rpm$sizeof("$HOME/rpmbuild/SRPMS/pdnsd-$version.src.rpm")Source RPM (binary packages can also be built directly from the tarball). -
pdnsd-${version}${extver}.${arch}.rpm$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch}.rpm")${arch} binary built on a $system. -
pdnsd-${version}${extver}.${arch2}.rpm$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch2}.rpm")${arch2} binary built on a $system. -
- If you want to check the signatures on these packages you will need a copy of my GPG key - which you can get here - or from a public key server. -

- There are also Debian, - Ubuntu, - Gentoo, - Mandriva - and FreeBSD - packages, but these may not include the latest version.
- If you are looking for other versions released by Paul Rombouts, visit this - download directory. -

-
-
-

- Last revised: $date by Paul A. Rombouts -

- - diff --git a/jni/pdnsd/doc/html/doc.html b/jni/pdnsd/doc/html/doc.html deleted file mode 100644 index 95828c5c..00000000 --- a/jni/pdnsd/doc/html/doc.html +++ /dev/null @@ -1,2630 +0,0 @@ - - - - pdnsd Documentation - - - - - - - - - - - - - - -
- pdnsd Homepage - - pdnsd FAQ - - Documentation - - GNU GPL (pdnsd's License) - - Download Section -
- -

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 <distro>" - - Has the same effect as --with-distribution=<distro> (see below). -
- --define "run_as_user <user>" - - Has the same effect as --with-default-id=<user> (see below).
- For RPMs the default <user> is "pdnsd". -
- --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>. - The default is to let the system choose the numerical id at install time. -
- --define "cachedir <dir>" - - Has the same effect as --with-cachedir=<dir> (see below). -
- 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):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- --prefix=dir - - 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 --prefix=/usr). -
- --sysconfdir=dir - - Specify the config directory. pdnsd expects its pdnsd.conf file to reside - there if the -c option is 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=distro - - Specify target distribution (default=Generic; others: RedHat, SuSE, Debian)
- See below for the effect of these settings. -
- --with-target=platform - - Change compilation target platform (default: autodetect; others: Linux, BSD, Cygwin).
- 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). -
- --with-cachedir=dir - - Default directory for pdnsd cache (default=/var/cache/pdnsd)
- This setting can be changed via config file settings when pdnsd has been built. -
- --with-hash-buckets=num - - 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. -
- --enable-isdn - - Enable ISDN support
- 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 if uptest - under Linux for ISDN ppp devices. -
- --disable-ipv4 - - Disable IPv4 networking support (default=enabled) -
- --enable-ipv6 - - Enable IPv6 networking support.
- 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-startup - - 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. -
- --disable-udp-queries - - Disable UDP as query method. You shouldn't need to change - this. -
- --disable-tcp-queries - - 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.) -
- --with-query-method=qm - - 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. -
- --disable-tcp-server - - 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. -
- --disable-src-addr-disc - - Disable the UDP source address discovery.
- You need this only if you have trouble with 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. -
- --disable-new-rrs - - 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 src/rr_types.in. - The comments in this file explain how to do this. -
- --enable-strict-rfc2181 - - Enforce strict RFC 2181 compliance.
- 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. -
- --enable-underscores - - 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). -
- --with-random-device=device - - 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 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.
- 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). -
- --with-default-id=user - - Specify default user for pdnsd (default=nobody). - This is the user that will be entered for the 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. -
- --with-debug=level - - 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 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-rcsids - - Enable RCS IDs in executables (default=disabled).
- For personal use, there is no need to do this. If you build rpm's, it - might have advantages. -
- --enable-tcp-subseq - - 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 --enable-tcp-server, is option is not honored. -
- --with-tcp-qtimeout=secs - - 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 --enable-tcp-server, is option is not honored. -
- --with-par-queries=num - - 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.
- The default for this option is 2. -
- --with-max-nameserver-ips=num - - 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 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.
- The default for this option is 3. -
- --with-thread-lib=lib - - 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 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@example.com, 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 [].

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CommandArgumentsDescription
helpPrint a command summary.
versionPrint 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|down|retest)  [dns1[,dns2[,...]]] - Set the status of the server with the given index or label (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 - 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. -
recordname  (delete|invalidate) - 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 (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 -
sourcefn  owner  [ttl]  [(on|off)]  [noauth] - 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 (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 -
adda  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 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 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 addresses to be defined - for the same name. - The ttl is 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 description of what - that means. - If you want no other 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:
- pdnsd-ctl add a 127.0.0.1 localhost. 900 -
addaaaa  addr  name  [ttl]  [noauth]
addptr  host  name  [ttl]  [noauth]
addcname  host  name  [ttl]  [noauth]
addmx  host  name  pref  [ttl]  [noauth]
addns  host  name  [ttl]  [noauth]
negname  [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. -
includefilename - 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. -
evalstring - 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, configure.in, acconfig.h - autoconf/automake/autoheader scripts. Makefile.am's are in most subdirectories. -
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. -
src/cache.c - 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. -
src/pdnsd-ctl/* - Contains the code for pdnsd-ctl, a program that allows you to control pdnsd at run time. -
src/conf-lex.l.in - 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. - (obsolete, superseded by src/conf-parser.c) -
src/conf-lex.l - 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! - (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, src/conf-parser.h, src/conf-keywords.h - The config file parser written purely in C (versions 1.1.10-par and later). -
src/conff.c, src/conff.h - The configuration handler functions and their prototypes. 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. -
src/dns.c, src/dns.h - Define dns message structures, constants, and some common dns data handlers. dns.h contains gcc-specific - code (in praticular, "__attribute__((packed))"). -
src/dns_answer.c, src/dns_answer.h - Define functions that answer incoming dns queries. -
src/dns_query.c, src/dns_query.h - Define functions to manage outgoing dns queries. -
src/error.c, src/error.h - Functions for error output to stderr or the syslog, and debug output to stderr or pdnsd.debug. -
src/hash.c, src/hash.h - Contains the code for storing and looking up cache entries in the hash table. -
src/helpers.c, src/helpers.h - Define miscellaneous helper functions. -
src/icmp.c, src/icmp.h - Define a function for performing a ping test. This contains OS-specific code. -
src/main.c - Contains main(), which holds the command line parser, performs initialisations and signal handling. -
src/make_hashconvtable.c - Contains the code for the executable make_hashconvtable, which is only run once, during build time, to generate the file hashconvtable.h, used by src/hash.c (versions 1.1.10-par and later). - (obsolete since version 1.2) -
src/make_rr_types_h.pl - 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. -
src/rr_types.c, src/rr_types.h, src/rr_types.in - 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. -
src/netdev.c, src/netdev.h - Define functions for network device handling. OS-specific. -
src/servers.c, src/servers.h - Define functions for the server status thread that performs the periodical uptests. -
src/status.c, src/status.h - Define functions for the status control thread. This is 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/doc/html/doc_makefile b/jni/pdnsd/doc/html/doc_makefile deleted file mode 100644 index 28fb7d50..00000000 --- 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 eec65993..00000000 --- a/jni/pdnsd/doc/html/faq.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - The pdnsd FAQ - - - - - - - - - - - - - - -
- pdnsd Homepage - - pdnsd FAQ - - Documentation - - GNU GPL (pdnsd's License) - - Download Section -
- -

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? -
A: - 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: -
    -
  • 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 -
-
-
- - - - - - - - - - -
Q: - 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? -
A: - 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). -
-
- - - - - - - - - - -
Q: - What do I need the status control (option -s) for? -
A: - 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 -
  • 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? -
A: - 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. -
- 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. -
-
- - - - - - - - - - -
Q: - When compiling, I get an error message like
Please define __BYTE_ORDER to - be __LITTLE_ENDIAN or __BIG_ENDIAN
What's up? -
A: - 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 (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). -
-
- - - - - - - - - - -
Q: - At startup, I get a warning saying:
- - Uptest command [...] will implicitly be executed as root -
- What does that mean? -
A: - 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 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? -
A: - 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! -
-
- - - - - - - - - - -
Q: - At startup, I get an error saying:
- - Bad config file permissions: the file must be only writeable by the user -
- Why is that? -
A: - 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 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. -
A: - 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. -
-
- - - - - - - - - - -
Q: - Some queries for domains that have many records (e.g. www.gmx.de) fail mysteriously. -
A: - 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 - --enable-tcp-server to fix this. -
-
- - - - - - - - - - -
Q: - 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. -
A: - 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 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? -
A: - 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 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/html/htmlsubst.pl b/jni/pdnsd/doc/html/htmlsubst.pl deleted file mode 100644 index a9e3e9ff..00000000 --- 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 d2e426aa..00000000 --- a/jni/pdnsd/doc/html/index.html +++ /dev/null @@ -1,686 +0,0 @@ - - - - pdnsd homepage - - - - - - - - - - - - - - - -
- About pdnsd - - pdnsd FAQ - - Documentation - - GNU GPL (pdnsd's License) - - Download Section -
-

The pdnsd Homepage

-

News

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2012-03-17Version 1.2.9a-par has been released. - 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. - If you do not use this option to compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a. -
2012-02-27Version 1.2.9-par has been released. - 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). -
2011-05-03The latest source code is available from a - git repository.
- In response to frequent requests I have uploaded a git tree including the latest code - and a fairly extensive history of pdnsd development to - gitorious.org. - Anyone who wants to participate in pdnsd development is free to create a - clone repo on gitorious.org - and push his modifications there. -
2010-02-22Version 1.2.8-par has been released. - The main new feature of version 1.2.8 is automatic discovery of root servers. - Furthermore, there are some additional improvements in the resolver. -
2008-09-04Version 1.2.7-par has been released. - 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 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. -
2007-09-04Version 1.2.6-par has been released. - 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 neg_domain_pol=on. The - code that implements 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 avoid some types of unwanted replies. - The pdnsd-ctl 'add a' and 'add aaaa' commands - now allow multiple IP addresses to be specified for the same name. - pdnsd's ability to resolve from root servers has been improved. -
2006-09-02Version 1.2.5-par has been released. - This release 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. -
2006-01-09Version 1.2.4-par has been released. - 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). -
2005-07-11Version 1.2.3-par has been released. - New feature in this release: 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. - Some problems with resolving certain names using root servers have been fixed. -
2005-04-03Version 1.2.2-par has been released. - 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. -
2004-11-07Version 1.2.1-par has been released. - The main new feature of this release is 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. -
2004-10-10Version 1.2-par has been released. - 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).
- 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. -
2004-05-22Version 1.1.11a-par has been released. - This release 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. -
2004-05-10Version 1.1.11-par has been released. - 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.
- - For a more complete list of the changes I'll have to refer you to README.par and the ChangeLog. -
2004-02-10Version 1.1.10-par has been released. - - 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 "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. -
2004-01-08Version 1.1.9-par has been released. - "maintenance" release by Paul Rombouts.
- - 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.
- - I've added some missing pieces to the documentation (the pdnsd manual 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 manual.)
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. -
2003-10-10Version 1.1.8b1-par8 has been released. - "maintenance" release by Paul Rombouts.
- This version 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. -
2003-09-19Version 1.1.8b1-par7 has been released. - "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.
- More details can be found in the ChangeLog. -
2003-07-28Version 1.1.8b1-par6 has been released. - "maintenance" release by Paul Rombouts. In addition to some further code cleanup, - the documentation has been revised. -
2003-07-10Version 1.1.8b1-par5 has been released. - 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 ChangeLog. -
2003-06-30Version 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. -
2003-04-07pdnsd 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://members.home.nl/p.a.rombouts/pdnsd.html, - which cleans up a lot of code fixes many bugs. -
2002-07-19Documentation update. - Please note that pdnsd should never be installed with setuid or setgid attributes, - 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. -
2002-01-15Version 1.1.7a has been released. - 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. -
2002-01-15Version 1.1.7 has been released. - 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.
- Upgrading is strongly recommended!
- There are also minor bug fixes and stability improvements. -
- -
-

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, - also available in html and - translated into various languages.). - 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 Frster,
- Mike Hammer,
- Jonathan Hudson,
- Dan Jacobson,
- Byrial Jensen,
- Patrick Loschmidt,
- James MacLean,
- Fraser McCrossan,
- Michael Mller,
- Erich Reitz,
- Brian Schroeder,
- Milan P. Stanic,
- Michael Steiner,
- Norbert Steinl,
- Markus Storm,
- Michael Strder,
- Alan Swanson,
- Eelco Vriezekolk. -

- -

Links

- Well, this is the obligatory link section. -
-
- - - - - - - - -
- - http://www.gnu.org
- The GNU homepage -
-
- - http://freecode.com
- Freecode (formerly Freshmeat) - large free software index -
-
- - http://www.freebsd.org
- The FreeBSD project -
-
- -
-
-
Thomas Moestl - and Paul A. Rombouts -
-
-

- Last revised: 17 March 2012 by Paul A. Rombouts -

- - diff --git a/jni/pdnsd/doc/html2confman.pl b/jni/pdnsd/doc/html2confman.pl deleted file mode 100644 index abade119..00000000 --- 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(/[^<]*configuration file/i) { - last; - } -} - -exit unless defined($_); - -while(<>) { - if(/[^<]*layout/i) { - last; - } -} - -exit unless defined($_); - -(my $myname=$0) =~ s{.*/}{}; - -print <) { - if(/.*\bpdnsd-ctl\b/) { - last; - } - s{^\s*((?:<[^<>]+>)*?)[\d.]*\s*(.*)((?:<[^<>]+>)*?)(?:
)?\s*$}{.SS $1$2$3\n}i; - if(s{^\s*\s*}{.TP\n}i) {$taggedparagraph=1} - if(m{^\s*}i) {$taggedparagraph=0} - s{^\s*((?:<[^<>]+>)*?)(.*)((?:<[^<>]+>)*?)(?:
)?\s*$}{.B $1$2$3\n}i if $taggedparagraph; - s{^\s*((?:<[^<>]+>)*?or(?:<[^<>]+>)*?)(?:
)?\s*$}{$1\n.PD 0\n.TP\n.PD\n}i if $taggedparagraph; - if(s{^\s*
}{.DS L\n}i) {$displayed=1}
-    s{^\t}{        } if $displayed;
-    if(s{
\s*$}{\n.DE\n\n}i) {$displayed=0} - elsif(!$displayed) {s{^\s*}{}} - s{^\s*
  • }{.IP\n\\(bu }i; - s{
  • }{\n.IP\n\\(bu }i; - s{
      }{\n}i; - s{
    }{\n}i; - s{}{\\fB}ig; - s{}{\\fP}ig; - s{<(i|em)>}{\\fI}ig; - s{}{\\fP}ig; - unless(s{^\s*(<[^<>]+>)*(
    |

    )(<[^<>]+>)*\s*$}{\n}i) { - s{]*>(.*)

    }{\n$1\n}i; - s{^\s*
    }{.br\n}i; - s{
    \s*
    \s*$}{\n\n}i; - s{
    \s*$}{\n.br\n}i; - s{
    }{\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{(? -.UE -and was extensively revised by Paul A. Rombouts -.UR - -.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 73459f3b..00000000 --- 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: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.\" 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 - -.UE -.br -Paul A. Rombouts -.UR - -.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 ba4330af..00000000 --- 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 -, -.UE -and was extensively revised by Paul A. Rombouts -.UR - -.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 - -.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 801b5350..00000000 --- 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 ) -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@example.com, 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 - -.UE -and was extensively revised by Paul A. Rombouts -.UR - -.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 e348eb02..00000000 --- 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 57aa7c11..00000000 --- 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///-->/g' ../html/index.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > intro.txt - -manual.txt: ../html/doc.html - sed -e 's///-->/g' ../html/doc.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > manual.txt - -faq.txt: ../html/faq.html - sed -e 's///-->/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 02631610..00000000 --- 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="",""; - 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 - 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 db1c89e3..00000000 --- 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- 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 c7e3e9d2..00000000 --- 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-.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-.src.rpm - -or alternatively from a tarball using the command - -rpmbuild -tb pdnsd-.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>" see below). - ---define "run_as_user Has the same effect as --with-default-id= (see -" below). - For RPMs the default 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 . - The default is to let the system choose the numerical - id at install time. - ---define "cachedir < Has the same effect as --with-cachedir= (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-.tar.gz - -If your tar doesn't do this, use: - -gzip -dc pdnsd-.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 - ) 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@example.com, 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- 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/jsocksAndroid/build.gradle b/jsocksAndroid/build.gradle new file mode 100644 index 00000000..f2901a84 --- /dev/null +++ b/jsocksAndroid/build.gradle @@ -0,0 +1,18 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.2" + + defaultConfig { + minSdkVersion 8 + targetSdkVersion 21 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} diff --git a/jsocksAndroid/src/main/AndroidManifest.xml b/jsocksAndroid/src/main/AndroidManifest.xml new file mode 100644 index 00000000..7351fd23 --- /dev/null +++ b/jsocksAndroid/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/main/SOCKS.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/main/SOCKS.java new file mode 100644 index 00000000..9174c7ea --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/main/SOCKS.java @@ -0,0 +1,267 @@ +package com.runjva.sourceforge.jsocks.main; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Hashtable; +import java.util.Properties; +import java.util.StringTokenizer; + +import android.util.Log; + +import com.runjva.sourceforge.jsocks.protocol.InetRange; +import com.runjva.sourceforge.jsocks.protocol.ProxyServer; +import com.runjva.sourceforge.jsocks.protocol.SocksProxyBase; +import com.runjva.sourceforge.jsocks.server.IdentAuthenticator; + +public class SOCKS { + + private static final int DEFAULT_LISTENING_PORT = 1080; + + static public void usage() { + System.out.println("Usage: java SOCKS [inifile1 inifile2 ...]\n" + + "If none inifile is given, uses socks.properties.\n"); + } + + static public void main(String[] args) { + + String[] file_names; + int port = DEFAULT_LISTENING_PORT; + String logFile = null; + String host = null; + + final IdentAuthenticator auth = new IdentAuthenticator(); + + InetAddress localIP = null; + + if (args.length == 0) { + file_names = new String[] { "socks.properties" }; + } else { + file_names = args; + } + + inform("Loading properties"); + for (int i = 0; i < file_names.length; ++i) { + + inform("Reading file " + file_names[i]); + + final Properties pr = loadProperties(file_names[i]); + if (pr == null) { + System.err.println("Loading of properties from " + + file_names[i] + "failed."); + usage(); + return; + } + if (!addAuth(auth, pr)) { + System.err.println("Error in file " + file_names[i] + "."); + usage(); + return; + } + // First file should contain all global settings, + // like port and host and log. + if (i == 0) { + final String port_s = (String) pr.get("port"); + if (port_s != null) { + try { + port = Integer.parseInt(port_s); + } catch (final NumberFormatException nfe) { + System.err.println("Can't parse port: " + port_s); + return; + } + } + + serverInit(pr); + logFile = (String) pr.get("log"); + host = (String) pr.get("host"); + } + + // inform("Props:"+pr); + } + + if (logFile != null) { + System.err.println("log property not supported anymore."); + } + if (host != null) { + try { + localIP = InetAddress.getByName(host); + } catch (final UnknownHostException uhe) { + System.err.println("Can't resolve local ip: " + host); + return; + } + } + + inform("Using Ident Authentication scheme: " + auth); + final ProxyServer server = new ProxyServer(auth); + server.start(port, 5, localIP); + } + + static Properties loadProperties(String file_name) { + + final Properties pr = new Properties(); + + try { + final InputStream fin = new FileInputStream(file_name); + pr.load(fin); + fin.close(); + } catch (final IOException ioe) { + return null; + } + return pr; + } + + static boolean addAuth(IdentAuthenticator ident, Properties pr) { + + InetRange irange; + + final String range = (String) pr.get("range"); + if (range == null) { + return false; + } + irange = parseInetRange(range); + + final String users = (String) pr.get("users"); + + if (users == null) { + ident.add(irange, null); + return true; + } + + final Hashtable uhash = new Hashtable(); + + final StringTokenizer st = new StringTokenizer(users, ";"); + while (st.hasMoreTokens()) { + uhash.put(st.nextToken(), ""); + } + + ident.add(irange, uhash); + return true; + } + + /** + * Does server initialisation. + */ + static void serverInit(Properties props) { + int val; + val = readInt(props, "iddleTimeout"); + if (val >= 0) { + ProxyServer.setIddleTimeout(val); + inform("Setting iddle timeout to " + val + " ms."); + } + val = readInt(props, "acceptTimeout"); + if (val >= 0) { + ProxyServer.setAcceptTimeout(val); + inform("Setting accept timeout to " + val + " ms."); + } + val = readInt(props, "udpTimeout"); + if (val >= 0) { + ProxyServer.setUDPTimeout(val); + inform("Setting udp timeout to " + val + " ms."); + } + + val = readInt(props, "datagramSize"); + if (val >= 0) { + ProxyServer.setDatagramSize(val); + inform("Setting datagram size to " + val + " bytes."); + } + + proxyInit(props); + + } + + /** + * Initialises proxy, if any specified. + */ + static void proxyInit(Properties props) { + String proxy_list; + SocksProxyBase proxy = null; + StringTokenizer st; + + proxy_list = (String) props.get("proxy"); + if (proxy_list == null) { + return; + } + + st = new StringTokenizer(proxy_list, ";"); + while (st.hasMoreTokens()) { + final String proxy_entry = st.nextToken(); + + final SocksProxyBase p = SocksProxyBase.parseProxy(proxy_entry); + + if (p == null) { + exit("Can't parse proxy entry:" + proxy_entry); + } + + inform("Adding Proxy:" + p); + + if (proxy != null) { + p.setChainProxy(proxy); + } + + proxy = p; + + } + if (proxy == null) { + return; // Empty list + } + + final String direct_hosts = (String) props.get("directHosts"); + if (direct_hosts != null) { + final InetRange ir = parseInetRange(direct_hosts); + inform("Setting direct hosts:" + ir); + proxy.setDirect(ir); + } + + ProxyServer.setProxy(proxy); + } + + /** + * Inits range from the string of semicolon separated ranges. + */ + static InetRange parseInetRange(String source) { + final InetRange irange = new InetRange(); + + final StringTokenizer st = new StringTokenizer(source, ";"); + while (st.hasMoreTokens()) { + irange.add(st.nextToken()); + } + + return irange; + } + + /** + * Integer representaion of the property named name, or -1 if one is not + * found. + */ + static int readInt(Properties props, String name) { + int result = -1; + final String val = (String) props.get(name); + if (val == null) { + return -1; + } + final StringTokenizer st = new StringTokenizer(val); + if (!st.hasMoreElements()) { + return -1; + } + try { + result = Integer.parseInt(st.nextToken()); + } catch (final NumberFormatException nfe) { + inform("Bad value for " + name + ":" + val); + } + return result; + } + + // Display functions + // ///////////////// + + static void inform(String s) { + Log.i("SOCKS",s); + } + + static void exit(String msg) { + System.err.println("Error:" + msg); + System.err.println("Aborting operation"); + System.exit(0); + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Authentication.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Authentication.java new file mode 100644 index 00000000..7bc58d9d --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Authentication.java @@ -0,0 +1,35 @@ +package com.runjva.sourceforge.jsocks.protocol; + +/** + * The Authentication interface provides for performing method specific + * authentication for SOCKS5 connections. + */ +public interface Authentication { + /** + * This method is called when SOCKS5 server have selected a particular + * authentication method, for whch an implementaion have been registered. + * + *

    + * This method should return an array {inputstream,outputstream + * [,UDPEncapsulation]}. The reason for that is that SOCKS5 protocol allows + * to have method specific encapsulation of data on the socket for purposes + * of integrity or security. And this encapsulation should be performed by + * those streams returned from the method. It is also possible to + * encapsulate datagrams. If authentication method supports such + * encapsulation an instance of the UDPEncapsulation interface should be + * returned as third element of the array, otherwise either null should be + * returned as third element, or array should contain only 2 elements. + * + * @param methodId + * Authentication method selected by the server. + * @param proxySocket + * Socket used to conect to the proxy. + * @return Two or three element array containing Input/Output streams which + * should be used on this connection. Third argument is optional and + * should contain an instance of UDPEncapsulation. It should be + * provided if the authentication method used requires any + * encapsulation to be done on the datagrams. + */ + Object[] doSocksAuthentication(int methodId, java.net.Socket proxySocket) + throws java.io.IOException; +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/AuthenticationNone.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/AuthenticationNone.java new file mode 100644 index 00000000..e6821545 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/AuthenticationNone.java @@ -0,0 +1,22 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * SOCKS5 none authentication. Dummy class does almost nothing. + */ +public class AuthenticationNone implements Authentication { + + public Object[] doSocksAuthentication(final int methodId, + final java.net.Socket proxySocket) throws java.io.IOException { + + if (methodId != 0) { + return null; + } + + InputStream in = proxySocket.getInputStream(); + OutputStream out = proxySocket.getOutputStream(); + return new Object[] { in, out }; + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/InetRange.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/InetRange.java new file mode 100644 index 00000000..fae13587 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/InetRange.java @@ -0,0 +1,492 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.StringTokenizer; +import java.util.Vector; + +/** + * Class InetRange provides the means of defining the range of inetaddresses. + * It's used by Proxy class to store and look up addresses of machines, that + * should be contacted directly rather then through the proxy. + *

    + * InetRange provides several methods to add either standalone addresses, or + * ranges (e.g. 100.200.300.0:100.200.300.255, which covers all addresses on on + * someones local network). It also provides methods for checking wether given + * address is in this range. Any number of ranges and standalone addresses can + * be added to the range. + */ +public class InetRange implements Cloneable { + + Hashtable host_names; + Vector all; + Vector end_names; + + boolean useSeparateThread = true; + + /** + * Creates the empty range. + */ + public InetRange() { + all = new Vector(); + host_names = new Hashtable(); + end_names = new Vector(); + } + + /** + * Adds another host or range to this range. The String can be one of those: + *

      + *
    • Host name. eg.(Athena.myhost.com or 45.54.56.65) + * + *
    • Range in the form .myhost.net.au
      + * In which case anything that ends with .myhost.net.au will be considered + * in the range. + * + *
    • Range in the form ddd.ddd.ddd.
      + * This will be treated as range ddd.ddd.ddd.0 to ddd.ddd.ddd.255. It is not + * necessary to specify 3 first bytes you can use just one or two. For + * example 130. will cover address between 130.0.0.0 and 13.255.255.255. + * + *
    • Range in the form host_from[: \t\n\r\f]host_to.
      + * That is two hostnames or ips separated by either whitespace or colon. + *
    + */ + public synchronized boolean add(final String s0) { + if (s0 == null) { + return false; + } + + String s = s0.trim(); + if (s.length() == 0) { + return false; + } + + Object[] entry; + + if (s.endsWith(".")) { + // thing like: 111.222.33. + // it is being treated as range 111.222.33.000 - 111.222.33.255 + + final int[] addr = ip2intarray(s); + long from, to; + from = to = 0; + + if (addr == null) { + return false; + } + for (int i = 0; i < 4; i++) { + if (addr[i] >= 0) { + from += (((long) addr[i]) << 8 * (3 - i)); + } else { + to = from; + while (i < 4) { + to += 255l << 8 * (3 - i++); + } + break; + } + } + entry = new Object[] { s, null, new Long(from), new Long(to) }; + all.addElement(entry); + + } else if (s.startsWith(".")) { + // Thing like: .myhost.com + + end_names.addElement(s); + all.addElement(new Object[] { s, null, null, null }); + } else { + final StringTokenizer tokens = new StringTokenizer(s, " \t\r\n\f:"); + if (tokens.countTokens() > 1) { + entry = new Object[] { s, null, null, null }; + resolve(entry, tokens.nextToken(), tokens.nextToken()); + all.addElement(entry); + } else { + entry = new Object[] { s, null, null, null }; + all.addElement(entry); + host_names.put(s, entry); + resolve(entry); + } + + } + + return true; + } + + /** + * Adds another ip for this range. + * + * @param ip + * IP os the host which should be added to this range. + */ + public synchronized void add(final InetAddress ip) { + long from, to; + from = to = ip2long(ip); + all.addElement(new Object[] { ip.getHostName(), ip, new Long(from), + new Long(to) }); + } + + /** + * Adds another range of ips for this range.Any host with ip address greater + * than or equal to the address of from and smaller than or equal to the + * address of to will be included in the range. + * + * @param from + * IP from where range starts(including). + * @param to + * IP where range ends(including). + */ + public synchronized void add(final InetAddress from, final InetAddress to) { + all.addElement(new Object[] { + from.getHostAddress() + ":" + to.getHostAddress(), null, + new Long(ip2long(from)), new Long(ip2long(to)) }); + } + + /** + * Checks wether the givan host is in the range. Attempts to resolve host + * name if required. + * + * @param host + * Host name to check. + * @return true If host is in the range, false otherwise. + * @see InetRange#contains(String,boolean) + */ + public synchronized boolean contains(final String host) { + return contains(host, true); + } + + /** + * Checks wether the given host is in the range. + *

    + * Algorithm:
    + *

      + *
    1. Look up if the hostname is in the range (in the Hashtable). + *
    2. Check if it ends with one of the speciefied endings. + *
    3. Check if it is ip(eg.130.220.35.98). If it is check if it is in the + * range. + *
    4. If attemptResolve is true, host is name, rather than ip, and all + * previous attempts failed, try to resolve the hostname, and check wether + * the ip associated with the host is in the range.It also repeats all + * previos steps with the hostname obtained from InetAddress, but the name + * is not allways the full name,it is quite likely to be the same. Well it + * was on my machine. + *
    + * + * @param host + * Host name to check. + * @param attemptResolve + * Wether to lookup ip address which corresponds to the host,if + * required. + * @return true If host is in the range, false otherwise. + */ + public synchronized boolean contains(final String host0, + final boolean attemptResolve) { + if (all.size() == 0) { + return false; // Empty range + } + + String host = host0.trim(); + if (host.length() == 0) { + return false; + } + + if (checkHost(host)) { + return true; + } + if (checkHostEnding(host)) { + return true; + } + + final long l = host2long(host); + if (l >= 0) { + return contains(l); + } + + if (!attemptResolve) { + return false; + } + + try { + final InetAddress ip = InetAddress.getByName(host); + return contains(ip); + } catch (final UnknownHostException uhe) { + + } + + return false; + } + + /** + * Checks wether the given ip is in the range. + * + * @param ip + * Address of the host to check. + * @return true If host is in the range, false otherwise. + */ + public synchronized boolean contains(final InetAddress ip) { + if (checkHostEnding(ip.getHostName())) { + return true; + } + if (checkHost(ip.getHostName())) { + return true; + } + return contains(ip2long(ip)); + } + + /** + * Get all entries in the range as strings.
    + * These strings can be used to delete entries from the range with remove + * function. + * + * @return Array of entries as strings. + * @see InetRange#remove(String) + */ + public synchronized String[] getAll() { + final int size = all.size(); + Object entry[]; + final String all_names[] = new String[size]; + + for (int i = 0; i < size; ++i) { + entry = all.elementAt(i); + all_names[i] = (String) entry[0]; + } + return all_names; + } + + /** + * Removes an entry from this range.
    + * + * @param s + * Entry to remove. + * @return true if successfull. + */ + public synchronized boolean remove(final String s) { + final Enumeration enumx = all.elements(); + while (enumx.hasMoreElements()) { + final Object[] entry = enumx.nextElement(); + if (s.equals(entry[0])) { + all.removeElement(entry); + end_names.removeElement(s); + host_names.remove(s); + return true; + } + } + return false; + } + + /** Get string representaion of this Range. */ + public String toString() { + final String all[] = getAll(); + if (all.length == 0) { + return ""; + } + + String s = all[0]; + for (int i = 1; i < all.length; ++i) { + s += "; " + all[i]; + } + return s; + } + + /** Creates a clone of this Object */ + + @SuppressWarnings("unchecked") + public Object clone() { + final InetRange new_range = new InetRange(); + new_range.all = (Vector) all.clone(); + new_range.end_names = (Vector) end_names.clone(); + new_range.host_names = (Hashtable) host_names.clone(); + return new_range; + } + + // Private methods + // /////////////// + /** + * Same as previous but used internally, to avoid unnecessary convertion of + * IPs, when checking subranges + */ + private synchronized boolean contains(final long ip) { + final Enumeration enumx = all.elements(); + while (enumx.hasMoreElements()) { + final Object[] obj = enumx.nextElement(); + final Long from = obj[2] == null ? null : (Long) obj[2]; + final Long to = obj[3] == null ? null : (Long) obj[3]; + if ((from != null) && (from.longValue() <= ip) + && (to.longValue() >= ip)) { + return true; + } + + } + return false; + } + + private boolean checkHost(final String host) { + return host_names.containsKey(host); + } + + private boolean checkHostEnding(final String host) { + final Enumeration enumx = end_names.elements(); + while (enumx.hasMoreElements()) { + if (host.endsWith(enumx.nextElement())) { + return true; + } + } + return false; + } + + private void resolve(final Object[] entry) { + // First check if it's in the form ddd.ddd.ddd.ddd. + final long ip = host2long((String) entry[0]); + if (ip >= 0) { + entry[2] = entry[3] = new Long(ip); + } else { + final InetRangeResolver res = new InetRangeResolver(entry); + res.resolve(useSeparateThread); + } + } + + private void resolve(final Object[] entry, final String from, + final String to) { + long f, t; + if (((f = host2long(from)) >= 0) && ((t = host2long(to)) >= 0)) { + entry[2] = new Long(f); + entry[3] = new Long(t); + } else { + final InetRangeResolver res = new InetRangeResolver(entry, from, to); + res.resolve(useSeparateThread); + } + } + + // Class methods + // ///////////// + + // Converts ipv4 to long value(unsigned int) + // ///////////////////////////////////////// + static long ip2long(final InetAddress ip) { + long l = 0; + final byte[] addr = ip.getAddress(); + + if (addr.length == 4) { // IPV4 + for (int i = 0; i < 4; ++i) { + l += (((long) addr[i] & 0xFF) << 8 * (3 - i)); + } + } else { // IPV6 + return 0; // Have no idea how to deal with those + } + return l; + } + + long host2long(final String host) { + long ip = 0; + + // check if it's ddd.ddd.ddd.ddd + if (!Character.isDigit(host.charAt(0))) { + return -1; + } + + final int[] addr = ip2intarray(host); + if (addr == null) { + return -1; + } + + for (int i = 0; i < addr.length; ++i) { + ip += ((long) (addr[i] >= 0 ? addr[i] : 0)) << 8 * (3 - i); + } + + return ip; + } + + static int[] ip2intarray(final String host) { + final int[] address = { -1, -1, -1, -1 }; + int i = 0; + final StringTokenizer tokens = new StringTokenizer(host, "."); + if (tokens.countTokens() > 4) { + return null; + } + while (tokens.hasMoreTokens()) { + try { + address[i++] = Integer.parseInt(tokens.nextToken()) & 0xFF; + } catch (final NumberFormatException nfe) { + return null; + } + + } + return address; + } + + /* + * //* This was the test main function //********************************** + * + * public static void main(String args[])throws UnknownHostException{ int i; + * + * InetRange ir = new InetRange(); + * + * + * for(i=0;i + * In order to use it you will need to implement ServerAuthenticator interface. + * There is an implementation of this interface which does no authentication + * ServerAuthenticatorNone, but it is very dangerous to use, as it will give + * access to your local network to anybody in the world. One should never use + * this authentication scheme unless one have pretty good reason to do so. There + * is a couple of other authentication schemes in socks.server package. + * + * @see socks.server.ServerAuthenticator + */ +public class ProxyServer implements Runnable { + + ServerAuthenticator auth; + ProxyMessage msg = null; + + Socket sock = null, remote_sock = null; + ServerSocket ss = null; + UDPRelayServer relayServer = null; + InputStream in, remote_in; + OutputStream out, remote_out; + + int mode; + static final int START_MODE = 0; + static final int ACCEPT_MODE = 1; + static final int PIPE_MODE = 2; + static final int ABORT_MODE = 3; + + static final int BUF_SIZE = 8192; + + Thread pipe_thread1, pipe_thread2; + long lastReadTime; + + static int iddleTimeout = 180000; // 3 minutes + static int acceptTimeout = 180000; // 3 minutes + + static SocksProxyBase proxy; + + static VpnService vpnService; + + static boolean DEBUG = false; + + // Public Constructors + // /////////////////// + + /** + * Creates a proxy server with given Authentication scheme. + * + * @param auth + * Authentication scheme to be used. + */ + public ProxyServer(final ServerAuthenticator auth) { + this.auth = auth; + } + + // Other constructors + // ////////////////// + + ProxyServer(final ServerAuthenticator auth, final Socket s) { + this.auth = auth; + this.sock = s; + this.mode = START_MODE; + } + + // Public methods + // /////////////// + + /** + * Set proxy. + *

    + * Allows Proxy chaining so that one Proxy server is connected to another + * and so on. If proxy supports SOCKSv4, then only some SOCKSv5 requests can + * be handled, UDP would not work, however CONNECT and BIND will be + * translated. + * + * @param p + * Proxy which should be used to handle user requests. + */ + public static void setProxy(final SocksProxyBase p) { + proxy = p; + // FIXME: Side effect. + UDPRelayServer.proxy = proxy; + } + + public static void setVpnService (final VpnService v) + { + vpnService = v; + } + /** + * Get proxy. + * + * @return Proxy wich is used to handle user requests. + */ + public static SocksProxyBase getProxy() { + return proxy; + } + + /** + * Sets the timeout for connections, how long shoud server wait for data to + * arrive before dropping the connection.
    + * Zero timeout implies infinity.
    + * Default timeout is 3 minutes. + */ + public static void setIddleTimeout(final int timeout) { + iddleTimeout = timeout; + } + + /** + * Sets the timeout for BIND command, how long the server should wait for + * the incoming connection.
    + * Zero timeout implies infinity.
    + * Default timeout is 3 minutes. + */ + public static void setAcceptTimeout(final int timeout) { + acceptTimeout = timeout; + } + + /** + * Sets the timeout for UDPRelay server.
    + * Zero timeout implies infinity.
    + * Default timeout is 3 minutes. + */ + public static void setUDPTimeout(final int timeout) { + UDPRelayServer.setTimeout(timeout); + } + + /** + * Sets the size of the datagrams used in the UDPRelayServer.
    + * Default size is 64K, a bit more than maximum possible size of the + * datagram. + */ + public static void setDatagramSize(final int size) { + UDPRelayServer.setDatagramSize(size); + } + + /** + * Start the Proxy server at given port.
    + * This methods blocks. + */ + public void start(final int port) { + start(port, 5, null); + } + + /** + * Create a server with the specified port, listen backlog, and local IP + * address to bind to. The localIP argument can be used on a multi-homed + * host for a ServerSocket that will only accept connect requests to one of + * its addresses. If localIP is null, it will default accepting connections + * on any/all local addresses. The port must be between 0 and 65535, + * inclusive.
    + * This methods blocks. + */ + public void start(final int port, final int backlog, + final InetAddress localIP) { + try { + ss = new ServerSocket(port, backlog, localIP); + final String address = ss.getInetAddress().getHostAddress(); + final int localPort = ss.getLocalPort(); + debug("Starting SOCKS Proxy on: {}:{}", address, localPort); + + while (true) { + final Socket s = ss.accept(); + final String hostName = s.getInetAddress().getHostName(); + final int port2 = s.getPort(); + debug("Accepted from:{}:{}", hostName, port2); + + final ProxyServer ps = new ProxyServer(auth, s); + (new Thread(ps)).start(); + } + } catch (final Exception ioe) { + ioe.printStackTrace(); + } finally { + } + } + + /** + * Stop server operation.It would be wise to interrupt thread running the + * server afterwards. + */ + public void stop() { + try { + if (ss != null) { + ss.close(); + } + } catch (final IOException ioe) { + } + } + + // Runnable interface + // ////////////////// + public void run() { + switch (mode) { + case START_MODE: + try { + startSession(); + } catch (final IOException ioe) { + handleException(ioe); + // ioe.printStackTrace(); + } finally { + abort(); + if (auth != null) { + auth.endSession(); + } + debug("Main thread(client->remote)stopped."); + } + break; + case ACCEPT_MODE: + try { + doAccept(); + mode = PIPE_MODE; + pipe_thread1.interrupt(); // Tell other thread that connection + // have + // been accepted. + pipe(remote_in, out); + } catch (final IOException ioe) { + // log("Accept exception:"+ioe); + handleException(ioe); + } finally { + abort(); + debug("Accept thread(remote->client) stopped"); + } + break; + case PIPE_MODE: + try { + pipe(remote_in, out); + } catch (final IOException ioe) { + } finally { + abort(); + debug("Support thread(remote->client) stopped"); + } + break; + case ABORT_MODE: + break; + default: + debug("Unexpected MODE " + mode); + } + } + + // Private methods + // /////////////// + private void startSession() throws IOException { + sock.setSoTimeout(iddleTimeout); + + try { + auth = auth.startSession(sock); + } catch (final IOException ioe) { + debug("Auth throwed exception:", ioe); + auth = null; + return; + } + + if (auth == null) { // Authentication failed + debug("Authentication failed"); + return; + } + + in = auth.getInputStream(); + out = auth.getOutputStream(); + + msg = readMsg(in); + handleRequest(msg); + } + + private void handleRequest(final ProxyMessage msg) throws IOException { + if (!auth.checkRequest(msg)) { + throw new SocksException(SocksProxyBase.SOCKS_FAILURE); + } + + if (msg.ip == null) { + if (msg instanceof Socks5Message) { + msg.ip = InetAddress.getByName(msg.host); + } else { + throw new SocksException(SocksProxyBase.SOCKS_FAILURE); + } + } + log(msg); + + switch (msg.command) { + case SocksProxyBase.SOCKS_CMD_CONNECT: + onConnect(msg); + break; + case SocksProxyBase.SOCKS_CMD_BIND: + onBind(msg); + break; + case SocksProxyBase.SOCKS_CMD_UDP_ASSOCIATE: + onUDP(msg); + break; + default: + throw new SocksException(SocksProxyBase.SOCKS_CMD_NOT_SUPPORTED); + } + } + + private void handleException(final IOException ioe) { + // If we couldn't read the request, return; + if (msg == null) { + return; + } + // If have been aborted by other thread + if (mode == ABORT_MODE) { + return; + } + // If the request was successfully completed, but exception happened + // later + if (mode == PIPE_MODE) { + return; + } + + int error_code = SocksProxyBase.SOCKS_FAILURE; + + if (ioe instanceof SocksException) { + error_code = ((SocksException) ioe).errCode; + } else if (ioe instanceof NoRouteToHostException) { + error_code = SocksProxyBase.SOCKS_HOST_UNREACHABLE; + } else if (ioe instanceof ConnectException) { + error_code = SocksProxyBase.SOCKS_CONNECTION_REFUSED; + } else if (ioe instanceof InterruptedIOException) { + error_code = SocksProxyBase.SOCKS_TTL_EXPIRE; + } + + if ((error_code > SocksProxyBase.SOCKS_ADDR_NOT_SUPPORTED) + || (error_code < 0)) { + error_code = SocksProxyBase.SOCKS_FAILURE; + } + + sendErrorMessage(error_code); + } + + @SuppressLint("NewApi") + private void onConnect(final ProxyMessage msg) throws IOException { + Socket s; + + if (proxy == null) { + + s = SocketChannel.open().socket(); + if ((null != s) && (null != vpnService)) { + vpnService.protect(s); + } + + s.connect(new InetSocketAddress(msg.ip,msg.port)); + + } else { + s = new SocksSocket(proxy, msg.ip, msg.port); + + if (vpnService != null) + vpnService.protect(s); + } + + + debug("Connected to " + s.getInetAddress() + ":" + s.getPort()); + + ProxyMessage response = null; + final InetAddress localAddress = s.getLocalAddress(); + final int localPort = s.getLocalPort(); + + if (msg instanceof Socks5Message) { + final int cmd = SocksProxyBase.SOCKS_SUCCESS; + response = new Socks5Message(cmd, localAddress, localPort); + } else { + final int cmd = Socks4Message.REPLY_OK; + response = new Socks4Message(cmd, localAddress, localPort); + + } + response.write(out); + startPipe(s); + } + + private void onBind(final ProxyMessage msg) throws IOException { + ProxyMessage response = null; + + if (proxy == null) { + ss = new ServerSocket(0); + } else { + ss = new SocksServerSocket(proxy, msg.ip, msg.port); + } + + ss.setSoTimeout(acceptTimeout); + + final InetAddress inetAddress = ss.getInetAddress(); + final int localPort = ss.getLocalPort(); + debug("Trying accept on {}:{}", inetAddress, localPort); + + if (msg.version == 5) { + final int cmd = SocksProxyBase.SOCKS_SUCCESS; + response = new Socks5Message(cmd, inetAddress, localPort); + } else { + final int cmd = Socks4Message.REPLY_OK; + response = new Socks4Message(cmd, inetAddress, localPort); + } + response.write(out); + + mode = ACCEPT_MODE; + + pipe_thread1 = Thread.currentThread(); + pipe_thread2 = new Thread(this); + pipe_thread2.start(); + + // Make timeout infinit. + sock.setSoTimeout(0); + int eof = 0; + + try { + while ((eof = in.read()) >= 0) { + if (mode != ACCEPT_MODE) { + if (mode != PIPE_MODE) { + return;// Accept failed + } + + remote_out.write(eof); + break; + } + } + } catch (final EOFException e) { + debug("Connection closed while we were trying to accept", e); + return; + } catch (final InterruptedIOException e) { + debug("Interrupted by unsucessful accept thread", e); + if (mode != PIPE_MODE) { + return; + } + } finally { + // System.out.println("Finnaly!"); + } + + if (eof < 0) { + return; + } + + // Do not restore timeout, instead timeout is set on the + // remote socket. It does not make any difference. + + pipe(in, remote_out); + } + + private void onUDP(final ProxyMessage msg) throws IOException { + if (msg.ip.getHostAddress().equals("0.0.0.0")) { + msg.ip = sock.getInetAddress(); + } + debug("Creating UDP relay server for {}:{}", msg.ip, msg.port); + + relayServer = new UDPRelayServer(msg.ip, msg.port, + Thread.currentThread(), sock, auth); + + ProxyMessage response; + + response = new Socks5Message(SocksProxyBase.SOCKS_SUCCESS, + relayServer.relayIP, relayServer.relayPort); + + response.write(out); + + relayServer.start(); + + // Make timeout infinit. + sock.setSoTimeout(0); + try { + while (in.read() >= 0) { + /* do nothing */; + // FIXME: Consider a slight delay here? + } + } catch (final EOFException eofe) { + } + } + + // Private methods + // //////////////// + + private void doAccept() throws IOException { + Socket s = null; + final long startTime = System.currentTimeMillis(); + + while (true) { + s = ss.accept(); + if (s.getInetAddress().equals(msg.ip)) { + // got the connection from the right host + // Close listenning socket. + ss.close(); + break; + } else if (ss instanceof SocksServerSocket) { + // We can't accept more then one connection + s.close(); + ss.close(); + throw new SocksException(SocksProxyBase.SOCKS_FAILURE); + } else { + if (acceptTimeout != 0) { // If timeout is not infinit + final long passed = System.currentTimeMillis() - startTime; + final int newTimeout = acceptTimeout - (int) passed; + + if (newTimeout <= 0) { + throw new InterruptedIOException("newTimeout <= 0"); + } + ss.setSoTimeout(newTimeout); + } + s.close(); // Drop all connections from other hosts + } + } + + // Accepted connection + remote_sock = s; + remote_in = s.getInputStream(); + remote_out = s.getOutputStream(); + + // Set timeout + remote_sock.setSoTimeout(iddleTimeout); + + final InetAddress inetAddress = s.getInetAddress(); + final int port = s.getPort(); + debug("Accepted from {}:{}", s.getInetAddress(), port); + + ProxyMessage response; + + if (msg.version == 5) { + final int cmd = SocksProxyBase.SOCKS_SUCCESS; + response = new Socks5Message(cmd, inetAddress, port); + } else { + final int cmd = Socks4Message.REPLY_OK; + response = new Socks4Message(cmd, inetAddress, port); + } + response.write(out); + } + + private ProxyMessage readMsg(final InputStream in) throws IOException { + PushbackInputStream push_in; + if (in instanceof PushbackInputStream) { + push_in = (PushbackInputStream) in; + } else { + push_in = new PushbackInputStream(in); + } + + final int version = push_in.read(); + push_in.unread(version); + + ProxyMessage msg; + + if (version == 5) { + msg = new Socks5Message(push_in, false); + } else if (version == 4) { + msg = new Socks4Message(push_in, false); + } else { + throw new SocksException(SocksProxyBase.SOCKS_FAILURE); + } + return msg; + } + + private void startPipe(final Socket s) { + mode = PIPE_MODE; + remote_sock = s; + try { + remote_in = s.getInputStream(); + remote_out = s.getOutputStream(); + pipe_thread1 = Thread.currentThread(); + pipe_thread2 = new Thread(this); + pipe_thread2.start(); + pipe(in, remote_out); + } catch (final IOException ioe) { + } + } + + private void sendErrorMessage(final int error_code) { + ProxyMessage err_msg; + if (msg instanceof Socks4Message) { + err_msg = new Socks4Message(Socks4Message.REPLY_REJECTED); + } else { + err_msg = new Socks5Message(error_code); + } + try { + err_msg.write(out); + } catch (final IOException ioe) { + } + } + + private synchronized void abort() { + if (mode == ABORT_MODE) { + return; + } + mode = ABORT_MODE; + try { + debug("Aborting operation"); + if (remote_sock != null) { + remote_sock.close(); + } + if (sock != null) { + sock.close(); + } + if (relayServer != null) { + relayServer.stop(); + } + if (ss != null) { + ss.close(); + } + if (pipe_thread1 != null) { + pipe_thread1.interrupt(); + } + if (pipe_thread2 != null) { + pipe_thread2.interrupt(); + } + } catch (final IOException ioe) { + } + } + + static final void log(final ProxyMessage msg) { + debug("Request version: {}, Command: ", msg.version, + command2String(msg.command)); + + final String user = msg.version == 4 ? ", User:" + msg.user : ""; + debug("IP:" + msg.ip + ", Port:" + msg.port + user); + } + + private void pipe(final InputStream in, final OutputStream out) + throws IOException { + lastReadTime = System.currentTimeMillis(); + final byte[] buf = new byte[BUF_SIZE]; + int len = 0; + while (len >= 0) { + try { + if (len != 0) { + out.write(buf, 0, len); + out.flush(); + } + len = in.read(buf); + lastReadTime = System.currentTimeMillis(); + } catch (final InterruptedIOException iioe) { + if (iddleTimeout == 0) { + return;// Other thread interrupted us. + } + final long timeSinceRead = System.currentTimeMillis() + - lastReadTime; + + if (timeSinceRead >= iddleTimeout - 1000) { + return; + } + len = 0; + + } + } + } + + static final String command_names[] = { "CONNECT", "BIND", "UDP_ASSOCIATE" }; + + static final String command2String(int cmd) { + if ((cmd > 0) && (cmd < 4)) { + return command_names[cmd - 1]; + } else { + return "Unknown Command " + cmd; + } + } + + public static void debug (String msg) + { + if (DEBUG) + Log.d("Proxy",msg); + } + + public static void debug (String msg, String host, int port) + { + if (DEBUG) + debug (msg + ": " + host + ":" + port); + } + + public static void debug (String msg, Exception e) + { + if (DEBUG) + Log.e("Proxy",msg,e); + } + + public static void debug (String msg, InetAddress addr, int port) + { + if (DEBUG) + debug (msg + ": " + addr.getHostAddress() + ": " + port); + } + + public static void debug (String msg, int type, String log) + { + if (DEBUG) + debug (msg + " type:" + type + "=" + log); + } +} \ No newline at end of file diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Message.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Message.java new file mode 100644 index 00000000..484ad969 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Message.java @@ -0,0 +1,167 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * SOCKS4 Reply/Request message. + */ + +class Socks4Message extends ProxyMessage { + + private byte[] msgBytes; + private int msgLength; + + /** + * Server failed reply, cmd command for failed request + */ + public Socks4Message(final int cmd) { + super(cmd, null, 0); + this.user = null; + + msgLength = 2; + msgBytes = new byte[2]; + + msgBytes[0] = (byte) 0; + msgBytes[1] = (byte) command; + } + + /** + * Server successfull reply + */ + public Socks4Message(final int cmd, final InetAddress ip, final int port) { + this(0, cmd, ip, port, null); + } + + /** + * Client request + */ + public Socks4Message(final int cmd, final InetAddress ip, final int port, + final String user) { + this(SOCKS_VERSION, cmd, ip, port, user); + } + + /** + * Most general constructor + */ + public Socks4Message(final int version, final int cmd, + final InetAddress ip, final int port, final String user) { + + super(cmd, ip, port); + this.user = user; + this.version = version; + + msgLength = user == null ? 8 : 9 + user.length(); + msgBytes = new byte[msgLength]; + + msgBytes[0] = (byte) version; + msgBytes[1] = (byte) command; + msgBytes[2] = (byte) (port >> 8); + msgBytes[3] = (byte) port; + + byte[] addr; + + if (ip != null) { + addr = ip.getAddress(); + } else { + addr = new byte[4]; + addr[0] = addr[1] = addr[2] = addr[3] = 0; + } + System.arraycopy(addr, 0, msgBytes, 4, 4); + + if (user != null) { + final byte[] buf = user.getBytes(); + System.arraycopy(buf, 0, msgBytes, 8, buf.length); + msgBytes[msgBytes.length - 1] = 0; + } + } + + /** + * Initialise from the stream If clientMode is true attempts to read a + * server response otherwise reads a client request see read for more detail + */ + public Socks4Message(final InputStream in, final boolean clientMode) + throws IOException { + msgBytes = null; + read(in, clientMode); + } + + public void read(final InputStream in) throws IOException { + read(in, true); + } + + public void read(final InputStream in, final boolean clientMode) + throws IOException { + final DataInputStream d_in = new DataInputStream(in); + version = d_in.readUnsignedByte(); + command = d_in.readUnsignedByte(); + if (clientMode && (command != REPLY_OK)) { + String errMsg; + // FIXME: Range should be replaced with cases. + if ((command > REPLY_OK) && (command < REPLY_BAD_IDENTD)) { + errMsg = replyMessage[command - REPLY_OK]; + } else { + errMsg = "Unknown Reply Code"; + } + throw new SocksException(command, errMsg); + } + port = d_in.readUnsignedShort(); + final byte[] addr = new byte[4]; + d_in.readFully(addr); + ip = bytes2IP(addr); + host = ip.getHostName(); + if (!clientMode) { + int b = in.read(); + // FIXME: Hope there are no idiots with user name bigger than this + final byte[] userBytes = new byte[256]; + int i = 0; + for (i = 0; (i < userBytes.length) && (b > 0); ++i) { + userBytes[i] = (byte) b; + b = in.read(); + } + user = new String(userBytes, 0, i); + } + } + + public void write(final OutputStream out) throws IOException { + if (msgBytes == null) { + final Socks4Message msg; + msg = new Socks4Message(version, command, ip, port, user); + msgBytes = msg.msgBytes; + msgLength = msg.msgLength; + } + out.write(msgBytes); + } + + // Class methods + static InetAddress bytes2IP(final byte[] addr) { + final String s = bytes2IPV4(addr, 0); + try { + return InetAddress.getByName(s); + } catch (final UnknownHostException uh_ex) { + return null; + } + } + + // Constants + + static final String[] replyMessage = { "Request Granted", + "Request Rejected or Failed", + "Failed request, can't connect to Identd", + "Failed request, bad user name" }; + + static final int SOCKS_VERSION = 4; + + public final static int REQUEST_CONNECT = 1; + public final static int REQUEST_BIND = 2; + + public final static int REPLY_OK = 90; + public final static int REPLY_REJECTED = 91; + public final static int REPLY_NO_CONNECT = 92; + public final static int REPLY_BAD_IDENTD = 93; + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Proxy.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Proxy.java new file mode 100644 index 00000000..5850b5e2 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks4Proxy.java @@ -0,0 +1,144 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * Proxy which describes SOCKS4 proxy. + */ + +public class Socks4Proxy extends SocksProxyBase implements Cloneable { + + // Data members + String user; + + // Public Constructors + // ==================== + + /** + * Creates the SOCKS4 proxy + * + * @param p + * Proxy to use to connect to this proxy, allows proxy chaining. + * @param proxyHost + * Address of the proxy server. + * @param proxyPort + * Port of the proxy server + * @param user + * User name to use for identification purposes. + * @throws UnknownHostException + * If proxyHost can't be resolved. + */ + public Socks4Proxy(SocksProxyBase p, String proxyHost, int proxyPort, + String user) throws UnknownHostException { + super(p, proxyHost, proxyPort); + this.user = new String(user); + version = 4; + } + + /** + * Creates the SOCKS4 proxy + * + * @param proxyHost + * Address of the proxy server. + * @param proxyPort + * Port of the proxy server + * @param user + * User name to use for identification purposes. + * @throws UnknownHostException + * If proxyHost can't be resolved. + */ + public Socks4Proxy(String proxyHost, int proxyPort, String user) + throws UnknownHostException { + this(null, proxyHost, proxyPort, user); + } + + /** + * Creates the SOCKS4 proxy + * + * @param p + * Proxy to use to connect to this proxy, allows proxy chaining. + * @param proxyIP + * Address of the proxy server. + * @param proxyPort + * Port of the proxy server + * @param user + * User name to use for identification purposes. + */ + public Socks4Proxy(SocksProxyBase p, InetAddress proxyIP, int proxyPort, + String user) { + super(p, proxyIP, proxyPort); + this.user = new String(user); + version = 4; + } + + /** + * Creates the SOCKS4 proxy + * + * @param proxyIP + * Address of the proxy server. + * @param proxyPort + * Port of the proxy server + * @param user + * User name to use for identification purposes. + */ + public Socks4Proxy(InetAddress proxyIP, int proxyPort, String user) { + this(null, proxyIP, proxyPort, user); + } + + // Public instance methods + // ======================== + + /** + * Creates a clone of this proxy. Changes made to the clone should not + * affect this object. + */ + public Object clone() { + final Socks4Proxy newProxy = new Socks4Proxy(proxyIP, proxyPort, user); + newProxy.directHosts = (InetRange) directHosts.clone(); + newProxy.chainProxy = chainProxy; + return newProxy; + } + + // Public Static(Class) Methods + // ============================== + + // Protected Methods + // ================= + + protected SocksProxyBase copy() { + final Socks4Proxy copy = new Socks4Proxy(proxyIP, proxyPort, user); + copy.directHosts = this.directHosts; + copy.chainProxy = chainProxy; + return copy; + } + + protected ProxyMessage formMessage(int cmd, InetAddress ip, int port) { + switch (cmd) { + case SOCKS_CMD_CONNECT: + cmd = Socks4Message.REQUEST_CONNECT; + break; + case SOCKS_CMD_BIND: + cmd = Socks4Message.REQUEST_BIND; + break; + default: + return null; + } + return new Socks4Message(cmd, ip, port, user); + } + + protected ProxyMessage formMessage(int cmd, String host, int port) + throws UnknownHostException { + + return formMessage(cmd, InetAddress.getByName(host), port); + } + + protected ProxyMessage formMessage(InputStream in) throws SocksException, + IOException { + + return new Socks4Message(in, true); + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5DatagramSocket.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5DatagramSocket.java new file mode 100644 index 00000000..114d5906 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5DatagramSocket.java @@ -0,0 +1,480 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +/** + * Datagram socket to interract through the firewall.
    + * Can be used same way as the normal DatagramSocket. One should be carefull + * though with the datagram sizes used, as additional data is present in both + * incomming and outgoing datagrams. + *

    + * SOCKS5 protocol allows to send host address as either: + *

      + *
    • IPV4, normal 4 byte address. (10 bytes header size) + *
    • IPV6, version 6 ip address (not supported by Java as for now). 22 bytes + * header size. + *
    • Host name,(7+length of the host name bytes header size). + *
    + * As with other Socks equivalents, direct addresses are handled transparently, + * that is data will be send directly when required by the proxy settings. + *

    + * NOTE:
    + * Unlike other SOCKS Sockets, it does not support proxy chaining, and + * will throw an exception if proxy has a chain proxy attached. The reason for + * that is not my laziness, but rather the restrictions of the SOCKSv5 protocol. + * Basicaly SOCKSv5 proxy server, needs to know from which host:port datagrams + * will be send for association, and returns address to which datagrams should + * be send by the client, but it does not inform client from which host:port it + * is going to send datagrams, in fact there is even no guarantee they will be + * send at all and from the same address each time. + */ +public class Socks5DatagramSocket extends DatagramSocket { + + InetAddress relayIP; + int relayPort; + Socks5Proxy proxy; + private boolean server_mode = false; + UDPEncapsulation encapsulation; + + /** + * Construct Datagram socket for communication over SOCKS5 proxy server. + * This constructor uses default proxy, the one set with + * Proxy.setDefaultProxy() method. If default proxy is not set or it is set + * to version4 proxy, which does not support datagram forwarding, throws + * SocksException. + */ + public Socks5DatagramSocket() throws SocksException, IOException { + this(SocksProxyBase.defaultProxy, 0, null); + } + + /** + * Construct Datagram socket for communication over SOCKS5 proxy server. And + * binds it to the specified local port. This constructor uses default + * proxy, the one set with Proxy.setDefaultProxy() method. If default proxy + * is not set or it is set to version4 proxy, which does not support + * datagram forwarding, throws SocksException. + */ + public Socks5DatagramSocket(int port) throws SocksException, IOException { + this(SocksProxyBase.defaultProxy, port, null); + } + + /** + * Construct Datagram socket for communication over SOCKS5 proxy server. And + * binds it to the specified local port and address. This constructor uses + * default proxy, the one set with Proxy.setDefaultProxy() method. If + * default proxy is not set or it is set to version4 proxy, which does not + * support datagram forwarding, throws SocksException. + */ + public Socks5DatagramSocket(int port, InetAddress ip) + throws SocksException, IOException { + this(SocksProxyBase.defaultProxy, port, ip); + } + + /** + * Constructs datagram socket for communication over specified proxy. And + * binds it to the given local address and port. Address of null and port of + * 0, signify any availabale port/address. Might throw SocksException, if: + *

      + *
    1. Given version of proxy does not support UDP_ASSOCIATE. + *
    2. Proxy can't be reached. + *
    3. Authorization fails. + *
    4. Proxy does not want to perform udp forwarding, for any reason. + *
    + * Might throw IOException if binding datagram socket to given address/port + * fails. See java.net.DatagramSocket for more details. + */ + public Socks5DatagramSocket(SocksProxyBase p, int port, InetAddress ip) + throws SocksException, IOException { + + super(port, ip); + + if (p == null) { + throw new SocksException(SocksProxyBase.SOCKS_NO_PROXY); + } + + if (!(p instanceof Socks5Proxy)) { + final String s = "Datagram Socket needs Proxy version 5"; + throw new SocksException(-1, s); + } + + if (p.chainProxy != null) { + final String s = "Datagram Sockets do not support proxy chaining."; + throw new SocksException(SocksProxyBase.SOCKS_JUST_ERROR, s); + } + + proxy = (Socks5Proxy) p.copy(); + + final ProxyMessage msg = proxy.udpAssociate(super.getLocalAddress(), + super.getLocalPort()); + + relayIP = msg.ip; + if (relayIP.getHostAddress().equals("0.0.0.0")) { + // FIXME: What happens here? + relayIP = proxy.proxyIP; + } + relayPort = msg.port; + + encapsulation = proxy.udp_encapsulation; + + //log.debug("Datagram Socket:{}:{}", getLocalAddress(), getLocalPort()); + //log.debug("Socks5Datagram: {}:{}", relayIP, relayPort); + } + + /** + * Used by UDPRelayServer. + */ + Socks5DatagramSocket(boolean server_mode, UDPEncapsulation encapsulation, + InetAddress relayIP, int relayPort) throws IOException { + super(); + this.server_mode = server_mode; + this.relayIP = relayIP; + this.relayPort = relayPort; + this.encapsulation = encapsulation; + this.proxy = null; + } + + /** + * Sends the Datagram either through the proxy or directly depending on + * current proxy settings and destination address.
    + * + * NOTE: DatagramPacket size should be at least 10 bytes less than + * the systems limit. + * + *

    + * See documentation on java.net.DatagramSocket for full details on how to + * use this method. + * + * @param dp + * Datagram to send. + * @throws IOException + * If error happens with I/O. + */ + public void send(DatagramPacket dp) throws IOException { + // If the host should be accessed directly, send it as is. + if (!server_mode && proxy.isDirect(dp.getAddress())) { + super.send(dp); + //log.debug("Sending datagram packet directly:"); + return; + } + + final byte[] head = formHeader(dp.getAddress(), dp.getPort()); + byte[] buf = new byte[head.length + dp.getLength()]; + final byte[] data = dp.getData(); + + // Merge head and data + System.arraycopy(head, 0, buf, 0, head.length); + // System.arraycopy(data,dp.getOffset(),buf,head.length,dp.getLength()); + System.arraycopy(data, 0, buf, head.length, dp.getLength()); + + if (encapsulation != null) { + buf = encapsulation.udpEncapsulate(buf, true); + } + + super.send(new DatagramPacket(buf, buf.length, relayIP, relayPort)); + } + + /** + * This method allows to send datagram packets with address type DOMAINNAME. + * SOCKS5 allows to specify host as names rather than ip addresses.Using + * this method one can send udp datagrams through the proxy, without having + * to know the ip address of the destination host. + *

    + * If proxy specified for that socket has an option resolveAddrLocally set + * to true host will be resolved, and the datagram will be send with address + * type IPV4, if resolve fails, UnknownHostException is thrown. + * + * @param dp + * Datagram to send, it should contain valid port and data + * @param host + * Host name to which datagram should be send. + * @throws IOException + * If error happens with I/O, or the host can't be resolved when + * proxy settings say that hosts should be resolved locally. + * @see Socks5Proxy#resolveAddrLocally(boolean) + */ + public void send(DatagramPacket dp, String host) throws IOException { + if (proxy.isDirect(host)) { + dp.setAddress(InetAddress.getByName(host)); + super.send(dp); + return; + } + + if ((proxy).resolveAddrLocally) { + dp.setAddress(InetAddress.getByName(host)); + } + + final byte[] head = formHeader(host, dp.getPort()); + byte[] buf = new byte[head.length + dp.getLength()]; + final byte[] data = dp.getData(); + // Merge head and data + System.arraycopy(head, 0, buf, 0, head.length); + // System.arraycopy(data,dp.getOffset(),buf,head.length,dp.getLength()); + System.arraycopy(data, 0, buf, head.length, dp.getLength()); + + if (encapsulation != null) { + buf = encapsulation.udpEncapsulate(buf, true); + } + + super.send(new DatagramPacket(buf, buf.length, relayIP, relayPort)); + } + + /** + * Receives udp packet. If packet have arrived from the proxy relay server, + * it is processed and address and port of the packet are set to the address + * and port of sending host.
    + * If the packet arrived from anywhere else it is not changed.
    + * NOTE: DatagramPacket size should be at least 10 bytes bigger + * than the largest packet you expect (this is for IPV4 addresses). For + * hostnames and IPV6 it is even more. + * + * @param dp + * Datagram in which all relevent information will be copied. + */ + public void receive(DatagramPacket dp) throws IOException { + super.receive(dp); + + if (server_mode) { + // Drop all datagrams not from relayIP/relayPort + final int init_length = dp.getLength(); + final int initTimeout = getSoTimeout(); + final long startTime = System.currentTimeMillis(); + + while (!relayIP.equals(dp.getAddress()) + || (relayPort != dp.getPort())) { + + // Restore datagram size + dp.setLength(init_length); + + // If there is a non-infinit timeout on this socket + // Make sure that it happens no matter how often unexpected + // packets arrive. + if (initTimeout != 0) { + final long passed = System.currentTimeMillis() - startTime; + final int newTimeout = initTimeout - (int) passed; + + if (newTimeout <= 0) { + throw new InterruptedIOException( + "In Socks5DatagramSocket->receive()"); + } + setSoTimeout(newTimeout); + } + + super.receive(dp); + } + + // Restore timeout settings + if (initTimeout != 0) { + setSoTimeout(initTimeout); + } + + } else if (!relayIP.equals(dp.getAddress()) + || (relayPort != dp.getPort())) { + return; // Recieved direct packet + // If the datagram is not from the relay server, return it it as is. + } + + byte[] data; + data = dp.getData(); + + if (encapsulation != null) { + data = encapsulation.udpEncapsulate(data, false); + } + + // FIXME: What is this? + final int offset = 0; // Java 1.1 + // int offset = dp.getOffset(); //Java 1.2 + + final ByteArrayInputStream bIn = new ByteArrayInputStream(data, offset, + dp.getLength()); + + final ProxyMessage msg = new Socks5Message(bIn); + dp.setPort(msg.port); + dp.setAddress(msg.getInetAddress()); + + // what wasn't read by the Message is the data + final int data_length = bIn.available(); + // Shift data to the left + System.arraycopy(data, offset + dp.getLength() - data_length, data, + offset, data_length); + + dp.setLength(data_length); + } + + /** + * Returns port assigned by the proxy, to which datagrams are relayed. It is + * not the same port to which other party should send datagrams. + * + * @return Port assigned by socks server to which datagrams are send for + * association. + */ + public int getLocalPort() { + if (server_mode) { + return super.getLocalPort(); + } + return relayPort; + } + + /** + * Address assigned by the proxy, to which datagrams are send for relay. It + * is not necesseraly the same address, to which other party should send + * datagrams. + * + * @return Address to which datagrams are send for association. + */ + public InetAddress getLocalAddress() { + if (server_mode) { + return super.getLocalAddress(); + } + return relayIP; + } + + /** + * Closes datagram socket, and proxy connection. + */ + public void close() { + if (!server_mode) { + proxy.endSession(); + } + super.close(); + } + + /** + * This method checks wether proxy still runs udp forwarding service for + * this socket. + *

    + * This methods checks wether the primary connection to proxy server is + * active. If it is, chances are that proxy continues to forward datagrams + * being send from this socket. If it was closed, most likely datagrams are + * no longer being forwarded by the server. + *

    + * Proxy might decide to stop forwarding datagrams, in which case it should + * close primary connection. This method allows to check, wether this have + * been done. + *

    + * You can specify timeout for which we should be checking EOF condition on + * the primary connection. Timeout is in milliseconds. Specifying 0 as + * timeout implies infinity, in which case method will block, until + * connection to proxy is closed or an error happens, and then return false. + *

    + * One possible scenario is to call isProxyactive(0) in separate thread, and + * once it returned notify other threads about this event. + * + * @param timeout + * For how long this method should block, before returning. + * @return true if connection to proxy is active, false if eof or error + * condition have been encountered on the connection. + */ + public boolean isProxyAlive(int timeout) { + if (server_mode) { + return false; + } + if (proxy != null) { + try { + proxy.proxySocket.setSoTimeout(timeout); + + final int eof = proxy.in.read(); + if (eof < 0) { + return false; // EOF encountered. + } else { + //log.warn("This really should not happen"); + return true; // This really should not happen + } + + } catch (final InterruptedIOException iioe) { + return true; // read timed out. + } catch (final IOException ioe) { + return false; + } + } + return false; + } + + // PRIVATE METHODS + // //////////////// + + private byte[] formHeader(InetAddress ip, int port) { + final Socks5Message request = new Socks5Message(0, ip, port); + request.data[0] = 0; + return request.data; + } + + private byte[] formHeader(String host, int port) { + final Socks5Message request = new Socks5Message(0, host, port); + request.data[0] = 0; + return request.data; + } + + /* + * ====================================================================== + * + * //Mainly Test functions ////////////////////// + * + * private String bytes2String(byte[] b){ String s=""; char[] hex_digit = { + * '0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F'}; + * for(int i=0;i> 4; int i2 = b[i] & + * 0xF; s+=hex_digit[i1]; s+=hex_digit[i2]; s+=" "; } return s; } private + * static final void debug(String s){ if(DEBUG) System.out.print(s); } + * + * private static final boolean DEBUG = true; + * + * + * public static void usage(){ System.err.print( + * "Usage: java Socks.SocksDatagramSocket host port [socksHost socksPort]\n" + * ); } + * + * static final int defaultProxyPort = 1080; //Default Port static final + * String defaultProxyHost = "www-proxy"; //Default proxy + * + * public static void main(String args[]){ int port; String host; int + * proxyPort; String proxyHost; InetAddress ip; + * + * if(args.length > 1 && args.length < 5){ try{ + * + * host = args[0]; port = Integer.parseInt(args[1]); + * + * proxyPort =(args.length > 3)? Integer.parseInt(args[3]) : + * defaultProxyPort; + * + * host = args[0]; ip = InetAddress.getByName(host); + * + * proxyHost =(args.length > 2)? args[2] : defaultProxyHost; + * + * Proxy.setDefaultProxy(proxyHost,proxyPort); Proxy p = + * Proxy.getDefaultProxy(); p.addDirect("lux"); + * + * + * DatagramSocket ds = new Socks5DatagramSocket(); + * + * + * BufferedReader in = new BufferedReader( new + * InputStreamReader(System.in)); String s; + * + * System.out.print("Enter line:"); s = in.readLine(); + * + * while(s != null){ byte[] data = (s+"\r\n").getBytes(); DatagramPacket dp + * = new DatagramPacket(data,0,data.length, ip,port); + * System.out.println("Sending to: "+ip+":"+port); ds.send(dp); dp = new + * DatagramPacket(new byte[1024],1024); + * + * System.out.println("Trying to recieve on port:"+ ds.getLocalPort()); + * ds.receive(dp); System.out.print("Recieved:\n"+ + * "From:"+dp.getAddress()+":"+dp.getPort()+ "\n\n"+ new + * String(dp.getData(),dp.getOffset(),dp.getLength())+"\n" ); + * System.out.print("Enter line:"); s = in.readLine(); + * + * } ds.close(); System.exit(1); + * + * }catch(SocksException s_ex){ System.err.println("SocksException:"+s_ex); + * s_ex.printStackTrace(); System.exit(1); }catch(IOException io_ex){ + * io_ex.printStackTrace(); System.exit(1); }catch(NumberFormatException + * num_ex){ usage(); num_ex.printStackTrace(); System.exit(1); } + * + * }else{ usage(); } } + */ + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Message.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Message.java new file mode 100644 index 00000000..4d4b06d0 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Message.java @@ -0,0 +1,325 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * SOCKS5 request/response message. + */ + +class Socks5Message extends ProxyMessage { + /** Address type of given message */ + public int addrType; + + byte[] data; + + /** + * Server error response. + * + * @param cmd + * Error code. + */ + public Socks5Message(int cmd) { + super(cmd, null, 0); + data = new byte[3]; + data[0] = SOCKS_VERSION; // Version. + data[1] = (byte) cmd; // Reply code for some kind of failure. + data[2] = 0; // Reserved byte. + } + + /** + * Construct client request or server response. + * + * @param cmd + * - Request/Response code. + * @param ip + * - IP field. + * @paarm port - port field. + */ + public Socks5Message(int cmd, InetAddress ip, int port) { + super(cmd, ip, port); + + if (ip == null) { + this.host = "0.0.0.0"; + } else { + this.host = ip.getHostName(); + } + + this.version = SOCKS_VERSION; + + byte[] addr; + + if (ip == null) { + addr = new byte[4]; + addr[0] = addr[1] = addr[2] = addr[3] = 0; + } else { + addr = ip.getAddress(); + } + + if (addr.length == 4) { + addrType = SOCKS_ATYP_IPV4; + } else { + addrType = SOCKS_ATYP_IPV6; + } + + data = new byte[6 + addr.length]; + data[0] = (byte) SOCKS_VERSION; // Version + data[1] = (byte) command; // Command + data[2] = (byte) 0; // Reserved byte + data[3] = (byte) addrType; // Address type + + // Put Address + System.arraycopy(addr, 0, data, 4, addr.length); + // Put port + data[data.length - 2] = (byte) (port >> 8); + data[data.length - 1] = (byte) (port); + } + + /** + * Construct client request or server response. + * + * @param cmd + * - Request/Response code. + * @param hostName + * - IP field as hostName, uses ADDR_TYPE of HOSTNAME. + * @paarm port - port field. + */ + public Socks5Message(int cmd, String hostName, int port) { + super(cmd, null, port); + this.host = hostName; + this.version = SOCKS_VERSION; + + //log.debug("Doing ATYP_DOMAINNAME"); + + addrType = SOCKS_ATYP_DOMAINNAME; + final byte addr[] = hostName.getBytes(); + + data = new byte[7 + addr.length]; + data[0] = (byte) SOCKS_VERSION; // Version + data[1] = (byte) command; // Command + data[2] = (byte) 0; // Reserved byte + data[3] = (byte) SOCKS_ATYP_DOMAINNAME; // Address type + data[4] = (byte) addr.length; // Length of the address + + // Put Address + System.arraycopy(addr, 0, data, 5, addr.length); + // Put port + data[data.length - 2] = (byte) (port >> 8); + data[data.length - 1] = (byte) (port); + } + + /** + * Initialises Message from the stream. Reads server response from given + * stream. + * + * @param in + * Input stream to read response from. + * @throws SocksException + * If server response code is not SOCKS_SUCCESS(0), or if any + * error with protocol occurs. + * @throws IOException + * If any error happens with I/O. + */ + public Socks5Message(InputStream in) throws SocksException, IOException { + this(in, true); + } + + /** + * Initialises Message from the stream. Reads server response or client + * request from given stream. + * + * @param in + * Input stream to read response from. + * @param clinetMode + * If true read server response, else read client request. + * @throws SocksException + * If server response code is not SOCKS_SUCCESS(0) and reading + * in client mode, or if any error with protocol occurs. + * @throws IOException + * If any error happens with I/O. + */ + public Socks5Message(InputStream in, boolean clientMode) + throws SocksException, IOException { + + read(in, clientMode); + } + + /** + * Initialises Message from the stream. Reads server response from given + * stream. + * + * @param in + * Input stream to read response from. + * @throws SocksException + * If server response code is not SOCKS_SUCCESS(0), or if any + * error with protocol occurs. + * @throws IOException + * If any error happens with I/O. + */ + public void read(InputStream in) throws SocksException, IOException { + read(in, true); + } + + /** + * Initialises Message from the stream. Reads server response or client + * request from given stream. + * + * @param in + * Input stream to read response from. + * @param clinetMode + * If true read server response, else read client request. + * @throws SocksException + * If server response code is not SOCKS_SUCCESS(0) and reading + * in client mode, or if any error with protocol occurs. + * @throws IOException + * If any error happens with I/O. + */ + public void read(InputStream in, boolean clientMode) throws SocksException, + IOException { + + data = null; + ip = null; + + final DataInputStream di = new DataInputStream(in); + + version = di.readUnsignedByte(); + command = di.readUnsignedByte(); + + if (clientMode && (command != 0)) { + throw new SocksException(command); + } + + di.readUnsignedByte(); + addrType = di.readUnsignedByte(); + + byte addr[]; + + switch (addrType) { + case SOCKS_ATYP_IPV4: + addr = new byte[4]; + di.readFully(addr); + host = bytes2IPV4(addr, 0); + break; + case SOCKS_ATYP_IPV6: + addr = new byte[SOCKS_IPV6_LENGTH];// I believe it is 16 bytes,huge! + di.readFully(addr); + host = bytes2IPV6(addr, 0); + break; + case SOCKS_ATYP_DOMAINNAME: + //log.debug("Reading ATYP_DOMAINNAME"); + addr = new byte[di.readUnsignedByte()];// Next byte shows the length + di.readFully(addr); + host = new String(addr); + break; + default: + throw (new SocksException(SocksProxyBase.SOCKS_JUST_ERROR)); + } + + port = di.readUnsignedShort(); + + if ((addrType != SOCKS_ATYP_DOMAINNAME) && doResolveIP) { + try { + ip = InetAddress.getByName(host); + } catch (final UnknownHostException uh_ex) { + } + } + } + + /** + * Writes the message to the stream. + * + * @param out + * Output stream to which message should be written. + */ + public void write(OutputStream out) throws SocksException, IOException { + if (data == null) { + Socks5Message msg; + + if (addrType == SOCKS_ATYP_DOMAINNAME) { + msg = new Socks5Message(command, host, port); + } else { + if (ip == null) { + try { + ip = InetAddress.getByName(host); + } catch (final UnknownHostException uh_ex) { + throw new SocksException( + SocksProxyBase.SOCKS_JUST_ERROR); + } + } + msg = new Socks5Message(command, ip, port); + } + data = msg.data; + } + out.write(data); + } + + /** + * Returns IP field of the message as IP, if the message was created with + * ATYP of HOSTNAME, it will attempt to resolve the hostname, which might + * fail. + * + * @throws UnknownHostException + * if host can't be resolved. + */ + public InetAddress getInetAddress() throws UnknownHostException { + if (ip != null) { + return ip; + } + + return (ip = InetAddress.getByName(host)); + } + + /** + * Returns string representation of the message. + */ + public String toString() { + // FIXME: Single line version, please. + final String s = "Socks5Message:" + "\n" + "VN " + version + "\n" + + "CMD " + command + "\n" + "ATYP " + addrType + "\n" + + "ADDR " + host + "\n" + "PORT " + port + "\n"; + return s; + } + + /** + *Wether to resolve hostIP returned from SOCKS server that is wether to + * create InetAddress object from the hostName string + */ + static public boolean resolveIP() { + return doResolveIP; + } + + /** + *Wether to resolve hostIP returned from SOCKS server that is wether to + * create InetAddress object from the hostName string + * + * @param doResolve + * Wether to resolve hostIP from SOCKS server. + *@return Previous value. + */ + static public boolean resolveIP(boolean doResolve) { + final boolean old = doResolveIP; + doResolveIP = doResolve; + return old; + } + + /* + * private static final void debug(String s){ if(DEBUG) System.out.print(s); + * } private static final boolean DEBUG = false; + */ + + // SOCKS5 constants + public static final int SOCKS_VERSION = 5; + + public static final int SOCKS_ATYP_IPV4 = 0x1; // Where is 2?? + public static final int SOCKS_ATYP_DOMAINNAME = 0x3; // !!!!rfc1928 + public static final int SOCKS_ATYP_IPV6 = 0x4; + + public static final int SOCKS_IPV6_LENGTH = 16; + + static boolean doResolveIP = true; + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Proxy.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Proxy.java new file mode 100644 index 00000000..7400aa6e --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/Socks5Proxy.java @@ -0,0 +1,295 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.Hashtable; + +/** + * SOCKS5 Proxy. + */ + +public class Socks5Proxy extends SocksProxyBase implements Cloneable { + + // Data members + private Hashtable authMethods = new Hashtable(); + private int selectedMethod; + + boolean resolveAddrLocally = true; + UDPEncapsulation udp_encapsulation = null; + + // Public Constructors + // ==================== + + /** + * Creates SOCKS5 proxy. + * + * @param p + * Proxy to use to connect to this proxy, allows proxy chaining. + * @param proxyHost + * Host on which a Proxy server runs. + * @param proxyPort + * Port on which a Proxy server listens for connections. + * @throws UnknownHostException + * If proxyHost can't be resolved. + */ + public Socks5Proxy(SocksProxyBase p, String proxyHost, int proxyPort) + throws UnknownHostException { + + super(p, proxyHost, proxyPort); + version = 5; + setAuthenticationMethod(0, new AuthenticationNone()); + } + + /** + * Creates SOCKS5 proxy. + * + * @param proxyHost + * Host on which a Proxy server runs. + * @param proxyPort + * Port on which a Proxy server listens for connections. + * @throws UnknownHostException + * If proxyHost can't be resolved. + */ + public Socks5Proxy(String proxyHost, int proxyPort) + throws UnknownHostException { + this(null, proxyHost, proxyPort); + } + + /** + * Creates SOCKS5 proxy. + * + * @param p + * Proxy to use to connect to this proxy, allows proxy chaining. + * @param proxyIP + * Host on which a Proxy server runs. + * @param proxyPort + * Port on which a Proxy server listens for connections. + */ + public Socks5Proxy(SocksProxyBase p, InetAddress proxyIP, int proxyPort) { + super(p, proxyIP, proxyPort); + version = 5; + setAuthenticationMethod(0, new AuthenticationNone()); + } + + /** + * Creates SOCKS5 proxy. + * + * @param proxyIP + * Host on which a Proxy server runs. + * @param proxyPort + * Port on which a Proxy server listens for connections. + */ + public Socks5Proxy(InetAddress proxyIP, int proxyPort) { + this(null, proxyIP, proxyPort); + } + + // Public instance methods + // ======================== + + /** + * Wether to resolve address locally or to let proxy do so. + *

    + * SOCKS5 protocol allows to send host names rather then IPs in the + * requests, this option controls wether the hostnames should be send to the + * proxy server as names, or should they be resolved locally. + * + * @param doResolve + * Wether to perform resolution locally. + * @return Previous settings. + */ + public boolean resolveAddrLocally(boolean doResolve) { + final boolean old = resolveAddrLocally; + resolveAddrLocally = doResolve; + return old; + } + + /** + * Get current setting on how the addresses should be handled. + * + * @return Current setting for address resolution. + * @see Socks5Proxy#resolveAddrLocally(boolean doResolve) + */ + public boolean resolveAddrLocally() { + return resolveAddrLocally; + } + + /** + * Adds another authentication method. + * + * @param methodId + * Authentication method id, see rfc1928 + * @param method + * Implementation of Authentication + * @see Authentication + */ + public boolean setAuthenticationMethod(int methodId, Authentication method) { + if ((methodId < 0) || (methodId > 255)) { + return false; + } + if (method == null) { + // Want to remove a particular method + return (authMethods.remove(new Integer(methodId)) != null); + } else {// Add the method, or rewrite old one + authMethods.put(new Integer(methodId), method); + } + return true; + } + + /** + * Get authentication method, which corresponds to given method id + * + * @param methodId + * Authentication method id. + * @return Implementation for given method or null, if one was not set. + */ + public Authentication getAuthenticationMethod(int methodId) { + final Object method = authMethods.get(new Integer(methodId)); + if (method == null) { + return null; + } + return (Authentication) method; + } + + /** + * Creates a clone of this Proxy. clone() returns an + */ + @SuppressWarnings("unchecked") + public Object clone() { + final Socks5Proxy newProxy = new Socks5Proxy(proxyIP, proxyPort); + + final Object o = this.authMethods.clone(); + newProxy.authMethods = (Hashtable) o; + + newProxy.directHosts = (InetRange) directHosts.clone(); + newProxy.resolveAddrLocally = resolveAddrLocally; + newProxy.chainProxy = chainProxy; + return newProxy; + } + + // Public Static(Class) Methods + // ============================== + + // Protected Methods + // ================= + + protected SocksProxyBase copy() { + final Socks5Proxy copy = new Socks5Proxy(proxyIP, proxyPort); + + copy.authMethods = this.authMethods; // same Hash, no copy + copy.directHosts = this.directHosts; + copy.chainProxy = this.chainProxy; + copy.resolveAddrLocally = this.resolveAddrLocally; + return copy; + } + + /** + * + * + */ + protected void startSession() throws SocksException { + super.startSession(); + Authentication auth; + final Socket ps = proxySocket; // The name is too long + + try { + + final byte nMethods = (byte) authMethods.size(); // Number of + // methods + + final byte[] buf = new byte[2 + nMethods]; // 2 is for VER,NMETHODS + buf[0] = (byte) version; + buf[1] = nMethods; // Number of methods + int i = 2; + + final Enumeration ids = authMethods.keys(); + while (ids.hasMoreElements()) { + buf[i++] = (byte) ids.nextElement().intValue(); + } + + out.write(buf); + out.flush(); + + final int versionNumber = in.read(); + selectedMethod = in.read(); + + if ((versionNumber < 0) || (selectedMethod < 0)) { + // EOF condition was reached + endSession(); + final String s = "Connection to proxy lost."; + throw new SocksException(SOCKS_PROXY_IO_ERROR, s); + } + + if (versionNumber < version) { + // What should we do?? + } + + if (selectedMethod == 0xFF) { // No method selected + ps.close(); + throw (new SocksException(SOCKS_AUTH_NOT_SUPPORTED)); + } + + auth = getAuthenticationMethod(selectedMethod); + if (auth == null) { + // This shouldn't happen, unless method was removed by other + // thread, or the server stuffed up + final String s = "Specified Authentication not found!"; + throw new SocksException(SOCKS_JUST_ERROR, s); + } + + final Object[] in_out; + in_out = auth.doSocksAuthentication(selectedMethod, ps); + + if (in_out == null) { + // Authentication failed by some reason + throw (new SocksException(SOCKS_AUTH_FAILURE)); + } + + /* + * Most authentication methods are expected to return simply the + * input/output streams associated with the socket. However if the + * auth. method requires some kind of encryption/decryption being + * done on the connection it should provide classes to handle I/O. + */ + + in = (InputStream) in_out[0]; + out = (OutputStream) in_out[1]; + if (in_out.length > 2) { + udp_encapsulation = (UDPEncapsulation) in_out[2]; + } + + } catch (final SocksException s_ex) { + throw s_ex; + } catch (final UnknownHostException uh_ex) { + throw new SocksException(SOCKS_PROXY_NO_CONNECT, uh_ex); + } catch (final SocketException so_ex) { + throw new SocksException(SOCKS_PROXY_NO_CONNECT, so_ex); + } catch (final IOException io_ex) { + throw new SocksException(SOCKS_PROXY_IO_ERROR, io_ex); + } + } + + protected ProxyMessage formMessage(int cmd, InetAddress ip, int port) { + return new Socks5Message(cmd, ip, port); + } + + protected ProxyMessage formMessage(int cmd, String host, int port) + throws UnknownHostException { + if (resolveAddrLocally) { + return formMessage(cmd, InetAddress.getByName(host), port); + } else { + return new Socks5Message(cmd, host, port); + } + } + + protected ProxyMessage formMessage(InputStream in) throws SocksException, + IOException { + return new Socks5Message(in); + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksException.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksException.java new file mode 100644 index 00000000..a6515974 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksException.java @@ -0,0 +1,111 @@ +package com.runjva.sourceforge.jsocks.protocol; + +/** + * Exception thrown by various socks classes to indicate errors with protocol or + * unsuccessfull server responses. + */ +public class SocksException extends java.io.IOException { + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Construct a SocksException with given errorcode. + *

    + * Tries to look up message which corresponds to this error code. + * + * @param errCode + * Error code for this exception. + */ + public SocksException(int errCode) { + this.errCode = errCode; + lookupErrorString(errCode); + } + + private void lookupErrorString(int errCode) { + if ((errCode >> 16) == 0) { + if (errCode <= serverReplyMessage.length) { + errString = serverReplyMessage[errCode]; + } else { + errString = UNASSIGNED_ERROR_MESSAGE; + } + } else { + // Local error + errCode = (errCode >> 16) - 1; + if (errCode <= localErrorMessage.length) { + errString = localErrorMessage[errCode]; + } else { + errString = UNASSIGNED_ERROR_MESSAGE; + } + } + } + + /** + * Construct a SocksException with given error code, and a Throwable cause + * + * @param errCode + * @param t + * Nested exception for debugging purposes. + */ + public SocksException(int errCode, Throwable t) { + super(t); // Java 1.6+ + this.errCode = errCode; + lookupErrorString(errCode); + } + + /** + * Constructs a SocksException with given error code and message. + * + * @param errCode + * Error code. + * @param errString + * Error Message. + */ + public SocksException(int errCode, String errString) { + this.errCode = errCode; + this.errString = errString; + } + + public SocksException(int errCode, String string, Throwable t) { + super(string, t); // Java 1.6+ + this.errCode = errCode; + this.errString = string; + } + + /** + * Get the error code associated with this exception. + * + * @return Error code associated with this exception. + */ + public int getErrorCode() { + return errCode; + } + + /** + * Get human readable representation of this exception. + * + * @return String represntation of this exception. + */ + public String toString() { + return errString; + } + + static final String UNASSIGNED_ERROR_MESSAGE = "Unknown error message"; + + static final String serverReplyMessage[] = { "Succeeded", + "General SOCKS server failure", + "Connection not allowed by ruleset", "Network unreachable", + "Host unreachable", "Connection refused", "TTL expired", + "Command not supported", "Address type not supported" }; + + static final String localErrorMessage[] = { "SOCKS server not specified", + "Unable to contact SOCKS server", "IO error", + "None of Authentication methods are supported", + "Authentication failed", "General SOCKS fault" }; + + String errString; + int errCode; + +}// End of SocksException class + diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksProxyBase.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksProxyBase.java new file mode 100644 index 00000000..ebf4fdb8 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksProxyBase.java @@ -0,0 +1,543 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InterruptedIOException; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + +/** + * Abstract class Proxy, base for classes Socks4Proxy and Socks5Proxy. Defines + * methods for specifying default proxy, to be used by all classes of this + * package. + */ + +public abstract class SocksProxyBase { + + // Data members + protected InetRange directHosts = new InetRange(); + + protected InetAddress proxyIP = null; + protected String proxyHost = null; + protected int proxyPort; + protected Socket proxySocket = null; + + protected InputStream in; + protected OutputStream out; + + protected int version; + + protected SocksProxyBase chainProxy = null; + + // Protected static/class variables + protected static SocksProxyBase defaultProxy = null; + + // Constructors + // ==================== + SocksProxyBase(SocksProxyBase chainProxy, String proxyHost, int proxyPort) + throws UnknownHostException { + this.chainProxy = chainProxy; + this.proxyHost = proxyHost; + + if (chainProxy == null) { + this.proxyIP = InetAddress.getByName(proxyHost); + } + + this.proxyPort = proxyPort; + } + + SocksProxyBase(String proxyHost, int proxyPort) throws UnknownHostException { + this(null, proxyHost, proxyPort); + } + + SocksProxyBase(SocksProxyBase chainProxy, InetAddress proxyIP, int proxyPort) { + this.chainProxy = chainProxy; + this.proxyIP = proxyIP; + this.proxyPort = proxyPort; + } + + SocksProxyBase(InetAddress proxyIP, int proxyPort) { + this(null, proxyIP, proxyPort); + } + + SocksProxyBase(SocksProxyBase p) { + this.proxyIP = p.proxyIP; + this.proxyPort = p.proxyPort; + this.version = p.version; + this.directHosts = p.directHosts; + } + + // Public instance methods + // ======================== + + /** + * Get the port on which proxy server is running. + * + * @return Proxy port. + */ + public int getPort() { + return proxyPort; + } + + /** + * Get the ip address of the proxy server host. + * + * @return Proxy InetAddress. + */ + public InetAddress getInetAddress() { + return proxyIP; + } + + /** + * Adds given ip to the list of direct addresses. This machine will be + * accessed without using proxy. + */ + public void addDirect(InetAddress ip) { + directHosts.add(ip); + } + + /** + * Adds host to the list of direct addresses. This machine will be accessed + * without using proxy. + */ + public boolean addDirect(String host) { + return directHosts.add(host); + } + + /** + * Adds given range of addresses to the lsit of direct addresses, machines + * within this range will be accessed without using proxy. + */ + public void addDirect(InetAddress from, InetAddress to) { + directHosts.add(from, to); + } + + /** + * Sets given InetRange as the list of direct address, previous list will be + * discarded, any changes done previously with addDirect(Inetaddress) will + * be lost. The machines in this range will be accessed without using proxy. + * + * @param ir + * InetRange which should be used to look up direct addresses. + * @see InetRange + */ + public void setDirect(InetRange ir) { + directHosts = ir; + } + + /** + * Get the list of direct hosts. + * + * @return Current range of direct address as InetRange object. + * @see InetRange + */ + public InetRange getDirect() { + return directHosts; + } + + /** + * Check wether the given host is on the list of direct address. + * + * @param host + * Host name to check. + * @return true if the given host is specified as the direct addresses. + */ + public boolean isDirect(String host) { + return directHosts.contains(host); + } + + /** + * Check wether the given host is on the list of direct addresses. + * + * @param host + * Host address to check. + * @return true if the given host is specified as the direct address. + */ + public boolean isDirect(InetAddress host) { + return directHosts.contains(host); + } + + /** + * Set the proxy which should be used to connect to given proxy. + * + * @param chainProxy + * Proxy to use to connect to this proxy. + */ + public void setChainProxy(SocksProxyBase chainProxy) { + this.chainProxy = chainProxy; + } + + /** + * Get proxy which is used to connect to this proxy. + * + * @return Proxy which is used to connect to this proxy, or null if proxy is + * to be contacted directly. + */ + public SocksProxyBase getChainProxy() { + return chainProxy; + } + + /** + * Get string representation of this proxy. + * + * @returns string in the form:proxyHost:proxyPort \t Version versionNumber + */ + public String toString() { + return ("" + proxyIP.getHostName() + ":" + proxyPort + "\tVersion " + version); + } + + // Public Static(Class) Methods + // ============================== + + /** + * Sets SOCKS4 proxy as default. + * + * @param hostName + * Host name on which SOCKS4 server is running. + * @param port + * Port on which SOCKS4 server is running. + * @param user + * Username to use for communications with proxy. + */ + public static void setDefaultProxy(String hostName, int port, String user) + throws UnknownHostException { + defaultProxy = new Socks4Proxy(hostName, port, user); + } + + /** + * Sets SOCKS4 proxy as default. + * + * @param ipAddress + * Host address on which SOCKS4 server is running. + * @param port + * Port on which SOCKS4 server is running. + * @param user + * Username to use for communications with proxy. + */ + public static void setDefaultProxy(InetAddress ipAddress, int port, + String user) { + defaultProxy = new Socks4Proxy(ipAddress, port, user); + } + + /** + * Sets SOCKS5 proxy as default. Default proxy only supports + * no-authentication. + * + * @param hostName + * Host name on which SOCKS5 server is running. + * @param port + * Port on which SOCKS5 server is running. + */ + public static void setDefaultProxy(String hostName, int port) + throws UnknownHostException { + defaultProxy = new Socks5Proxy(hostName, port); + } + + /** + * Sets SOCKS5 proxy as default. Default proxy only supports + * no-authentication. + * + * @param ipAddress + * Host address on which SOCKS5 server is running. + * @param port + * Port on which SOCKS5 server is running. + */ + public static void setDefaultProxy(InetAddress ipAddress, int port) { + defaultProxy = new Socks5Proxy(ipAddress, port); + } + + /** + * Sets default proxy. + * + * @param p + * Proxy to use as default proxy. + */ + public static void setDefaultProxy(SocksProxyBase p) { + defaultProxy = p; + } + + /** + * Get current default proxy. + * + * @return Current default proxy, or null if none is set. + */ + public static SocksProxyBase getDefaultProxy() { + return defaultProxy; + } + + /** + * Parses strings in the form: host[:port:user:password], and creates proxy + * from information obtained from parsing. + *

    + * Defaults: port = 1080.
    + * If user specified but not password, creates Socks4Proxy, if user not + * specified creates Socks5Proxy, if both user and password are speciefied + * creates Socks5Proxy with user/password authentication. + * + * @param proxy_entry + * String in the form host[:port:user:password] + * @return Proxy created from the string, null if entry was somehow + * invalid(host unknown for example, or empty string) + */ + public static SocksProxyBase parseProxy(String proxy_entry) { + + String proxy_host; + int proxy_port = 1080; + String proxy_user = null; + String proxy_password = null; + SocksProxyBase proxy; + + final java.util.StringTokenizer st = new java.util.StringTokenizer( + proxy_entry, ":"); + if (st.countTokens() < 1) { + return null; + } + + proxy_host = st.nextToken(); + if (st.hasMoreTokens()) { + try { + proxy_port = Integer.parseInt(st.nextToken().trim()); + } catch (final NumberFormatException nfe) { + } + } + + if (st.hasMoreTokens()) { + proxy_user = st.nextToken(); + } + + if (st.hasMoreTokens()) { + proxy_password = st.nextToken(); + } + + try { + if (proxy_user == null) { + proxy = new Socks5Proxy(proxy_host, proxy_port); + } else if (proxy_password == null) { + proxy = new Socks4Proxy(proxy_host, proxy_port, proxy_user); + } else { + proxy = new Socks5Proxy(proxy_host, proxy_port); + final UserPasswordAuthentication upa = new UserPasswordAuthentication( + proxy_user, proxy_password); + + ((Socks5Proxy) proxy).setAuthenticationMethod( + UserPasswordAuthentication.METHOD_ID, upa); + } + } catch (final UnknownHostException uhe) { + return null; + } + + return proxy; + } + + // Protected Methods + // ================= + + protected void startSession() throws SocksException { + try { + if (chainProxy == null) { + proxySocket = new Socket(proxyIP, proxyPort); + } else if (proxyIP != null) { + proxySocket = new SocksSocket(chainProxy, proxyIP, proxyPort); + } else { + proxySocket = new SocksSocket(chainProxy, proxyHost, proxyPort); + } + + in = proxySocket.getInputStream(); + out = proxySocket.getOutputStream(); + } catch (final SocksException se) { + throw se; + } catch (final IOException io_ex) { + throw new SocksException(SOCKS_PROXY_IO_ERROR, "" + io_ex); + } + } + + /** + * Create a copy of this proxy for use by individual threads. + * + * @return proxy + */ + protected abstract SocksProxyBase copy(); + + protected abstract ProxyMessage formMessage(int cmd, InetAddress ip, + int port); + + protected abstract ProxyMessage formMessage(int cmd, String host, int port) + throws UnknownHostException; + + protected abstract ProxyMessage formMessage(InputStream in) + throws SocksException, IOException; + + protected ProxyMessage connect(InetAddress ip, int port) + throws SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_CONNECT, ip, + port); + return exchange(request); + } catch (final SocksException se) { + endSession(); + throw se; + } + } + + protected ProxyMessage connect(String host, int port) + throws UnknownHostException, SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_CONNECT, host, + port); + return exchange(request); + } catch (final SocksException se) { + endSession(); + throw se; + } + } + + protected ProxyMessage bind(InetAddress ip, int port) throws SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_BIND, ip, port); + return exchange(request); + } catch (final SocksException se) { + endSession(); + throw se; + } + } + + protected ProxyMessage bind(String host, int port) + throws UnknownHostException, SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_BIND, host, port); + return exchange(request); + } catch (final SocksException se) { + endSession(); + throw se; + } + } + + protected ProxyMessage accept() throws IOException, SocksException { + ProxyMessage msg; + try { + msg = formMessage(in); + } catch (final InterruptedIOException iioe) { + throw iioe; + } catch (final IOException io_ex) { + endSession(); + throw new SocksException(SOCKS_PROXY_IO_ERROR, + "While Trying accept:" + io_ex); + } + return msg; + } + + protected ProxyMessage udpAssociate(InetAddress ip, int port) + throws SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_UDP_ASSOCIATE, + ip, port); + if (request != null) { + return exchange(request); + } + } catch (final SocksException se) { + endSession(); + throw se; + } + // Only get here if request was null + endSession(); + throw new SocksException(SOCKS_METHOD_NOTSUPPORTED, + "This version of proxy does not support UDP associate, use version 5"); + } + + protected ProxyMessage udpAssociate(String host, int port) + throws UnknownHostException, SocksException { + try { + startSession(); + final ProxyMessage request = formMessage(SOCKS_CMD_UDP_ASSOCIATE, + host, port); + if (request != null) { + return exchange(request); + } + } catch (final SocksException se) { + endSession(); + throw se; + } + // Only get here if request was null + endSession(); + throw new SocksException(SOCKS_METHOD_NOTSUPPORTED, + "This version of proxy does not support UDP associate, use version 5"); + } + + protected void endSession() { + try { + if (proxySocket != null) { + proxySocket.close(); + } + proxySocket = null; + } catch (final IOException io_ex) { + } + } + + /** + *Sends the request to SOCKS server + */ + protected void sendMsg(ProxyMessage msg) throws SocksException, IOException { + msg.write(out); + } + + /** + * Reads the reply from the SOCKS server + */ + protected ProxyMessage readMsg() throws SocksException, IOException { + return formMessage(in); + } + + /** + *Sends the request reads reply and returns it throws exception if + * something wrong with IO or the reply code is not zero + */ + protected ProxyMessage exchange(ProxyMessage request) throws SocksException { + ProxyMessage reply; + try { + request.write(out); + reply = formMessage(in); + } catch (final SocksException s_ex) { + throw s_ex; + } catch (final IOException ioe) { + throw (new SocksException(SOCKS_PROXY_IO_ERROR, "" + ioe)); + } + return reply; + } + + // Private methods + // =============== + + // Constants + + public static final int SOCKS_SUCCESS = 0; + public static final int SOCKS_FAILURE = 1; + public static final int SOCKS_BADCONNECT = 2; + public static final int SOCKS_BADNETWORK = 3; + public static final int SOCKS_HOST_UNREACHABLE = 4; + public static final int SOCKS_CONNECTION_REFUSED = 5; + public static final int SOCKS_TTL_EXPIRE = 6; + public static final int SOCKS_CMD_NOT_SUPPORTED = 7; + public static final int SOCKS_ADDR_NOT_SUPPORTED = 8; + + public static final int SOCKS_NO_PROXY = 1 << 16; + public static final int SOCKS_PROXY_NO_CONNECT = 2 << 16; + public static final int SOCKS_PROXY_IO_ERROR = 3 << 16; + public static final int SOCKS_AUTH_NOT_SUPPORTED = 4 << 16; + public static final int SOCKS_AUTH_FAILURE = 5 << 16; + public static final int SOCKS_JUST_ERROR = 6 << 16; + + public static final int SOCKS_DIRECT_FAILED = 7 << 16; + public static final int SOCKS_METHOD_NOTSUPPORTED = 8 << 16; + + static final int SOCKS_CMD_CONNECT = 0x1; + static final int SOCKS_CMD_BIND = 0x2; + static final int SOCKS_CMD_UDP_ASSOCIATE = 0x3; + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksServerSocket.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksServerSocket.java new file mode 100644 index 00000000..8d009cbf --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksServerSocket.java @@ -0,0 +1,235 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.net.UnknownHostException; + +/** + * SocksServerSocket allows to accept connections from one particular host + * through the SOCKS4 or SOCKS5 proxy. + */ +public class SocksServerSocket extends ServerSocket { + // Data members + protected SocksProxyBase proxy; + protected String localHost; + protected InetAddress localIP; + protected int localPort; + + boolean doing_direct = false; + InetAddress remoteAddr; + + /** + * Creates ServerSocket capable of accepting one connection through the + * firewall, uses default Proxy. + * + * @param host + * Host from which the connection should be recieved. + *@param port + * Port number of the primary connection. + */ + public SocksServerSocket(String host, int port) throws SocksException, + UnknownHostException, IOException { + this(SocksProxyBase.defaultProxy, host, port); + } + + /** + *Creates ServerSocket capable of accepting one connection through the + * firewall, uses given proxy. + * + * @param p + * Proxy object to use. + *@param host + * Host from which the connection should be recieved. + *@param port + * Port number of the primary connection. + */ + public SocksServerSocket(SocksProxyBase p, String host, int port) + throws SocksException, UnknownHostException, IOException { + + super(0); + if (p == null) { + throw new SocksException(SocksProxyBase.SOCKS_NO_PROXY); + } + // proxy=p; + proxy = p.copy(); + if (proxy.isDirect(host)) { + remoteAddr = InetAddress.getByName(host); + proxy = null; + doDirect(); + } else { + processReply(proxy.bind(host, port)); + } + } + + /** + * Creates ServerSocket capable of accepting one connection through the + * firewall, uses default Proxy. + * + * @param ip + * Host from which the connection should be recieved. + *@param port + * Port number of the primary connection. + */ + public SocksServerSocket(InetAddress ip, int port) throws SocksException, + IOException { + this(SocksProxyBase.defaultProxy, ip, port); + } + + /** + *Creates ServerSocket capable of accepting one connection through the + * firewall, uses given proxy. + * + * @param p + * Proxy object to use. + *@param ip + * Host from which the connection should be recieved. + *@param port + * Port number of the primary connection. + */ + public SocksServerSocket(SocksProxyBase p, InetAddress ip, int port) + throws SocksException, IOException { + super(0); + + if (p == null) { + throw new SocksException(SocksProxyBase.SOCKS_NO_PROXY); + } + this.proxy = p.copy(); + + if (proxy.isDirect(ip)) { + remoteAddr = ip; + doDirect(); + } else { + processReply(proxy.bind(ip, port)); + } + } + + /** + * Accepts the incoming connection. + */ + public Socket accept() throws IOException { + Socket s; + + if (!doing_direct) { + if (proxy == null) { + return null; + } + + final ProxyMessage msg = proxy.accept(); + s = msg.ip == null ? new SocksSocket(msg.host, msg.port, proxy) + : new SocksSocket(msg.ip, msg.port, proxy); + // Set timeout back to 0 + proxy.proxySocket.setSoTimeout(0); + } else { // Direct Connection + + // Mimic the proxy behaviour, + // only accept connections from the speciefed host. + while (true) { + s = super.accept(); + if (s.getInetAddress().equals(remoteAddr)) { + // got the connection from the right host + // Close listenning socket. + break; + } else { + s.close(); // Drop all connections from other hosts + } + } + + } + proxy = null; + // Return accepted socket + return s; + } + + /** + * Closes the connection to proxy if socket have not been accepted, if the + * direct connection is used, closes direct ServerSocket. If the client + * socket have been allready accepted, does nothing. + */ + public void close() throws IOException { + super.close(); + if (proxy != null) { + proxy.endSession(); + } + proxy = null; + } + + /** + * Get the name of the host proxy is using to listen for incoming + * connection. + *

    + * Usefull when address is returned by proxy as the hostname. + * + * @return the hostname of the address proxy is using to listen for incoming + * connection. + */ + public String getHost() { + return localHost; + } + + /** + * Get address assigned by proxy to listen for incomming connections, or the + * local machine address if doing direct connection. + */ + public InetAddress getInetAddress() { + if (localIP == null) { + try { + localIP = InetAddress.getByName(localHost); + } catch (final UnknownHostException e) { + return null; + } + } + return localIP; + } + + /** + * Get port assigned by proxy to listen for incoming connections, or the + * port chosen by local system, if accepting directly. + */ + public int getLocalPort() { + return localPort; + } + + /** + * Set Timeout. + * + * @param timeout + * Amount of time in milliseconds, accept should wait for + * incoming connection before failing with exception. Zero + * timeout implies infinity. + */ + public void setSoTimeout(int timeout) throws SocketException { + super.setSoTimeout(timeout); + if (!doing_direct) { + proxy.proxySocket.setSoTimeout(timeout); + } + } + + // Private Methods + // //////////////// + + private void processReply(ProxyMessage reply) throws SocksException { + localPort = reply.port; + /* + * If the server have assigned same host as it was contacted on it might + * return an address of all zeros + */ + if (reply.host.equals("0.0.0.0")) { + localIP = proxy.proxyIP; + localHost = localIP.getHostName(); + } else { + localHost = reply.host; + localIP = reply.ip; + } + } + + private void doDirect() { + doing_direct = true; + localPort = super.getLocalPort(); + localIP = super.getInetAddress(); + localHost = localIP.getHostName(); + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksSocket.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksSocket.java new file mode 100644 index 00000000..0e70c7ae --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/SocksSocket.java @@ -0,0 +1,385 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketException; +import java.net.UnknownHostException; + +/** + * SocksSocket tryies to look very similar to normal Socket, while allowing + * connections through the SOCKS4 or 5 proxy. To use this class you will have to + * identify proxy you need to use, Proxy class allows you to set default proxy, + * which will be used by all Socks aware sockets. You can also create either + * Socks4Proxy or Socks5Proxy, and use them by passing to the appropriate + * constructors. + *

    + * Using Socks package can be as easy as that: + * + *

    + * <tt>
    + * 
    + *     import Socks.*;
    + *     ....
    + * 
    + *     try{
    + *        //Specify SOCKS5 proxy
    + *        Proxy.setDefaultProxy("socks-proxy",1080);
    + * 
    + *        //OR you still use SOCKS4
    + *        //Code below uses SOCKS4 proxy
    + *        //Proxy.setDefaultProxy("socks-proxy",1080,userName);
    + * 
    + *        Socket s = SocksSocket("some.host.of.mine",13);
    + *        readTimeFromSock(s);
    + *     }catch(SocksException sock_ex){
    + *        //Usually it will turn in more or less meaningfull message
    + *        System.err.println("SocksException:"+sock_ex);
    + *     }
    + * 
    + * </tt>
    + * 
    + *

    + * However if the need exist for more control, like resolving addresses + * remotely, or using some non-trivial authentication schemes, it can be done. + */ + +public class SocksSocket extends Socket { + // Data members + protected SocksProxyBase proxy; + protected String localHost, remoteHost; + protected InetAddress localIP, remoteIP; + protected int localPort, remotePort; + + private Socket directSock = null; + + /** + * Tryies to connect to given host and port using default proxy. If no + * default proxy speciefied it throws SocksException with error code + * SOCKS_NO_PROXY. + * + * @param host + * Machine to connect to. + * @param port + * Port to which to connect. + * @see SocksSocket#SocksSocket(SocksProxyBase,String,int) + * @see Socks5Proxy#resolveAddrLocally + */ + public SocksSocket(String host, int port) throws SocksException, + UnknownHostException { + this(SocksProxyBase.defaultProxy, host, port); + } + + /** + * Connects to host port using given proxy server. + * + * @param p + * Proxy to use. + * @param host + * Machine to connect to. + * @param port + * Port to which to connect. + * @throws UnknownHostException + * If one of the following happens: + *

      + * + *
    1. Proxy settings say that address should be resolved + * locally, but this fails. + *
    2. Proxy settings say that the host should be contacted + * directly but host name can't be resolved. + *
    + * @throws SocksException + * If one of the following happens: + *
      + *
    • Proxy is is null. + *
    • Proxy settings say that the host should be contacted + * directly but this fails. + *
    • Socks Server can't be contacted. + *
    • Authentication fails. + *
    • Connection is not allowed by the SOCKS proxy. + *
    • SOCKS proxy can't establish the connection. + *
    • Any IO error occured. + *
    • Any protocol error occured. + *
    + * @throws IOexception + * if anything is wrong with I/O. + * @see Socks5Proxy#resolveAddrLocally + */ + public SocksSocket(SocksProxyBase p, String host, int port) + throws SocksException, UnknownHostException { + + if (p == null) { + throw new SocksException(SocksProxyBase.SOCKS_NO_PROXY); + } + // proxy=p; + proxy = p.copy(); + remoteHost = host; + remotePort = port; + if (proxy.isDirect(host)) { + remoteIP = InetAddress.getByName(host); + doDirect(); + } else { + processReply(proxy.connect(host, port)); + } + } + + /** + * Tryies to connect to given ip and port using default proxy. If no default + * proxy speciefied it throws SocksException with error code SOCKS_NO_PROXY. + * + * @param ip + * Machine to connect to. + * @param port + * Port to which to connect. + * @see SocksSocket#SocksSocket(SocksProxyBase,String,int) + */ + public SocksSocket(InetAddress ip, int port) throws SocksException { + this(SocksProxyBase.defaultProxy, ip, port); + } + + /** + * Connects to given ip and port using given Proxy server. + * + * @param p + * Proxy to use. + * @param ip + * Machine to connect to. + * @param port + * Port to which to connect. + */ + public SocksSocket(SocksProxyBase p, InetAddress ip, int port) + throws SocksException { + if (p == null) { + throw new SocksException(SocksProxyBase.SOCKS_NO_PROXY); + } + this.proxy = p.copy(); + this.remoteIP = ip; + this.remotePort = port; + this.remoteHost = ip.getHostName(); + if (proxy.isDirect(remoteIP)) { + doDirect(); + } else { + processReply(proxy.connect(ip, port)); + } + } + + /** + * These 2 constructors are used by the SocksServerSocket. This socket + * simply overrides remoteHost, remotePort + */ + protected SocksSocket(String host, int port, SocksProxyBase proxy) { + this.remotePort = port; + this.proxy = proxy; + this.localIP = proxy.proxySocket.getLocalAddress(); + this.localPort = proxy.proxySocket.getLocalPort(); + this.remoteHost = host; + } + + protected SocksSocket(InetAddress ip, int port, SocksProxyBase proxy) { + remoteIP = ip; + remotePort = port; + this.proxy = proxy; + this.localIP = proxy.proxySocket.getLocalAddress(); + this.localPort = proxy.proxySocket.getLocalPort(); + remoteHost = remoteIP.getHostName(); + } + + /** + * Same as Socket + */ + public void close() throws IOException { + if (proxy != null) { + proxy.endSession(); + } + proxy = null; + } + + /** + * Same as Socket + */ + public InputStream getInputStream() { + return proxy.in; + } + + /** + * Same as Socket + */ + public OutputStream getOutputStream() { + return proxy.out; + } + + /** + * Same as Socket + */ + public int getPort() { + return remotePort; + } + + /** + * Returns remote host name, it is usefull in cases when addresses are + * resolved by proxy, and we can't create InetAddress object. + * + * @return The name of the host this socket is connected to. + */ + public String getHost() { + return remoteHost; + } + + /** + * Get remote host as InetAddress object, might return null if addresses are + * resolved by proxy, and it is not possible to resolve it locally + * + * @return Ip address of the host this socket is connected to, or null if + * address was returned by the proxy as DOMAINNAME and can't be + * resolved locally. + */ + public InetAddress getInetAddress() { + if (remoteIP == null) { + try { + remoteIP = InetAddress.getByName(remoteHost); + } catch (final UnknownHostException e) { + return null; + } + } + return remoteIP; + } + + /** + * Get the port assigned by the proxy for the socket, not the port on locall + * machine as in Socket. + * + * @return Port of the socket used on the proxy server. + */ + public int getLocalPort() { + return localPort; + } + + /** + * Get address assigned by proxy to make a remote connection, it might be + * different from the host specified for the proxy. Can return null if socks + * server returned this address as hostname and it can't be resolved + * locally, use getLocalHost() then. + * + * @return Address proxy is using to make a connection. + */ + public InetAddress getLocalAddress() { + if (localIP == null) { + try { + localIP = InetAddress.getByName(localHost); + } catch (final UnknownHostException e) { + return null; + } + } + return localIP; + } + + /** + * Get name of the host, proxy has assigned to make a remote connection for + * this socket. This method is usefull when proxy have returned address as + * hostname, and we can't resolve it on this machine. + * + * @return The name of the host proxy is using to make a connection. + */ + public String getLocalHost() { + return localHost; + } + + /** + * Same as socket. + */ + public void setSoLinger(boolean on, int val) throws SocketException { + proxy.proxySocket.setSoLinger(on, val); + } + + /** + * Same as socket. + */ + public int getSoLinger(int timeout) throws SocketException { + return proxy.proxySocket.getSoLinger(); + } + + /** + * Same as socket. + */ + public void setSoTimeout(int timeout) throws SocketException { + proxy.proxySocket.setSoTimeout(timeout); + } + + /** + * Same as socket. + */ + public int getSoTimeout(int timeout) throws SocketException { + return proxy.proxySocket.getSoTimeout(); + } + + /** + * Same as socket. + */ + public void setTcpNoDelay(boolean on) throws SocketException { + proxy.proxySocket.setTcpNoDelay(on); + } + + /** + * Same as socket. + */ + public boolean getTcpNoDelay() throws SocketException { + return proxy.proxySocket.getTcpNoDelay(); + } + + /** + * Get string representation of the socket. + */ + public String toString() { + if (directSock != null) { + return "Direct connection:" + directSock; + } + StringBuffer sb = new StringBuffer(); + sb.append("Proxy:"); + sb.append(proxy); + sb.append(";"); + sb.append("addr:"); + sb.append(remoteHost); + sb.append(",port:"); + sb.append(remotePort); + sb.append(",localport:"); + sb.append(localPort); + return sb.toString(); + + } + + // Private Methods + // //////////////// + + private void processReply(ProxyMessage reply) throws SocksException { + localPort = reply.port; + /* + * If the server have assigned same host as it was contacted on it might + * return an address of all zeros + */ + if (reply.host.equals("0.0.0.0")) { + localIP = proxy.proxyIP; + localHost = localIP.getHostName(); + } else { + localHost = reply.host; + localIP = reply.ip; + } + } + + private void doDirect() throws SocksException { + try { + //log.debug("IP: {}_{}", remoteIP, remotePort); + directSock = new Socket(remoteIP, remotePort); + proxy.out = directSock.getOutputStream(); + proxy.in = directSock.getInputStream(); + proxy.proxySocket = directSock; + localIP = directSock.getLocalAddress(); + localPort = directSock.getLocalPort(); + } catch (final IOException io_ex) { + final int errCode = SocksProxyBase.SOCKS_DIRECT_FAILED; + throw new SocksException(errCode, "Direct connect failed:", io_ex); + } + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPEncapsulation.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPEncapsulation.java new file mode 100644 index 00000000..eaa46141 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPEncapsulation.java @@ -0,0 +1,33 @@ +package com.runjva.sourceforge.jsocks.protocol; + +/** + * This interface provides for datagram encapsulation for SOCKSv5 protocol. + *

    + * SOCKSv5 allows for datagrams to be encapsulated for purposes of integrity + * and/or authenticity. How it should be done is aggreed during the + * authentication stage, and is authentication dependent. This interface is + * provided to allow this encapsulation. + * + * @see Authentication + */ +public interface UDPEncapsulation { + + /** + * This method should provide any authentication depended transformation on + * datagrams being send from/to the client. + * + * @param data + * Datagram data (including any SOCKS related bytes), to be + * encapsulated/decapsulated. + * @param out + * Wether the data is being send out. If true method should + * encapsulate/encrypt data, otherwise it should decapsulate/ + * decrypt data. + * @throw IOException if for some reason data can be transformed correctly. + * @return Should return byte array containing data after transformation. It + * is possible to return same array as input, if transformation only + * involves bit mangling, and no additional data is being added or + * removed. + */ + byte[] udpEncapsulate(byte[] data, boolean out) throws java.io.IOException; +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPRelayServer.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPRelayServer.java new file mode 100644 index 00000000..33ec4ed5 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UDPRelayServer.java @@ -0,0 +1,227 @@ +package com.runjva.sourceforge.jsocks.protocol; + +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + +import com.runjva.sourceforge.jsocks.server.ServerAuthenticator; + +/** + * UDP Relay server, used by ProxyServer to perform udp forwarding. + */ +class UDPRelayServer implements Runnable { + + DatagramSocket client_sock; + DatagramSocket remote_sock; + + Socket controlConnection; + + int relayPort; + InetAddress relayIP; + + Thread pipe_thread1, pipe_thread2; + Thread master_thread; + + ServerAuthenticator auth; + + long lastReadTime; + + static SocksProxyBase proxy = null; + static int datagramSize = 0xFFFF;// 64K, a bit more than max udp size + static int iddleTimeout = 180000;// 3 minutes + + /** + * Constructs UDP relay server to communicate with client on given ip and + * port. + * + * @param clientIP + * Address of the client from whom datagrams will be recieved and + * to whom they will be forwarded. + * @param clientPort + * Clients port. + * @param master_thread + * Thread which will be interrupted, when UDP relay server + * stoppes for some reason. + * @param controlConnection + * Socket which will be closed, before interrupting the master + * thread, it is introduced due to a bug in windows JVM which + * does not throw InterruptedIOException in threads which block + * in I/O operation. + */ + public UDPRelayServer(InetAddress clientIP, int clientPort, + Thread master_thread, Socket controlConnection, + ServerAuthenticator auth) throws IOException { + + this.master_thread = master_thread; + this.controlConnection = controlConnection; + this.auth = auth; + + client_sock = new Socks5DatagramSocket(true, + auth.getUdpEncapsulation(), clientIP, clientPort); + + relayPort = client_sock.getLocalPort(); + relayIP = client_sock.getLocalAddress(); + + if (relayIP.getHostAddress().equals("0.0.0.0")) { + relayIP = InetAddress.getLocalHost(); + } + + if (proxy == null) { + remote_sock = new DatagramSocket(); + } else { + remote_sock = new Socks5DatagramSocket(proxy, 0, null); + } + } + + // Public methods + // /////////////// + + /** + * Sets the timeout for UDPRelay server.
    + * Zero timeout implies infinity.
    + * Default timeout is 3 minutes. + */ + + static public void setTimeout(int timeout) { + iddleTimeout = timeout; + } + + /** + * Sets the size of the datagrams used in the UDPRelayServer.
    + * Default size is 64K, a bit more than maximum possible size of the + * datagram. + */ + static public void setDatagramSize(int size) { + datagramSize = size; + } + + /** + * Port to which client should send datagram for association. + */ + public int getRelayPort() { + return relayPort; + } + + /** + * IP address to which client should send datagrams for association. + */ + public InetAddress getRelayIP() { + return relayIP; + } + + /** + * Starts udp relay server. Spawns two threads of execution and returns. + */ + public void start() throws IOException { + remote_sock.setSoTimeout(iddleTimeout); + client_sock.setSoTimeout(iddleTimeout); + + //log.info("Starting UDP relay server on {}:{}", relayIP, relayPort); + //log.info("Remote socket {}:{}", remote_sock.getLocalAddress(), + // remote_sock.getLocalPort()); + + pipe_thread1 = new Thread(this, "pipe1"); + pipe_thread2 = new Thread(this, "pipe2"); + + lastReadTime = System.currentTimeMillis(); + + pipe_thread1.start(); + pipe_thread2.start(); + } + + /** + * Stops Relay server. + *

    + * Does not close control connection, does not interrupt master_thread. + */ + public synchronized void stop() { + master_thread = null; + controlConnection = null; + abort(); + } + + // Runnable interface + // ////////////////// + public void run() { + try { + if (Thread.currentThread().getName().equals("pipe1")) { + pipe(remote_sock, client_sock, false); + } else { + pipe(client_sock, remote_sock, true); + } + } catch (final IOException ioe) { + } finally { + abort(); + //log.info("UDP Pipe thread " + Thread.currentThread().getName() + // + " stopped."); + } + + } + + // Private methods + // /////////////// + private synchronized void abort() { + if (pipe_thread1 == null) { + return; + } + + //log.info("Aborting UDP Relay Server"); + + remote_sock.close(); + client_sock.close(); + + if (controlConnection != null) { + try { + controlConnection.close(); + } catch (final IOException ioe) { + } + } + + if (master_thread != null) { + master_thread.interrupt(); + } + + pipe_thread1.interrupt(); + pipe_thread2.interrupt(); + + pipe_thread1 = null; + } + + private void pipe(DatagramSocket from, DatagramSocket to, boolean out) + throws IOException { + final byte[] data = new byte[datagramSize]; + final DatagramPacket dp = new DatagramPacket(data, data.length); + + while (true) { + try { + from.receive(dp); + lastReadTime = System.currentTimeMillis(); + + if (auth.checkRequest(dp, out)) { + to.send(dp); + } + + } catch (final UnknownHostException uhe) { + //log.info("Dropping datagram for unknown host"); + } catch (final InterruptedIOException iioe) { + // log("Interrupted: "+iioe); + // If we were interrupted by other thread. + if (iddleTimeout == 0) { + return; + } + + // If last datagram was received, long time ago, return. + final long timeSinceRead = System.currentTimeMillis() + - lastReadTime; + if (timeSinceRead >= iddleTimeout - 100) { + return; + } + } + dp.setLength(data.length); + } + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UserPasswordAuthentication.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UserPasswordAuthentication.java new file mode 100644 index 00000000..2d5e6001 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/protocol/UserPasswordAuthentication.java @@ -0,0 +1,91 @@ +package com.runjva.sourceforge.jsocks.protocol; + +/** + * SOCKS5 User Password authentication scheme. + */ +public class UserPasswordAuthentication implements Authentication { + + /** SOCKS ID for User/Password authentication method */ + public final static int METHOD_ID = 2; + + String userName, password; + byte[] request; + + /** + * Create an instance of UserPasswordAuthentication. + * + * @param userName + * User Name to send to SOCKS server. + * @param password + * Password to send to SOCKS server. + */ + public UserPasswordAuthentication(String userName, String password) { + this.userName = userName; + this.password = password; + formRequest(); + } + + /** + * Get the user name. + * + * @return User name. + */ + public String getUser() { + return userName; + } + + /** + * Get password + * + * @return Password + */ + public String getPassword() { + return password; + } + + /** + * Does User/Password authentication as defined in rfc1929. + * + * @return An array containnig in, out streams, or null if authentication + * fails. + */ + public Object[] doSocksAuthentication(int methodId, + java.net.Socket proxySocket) throws java.io.IOException { + + if (methodId != METHOD_ID) { + return null; + } + + final java.io.InputStream in = proxySocket.getInputStream(); + final java.io.OutputStream out = proxySocket.getOutputStream(); + + out.write(request); + final int version = in.read(); + if (version < 0) { + return null; // Server closed connection + } + final int status = in.read(); + if (status != 0) { + return null; // Server closed connection, or auth failed. + } + + return new Object[] { in, out }; + } + + // Private methods + // //////////////// + + /** Convert UserName password in to binary form, ready to be send to server */ + private void formRequest() { + final byte[] user_bytes = userName.getBytes(); + final byte[] password_bytes = password.getBytes(); + + request = new byte[3 + user_bytes.length + password_bytes.length]; + request[0] = (byte) 1; + request[1] = (byte) user_bytes.length; + System.arraycopy(user_bytes, 0, request, 2, user_bytes.length); + request[2 + user_bytes.length] = (byte) password_bytes.length; + System.arraycopy(password_bytes, 0, request, 3 + user_bytes.length, + password_bytes.length); + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/Ident.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/Ident.java new file mode 100644 index 00000000..f2b16829 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/Ident.java @@ -0,0 +1,171 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.InterruptedIOException; +import java.net.ConnectException; +import java.net.Socket; +import java.util.StringTokenizer; + +/** + * Class Ident provides means to obtain user name of the owner of the socket on + * remote machine, providing remote machine runs identd daemon. + *

    + * To use it:

    +   Socket s = ss.accept();
    +   Ident id = new Ident(s);
    +   if(id.successful) goUseUser(id.userName);
    +   else handleIdentError(id.errorCode,id.errorMessage)
    +   
    + */ +public class Ident { + + /** Error Message can be null. */ + public String errorMessage; + + /** Host type as returned by daemon, can be null, if error happened */ + public String hostType; + + /** User name as returned by the identd daemon, or null, if it failed */ + public String userName; + + /** + * If this is true then userName and hostType contain valid values. Else + * errorCode contain the error code, and errorMessage contains the + * corresponding message. + */ + public boolean successful; + + /** Error code */ + public int errorCode; + + /** Identd on port 113 can't be contacted */ + public static final int ERR_NO_CONNECT = 1; + + /** Connection timed out */ + public static final int ERR_TIMEOUT = 2; + + /** + * Identd daemon responded with ERROR, in this case errorMessage contains + * the string explanation, as send by the daemon. + */ + public static final int ERR_PROTOCOL = 3; + + /** + * When parsing server response protocol error happened. + */ + public static final int ERR_PROTOCOL_INCORRECT = 4; + + /** + * Maximum amount of time we should wait before dropping the connection to + * identd server.Setting it to 0 implies infinit timeout. + */ + public static final int connectionTimeout = 10000; + + /** + * Constructor tries to connect to Identd daemon on the host of the given + * socket, and retrieve user name of the owner of given socket connection on + * remote machine. After constructor returns public fields are initialised + * to whatever the server returned. + *

    + * If user name was successfully retrieved successful is set to true, and + * userName and hostType are set to whatever server returned. If however for + * some reason user name was not obtained, successful is set to false and + * errorCode contains the code explaining the reason of failure, and + * errorMessage contains human readable explanation. + *

    + * Constructor may block, for a while. + * + * @param s + * Socket whose ownership on remote end should be obtained. + */ + public Ident(Socket s) { + Socket sock = null; + successful = false; // We are pessimistic + + try { + sock = new Socket(s.getInetAddress(), 113); + sock.setSoTimeout(connectionTimeout); + final byte[] request = ("" + s.getPort() + " , " + s.getLocalPort() + "\r\n") + .getBytes(); + + sock.getOutputStream().write(request); + + final BufferedReader in = new BufferedReader(new InputStreamReader( + sock.getInputStream())); + + parseResponse(in.readLine()); + + } catch (final InterruptedIOException iioe) { + errorCode = ERR_TIMEOUT; + errorMessage = "Connection to identd timed out."; + } catch (final ConnectException ce) { + errorCode = ERR_NO_CONNECT; + errorMessage = "Connection to identd server failed."; + + } catch (final IOException ioe) { + errorCode = ERR_NO_CONNECT; + errorMessage = "" + ioe; + } finally { + try { + if (sock != null) { + sock.close(); + } + } catch (final IOException ioe) { + //log.warn("Could not close socket", ioe); + } + } + } + + private void parseResponse(String response) { + if (response == null) { + errorCode = ERR_PROTOCOL_INCORRECT; + errorMessage = "Identd server closed connection."; + return; + } + + final StringTokenizer st = new StringTokenizer(response, ":"); + if (st.countTokens() < 3) { + errorCode = ERR_PROTOCOL_INCORRECT; + errorMessage = "Can't parse server response."; + return; + } + + st.nextToken(); // Discard first token, it's basically what we have send + final String command = st.nextToken().trim().toUpperCase(); + + if (command.equals("USERID") && (st.countTokens() >= 2)) { + successful = true; + hostType = st.nextToken().trim(); + userName = st.nextToken("").substring(1);// Get all that is left + } else if (command.equals("ERROR")) { + errorCode = ERR_PROTOCOL; + errorMessage = st.nextToken(); + } else { + errorCode = ERR_PROTOCOL_INCORRECT; + System.out.println("Opa!"); + errorMessage = "Can't parse server response."; + } + + } + + // ///////////////////////////////////////////// + // USED for Testing + /* + * public static void main(String[] args) throws IOException{ + * + * Socket s = null; s = new Socket("gp101-16", 1391); + * + * Ident id = new Ident(s); if(id.successful){ + * System.out.println("User: "+id.userName); + * System.out.println("HostType: "+id.hostType); }else{ + * System.out.println("ErrorCode: "+id.errorCode); + * System.out.println("ErrorMessage: "+id.errorMessage); + * + * } + * + * if(s!= null) s.close(); } // + */ + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/IdentAuthenticator.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/IdentAuthenticator.java new file mode 100644 index 00000000..70e25936 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/IdentAuthenticator.java @@ -0,0 +1,182 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +import com.runjva.sourceforge.jsocks.protocol.InetRange; +import com.runjva.sourceforge.jsocks.protocol.ProxyMessage; + +/** + * An implementation of socks.ServerAuthentication which provides simple + * authentication based on the host from which the connection is made and the + * name of the user on the remote machine, as reported by identd daemon on the + * remote machine. + *

    + * It can also be used to provide authentication based only on the contacting + * host address. + */ + +public class IdentAuthenticator extends ServerAuthenticatorBase { + /** Vector of InetRanges */ + Vector hosts; + + /** Vector of user hashes */ + Vector> users; + + String user; + + /** + * Constructs empty IdentAuthenticator. + */ + public IdentAuthenticator() { + hosts = new Vector(); + users = new Vector>(); + } + + /** + * Used to create instances returned from startSession. + * + * @param in + * Input stream. + * @param out + * OutputStream. + * @param user + * Username associated with this connection,could be null if name + * was not required. + */ + IdentAuthenticator(InputStream in, OutputStream out, String user) { + super(in, out); + this.user = user; + } + + /** + * Adds range of addresses from which connection is allowed. Hashtable users + * should contain user names as keys and anything as values (value is not + * used and will be ignored). + * + * @param hostRange + * Range of ip addresses from which connection is allowed. + * @param users + * Hashtable of users for whom connection is allowed, or null to + * indicate that anybody is allowed to connect from the hosts + * within given range. + */ + public synchronized void add(InetRange hostRange, Hashtable users) { + this.hosts.addElement(hostRange); + this.users.addElement(users); + } + + /** + * Grants permission only to those users, who connect from one of the hosts + * registered with add(InetRange,Hashtable) and whose names, as reported by + * identd daemon, are listed for the host the connection came from. + */ + public ServerAuthenticator startSession(Socket s) throws IOException { + + final int ind = getRangeIndex(s.getInetAddress()); + String user = null; + + // System.out.println("getRangeReturned:"+ind); + + if (ind < 0) { + return null; // Host is not on the list. + } + + final ServerAuthenticator serverAuthenticator = super.startSession(s); + final ServerAuthenticatorBase auth = (ServerAuthenticatorBase) serverAuthenticator; + + // System.out.println("super.startSession() returned:"+auth); + if (auth == null) { + return null; + } + + // do the authentication + + final Hashtable user_names = users.elementAt(ind); + + if (user_names != null) { // If need to do authentication + Ident ident; + ident = new Ident(s); + // If can't obtain user name, fail + if (!ident.successful) { + return null; + } + // If user name is not listed for this address, fail + if (!user_names.containsKey(ident.userName)) { + return null; + } + user = ident.userName; + } + return new IdentAuthenticator(auth.in, auth.out, user); + + } + + /** + * For SOCKS5 requests allways returns true. For SOCKS4 requests checks + * wether the user name supplied in the request corresponds to the name + * obtained from the ident daemon. + */ + public boolean checkRequest(ProxyMessage msg, java.net.Socket s) { + // If it's version 5 request, or if anybody is permitted, return true; + if ((msg.version == 5) || (user == null)) { + return true; + } + + if (msg.version != 4) { + return false; // Who knows? + } + + return user.equals(msg.user); + } + + /** Get String representaion of the IdentAuthenticator. */ + public String toString() { + String s = ""; + + for (int i = 0; i < hosts.size(); ++i) { + s += "(Range:" + hosts.elementAt(i) + "," + // + " Users:" + userNames(i) + ") "; + } + return s; + } + + // Private Methods + // //////////////// + private int getRangeIndex(InetAddress ip) { + int index = 0; + final Enumeration enumx = hosts.elements(); + while (enumx.hasMoreElements()) { + final InetRange ir = enumx.nextElement(); + if (ir.contains(ip)) { + return index; + } + index++; + } + return -1; // Not found + } + + private String userNames(int i) { + if (users.elementAt(i) == null) { + return "Everybody is permitted."; + } + + final Enumeration enumx = ((Hashtable) users.elementAt(i)) + .keys(); + if (!enumx.hasMoreElements()) { + return ""; + } + String s = enumx.nextElement().toString(); + while (enumx.hasMoreElements()) { + s += "; " + enumx.nextElement(); + } + + return s; + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticator.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticator.java new file mode 100644 index 00000000..3014a92d --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticator.java @@ -0,0 +1,126 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.DatagramPacket; +import java.net.Socket; + +import com.runjva.sourceforge.jsocks.protocol.ProxyMessage; +import com.runjva.sourceforge.jsocks.protocol.UDPEncapsulation; + +/** + * Classes implementing this interface should provide socks server with + * authentication and authorization of users. + **/ +public interface ServerAuthenticator { + + /** + * This method is called when a new connection accepted by the server. + *

    + * At this point no data have been extracted from the connection. It is + * responsibility of this method to ensure that the next byte in the stream + * after this method have been called is the first byte of the socks request + * message. For SOCKSv4 there is no authentication data and the first byte + * in the stream is part of the request. With SOCKSv5 however there is an + * authentication data first. It is expected that implementaions will + * process this authentication data. + *

    + * If authentication was successful an instance of ServerAuthentication + * should be returned, it later will be used by the server to perform + * authorization and some other things. If authentication fails null should + * be returned, or an exception may be thrown. + * + * @param s + * Accepted Socket. + * @return An instance of ServerAuthenticator to be used for this connection + * or null + */ + ServerAuthenticator startSession(Socket s) throws IOException; + + /** + * This method should return input stream which should be used on the + * accepted socket. + *

    + * SOCKSv5 allows to have multiple authentication methods, and these methods + * might require some kind of transformations being made on the data. + *

    + * This method is called on the object returned from the startSession + * function. + */ + InputStream getInputStream(); + + /** + * This method should return output stream to use to write to the accepted + * socket. + *

    + * SOCKSv5 allows to have multiple authentication methods, and these methods + * might require some kind of transformations being made on the data. + *

    + * This method is called on the object returned from the startSession + * function. + */ + OutputStream getOutputStream(); + + /** + * This method should return UDPEncapsulation, which should be used on the + * datagrams being send in/out. + *

    + * If no transformation should be done on the datagrams, this method should + * return null. + *

    + * This method is called on the object returned from the startSession + * function. + */ + + UDPEncapsulation getUdpEncapsulation(); + + /** + * This method is called when a request have been read. + *

    + * Implementation should decide wether to grant request or not. Returning + * true implies granting the request, false means request should be + * rejected. + *

    + * This method is called on the object returned from the startSession + * function. + * + * @param msg + * Request message. + * @return true to grant request, false to reject it. + */ + boolean checkRequest(ProxyMessage msg); + + /** + * This method is called when datagram is received by the server. + *

    + * Implementaions should decide wether it should be forwarded or dropped. It + * is expecteed that implementation will use datagram address and port + * information to make a decision, as well as anything else. Address and + * port of the datagram are always correspond to remote machine. It is + * either destination or source address. If out is true address is + * destination address, else it is a source address, address of the machine + * from which datagram have been received for the client. + *

    + * Implementaions should return true if the datagram is to be forwarded, and + * false if the datagram should be dropped. + *

    + * This method is called on the object returned from the startSession + * function. + * + * @param out + * If true the datagram is being send out(from the client), + * otherwise it is an incoming datagram. + * @return True to forward datagram false drop it silently. + */ + boolean checkRequest(DatagramPacket dp, boolean out); + + /** + * This method is called when session is completed. Either due to normal + * termination or due to any error condition. + *

    + * This method is called on the object returned from the startSession + * function. + */ + void endSession(); +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorBase.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorBase.java new file mode 100644 index 00000000..79acd582 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorBase.java @@ -0,0 +1,187 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PushbackInputStream; +import java.net.Socket; + +import com.runjva.sourceforge.jsocks.protocol.ProxyMessage; +import com.runjva.sourceforge.jsocks.protocol.UDPEncapsulation; + +/** + * An implementation of ServerAuthenticator, which does not do any + * authentication. + *

    + * Warning!!
    + * Should not be used on machines which are not behind the firewall. + *

    + * It is only provided to make implementing other authentication schemes easier. + *
    + * For Example:

    +   class MyAuth extends socks.server.ServerAuthenticator{
    +    ...
    +    public ServerAuthenticator startSession(java.net.Socket s){
    +      if(!checkHost(s.getInetAddress()) return null;
    +      return super.startSession(s);
    +    }
    +
    +    boolean checkHost(java.net.Inetaddress addr){
    +      boolean allow;
    +      //Do it somehow
    +      return allow;
    +    }
    +   }
    +
    + */ +public abstract class ServerAuthenticatorBase implements ServerAuthenticator { + + static final byte[] socks5response = { 5, 0 }; + + InputStream in; + OutputStream out; + + /** + * Creates new instance of the ServerAuthenticatorNone. + */ + public ServerAuthenticatorBase() { + this.in = null; + this.out = null; + } + + /** + * Constructs new ServerAuthenticatorNone object suitable for returning from + * the startSession function. + * + * @param in + * Input stream to return from getInputStream method. + * @param out + * Output stream to return from getOutputStream method. + */ + public ServerAuthenticatorBase(InputStream in, OutputStream out) { + this.in = in; + this.out = out; + } + + /** + * Grants access to everyone.Removes authentication related bytes from the + * stream, when a SOCKS5 connection is being made, selects an authentication + * NONE. + */ + public ServerAuthenticator startSession(Socket s) throws IOException { + + final PushbackInputStream in = new PushbackInputStream(s + .getInputStream()); + final OutputStream out = s.getOutputStream(); + + final int version = in.read(); + if (version == 5) { + if (!selectSocks5Authentication(in, out, 0)) { + return null; + } + } else if (version == 4) { + // Else it is the request message already, version 4 + in.unread(version); + } else { + return null; + } + + return new ServerAuthenticatorNone(in, out); + } + + /** + * Get input stream. + * + * @return Input stream speciefied in the constructor. + */ + public InputStream getInputStream() { + return in; + } + + /** + * Get output stream. + * + * @return Output stream speciefied in the constructor. + */ + public OutputStream getOutputStream() { + return out; + } + + /** + * Allways returns null. + * + * @return null + */ + public UDPEncapsulation getUdpEncapsulation() { + return null; + } + + /** + * Allways returns true. + */ + public boolean checkRequest(ProxyMessage msg) { + return true; + } + + /** + * Allways returns true. + */ + public boolean checkRequest(java.net.DatagramPacket dp, boolean out) { + return true; + } + + /** + * Does nothing. + */ + public void endSession() { + } + + /** + * Convinience routine for selecting SOCKSv5 authentication. + *

    + * This method reads in authentication methods that client supports, checks + * wether it supports given method. If it does, the notification method is + * written back to client, that this method have been chosen for + * authentication. If given method was not found, authentication failure + * message is send to client ([5,FF]). + * + * @param in + * Input stream, version byte should be removed from the stream + * before calling this method. + * @param out + * Output stream. + * @param methodId + * Method which should be selected. + * @return true if methodId was found, false otherwise. + */ + static public boolean selectSocks5Authentication(InputStream in, + OutputStream out, int methodId) throws IOException { + + final int num_methods = in.read(); + if (num_methods <= 0) { + return false; + } + final byte method_ids[] = new byte[num_methods]; + final byte response[] = new byte[2]; + boolean found = false; + + response[0] = (byte) 5; // SOCKS version + response[1] = (byte) 0xFF; // Not found, we are pessimistic + + int bread = 0; // bytes read so far + while (bread < num_methods) { + bread += in.read(method_ids, bread, num_methods - bread); + } + + for (int i = 0; i < num_methods; ++i) { + if (method_ids[i] == methodId) { + found = true; + response[1] = (byte) methodId; + break; + } + } + + out.write(response); + return found; + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorNone.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorNone.java new file mode 100644 index 00000000..0e976773 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/ServerAuthenticatorNone.java @@ -0,0 +1,16 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Simplest possible ServerAuthenticator implementation. Extends common base. + * + */ +public class ServerAuthenticatorNone extends ServerAuthenticatorBase { + + public ServerAuthenticatorNone(InputStream in, OutputStream out) { + super(in, out); + } + +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserPasswordAuthenticator.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserPasswordAuthenticator.java new file mode 100644 index 00000000..82980f29 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserPasswordAuthenticator.java @@ -0,0 +1,82 @@ +package com.runjva.sourceforge.jsocks.server; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +/** + * This class implements SOCKS5 User/Password authentication scheme as defined + * in rfc1929,the server side of it. (see docs/rfc1929.txt) + */ +public class UserPasswordAuthenticator extends ServerAuthenticatorBase { + + static final int METHOD_ID = 2; + + UserValidation validator; + + /** + * Construct a new UserPasswordAuthentication object, with given + * UserVlaidation scheme. + * + * @param v + * UserValidation to use for validating users. + */ + public UserPasswordAuthenticator(UserValidation validator) { + this.validator = validator; + } + + public ServerAuthenticator startSession(Socket s) throws IOException { + final InputStream in = s.getInputStream(); + final OutputStream out = s.getOutputStream(); + + if (in.read() != 5) { + return null; // Drop non version 5 messages. + } + + if (!selectSocks5Authentication(in, out, METHOD_ID)) { + return null; + } + if (!doUserPasswordAuthentication(s, in, out)) { + return null; + } + + return new ServerAuthenticatorNone(in, out); + } + + // Private Methods + // //////////////// + + private boolean doUserPasswordAuthentication(Socket s, InputStream in, + OutputStream out) throws IOException { + final int version = in.read(); + if (version != 1) { + return false; + } + + final int ulen = in.read(); + if (ulen < 0) { + return false; + } + + final byte[] user = new byte[ulen]; + in.read(user); + final int plen = in.read(); + if (plen < 0) { + return false; + } + final byte[] password = new byte[plen]; + in.read(password); + + if (validator.isUserValid(new String(user), new String(password), s)) { + // System.out.println("user valid"); + out.write(new byte[] { 1, 0 }); + } else { + // System.out.println("user invalid"); + out.write(new byte[] { 1, 1 }); + return false; + } + + return true; + } +} diff --git a/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserValidation.java b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserValidation.java new file mode 100644 index 00000000..c4f77703 --- /dev/null +++ b/jsocksAndroid/src/main/java/com/runjva/sourceforge/jsocks/server/UserValidation.java @@ -0,0 +1,24 @@ +package com.runjva.sourceforge.jsocks.server; + +/** + * Interface which provides for user validation, based on user name password and + * where it connects from. + */ +public interface UserValidation { + /** + * Implementations of this interface are expected to use some or all of the + * information provided plus any information they can extract from other + * sources to decide wether given user should be allowed access to SOCKS + * server, or whatever you use it for. + * + * @return true to indicate user is valid, false otherwise. + * @param username + * User whom implementation should validate. + * @param password + * Password this user provided. + * @param connection + * Socket which user used to connect to the server. + */ + boolean isUserValid(String username, String password, + java.net.Socket connection); +} diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar deleted file mode 100644 index aa0b1a5c..00000000 Binary files a/libs/android-support-v4.jar and /dev/null differ diff --git a/orbotservice/.gitignore b/orbotservice/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/orbotservice/.gitignore @@ -0,0 +1 @@ +/build diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle new file mode 100644 index 00000000..cfc0a533 --- /dev/null +++ b/orbotservice/build.gradle @@ -0,0 +1,33 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.3" + + sourceSets { + main { + jni.srcDirs = [] + } + } + + defaultConfig { + minSdkVersion 9 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile project(':jsocksAndroid') + compile 'com.android.support:appcompat-v7:23.4.0' + compile fileTree(dir: 'libs', include: ['*.jar','*.so']) + testCompile 'junit:junit:4.12' +} diff --git a/orbotservice/proguard-rules.pro b/orbotservice/proguard-rules.pro new file mode 100644 index 00000000..48384c8b --- /dev/null +++ b/orbotservice/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/n8fr8/dev/android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/orbotservice/src/androidTest/java/org/torproject/android/service/ApplicationTest.java b/orbotservice/src/androidTest/java/org/torproject/android/service/ApplicationTest.java new file mode 100644 index 00000000..70ee563e --- /dev/null +++ b/orbotservice/src/androidTest/java/org/torproject/android/service/ApplicationTest.java @@ -0,0 +1,13 @@ +package org.torproject.android.service; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/orbotservice/src/main/AndroidManifest.xml b/orbotservice/src/main/AndroidManifest.xml new file mode 100644 index 00000000..4b550d96 --- /dev/null +++ b/orbotservice/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/assets/bridges.txt b/orbotservice/src/main/assets/bridges.txt similarity index 100% rename from assets/bridges.txt rename to orbotservice/src/main/assets/bridges.txt diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/.cvsignore b/orbotservice/src/main/java/net/freehaven/tor/control/.cvsignore new file mode 100644 index 00000000..6b468b62 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/.cvsignore @@ -0,0 +1 @@ +*.class diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/Bytes.java b/orbotservice/src/main/java/net/freehaven/tor/control/Bytes.java new file mode 100644 index 00000000..e754d907 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/Bytes.java @@ -0,0 +1,114 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.util.Arrays; +import java.util.List; + +/** + * Static class to do bytewise structure manipulation in Java. + */ +/* XXXX There must be a better way to do most of this. + * XXXX The string logic here uses default encoding, which is stupid. + */ +final class Bytes { + + /** Write the two-byte value in 's' into the byte array 'ba', starting at + * the index 'pos'. */ + public static void setU16(byte[] ba, int pos, short s) { + ba[pos] = (byte)((s >> 8) & 0xff); + ba[pos+1] = (byte)((s ) & 0xff); + } + + /** Write the four-byte value in 'i' into the byte array 'ba', starting at + * the index 'pos'. */ + public static void setU32(byte[] ba, int pos, int i) { + ba[pos] = (byte)((i >> 24) & 0xff); + ba[pos+1] = (byte)((i >> 16) & 0xff); + ba[pos+2] = (byte)((i >> 8) & 0xff); + ba[pos+3] = (byte)((i ) & 0xff); + } + + /** Return the four-byte value starting at index 'pos' within 'ba' */ + public static int getU32(byte[] ba, int pos) { + return + ((ba[pos ]&0xff)<<24) | + ((ba[pos+1]&0xff)<<16) | + ((ba[pos+2]&0xff)<< 8) | + ((ba[pos+3]&0xff)); + } + + public static String getU32S(byte[] ba, int pos) { + return String.valueOf( (getU32(ba,pos))&0xffffffffL ); + } + + /** Return the two-byte value starting at index 'pos' within 'ba' */ + public static int getU16(byte[] ba, int pos) { + return + ((ba[pos ]&0xff)<<8) | + ((ba[pos+1]&0xff)); + } + + /** Return the string starting at position 'pos' of ba and extending + * until a zero byte or the end of the string. */ + public static String getNulTerminatedStr(byte[] ba, int pos) { + int len, maxlen = ba.length-pos; + for (len=0; len lst, byte[] ba, int pos, byte split) { + while (pos < ba.length && ba[pos] != 0) { + int len; + for (len=0; pos+len < ba.length; ++len) { + if (ba[pos+len] == 0 || ba[pos+len] == split) + break; + } + if (len>0) + lst.add(new String(ba, pos, len)); + pos += len; + if (ba[pos] == split) + ++pos; + } + } + + /** + * Read bytes from 'ba' starting at 'pos', dividing them into strings + * along the character in 'split' and writing them into 'lst' + */ + public static List splitStr(List lst, String str) { + // split string on spaces, include trailing/leading + String[] tokenArray = str.split(" ", -1); + if (lst == null) { + lst = Arrays.asList( tokenArray ); + } else { + lst.addAll( Arrays.asList( tokenArray ) ); + } + return lst; + } + + private static final char[] NYBBLES = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' + }; + + public static final String hex(byte[] ba) { + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < ba.length; ++i) { + int b = (ba[i]) & 0xff; + buf.append(NYBBLES[b >> 4]); + buf.append(NYBBLES[b&0x0f]); + } + return buf.toString(); + } + + private Bytes() {}; +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/ConfigEntry.java b/orbotservice/src/main/java/net/freehaven/tor/control/ConfigEntry.java new file mode 100644 index 00000000..31eb4b8e --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/ConfigEntry.java @@ -0,0 +1,20 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** A single key-value pair from Tor's configuration. */ +public class ConfigEntry { + public ConfigEntry(String k, String v) { + key = k; + value = v; + is_default = false; + } + public ConfigEntry(String k) { + key = k; + value = ""; + is_default = true; + } + public final String key; + public final String value; + public final boolean is_default; +} diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/EventHandler.java b/orbotservice/src/main/java/net/freehaven/tor/control/EventHandler.java new file mode 100644 index 00000000..5a4e2b5b --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/EventHandler.java @@ -0,0 +1,75 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** + * Abstract interface whose methods are invoked when Tor sends us an event. + * + * @see TorControlConnection#setEventHandler + * @see TorControlConnection#setEvents + */ +public interface EventHandler { + /** + * Invoked when a circuit's status has changed. + * Possible values for status are: + *

      + *
    • "LAUNCHED" : circuit ID assigned to new circuit
    • + *
    • "BUILT" : all hops finished, can now accept streams
    • + *
    • "EXTENDED" : one more hop has been completed
    • + *
    • "FAILED" : circuit closed (was not built)
    • + *
    • "CLOSED" : circuit closed (was built)
    • + *
    + * + * circID is the alphanumeric identifier of the affected circuit, + * and path is a comma-separated list of alphanumeric ServerIDs. + */ + public void circuitStatus(String status, String circID, String path); + /** + * Invoked when a stream's status has changed. + * Possible values for status are: + *
      + *
    • "NEW" : New request to connect
    • + *
    • "NEWRESOLVE" : New request to resolve an address
    • + *
    • "SENTCONNECT" : Sent a connect cell along a circuit
    • + *
    • "SENTRESOLVE" : Sent a resolve cell along a circuit
    • + *
    • "SUCCEEDED" : Received a reply; stream established
    • + *
    • "FAILED" : Stream failed and not retriable.
    • + *
    • "CLOSED" : Stream closed
    • + *
    • "DETACHED" : Detached from circuit; still retriable.
    • + *
    + * + * streamID is the alphanumeric identifier of the affected stream, + * and its target is specified as address:port. + */ + public void streamStatus(String status, String streamID, String target); + /** + * Invoked when the status of a connection to an OR has changed. + * Possible values for status are ["LAUNCHED" | "CONNECTED" | "FAILED" | "CLOSED"]. + * orName is the alphanumeric identifier of the OR affected. + */ + public void orConnStatus(String status, String orName); + /** + * Invoked once per second. read and written are + * the number of bytes read and written, respectively, in + * the last second. + */ + public void bandwidthUsed(long read, long written); + /** + * Invoked whenever Tor learns about new ORs. The orList object + * contains the alphanumeric ServerIDs associated with the new ORs. + */ + public void newDescriptors(java.util.List orList); + /** + * Invoked when Tor logs a message. + * severity is one of ["DEBUG" | "INFO" | "NOTICE" | "WARN" | "ERR"], + * and msg is the message string. + */ + public void message(String severity, String msg); + /** + * Invoked when an unspecified message is received. + * is the message type, and is the message string. + */ + public void unrecognized(String type, String msg); + +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/NullEventHandler.java b/orbotservice/src/main/java/net/freehaven/tor/control/NullEventHandler.java new file mode 100644 index 00000000..a2390e68 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/NullEventHandler.java @@ -0,0 +1,18 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** + * Implementation of EventHandler that ignores all events. Useful + * when you only want to override one method. + */ +public class NullEventHandler implements EventHandler { + public void circuitStatus(String status, String circID, String path) {} + public void streamStatus(String status, String streamID, String target) {} + public void orConnStatus(String status, String orName) {} + public void bandwidthUsed(long read, long written) {} + public void newDescriptors(java.util.List orList) {} + public void message(String severity, String msg) {} + public void unrecognized(String type, String msg) {} +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/PasswordDigest.java b/orbotservice/src/main/java/net/freehaven/tor/control/PasswordDigest.java new file mode 100644 index 00000000..03d0a98e --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/PasswordDigest.java @@ -0,0 +1,98 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +/** + * A hashed digest of a secret password (used to set control connection + * security.) + * + * For the actual hashing algorithm, see RFC2440's secret-to-key conversion. + */ +public class PasswordDigest { + + private final byte[] secret; + private final String hashedKey; + + /** Return a new password digest with a random secret and salt. */ + public static PasswordDigest generateDigest() { + byte[] secret = new byte[20]; + SecureRandom rng = new SecureRandom(); + rng.nextBytes(secret); + return new PasswordDigest(secret); + } + + /** Construct a new password digest with a given secret and random salt */ + public PasswordDigest(byte[] secret) { + this(secret, null); + } + + /** Construct a new password digest with a given secret and random salt. + * Note that the 9th byte of the specifier determines the number of hash + * iterations as in RFC2440. + */ + public PasswordDigest(byte[] secret, byte[] specifier) { + this.secret = secret.clone(); + if (specifier == null) { + specifier = new byte[9]; + SecureRandom rng = new SecureRandom(); + rng.nextBytes(specifier); + specifier[8] = 96; + } + hashedKey = "16:"+encodeBytes(secretToKey(secret, specifier)); + } + + /** Return the secret used to generate this password hash. + */ + public byte[] getSecret() { + return secret.clone(); + } + + /** Return the hashed password in the format used by Tor. */ + public String getHashedPassword() { + return hashedKey; + } + + /** Parameter used by RFC2440's s2k algorithm. */ + private static final int EXPBIAS = 6; + + /** Implement rfc2440 s2k */ + public static byte[] secretToKey(byte[] secret, byte[] specifier) { + MessageDigest d; + try { + d = MessageDigest.getInstance("SHA-1"); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException("Can't run without sha-1."); + } + int c = (specifier[8])&0xff; + int count = (16 + (c&15)) << ((c>>4) + EXPBIAS); + + byte[] tmp = new byte[8+secret.length]; + System.arraycopy(specifier, 0, tmp, 0, 8); + System.arraycopy(secret, 0, tmp, 8, secret.length); + while (count > 0) { + if (count >= tmp.length) { + d.update(tmp); + count -= tmp.length; + } else { + d.update(tmp, 0, count); + count = 0; + } + } + byte[] key = new byte[20+9]; + System.arraycopy(d.digest(), 0, key, 9, 20); + System.arraycopy(specifier, 0, key, 0, 9); + return key; + } + + /** Return a hexadecimal encoding of a byte array. */ + // XXX There must be a better way to do this in Java. + private static final String encodeBytes(byte[] ba) { + return Bytes.hex(ba); + } + +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/README b/orbotservice/src/main/java/net/freehaven/tor/control/README new file mode 100644 index 00000000..b310c7d5 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/README @@ -0,0 +1,4 @@ +We broke the version detection stuff in Tor 0.1.2.16 / 0.2.0.4-alpha. +Somebody should rip out the v0 control protocol stuff from here, and +it should start working again. -RD + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/TorControlCommands.java b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlCommands.java new file mode 100644 index 00000000..c98a1c48 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlCommands.java @@ -0,0 +1,148 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** Interface defining constants used by the Tor controller protocol. + */ +// XXXX Take documentation for these from control-spec.txt +public interface TorControlCommands { + + public static final short CMD_ERROR = 0x0000; + public static final short CMD_DONE = 0x0001; + public static final short CMD_SETCONF = 0x0002; + public static final short CMD_GETCONF = 0x0003; + public static final short CMD_CONFVALUE = 0x0004; + public static final short CMD_SETEVENTS = 0x0005; + public static final short CMD_EVENT = 0x0006; + public static final short CMD_AUTH = 0x0007; + public static final short CMD_SAVECONF = 0x0008; + public static final short CMD_SIGNAL = 0x0009; + public static final short CMD_MAPADDRESS = 0x000A; + public static final short CMD_GETINFO = 0x000B; + public static final short CMD_INFOVALUE = 0x000C; + public static final short CMD_EXTENDCIRCUIT = 0x000D; + public static final short CMD_ATTACHSTREAM = 0x000E; + public static final short CMD_POSTDESCRIPTOR = 0x000F; + public static final short CMD_FRAGMENTHEADER = 0x0010; + public static final short CMD_FRAGMENT = 0x0011; + public static final short CMD_REDIRECTSTREAM = 0x0012; + public static final short CMD_CLOSESTREAM = 0x0013; + public static final short CMD_CLOSECIRCUIT = 0x0014; + + public static final String[] CMD_NAMES = { + "ERROR", + "DONE", + "SETCONF", + "GETCONF", + "CONFVALUE", + "SETEVENTS", + "EVENT", + "AUTH", + "SAVECONF", + "SIGNAL", + "MAPADDRESS", + "GETINFO", + "INFOVALUE", + "EXTENDCIRCUIT", + "ATTACHSTREAM", + "POSTDESCRIPTOR", + "FRAGMENTHEADER", + "FRAGMENT", + "REDIRECTSTREAM", + "CLOSESTREAM", + "CLOSECIRCUIT", + }; + + public static final short EVENT_CIRCSTATUS = 0x0001; + public static final short EVENT_STREAMSTATUS = 0x0002; + public static final short EVENT_ORCONNSTATUS = 0x0003; + public static final short EVENT_BANDWIDTH = 0x0004; + public static final short EVENT_NEWDESCRIPTOR = 0x0006; + public static final short EVENT_MSG_DEBUG = 0x0007; + public static final short EVENT_MSG_INFO = 0x0008; + public static final short EVENT_MSG_NOTICE = 0x0009; + public static final short EVENT_MSG_WARN = 0x000A; + public static final short EVENT_MSG_ERROR = 0x000B; + + public static final String[] EVENT_NAMES = { + "(0)", + "CIRC", + "STREAM", + "ORCONN", + "BW", + "OLDLOG", + "NEWDESC", + "DEBUG", + "INFO", + "NOTICE", + "WARN", + "ERR", + }; + + public static final byte CIRC_STATUS_LAUNCHED = 0x01; + public static final byte CIRC_STATUS_BUILT = 0x02; + public static final byte CIRC_STATUS_EXTENDED = 0x03; + public static final byte CIRC_STATUS_FAILED = 0x04; + public static final byte CIRC_STATUS_CLOSED = 0x05; + + public static final String[] CIRC_STATUS_NAMES = { + "LAUNCHED", + "BUILT", + "EXTENDED", + "FAILED", + "CLOSED", + }; + + public static final byte STREAM_STATUS_SENT_CONNECT = 0x00; + public static final byte STREAM_STATUS_SENT_RESOLVE = 0x01; + public static final byte STREAM_STATUS_SUCCEEDED = 0x02; + public static final byte STREAM_STATUS_FAILED = 0x03; + public static final byte STREAM_STATUS_CLOSED = 0x04; + public static final byte STREAM_STATUS_NEW_CONNECT = 0x05; + public static final byte STREAM_STATUS_NEW_RESOLVE = 0x06; + public static final byte STREAM_STATUS_DETACHED = 0x07; + + public static final String[] STREAM_STATUS_NAMES = { + "SENT_CONNECT", + "SENT_RESOLVE", + "SUCCEEDED", + "FAILED", + "CLOSED", + "NEW_CONNECT", + "NEW_RESOLVE", + "DETACHED" + }; + + public static final byte OR_CONN_STATUS_LAUNCHED = 0x00; + public static final byte OR_CONN_STATUS_CONNECTED = 0x01; + public static final byte OR_CONN_STATUS_FAILED = 0x02; + public static final byte OR_CONN_STATUS_CLOSED = 0x03; + + public static final String[] OR_CONN_STATUS_NAMES = { + "LAUNCHED","CONNECTED","FAILED","CLOSED" + }; + + public static final byte SIGNAL_HUP = 0x01; + public static final byte SIGNAL_INT = 0x02; + public static final byte SIGNAL_USR1 = 0x0A; + public static final byte SIGNAL_USR2 = 0x0C; + public static final byte SIGNAL_TERM = 0x0F; + + public static final String ERROR_MSGS[] = { + "Unspecified error", + "Internal error", + "Unrecognized message type", + "Syntax error", + "Unrecognized configuration key", + "Invalid configuration value", + "Unrecognized byte code", + "Unauthorized", + "Failed authentication attempt", + "Resource exhausted", + "No such stream", + "No such circuit", + "No such OR", + }; + +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/TorControlConnection.java b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlConnection.java new file mode 100644 index 00000000..05ed8c3c --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlConnection.java @@ -0,0 +1,732 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.Reader; +import java.io.Writer; +import java.net.Socket; +import java.net.SocketException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.concurrent.CancellationException; + +/** A connection to a running Tor process as specified in control-spec.txt. */ +public class TorControlConnection implements TorControlCommands { + + private final LinkedList waiters; + private final BufferedReader input; + private final Writer output; + + private ControlParseThread thread; // Locking: this + + private volatile EventHandler handler; + private volatile PrintWriter debugOutput; + private volatile IOException parseThreadException; + + static class Waiter { + + List response; // Locking: this + + synchronized List getResponse() throws InterruptedException { + while (response == null) { + wait(); + } + return response; + } + + synchronized void setResponse(List response) { + this.response = response; + notifyAll(); + } + } + + static class ReplyLine { + + final String status; + final String msg; + final String rest; + + ReplyLine(String status, String msg, String rest) { + this.status = status; this.msg = msg; this.rest = rest; + } + } + + /** Create a new TorControlConnection to communicate with Tor over + * a given socket. After calling this constructor, it is typical to + * call launchThread and authenticate. */ + public TorControlConnection(Socket connection) throws IOException { + this(connection.getInputStream(), connection.getOutputStream()); + } + + /** Create a new TorControlConnection to communicate with Tor over + * an arbitrary pair of data streams. + */ + public TorControlConnection(InputStream i, OutputStream o) { + this(new InputStreamReader(i), new OutputStreamWriter(o)); + } + + public TorControlConnection(Reader i, Writer o) { + this.output = o; + if (i instanceof BufferedReader) + this.input = (BufferedReader) i; + else + this.input = new BufferedReader(i); + this.waiters = new LinkedList(); + } + + protected final void writeEscaped(String s) throws IOException { + StringTokenizer st = new StringTokenizer(s, "\n"); + while (st.hasMoreTokens()) { + String line = st.nextToken(); + if (line.startsWith(".")) + line = "."+line; + if (line.endsWith("\r")) + line += "\n"; + else + line += "\r\n"; + if (debugOutput != null) + debugOutput.print(">> "+line); + output.write(line); + } + output.write(".\r\n"); + if (debugOutput != null) + debugOutput.print(">> .\n"); + } + + protected static final String quote(String s) { + StringBuffer sb = new StringBuffer("\""); + for (int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + switch (c) + { + case '\r': + case '\n': + case '\\': + case '\"': + sb.append('\\'); + } + sb.append(c); + } + sb.append('\"'); + return sb.toString(); + } + + protected final ArrayList readReply() throws IOException { + ArrayList reply = new ArrayList(); + char c; + do { + String line = input.readLine(); + if (line == null) { + // if line is null, the end of the stream has been reached, i.e. + // the connection to Tor has been closed! + if (reply.isEmpty()) { + // nothing received so far, can exit cleanly + return reply; + } + // received half of a reply before the connection broke down + throw new TorControlSyntaxError("Connection to Tor " + + " broke down while receiving reply!"); + } + if (debugOutput != null) + debugOutput.println("<< "+line); + if (line.length() < 4) + throw new TorControlSyntaxError("Line (\""+line+"\") too short"); + String status = line.substring(0,3); + c = line.charAt(3); + String msg = line.substring(4); + String rest = null; + if (c == '+') { + StringBuffer data = new StringBuffer(); + while (true) { + line = input.readLine(); + if (debugOutput != null) + debugOutput.print("<< "+line); + if (line.equals(".")) + break; + else if (line.startsWith(".")) + line = line.substring(1); + data.append(line).append('\n'); + } + rest = data.toString(); + } + reply.add(new ReplyLine(status, msg, rest)); + } while (c != ' '); + + return reply; + } + + protected synchronized List sendAndWaitForResponse(String s, + String rest) throws IOException { + if(parseThreadException != null) throw parseThreadException; + checkThread(); + Waiter w = new Waiter(); + if (debugOutput != null) + debugOutput.print(">> "+s); + synchronized (waiters) { + output.write(s); + if (rest != null) + writeEscaped(rest); + output.flush(); + waiters.addLast(w); + } + List lst; + try { + lst = w.getResponse(); + } catch (InterruptedException ex) { + throw new IOException("Interrupted"); + } + for (Iterator i = lst.iterator(); i.hasNext(); ) { + ReplyLine c = i.next(); + if (! c.status.startsWith("2")) + throw new TorControlError("Error reply: "+c.msg); + } + return lst; + } + + /** Helper: decode a CMD_EVENT command and dispatch it to our + * EventHandler (if any). */ + protected void handleEvent(ArrayList events) { + if (handler == null) + return; + + for (Iterator i = events.iterator(); i.hasNext(); ) { + ReplyLine line = i.next(); + int idx = line.msg.indexOf(' '); + String tp = line.msg.substring(0, idx).toUpperCase(); + String rest = line.msg.substring(idx+1); + if (tp.equals("CIRC")) { + List lst = Bytes.splitStr(null, rest); + handler.circuitStatus(lst.get(1), + lst.get(0), + lst.get(1).equals("LAUNCHED") + || lst.size() < 3 ? "" + : lst.get(2)); + } else if (tp.equals("STREAM")) { + List lst = Bytes.splitStr(null, rest); + handler.streamStatus(lst.get(1), + lst.get(0), + lst.get(3)); + // XXXX circID. + } else if (tp.equals("ORCONN")) { + List lst = Bytes.splitStr(null, rest); + handler.orConnStatus(lst.get(1), lst.get(0)); + } else if (tp.equals("BW")) { + List lst = Bytes.splitStr(null, rest); + handler.bandwidthUsed(Integer.parseInt(lst.get(0)), + Integer.parseInt(lst.get(1))); + } else if (tp.equals("NEWDESC")) { + List lst = Bytes.splitStr(null, rest); + handler.newDescriptors(lst); + } else if (tp.equals("DEBUG") || + tp.equals("INFO") || + tp.equals("NOTICE") || + tp.equals("WARN") || + tp.equals("ERR")) { + handler.message(tp, rest); + } else { + handler.unrecognized(tp, rest); + } + } + } + + + /** Sets w as the PrintWriter for debugging output, + * which writes out all messages passed between Tor and the controller. + * Outgoing messages are preceded by "\>\>" and incoming messages are preceded + * by "\<\<" + */ + public void setDebugging(PrintWriter w) { + debugOutput = w; + } + + /** Sets s as the PrintStream for debugging output, + * which writes out all messages passed between Tor and the controller. + * Outgoing messages are preceded by "\>\>" and incoming messages are preceded + * by "\<\<" + */ + public void setDebugging(PrintStream s) { + debugOutput = new PrintWriter(s, true); + } + + /** Set the EventHandler object that will be notified of any + * events Tor delivers to this connection. To make Tor send us + * events, call setEvents(). */ + public void setEventHandler(EventHandler handler) { + this.handler = handler; + } + + /** + * Start a thread to react to Tor's responses in the background. + * This is necessary to handle asynchronous events and synchronous + * responses that arrive independantly over the same socket. + */ + public synchronized Thread launchThread(boolean daemon) { + ControlParseThread th = new ControlParseThread(); + if (daemon) + th.setDaemon(true); + th.start(); + this.thread = th; + return th; + } + + protected class ControlParseThread extends Thread { + + @Override + public void run() { + try { + react(); + } catch (IOException ex) { + parseThreadException = ex; + } + } + } + + protected synchronized void checkThread() { + if (thread == null) + launchThread(true); + } + + /** helper: implement the main background loop. */ + protected void react() throws IOException { + while (true) { + ArrayList lst = readReply(); + if (lst.isEmpty()) { + // connection has been closed remotely! end the loop! + return; + } + if ((lst.get(0)).status.startsWith("6")) + handleEvent(lst); + else { + synchronized (waiters) { + if (!waiters.isEmpty()) + { + Waiter w; + w = waiters.removeFirst(); + w.setResponse(lst); + } + } + + } + } + } + + /** Change the value of the configuration option 'key' to 'val'. + */ + public void setConf(String key, String value) throws IOException { + List lst = new ArrayList(); + lst.add(key+" "+value); + setConf(lst); + } + + /** Change the values of the configuration options stored in kvMap. */ + public void setConf(Map kvMap) throws IOException { + List lst = new ArrayList(); + for (Iterator> it = kvMap.entrySet().iterator(); it.hasNext(); ) { + Map.Entry ent = it.next(); + lst.add(ent.getKey()+" "+ent.getValue()+"\n"); + } + setConf(lst); + } + + /** Changes the values of the configuration options stored in + * kvList. Each list element in kvList is expected to be + * String of the format "key value". + * + * Tor behaves as though it had just read each of the key-value pairs + * from its configuration file. Keywords with no corresponding values have + * their configuration values reset to their defaults. setConf is + * all-or-nothing: if there is an error in any of the configuration settings, + * Tor sets none of them. + * + * When a configuration option takes multiple values, or when multiple + * configuration keys form a context-sensitive group (see getConf below), then + * setting any of the options in a setConf command is taken to reset all of + * the others. For example, if two ORBindAddress values are configured, and a + * command arrives containing a single ORBindAddress value, the new + * command's value replaces the two old values. + * + * To remove all settings for a given option entirely (and go back to its + * default value), include a String in kvList containing the key and no value. + */ + public void setConf(Collection kvList) throws IOException { + if (kvList.size() == 0) + return; + StringBuffer b = new StringBuffer("SETCONF"); + for (Iterator it = kvList.iterator(); it.hasNext(); ) { + String kv = it.next(); + int i = kv.indexOf(' '); + if (i == -1) + b.append(" ").append(kv); + b.append(" ").append(kv.substring(0,i)).append("=") + .append(quote(kv.substring(i+1))); + } + b.append("\r\n"); + sendAndWaitForResponse(b.toString(), null); + } + + /** Try to reset the values listed in the collection 'keys' to their + * default values. + **/ + public void resetConf(Collection keys) throws IOException { + if (keys.size() == 0) + return; + StringBuffer b = new StringBuffer("RESETCONF"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + String key = it.next(); + b.append(" ").append(key); + } + b.append("\r\n"); + sendAndWaitForResponse(b.toString(), null); + } + + /** Return the value of the configuration option 'key' */ + public List getConf(String key) throws IOException { + List lst = new ArrayList(); + lst.add(key); + return getConf(lst); + } + + /** Requests the values of the configuration variables listed in keys. + * Results are returned as a list of ConfigEntry objects. + * + * If an option appears multiple times in the configuration, all of its + * key-value pairs are returned in order. + * + * Some options are context-sensitive, and depend on other options with + * different keywords. These cannot be fetched directly. Currently there + * is only one such option: clients should use the "HiddenServiceOptions" + * virtual keyword to get all HiddenServiceDir, HiddenServicePort, + * HiddenServiceNodes, and HiddenServiceExcludeNodes option settings. + */ + public List getConf(Collection keys) throws IOException { + StringBuffer sb = new StringBuffer("GETCONF"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + String key = it.next(); + sb.append(" ").append(key); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + List result = new ArrayList(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + String kv = (it.next()).msg; + int idx = kv.indexOf('='); + if (idx >= 0) + result.add(new ConfigEntry(kv.substring(0, idx), + kv.substring(idx+1))); + else + result.add(new ConfigEntry(kv)); + } + return result; + } + + /** Request that the server inform the client about interesting events. + * Each element of events is one of the following Strings: + * ["CIRC" | "STREAM" | "ORCONN" | "BW" | "DEBUG" | + * "INFO" | "NOTICE" | "WARN" | "ERR" | "NEWDESC" | "ADDRMAP"] . + * + * Any events not listed in the events are turned off; thus, calling + * setEvents with an empty events argument turns off all event reporting. + */ + public void setEvents(List events) throws IOException { + StringBuffer sb = new StringBuffer("SETEVENTS"); + for (Iterator it = events.iterator(); it.hasNext(); ) { + sb.append(" ").append(it.next()); + } + sb.append("\r\n"); + sendAndWaitForResponse(sb.toString(), null); + } + + /** Authenticates the controller to the Tor server. + * + * By default, the current Tor implementation trusts all local users, and + * the controller can authenticate itself by calling authenticate(new byte[0]). + * + * If the 'CookieAuthentication' option is true, Tor writes a "magic cookie" + * file named "control_auth_cookie" into its data directory. To authenticate, + * the controller must send the contents of this file in auth. + * + * If the 'HashedControlPassword' option is set, auth must contain the salted + * hash of a secret password. The salted hash is computed according to the + * S2K algorithm in RFC 2440 (OpenPGP), and prefixed with the s2k specifier. + * This is then encoded in hexadecimal, prefixed by the indicator sequence + * "16:". + * + * You can generate the salt of a password by calling + * 'tor --hash-password ' + * or by using the provided PasswordDigest class. + * To authenticate under this scheme, the controller sends Tor the original + * secret that was used to generate the password. + */ + public void authenticate(byte[] auth) throws IOException { + String cmd = "AUTHENTICATE " + Bytes.hex(auth) + "\r\n"; + sendAndWaitForResponse(cmd, null); + } + + /** Instructs the server to write out its configuration options into its torrc. + */ + public void saveConf() throws IOException { + sendAndWaitForResponse("SAVECONF\r\n", null); + } + + /** Sends a signal from the controller to the Tor server. + * signal is one of the following Strings: + *
      + *
    • "RELOAD" or "HUP" : Reload config items, refetch directory
    • + *
    • "SHUTDOWN" or "INT" : Controlled shutdown: if server is an OP, exit immediately. + * If it's an OR, close listeners and exit after 30 seconds
    • + *
    • "DUMP" or "USR1" : Dump stats: log information about open connections and circuits
    • + *
    • "DEBUG" or "USR2" : Debug: switch all open logs to loglevel debug
    • + *
    • "HALT" or "TERM" : Immediate shutdown: clean up and exit now
    • + *
    + */ + public void signal(String signal) throws IOException { + String cmd = "SIGNAL " + signal + "\r\n"; + sendAndWaitForResponse(cmd, null); + } + + /** Send a signal to the Tor process to shut it down or halt it. + * Does not wait for a response. */ + public void shutdownTor(String signal) throws IOException { + String s = "SIGNAL " + signal + "\r\n"; + Waiter w = new Waiter(); + if (debugOutput != null) + debugOutput.print(">> "+s); + synchronized (waiters) { + output.write(s); + output.flush(); + } + } + + /** Tells the Tor server that future SOCKS requests for connections to a set of original + * addresses should be replaced with connections to the specified replacement + * addresses. Each element of kvLines is a String of the form + * "old-address new-address". This function returns the new address mapping. + * + * The client may decline to provide a body for the original address, and + * instead send a special null address ("0.0.0.0" for IPv4, "::0" for IPv6, or + * "." for hostname), signifying that the server should choose the original + * address itself, and return that address in the reply. The server + * should ensure that it returns an element of address space that is unlikely + * to be in actual use. If there is already an address mapped to the + * destination address, the server may reuse that mapping. + * + * If the original address is already mapped to a different address, the old + * mapping is removed. If the original address and the destination address + * are the same, the server removes any mapping in place for the original + * address. + * + * Mappings set by the controller last until the Tor process exits: + * they never expire. If the controller wants the mapping to last only + * a certain time, then it must explicitly un-map the address when that + * time has elapsed. + */ + public Map mapAddresses(Collection kvLines) throws IOException { + StringBuffer sb = new StringBuffer("MAPADDRESS"); + for (Iterator it = kvLines.iterator(); it.hasNext(); ) { + String kv = it.next(); + int i = kv.indexOf(' '); + sb.append(" ").append(kv.substring(0,i)).append("=") + .append(quote(kv.substring(i+1))); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + Map result = new HashMap(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + String kv = (it.next()).msg; + int idx = kv.indexOf('='); + result.put(kv.substring(0, idx), + kv.substring(idx+1)); + } + return result; + } + + public Map mapAddresses(Map addresses) throws IOException { + List kvList = new ArrayList(); + for (Iterator> it = addresses.entrySet().iterator(); it.hasNext(); ) { + Map.Entry e = it.next(); + kvList.add(e.getKey()+" "+e.getValue()); + } + return mapAddresses(kvList); + } + + public String mapAddress(String fromAddr, String toAddr) throws IOException { + List lst = new ArrayList(); + lst.add(fromAddr+" "+toAddr+"\n"); + Map m = mapAddresses(lst); + return m.get(fromAddr); + } + + /** Queries the Tor server for keyed values that are not stored in the torrc + * configuration file. Returns a map of keys to values. + * + * Recognized keys include: + *
      + *
    • "version" : The version of the server's software, including the name + * of the software. (example: "Tor 0.0.9.4")
    • + *
    • "desc/id/" or "desc/name/" : the latest server + * descriptor for a given OR, NUL-terminated. If no such OR is known, the + * corresponding value is an empty string.
    • + *
    • "network-status" : a space-separated list of all known OR identities. + * This is in the same format as the router-status line in directories; + * see tor-spec.txt for details.
    • + *
    • "addr-mappings/all"
    • + *
    • "addr-mappings/config"
    • + *
    • "addr-mappings/cache"
    • + *
    • "addr-mappings/control" : a space-separated list of address mappings, each + * in the form of "from-address=to-address". The 'config' key + * returns those address mappings set in the configuration; the 'cache' + * key returns the mappings in the client-side DNS cache; the 'control' + * key returns the mappings set via the control interface; the 'all' + * target returns the mappings set through any mechanism.
    • + *
    • "circuit-status" : A series of lines as for a circuit status event. Each line is of the form: + * "CircuitID CircStatus Path"
    • + *
    • "stream-status" : A series of lines as for a stream status event. Each is of the form: + * "StreamID StreamStatus CircID Target"
    • + *
    • "orconn-status" : A series of lines as for an OR connection status event. Each is of the + * form: "ServerID ORStatus"
    • + *
    + */ + public Map getInfo(Collection keys) throws IOException { + StringBuffer sb = new StringBuffer("GETINFO"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + sb.append(" ").append(it.next()); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + Map m = new HashMap(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + ReplyLine line = it.next(); + int idx = line.msg.indexOf('='); + if (idx<0) + break; + String k = line.msg.substring(0,idx); + String v; + if (line.rest != null) { + v = line.rest; + } else { + v = line.msg.substring(idx+1); + } + m.put(k, v); + } + return m; + } + + + + /** Return the value of the information field 'key' */ + public String getInfo(String key) throws IOException { + List lst = new ArrayList(); + lst.add(key); + Map m = getInfo(lst); + return m.get(key); + } + + /** An extendCircuit request takes one of two forms: either the circID is zero, in + * which case it is a request for the server to build a new circuit according + * to the specified path, or the circID is nonzero, in which case it is a + * request for the server to extend an existing circuit with that ID according + * to the specified path. + * + * If successful, returns the Circuit ID of the (maybe newly created) circuit. + */ + public String extendCircuit(String circID, String path) throws IOException { + List lst = sendAndWaitForResponse( + "EXTENDCIRCUIT "+circID+" "+path+"\r\n", null); + return (lst.get(0)).msg; + } + + /** Informs the Tor server that the stream specified by streamID should be + * associated with the circuit specified by circID. + * + * Each stream may be associated with + * at most one circuit, and multiple streams may share the same circuit. + * Streams can only be attached to completed circuits (that is, circuits that + * have sent a circuit status "BUILT" event or are listed as built in a + * getInfo circuit-status request). + * + * If circID is 0, responsibility for attaching the given stream is + * returned to Tor. + * + * By default, Tor automatically attaches streams to + * circuits itself, unless the configuration variable + * "__LeaveStreamsUnattached" is set to "1". Attempting to attach streams + * via TC when "__LeaveStreamsUnattached" is false may cause a race between + * Tor and the controller, as both attempt to attach streams to circuits. + */ + public void attachStream(String streamID, String circID) + throws IOException { + sendAndWaitForResponse("ATTACHSTREAM "+streamID+" "+circID+"\r\n", null); + } + + /** Tells Tor about the server descriptor in desc. + * + * The descriptor, when parsed, must contain a number of well-specified + * fields, including fields for its nickname and identity. + */ + // More documentation here on format of desc? + // No need for return value? control-spec.txt says reply is merely "250 OK" on success... + public String postDescriptor(String desc) throws IOException { + List lst = sendAndWaitForResponse("+POSTDESCRIPTOR\r\n", desc); + return (lst.get(0)).msg; + } + + /** Tells Tor to change the exit address of the stream identified by streamID + * to address. No remapping is performed on the new provided address. + * + * To be sure that the modified address will be used, this event must be sent + * after a new stream event is received, and before attaching this stream to + * a circuit. + */ + public void redirectStream(String streamID, String address) throws IOException { + sendAndWaitForResponse("REDIRECTSTREAM "+streamID+" "+address+"\r\n", + null); + } + + /** Tells Tor to close the stream identified by streamID. + * reason should be one of the Tor RELAY_END reasons given in tor-spec.txt, as a decimal: + *
      + *
    • 1 -- REASON_MISC (catch-all for unlisted reasons)
    • + *
    • 2 -- REASON_RESOLVEFAILED (couldn't look up hostname)
    • + *
    • 3 -- REASON_CONNECTREFUSED (remote host refused connection)
    • + *
    • 4 -- REASON_EXITPOLICY (OR refuses to connect to host or port)
    • + *
    • 5 -- REASON_DESTROY (Circuit is being destroyed)
    • + *
    • 6 -- REASON_DONE (Anonymized TCP connection was closed)
    • + *
    • 7 -- REASON_TIMEOUT (Connection timed out, or OR timed out while connecting)
    • + *
    • 8 -- (unallocated)
    • + *
    • 9 -- REASON_HIBERNATING (OR is temporarily hibernating)
    • + *
    • 10 -- REASON_INTERNAL (Internal error at the OR)
    • + *
    • 11 -- REASON_RESOURCELIMIT (OR has no resources to fulfill request)
    • + *
    • 12 -- REASON_CONNRESET (Connection was unexpectedly reset)
    • + *
    • 13 -- REASON_TORPROTOCOL (Sent when closing connection because of Tor protocol violations)
    • + *
    + * + * Tor may hold the stream open for a while to flush any data that is pending. + */ + public void closeStream(String streamID, byte reason) + throws IOException { + sendAndWaitForResponse("CLOSESTREAM "+streamID+" "+reason+"\r\n",null); + } + + /** Tells Tor to close the circuit identified by circID. + * If ifUnused is true, do not close the circuit unless it is unused. + */ + public void closeCircuit(String circID, boolean ifUnused) throws IOException { + sendAndWaitForResponse("CLOSECIRCUIT "+circID+ + (ifUnused?" IFUNUSED":"")+"\r\n", null); + } +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/TorControlError.java b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlError.java new file mode 100644 index 00000000..d07ee514 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlError.java @@ -0,0 +1,39 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.IOException; + +/** + * An exception raised when Tor tells us about an error. + */ +public class TorControlError extends IOException { + + static final long serialVersionUID = 3; + + private final int errorType; + + public TorControlError(int type, String s) { + super(s); + errorType = type; + } + + public TorControlError(String s) { + this(-1, s); + } + + public int getErrorType() { + return errorType; + } + + public String getErrorMsg() { + try { + if (errorType == -1) + return null; + return TorControlCommands.ERROR_MSGS[errorType]; + } catch (ArrayIndexOutOfBoundsException ex) { + return "Unrecongized error #"+errorType; + } + } +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/TorControlSyntaxError.java b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlSyntaxError.java new file mode 100644 index 00000000..dba4f44b --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/TorControlSyntaxError.java @@ -0,0 +1,16 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.IOException; + +/** + * An exception raised when Tor behaves in an unexpected way. + */ +public class TorControlSyntaxError extends IOException { + + static final long serialVersionUID = 3; + + public TorControlSyntaxError(String s) { super(s); } +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/examples/.cvsignore b/orbotservice/src/main/java/net/freehaven/tor/control/examples/.cvsignore new file mode 100644 index 00000000..6b468b62 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/examples/.cvsignore @@ -0,0 +1 @@ +*.class diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/examples/DebuggingEventHandler.java b/orbotservice/src/main/java/net/freehaven/tor/control/examples/DebuggingEventHandler.java new file mode 100644 index 00000000..48c49a28 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/examples/DebuggingEventHandler.java @@ -0,0 +1,44 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control.examples; + +import java.io.PrintWriter; +import java.util.Iterator; +import org.torproject.android.control.EventHandler; + +public class DebuggingEventHandler implements EventHandler { + + private final PrintWriter out; + + public DebuggingEventHandler(PrintWriter p) { + out = p; + } + + public void circuitStatus(String status, String circID, String path) { + out.println("Circuit "+circID+" is now "+status+" (path="+path+")"); + } + public void streamStatus(String status, String streamID, String target) { + out.println("Stream "+streamID+" is now "+status+" (target="+target+")"); + } + public void orConnStatus(String status, String orName) { + out.println("OR connection to "+orName+" is now "+status); + } + public void bandwidthUsed(long read, long written) { + out.println("Bandwidth usage: "+read+" bytes read; "+ + written+" bytes written."); + } + public void newDescriptors(java.util.List orList) { + out.println("New descriptors for routers:"); + for (Iterator i = orList.iterator(); i.hasNext(); ) + out.println(" "+i.next()); + } + public void message(String type, String msg) { + out.println("["+type+"] "+msg.trim()); + } + + public void unrecognized(String type, String msg) { + out.println("unrecognized event ["+type+"] "+msg.trim()); + } + +} + diff --git a/orbotservice/src/main/java/net/freehaven/tor/control/examples/Main.java b/orbotservice/src/main/java/net/freehaven/tor/control/examples/Main.java new file mode 100644 index 00000000..b0e0a3c0 --- /dev/null +++ b/orbotservice/src/main/java/net/freehaven/tor/control/examples/Main.java @@ -0,0 +1,146 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control.examples; + +import org.torproject.android.control.*; +import java.io.EOFException; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.ArrayList; +import java.util.List; +import java.util.Arrays; +import java.util.Map; +import java.util.Iterator; + +public class Main implements TorControlCommands { + + public static void main(String args[]) { + if (args.length < 1) { + System.err.println("No command given."); + return; + } + try { + if (args[0].equals("set-config")) { + setConfig(args); + } else if (args[0].equals("get-config")) { + getConfig(args); + } else if (args[0].equals("get-info")) { + getInfo(args); + } else if (args[0].equals("listen")) { + listenForEvents(args); + } else if (args[0].equals("signal")) { + signal(args); + } else if (args[0].equals("auth")) { + authDemo(args); + } else { + System.err.println("Unrecognized command: "+args[0]); + } + } catch (EOFException ex) { + System.out.println("Control socket closed by Tor."); + } catch (TorControlError ex) { + System.err.println("Error from Tor process: "+ + ex+" ["+ex.getErrorMsg()+"]"); + } catch (IOException ex) { + System.err.println("IO exception when talking to Tor process: "+ + ex); + ex.printStackTrace(System.err); + } + } + + private static TorControlConnection getConnection(String[] args, + boolean daemon) throws IOException { + Socket s = new Socket("127.0.0.1", 9100); + TorControlConnection conn = new TorControlConnection(s); + conn.launchThread(daemon); + conn.authenticate(new byte[0]); + return conn; + } + + private static TorControlConnection getConnection(String[] args) + throws IOException { + return getConnection(args, true); + } + + public static void setConfig(String[] args) throws IOException { + // Usage: "set-config [-save] key value key value key value" + TorControlConnection conn = getConnection(args); + ArrayList lst = new ArrayList(); + int i = 1; + boolean save = false; + if (args[i].equals("-save")) { + save = true; + ++i; + } + for (; i < args.length; i +=2) { + lst.add(args[i]+" "+args[i+1]); + } + conn.setConf(lst); + if (save) { + conn.saveConf(); + } + } + + public static void getConfig(String[] args) throws IOException { + // Usage: get-config key key key + TorControlConnection conn = getConnection(args); + List lst = conn.getConf(Arrays.asList(args).subList(1,args.length)); + for (Iterator i = lst.iterator(); i.hasNext(); ) { + ConfigEntry e = i.next(); + System.out.println("KEY: "+e.key); + System.out.println("VAL: "+e.value); + } + } + + public static void getInfo(String[] args) throws IOException { + TorControlConnection conn = getConnection(args); + Map m = conn.getInfo(Arrays.asList(args).subList(1,args.length)); + for (Iterator> i = m.entrySet().iterator(); i.hasNext(); ) { + Map.Entry e = i.next(); + System.out.println("KEY: "+e.getKey()); + System.out.println("VAL: "+e.getValue()); + } + } + + public static void listenForEvents(String[] args) throws IOException { + // Usage: listen [circ|stream|orconn|bw|newdesc|info|notice|warn|error]* + TorControlConnection conn = getConnection(args, false); + ArrayList lst = new ArrayList(); + for (int i = 1; i < args.length; ++i) { + lst.add(args[i]); + } + conn.setEventHandler( + new DebuggingEventHandler(new PrintWriter(System.out, true))); + conn.setEvents(lst); + } + + public static void signal(String[] args) throws IOException { + // Usage signal [reload|shutdown|dump|debug|halt] + TorControlConnection conn = getConnection(args, false); + // distinguish shutdown signal from other signals + if ("SHUTDOWN".equalsIgnoreCase(args[1]) + || "HALT".equalsIgnoreCase(args[1])) { + conn.shutdownTor(args[1].toUpperCase()); + } else { + conn.signal(args[1].toUpperCase()); + } + } + + public static void authDemo(String[] args) throws IOException { + + PasswordDigest pwd = PasswordDigest.generateDigest(); + Socket s = new Socket("127.0.0.1", 9100); + TorControlConnection conn = new TorControlConnection(s); + conn.launchThread(true); + conn.authenticate(new byte[0]); + + conn.setConf("HashedControlPassword", pwd.getHashedPassword()); + + s = new Socket("127.0.0.1", 9100); + conn = new TorControlConnection(s); + conn.launchThread(true); + conn.authenticate(pwd.getSecret()); + } + +} + diff --git a/src/org/torproject/android/service/HiddenServiceManager.java b/orbotservice/src/main/java/org/torproject/android/service/HiddenServiceManager.java similarity index 100% rename from src/org/torproject/android/service/HiddenServiceManager.java rename to orbotservice/src/main/java/org/torproject/android/service/HiddenServiceManager.java diff --git a/src/org/torproject/android/OrbotConstants.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java similarity index 97% rename from src/org/torproject/android/OrbotConstants.java rename to orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java index 10309fb7..665cf0c6 100644 --- a/src/org/torproject/android/OrbotConstants.java +++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java @@ -1,7 +1,7 @@ /* Copyright (c) 2009, Nathan Freitas, Orbot/The Guardian Project - http://openideals.com/guardian */ /* See LICENSE for licensing information */ -package org.torproject.android; +package org.torproject.android.service; public interface OrbotConstants { diff --git a/src/org/torproject/android/service/StartTorReceiver.java b/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java similarity index 96% rename from src/org/torproject/android/service/StartTorReceiver.java rename to orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java index 087b01f4..2b0ebf89 100644 --- a/src/org/torproject/android/service/StartTorReceiver.java +++ b/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java @@ -6,7 +6,8 @@ import android.content.Context; import android.content.Intent; import android.text.TextUtils; -import org.torproject.android.Prefs; +import org.torproject.android.service.util.Prefs; + public class StartTorReceiver extends BroadcastReceiver implements TorServiceConstants { diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java b/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java new file mode 100644 index 00000000..f6aa3154 --- /dev/null +++ b/orbotservice/src/main/java/org/torproject/android/service/TorEventHandler.java @@ -0,0 +1,325 @@ +package org.torproject.android.service; + +import android.text.TextUtils; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.text.NumberFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.StringTokenizer; + + +import org.torproject.android.control.EventHandler; +import org.torproject.android.service.util.Prefs; + +/** + * Created by n8fr8 on 9/25/16. + */ +public class TorEventHandler implements EventHandler, TorServiceConstants { + + private TorService mService; + + + private long lastRead = -1; + private long lastWritten = -1; + private long mTotalTrafficWritten = 0; + private long mTotalTrafficRead = 0; + + private NumberFormat mNumberFormat = null; + + + private HashMap hmBuiltNodes = new HashMap(); + + public class Node + { + String status; + String id; + String name; + String ipAddress; + String country; + String organization; + } + + public HashMap getNodes () + { + return hmBuiltNodes; + } + + public TorEventHandler (TorService service) + { + mService = service; + mNumberFormat = NumberFormat.getInstance(Locale.getDefault()); //localized numbers! + + } + + @Override + public void message(String severity, String msg) { + mService.logNotice(severity + ": " + msg); + } + + @Override + public void newDescriptors(List 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); + + mService.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); + + mService.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); + + mService.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 (mService.hasConnectivity() && Prefs.expandedNotifications()) + mService.showToolbarNotification(sb.toString(), mService.getNotifyId(), iconId); + + mTotalTrafficWritten += written; + mTotalTrafficRead += read; + } + + lastWritten = written; + lastRead = read; + + mService.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 (mService.getCurrentStatus() == STATUS_STARTING && TextUtils.equals(status, "BUILT")) + mService.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()) + mService.debug(sb.toString()); + else if(status.equals("BUILT")) + mService.logNotice(sb.toString()); + else if (status.equals("CLOSED")) + mService.logNotice(sb.toString()); + + if (Prefs.expandedNotifications()) + { + //get IP from last nodename + if(status.equals("BUILT")){ + + if (node.ipAddress == null) + mService.exec(new ExternalIPFetcher(node)); + + hmBuiltNodes.put(node.id, node); + } + + if (status.equals("CLOSED")) + { + hmBuiltNodes.remove(node.id); + + } + } + + } + + 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 (mService.getControlConnection() != 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(')'); + + mService.logNotice(sbInfo.toString()); + + } + + reader.close(); + is.close(); + + break; + + } catch (Exception e) { + + mService.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; + } +} diff --git a/src/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java similarity index 73% rename from src/org/torproject/android/service/TorService.java rename to orbotservice/src/main/java/org/torproject/android/service/TorService.java index b90442ba..5cd3e757 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java @@ -9,8 +9,9 @@ package org.torproject.android.service; import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.app.Application; import android.app.Notification; -import android.app.Notification.Builder; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; @@ -21,33 +22,29 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import android.content.pm.PackageManager; 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.app.NotificationCompat; import android.support.v4.content.LocalBroadcastManager; import android.text.TextUtils; import android.util.Log; import android.widget.RemoteViews; -import net.freehaven.tor.control.ConfigEntry; -import net.freehaven.tor.control.EventHandler; -import net.freehaven.tor.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 org.torproject.android.control.ConfigEntry; +import org.torproject.android.control.TorControlConnection; +import org.torproject.android.service.transproxy.TorTransProxy; +import org.torproject.android.service.transproxy.TorifiedApp; +import org.torproject.android.service.util.DummyActivity; +import org.torproject.android.service.util.Prefs; +import org.torproject.android.service.util.TorResourceInstaller; +import org.torproject.android.service.util.TorServiceUtils; +import org.torproject.android.service.util.Utils; +import org.torproject.android.service.vpn.OrbotVpnManager; +import org.torproject.android.service.vpn.TorVpnService; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -58,24 +55,14 @@ 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; @@ -83,7 +70,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeoutException; -public class TorService extends VpnService implements TorServiceConstants, OrbotConstants, EventHandler +public class TorService extends Service implements TorServiceConstants, OrbotConstants { private String mCurrentStatus = STATUS_OFF; @@ -93,7 +80,8 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot private TorControlConnection conn = null; private Socket torConnSocket = null; private int mLastProcessId = -1; - + private Process mProcPolipo; + private int mPortHTTP = HTTP_PROXY_PORT_DEFAULT; private int mPortSOCKS = SOCKS_PROXY_PORT_DEFAULT; @@ -101,8 +89,6 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot 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 configBuffer = null; private ArrayList resetBuffer = null; @@ -113,16 +99,11 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot private TorTransProxy mTransProxy; - private long mTotalTrafficWritten = 0; - private long mTotalTrafficRead = 0; - private boolean mConnectivity = true; + 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 NotificationCompat.Builder mNotifyBuilder; private Notification mNotification; private boolean mNotificationShowing = false; @@ -130,15 +111,24 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot private ExecutorService mExecutor = Executors.newFixedThreadPool(1); - private NumberFormat mNumberFormat = null; - - private OrbotVpnManager mVpnManager; + + TorEventHandler mEventHandler; + + public static File appBinHome; + public static File appCacheHome; + + public static File fileTor; + public static File filePolipo; + public static File fileObfsclient; + public static File fileXtables; + public static File fileTorRc; + public void debug(String msg) { if (Prefs.useDebugLogging()) { - Log.d(TAG,msg); + Log.d(OrbotConstants.TAG,msg); sendCallbackLogMessage(msg); } @@ -148,7 +138,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { if (Prefs.useDebugLogging()) { - Log.e(TAG,msg,e); + Log.e(OrbotConstants.TAG,msg,e); ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos)); @@ -192,17 +182,19 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (mNotificationManager != null) mNotificationManager.cancelAll(); + if (mEventHandler != null) + mEventHandler.getNodes().clear(); - hmBuiltNodes.clear(); mNotificationShowing = false; } @SuppressLint("NewApi") - private void showToolbarNotification (String notifyMsg, int notifyType, int icon) + protected void showToolbarNotification (String notifyMsg, int notifyType, int icon) { //Reusable code. - Intent intent = new Intent(TorService.this, OrbotMainActivity.class); + PackageManager pm = getPackageManager(); + Intent intent = pm.getLaunchIntentForPackage(getPackageName()); PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0); if (mNotifyBuilder == null) @@ -212,7 +204,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (mNotifyBuilder == null) { - mNotifyBuilder = new Notification.Builder(this) + mNotifyBuilder = new NotificationCompat.Builder(this) .setContentTitle(getString(R.string.app_name)) .setSmallIcon(R.drawable.ic_stat_tor); @@ -227,7 +219,6 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (notifyType != NOTIFY_ID) { mNotifyBuilder.setTicker(notifyMsg); - // mNotifyBuilder.setLights(Color.GREEN, 1000, 1000); } else { @@ -235,8 +226,11 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } mNotifyBuilder.setOngoing(Prefs.persistNotifications()); - - mNotification = mNotifyBuilder.build(); + mNotifyBuilder.setPriority(Notification.PRIORITY_LOW); + mNotifyBuilder.setCategory(Notification.CATEGORY_SERVICE); + + + mNotification = mNotifyBuilder.build(); if (Build.VERSION.SDK_INT >= 16 && Prefs.expandedNotifications()) { // Create remote view that needs to be set as bigContentView for the notification. @@ -252,12 +246,12 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot expandedView.setTextViewText(R.id.info, notifyMsg); } - if (hmBuiltNodes.size() > 0) + if (mEventHandler != null && mEventHandler.getNodes().size() > 0) { - Set itBuiltNodes = hmBuiltNodes.keySet(); + Set itBuiltNodes = mEventHandler.getNodes().keySet(); for (String key : itBuiltNodes) { - Node node = hmBuiltNodes.get(key); + TorEventHandler.Node node = mEventHandler.getNodes().get(key); if (node.ipAddress != null) { @@ -304,7 +298,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (intent != null) new Thread (new IncomingIntentRouter(intent)).start(); else - Log.d(TAG, "Got null onStartCommand() intent"); + Log.d(OrbotConstants.TAG, "Got null onStartCommand() intent"); return Service.START_STICKY; } @@ -325,7 +319,6 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (action.equals(ACTION_START)) { replyWithStatus(mIntent); startTor(); - // stopTor() is called when the Service is destroyed } else if (action.equals(ACTION_STATUS)) { replyWithStatus(mIntent); @@ -339,7 +332,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } else if (action.equals(CMD_UPDATE_TRANS_PROXY)) { processTransparentProxying(); } else if (action.equals(CMD_VPN)) { - enableVpnProxy(); + startVPNService(); } else if (action.equals(CMD_VPN_CLEAR)) { clearVpnProxy(); } else if (action.equals(CMD_SET_EXIT)) { @@ -347,7 +340,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot setExitNode(mIntent.getStringExtra("exit")); } else { - Log.w(TAG, "unhandled TorService Intent: " + action); + Log.w(OrbotConstants.TAG, "unhandled TorService Intent: " + action); } } } @@ -355,7 +348,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot @Override public void onTaskRemoved(Intent rootIntent){ - Log.d(TAG,"task removed"); + Log.d(OrbotConstants.TAG,"task removed"); Intent intent = new Intent( this, DummyActivity.class ); intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); startActivity( intent ); @@ -367,17 +360,19 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot unregisterReceiver(mNetworkStateReceiver); super.onDestroy(); } - - @Override - public void onRevoke () + + private void stopTor () { - if (mVpnManager != null) - mVpnManager.onRevoke(); - - super.onRevoke(); + mExecutor.execute(new Runnable () + { + public void run () + { + stopTorAsync(); + } + }); } - private void stopTor() { + private void stopTorAsync () { Log.i("TorService", "stopTor"); try { sendCallbackStatus(STATUS_STOPPING); @@ -390,9 +385,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (Prefs.useRoot() && Prefs.useTransparentProxying()) { - Shell shellRoot = Shell.startRootShell(); - disableTransparentProxy(shellRoot); - shellRoot.close(); + disableTransparentProxy(); } sendCallbackLogMessage(getString(R.string.status_disabled)); @@ -428,7 +421,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot int hsPort = Integer.parseInt(st.nextToken().split(" ")[0]);; - File fileDir = new File(OrbotApp.appCacheHome, "hs" + hsPort); + File fileDir = new File(appCacheHome, "hs" + hsPort); File file = new File(fileDir, "hostname"); @@ -484,34 +477,20 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot conn.shutdownTor("HALT"); } catch (IOException e) { - Log.d(TAG, "error shutting down Tor via connection", e); + Log.d(OrbotConstants.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; + if (mProcPolipo != null) + { + mProcPolipo.destroy(); + int exitValue = mProcPolipo.waitFor(); + logNotice("Polipo exited with value: " + exitValue); + } + } private void requestTorRereadConfig() { @@ -523,18 +502,18 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } // if that fails, try again using native utils try { - TorServiceUtils.killProcess(OrbotApp.fileTor, "-1"); // this is -HUP + TorServiceUtils.killProcess(fileTor, "-1"); // this is -HUP } catch (Exception e) { e.printStackTrace(); } } - private void logNotice (String msg) + protected void logNotice (String msg) { if (msg != null && msg.trim().length() > 0) { if (Prefs.useDebugLogging()) - Log.d(TAG, msg); + Log.d(OrbotConstants.TAG, msg); sendCallbackLogMessage(msg); } @@ -546,7 +525,16 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot try { - mNumberFormat = NumberFormat.getInstance(Locale.getDefault()); //localized numbers! + 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); + + mEventHandler = new TorEventHandler(this); if (mNotificationManager == null) { @@ -571,7 +559,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } catch (Exception e) { - Log.e(TAG,"error onBind",e); + Log.e(OrbotConstants.TAG,"error onBind",e); logNotice("error finding exiting process: " + e.toString()); } @@ -582,13 +570,18 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot catch (Exception e) { //what error here - Log.e(TAG, "Error installing Orbot binaries",e); + Log.e(OrbotConstants.TAG, "Error installing Orbot binaries",e); logNotice("There was an error installing Orbot binaries"); } Log.i("TorService", "onCreate end"); } + protected String getCurrentStatus () + { + return mCurrentStatus; + } + private void torUpgradeAndConfig() throws IOException, TimeoutException { if (isTorUpgradeAndConfigComplete) return; @@ -598,9 +591,9 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot logNotice("checking binary version: " + version); - TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome); + TorResourceInstaller installer = new TorResourceInstaller(this, appBinHome); - if (version == null || (!version.equals(BINARY_TOR_VERSION)) || (!OrbotApp.fileTor.exists())) + if (version == null || (!version.equals(BINARY_TOR_VERSION)) || (!fileTor.exists())) { logNotice("upgrading binaries to latest version: " + BINARY_TOR_VERSION); @@ -618,12 +611,12 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); - TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome); + TorResourceInstaller installer = new TorResourceInstaller(this, appBinHome); StringBuffer extraLines = new StringBuffer(); String TORRC_CONTROLPORT_FILE_KEY = "ControlPortWriteToFile"; - fileControlPort = new File(OrbotApp.appBinHome, "control.txt"); + fileControlPort = new File(appBinHome, "control.txt"); extraLines.append(TORRC_CONTROLPORT_FILE_KEY).append(' ').append(fileControlPort.getCanonicalPath()).append('\n'); // extraLines.append("RunAsDaemon 1").append('\n'); @@ -684,7 +677,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot debug("torrc.custom=" + extraLines.toString()); - File fileTorRcCustom = new File(OrbotApp.fileTorRc.getAbsolutePath() + ".custom"); + File fileTorRcCustom = new File(fileTorRc.getAbsolutePath() + ".custom"); boolean success = installer.updateTorConfigCustom(fileTorRcCustom, extraLines.toString()); if (success) @@ -734,7 +727,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot // these states should probably be handled better sendCallbackLogMessage("Ignoring start request, currently " + mCurrentStatus); return; - } else if (mCurrentStatus == STATUS_ON && findExistingTorDaemon()) { + } else if (mCurrentStatus == STATUS_ON) { sendCallbackLogMessage("Ignoring start request, already started."); @@ -745,7 +738,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot try { // make sure there are no stray daemons running - killAllDaemons(); +// killAllDaemons(); sendCallbackStatus(STATUS_STARTING); sendCallbackLogMessage(getString(R.string.status_starting_up)); @@ -756,27 +749,26 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (Prefs.bridgesEnabled()) if (Prefs.useVpn() && !mIsLollipop) { - customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnManager.sSocksProxyLocalhost + ":" + OrbotVpnManager.sSocksProxyServerPort); + customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnManager.sSocksProxyLocalhost + ":" + OrbotVpnManager.sSocksProxyServerPort); } - String baseDirectory = OrbotApp.fileTor.getParent(); - Shell shellUser = Shell.startShell(customEnv, baseDirectory); + // String baseDirectory = fileTor.getParent(); + // Shell shellUser = Shell.startShell(customEnv, baseDirectory); - boolean success = runTorShellCmd(shellUser); + boolean success = runTorShellCmd(); if (success) { if (mPortHTTP != -1) - runPolipoShellCmd(shellUser); + runPolipoShellCmd(); if (Prefs.useRoot() && Prefs.useTransparentProxying()) { - Shell shellRoot = Shell.startRootShell(); - - disableTransparentProxy(shellRoot); - enableTransparentProxy(shellRoot); + + disableTransparentProxy(); + enableTransparentProxy(); - shellRoot.close(); + } getHiddenServiceHostname (); @@ -785,7 +777,6 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { 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); @@ -800,7 +791,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (Prefs.useRoot()) { if (mTransProxy == null) - mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables); + mTransProxy = new TorTransProxy(this, fileXtables); try { mTransProxy.flushTransproxyRules(this); @@ -823,12 +814,12 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot * * the idea is that if Tor is off then transproxy is off */ - private boolean enableTransparentProxy (Shell shell) throws Exception + private boolean enableTransparentProxy () throws Exception { if (mTransProxy == null) { - mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables); + mTransProxy = new TorTransProxy(this, fileXtables); } @@ -850,13 +841,13 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if(Prefs.transparentProxyAll()) { - code = mTransProxy.setTransparentProxyingAll(this, true, shell); + code = mTransProxy.setTransparentProxyingAll(this, true); } else { - ArrayList apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())); + ArrayList apps = TorTransProxy.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())); - code = mTransProxy.setTransparentProxyingByApp(this,apps, true, shell); + code = mTransProxy.setTransparentProxyingByApp(this,apps, true); } debug ("TorTransProxy resp code: " + code); @@ -868,9 +859,8 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { 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(); + mTransProxy.enableTetheringRules(this); + } else @@ -887,63 +877,62 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot 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 + private boolean disableTransparentProxy () throws Exception { debug ("Transparent Proxying: disabling..."); if (mTransProxy == null) - mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables); + mTransProxy = new TorTransProxy(this, fileXtables); - mTransProxy.setTransparentProxyingAll(this, false, shell); - ArrayList apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())); - mTransProxy.setTransparentProxyingByApp(this, apps, false, shell); + mTransProxy.setTransparentProxyingAll(this, false); + ArrayList apps = TorTransProxy.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())); + mTransProxy.setTransparentProxyingByApp(this, apps, false); return true; } - private boolean runTorShellCmd(final Shell shell) throws Exception + private boolean runTorShellCmd() throws Exception { - String torrcPath = new File(OrbotApp.appBinHome, TORRC_ASSET_KEY).getCanonicalPath(); + String torrcPath = new File(appBinHome, TORRC_ASSET_KEY).getCanonicalPath(); updateTorConfigFile(); sendCallbackLogMessage(getString(R.string.status_starting_up)); - String torCmdString = OrbotApp.fileTor.getCanonicalPath() - + " DataDirectory " + OrbotApp.appCacheHome.getCanonicalPath() + String torCmdString = fileTor.getCanonicalPath() + + " DataDirectory " + appCacheHome.getCanonicalPath() + " --defaults-torrc " + torrcPath + " -f " + torrcPath + ".custom"; debug(torCmdString); - SimpleCommand shellTorCommand = new SimpleCommand(torCmdString + " --verify-config"); - shell.add(shellTorCommand).waitForFinish(); + Process proc = exec(torCmdString + " --verify-config", true); + + int exitCode = proc.exitValue(); + String output = ""; + // String output = shellTorCommand.getOutput(); - int exitCode = shellTorCommand.getExitCode(); - String output = shellTorCommand.getOutput(); - - if (exitCode != 0 && output != null && output.length() > 0) + if (exitCode != 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(); + proc = exec(torCmdString, true); + exitCode = proc.exitValue(); + output = "";// shellTorCommand.getOutput(); - if (exitCode != 0 && output != null && output.length() > 0) + if (exitCode != 0) { logNotice("Tor (" + exitCode + "): " + output); //throw new Exception ("unable to start"); @@ -955,7 +944,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot if (mLastProcessId == -1) { - logNotice(getString(R.string.couldn_t_start_tor_process_) + "; exit=" + shellTorCommand.getExitCode() + ": " + shellTorCommand.getOutput()); + logNotice(getString(R.string.couldn_t_start_tor_process_) + "; exit=" + exitCode); sendCallbackLogMessage(getString(R.string.couldn_t_start_tor_process_)); throw new Exception ("Unable to start Tor"); @@ -969,12 +958,28 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot return true; } + + + protected void exec (Runnable runn) + { + mExecutor.execute(runn); + } + + private Process exec (String cmd, boolean wait) throws Exception + { + Process proc = Runtime.getRuntime().exec(cmd); + + if (wait) + proc.waitFor(); + + return proc; + } private void updatePolipoConfig () throws FileNotFoundException, IOException { - File file = new File(OrbotApp.appBinHome, POLIPOCONFIG_ASSET_KEY); + File file = new File(appBinHome, POLIPOCONFIG_ASSET_KEY); Properties props = new Properties(); @@ -988,46 +993,28 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } - private void runPolipoShellCmd (Shell shell) throws Exception + private void runPolipoShellCmd () throws Exception { logNotice( "Starting polipo process"); - - int polipoProcId = TorServiceUtils.findProcessId(OrbotApp.filePolipo.getCanonicalPath()); - StringBuilder log = null; + updatePolipoConfig(); + + String polipoConfigPath = new File(appBinHome, POLIPOCONFIG_ASSET_KEY).getCanonicalPath(); + String cmd = (filePolipo.getCanonicalPath() + " -c " + polipoConfigPath); + + mProcPolipo = exec(cmd,false); + + sendCallbackLogMessage(getString(R.string.privoxy_is_running_on_port_) + mPortHTTP); - 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); + logNotice("Polipo is running"); } + + protected TorControlConnection getControlConnection () + { + return conn; + } private int initControlConnection (int maxTries, boolean isReconnect) throws Exception, RuntimeException { @@ -1075,7 +1062,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { logNotice( "SUCCESS connected to Tor control port."); - File fileCookie = new File(OrbotApp.appCacheHome, TOR_CONTROL_COOKIE); + File fileCookie = new File(appCacheHome, TOR_CONTROL_COOKIE); if (fileCookie.exists()) { @@ -1162,14 +1149,15 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot return result; } - public void addEventHandler () throws Exception + public synchronized 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.setEventHandler(mEventHandler); + conn.setEvents(Arrays.asList(new String[]{ "ORCONN", "CIRC", "NOTICE", "WARN", "ERR","BW"})); @@ -1193,326 +1181,22 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot 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 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 hmBuiltNodes = new HashMap(); - - 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); + enableTransparentProxy(); } else { - disableTransparentProxy(shell); + disableTransparentProxy(); } - shell.close(); } } catch (Exception e) { // TODO Auto-generated catch block @@ -1546,7 +1230,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot List listCe = conn.getConf(name); Iterator itCe = listCe.iterator(); - ConfigEntry ce = null; + ConfigEntry ce = null; @@ -1705,14 +1389,14 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot return false; } - private void sendCallbackBandwidth(long upload, long download, long written, long read) { + protected 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); + intent.putExtra("down",download); + intent.putExtra("written",written); + intent.putExtra("read",read); + intent.putExtra(EXTRA_STATUS, mCurrentStatus); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } @@ -1729,7 +1413,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } - private void sendCallbackStatus(String currentStatus) { + protected void sendCallbackStatus(String currentStatus) { mCurrentStatus = currentStatus; Intent intent = getActionStatusIntent(currentStatus); // send for Orbot internals, using secure local broadcast @@ -1761,7 +1445,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot @Override public void onReceive(Context context, Intent intent) { - if (mCurrentStatus != STATUS_ON) + if (mCurrentStatus == STATUS_OFF) return; SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); @@ -1801,41 +1485,36 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { 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); - } + + try { + + if (mCurrentStatus != STATUS_OFF) + { + if (mConnectivity) + { + if (Prefs.useRoot() && Prefs.useTransparentProxying() && Prefs.transProxyNetworkRefresh()) + { + + + disableTransparentProxy(); + enableTransparentProxy(); + + } + } + } + + } catch (Exception e) { + logException ("error updating state after network restart",e); + } - } + } @@ -1924,15 +1603,15 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot 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'); + extraLines.append("ClientTransportPlugin obfs3 exec " + fileObfsclient.getCanonicalPath()).append('\n'); + extraLines.append("ClientTransportPlugin obfs4 exec " + fileObfsclient.getCanonicalPath()).append('\n'); + extraLines.append("ClientTransportPlugin scramblesuit exec " + fileObfsclient.getCanonicalPath()).append('\n'); } boolean meekBridges = bridgeList.contains("meek"); if (meekBridges) { - extraLines.append("ClientTransportPlugin meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n'); + extraLines.append("ClientTransportPlugin meek_lite exec " + fileObfsclient.getCanonicalPath()).append('\n'); } String[] bridgeListLines = bridgeList.split("\\r?\\n"); @@ -1962,8 +1641,8 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot debug ("Using meek bridges"); - // String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath(); - String bridgeConfig = "meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath(); + // String bridgeConfig = "meek exec " + fileMeekclient.getCanonicalPath(); + String bridgeConfig = "meek_lite exec " + fileObfsclient.getCanonicalPath(); extraLines.append("ClientTransportPlugin" + ' ' + bridgeConfig).append('\n'); @@ -1992,8 +1671,8 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot //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); + File fileGeoIP = new File(appBinHome, GEOIP_ASSET_KEY); + File fileGeoIP6 = new File(appBinHome, GEOIP6_ASSET_KEY); if (fileGeoIP.exists()) { @@ -2080,7 +1759,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot hsPort = Integer.parseInt(hsPortConfig.split(" ")[0]); - String hsDirPath = new File(OrbotApp.appCacheHome,"hs" + hsPort).getCanonicalPath(); + String hsDirPath = new File(appCacheHome,"hs" + hsPort).getCanonicalPath(); debug("Adding hidden service on port: " + hsPortConfig); @@ -2089,9 +1768,9 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } catch (NumberFormatException e) { - Log.e(TAG,"error parsing hsport",e); + Log.e(OrbotConstants.TAG,"error parsing hsport",e); } catch (Exception e) { - Log.e(TAG,"error starting share server",e); + Log.e(OrbotConstants.TAG,"error starting share server",e); } } @@ -2115,7 +1794,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot //using Google DNS for now as the public DNS server private String writeDNSFile () throws IOException { - File file = new File(OrbotApp.appBinHome, "resolv.conf"); + File file = new File(appBinHome, "resolv.conf"); PrintWriter bw = new PrintWriter(new FileWriter(file)); bw.println("nameserver 8.8.8.8"); @@ -2239,7 +1918,7 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } catch (Exception ioe) { - Log.e(TAG, "Connection exception occured resetting exits",ioe); + Log.e(OrbotConstants.TAG, "Connection exception occured resetting exits",ioe); } } } @@ -2251,8 +1930,8 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot { try { - File fileGeoIP = new File(OrbotApp.appBinHome, GEOIP_ASSET_KEY); - File fileGeoIP6 = new File(OrbotApp.appBinHome, GEOIP6_ASSET_KEY); + File fileGeoIP = new File(appBinHome, GEOIP_ASSET_KEY); + File fileGeoIP6 = new File(appBinHome, GEOIP6_ASSET_KEY); conn.setConf("GeoIPFile",fileGeoIP.getCanonicalPath()); conn.setConf("GeoIPv6File",fileGeoIP6.getCanonicalPath()); @@ -2266,11 +1945,43 @@ public class TorService extends VpnService implements TorServiceConstants, Orbot } catch (Exception ioe) { - Log.e(TAG, "Connection exception occured resetting exits",ioe); + Log.e(OrbotConstants.TAG, "Connection exception occured resetting exits",ioe); } } } } + public boolean hasConnectivity () + { + return mConnectivity; + } + + public int getNotifyId () + { + return NOTIFY_ID; + } + + private void startVPNService () + { + Intent intentVpn = new Intent(this,TorVpnService.class); + intentVpn.setAction("start"); + intentVpn.putExtra("torSocks",mPortSOCKS); + startService(intentVpn); + } + + + @TargetApi(14) + public void clearVpnProxy () + { + debug ("clearing VPN Proxy"); + Prefs.putUseVpn(false); + processTransparentProxying(); + + Intent intentVpn = new Intent(this,TorVpnService.class); + intentVpn.setAction("stop"); + startService(intentVpn); + + } + } diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java similarity index 98% rename from src/org/torproject/android/service/TorServiceConstants.java rename to orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java index e2f09641..f431b0cf 100644 --- a/src/org/torproject/android/service/TorServiceConstants.java +++ b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java @@ -133,9 +133,8 @@ public interface TorServiceConstants { 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 BINARY_TOR_VERSION = "0.2.8.1-1"; public static final String PREF_BINARY_TOR_VERSION_INSTALLED = "BINARY_TOR_VERSION_INSTALLED"; //obfsproxy diff --git a/src/org/torproject/android/service/TorrcConfig.java b/orbotservice/src/main/java/org/torproject/android/service/TorrcConfig.java similarity index 100% rename from src/org/torproject/android/service/TorrcConfig.java rename to orbotservice/src/main/java/org/torproject/android/service/TorrcConfig.java diff --git a/src/org/torproject/android/service/TorTransProxy.java b/orbotservice/src/main/java/org/torproject/android/service/transproxy/TorTransProxy.java similarity index 70% rename from src/org/torproject/android/service/TorTransProxy.java rename to orbotservice/src/main/java/org/torproject/android/service/transproxy/TorTransProxy.java index f88e46b0..2aeb58dc 100644 --- a/src/org/torproject/android/service/TorTransProxy.java +++ b/orbotservice/src/main/java/org/torproject/android/service/transproxy/TorTransProxy.java @@ -1,16 +1,23 @@ -package org.torproject.android.service; +package org.torproject.android.service.transproxy; 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 java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.StringTokenizer; import android.content.Context; import android.content.SharedPreferences; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; + +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.util.Prefs; +import org.torproject.android.service.TorService; +import org.torproject.android.service.TorServiceConstants; public class TorTransProxy implements TorServiceConstants { @@ -20,8 +27,8 @@ public class TorTransProxy implements TorServiceConstants { 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; + private int mTransProxyPort = TOR_TRANSPROXY_PORT_DEFAULT; + private int mDNSPort = TOR_DNS_PORT_DEFAULT; public TorTransProxy (TorService torService, File fileXTables) { @@ -176,6 +183,114 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -t nat -m owner --uid-owner "); script.append(tApp.getUid()); script.append(" -F || exit\n"); + public static ArrayList 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 lAppInfo = pMgr.getInstalledApplications(0); + + Iterator itAppInfo = lAppInfo.iterator(); + + ArrayList apps = new ArrayList(); + + 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; + } + script.append(ipTablesPath); script.append(" -t filter -m owner --uid-owner "); @@ -324,7 +439,7 @@ public class TorTransProxy implements TorServiceConstants { return code; }*/ - public int setTransparentProxyingByApp(Context context, ArrayList apps, boolean enableRule, Shell shell) + public int setTransparentProxyingByApp(Context context, ArrayList apps, boolean enableRule) throws Exception { String ipTablesPath = getIpTablesPath(context); @@ -359,7 +474,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(STANDARD_DNS_PORT); script.append(" -j REDIRECT --to-ports "); script.append(mDNSPort); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); // Allow everything for Tor @@ -368,14 +483,14 @@ public class TorTransProxy implements TorServiceConstants { { if (((!enableRule) || tApp.isTorified()) - && (!tApp.getUsername().equals(TorServiceConstants.TOR_APP_USERNAME)) + && (!tApp.getUsername().equals(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); + dropAllIPv6Traffic(context, tApp.getUid(),enableRule); script = new StringBuilder(); @@ -405,7 +520,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -j REDIRECT --to-ports "); script.append(mTransProxyPort); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); @@ -419,7 +534,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(ALLOW_LOCAL); script.append(" -j REJECT"); - lastExit = executeCommand (shell, script.toString()); + lastExit = executeCommand (script.toString()); } @@ -428,23 +543,21 @@ public class TorTransProxy implements TorServiceConstants { 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(); + private int executeCommand (String cmdString) throws Exception { + + Process proc = Runtime.getRuntime().exec(cmdString); + proc.waitFor(); + int exitCode = proc.exitValue(); + //String output = cmd.getOutput(); + - logMessage(cmdString + "; exit=" + exitCode + ";output=" + output); + logMessage(cmdString + "; exit=" + exitCode); return exitCode; } - public int enableTetheringRules (Context context, Shell shell) throws Exception + public int enableTetheringRules (Context context) throws Exception { String ipTablesPath = getIpTablesPath(context); @@ -466,7 +579,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -p udp --dport 53 -j REDIRECT --to-ports "); script.append(mDNSPort); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); @@ -477,7 +590,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -p tcp -j REDIRECT --to-ports "); script.append(mTransProxyPort); - lastExit = executeCommand (shell, script.toString()); + lastExit = executeCommand (script.toString()); script = new StringBuilder(); @@ -494,7 +607,7 @@ public class TorTransProxy implements TorServiceConstants { - public int fixTransproxyLeak (Context context, Shell shell) throws Exception + public int fixTransproxyLeak (Context context) throws Exception { String ipTablesPath = getIpTablesPath(context); @@ -502,21 +615,21 @@ public class TorTransProxy implements TorServiceConstants { 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()); + executeCommand (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()); + int lastExit = executeCommand (script.toString()); script = new StringBuilder(); return lastExit; } - public int dropAllIPv6Traffic (Context context, int appUid, boolean enableDrop, Shell shell) { + public int dropAllIPv6Traffic (Context context, int appUid, boolean enableDrop) throws Exception { String action = " -A "; String chain = "OUTPUT"; @@ -541,7 +654,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -j DROP"); - int lastExit = executeCommand (shell, script.toString()); + int lastExit = executeCommand (script.toString()); return lastExit; } @@ -566,33 +679,32 @@ public class TorTransProxy implements TorServiceConstants { return lastExit; }*/ - public int flushTransproxyRules (Context context) throws IOException { + public int flushTransproxyRules (Context context) throws Exception { 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()); + executeCommand (script.toString()); script = new StringBuilder(); script.append(ipTablesPath); script.append(" -t filter "); script.append(" -F "); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); - dropAllIPv6Traffic(context,-1,false, shell); + dropAllIPv6Traffic(context,-1,false); + dropAllIPv6Traffic(context,-1,false); - shell.close(); return exit; } - public int setTransparentProxyingAll(Context context, boolean enable, Shell shell) throws Exception + public int setTransparentProxyingAll(Context context, boolean enable) throws Exception { String action = " -A "; @@ -601,7 +713,7 @@ public class TorTransProxy implements TorServiceConstants { if (!enable) action = " -D "; - dropAllIPv6Traffic(context,-1,enable, shell); + dropAllIPv6Traffic(context,-1,enable); String ipTablesPath = getIpTablesPath(context); @@ -619,7 +731,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(torUid); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); // Allow loopback @@ -630,7 +742,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -o lo"); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); // Set up port redirection @@ -645,7 +757,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -j REDIRECT --to-ports "); script.append(mTransProxyPort); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); // Same for DNS @@ -662,7 +774,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" -j REDIRECT --to-ports "); script.append(mDNSPort); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); @@ -679,7 +791,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --log-prefix='ORBOT_DNSLEAK_PROTECTION'"); script.append(" --log-uid"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); script.append(ipTablesPath); @@ -690,7 +802,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --log-prefix='ORBOT_TCPLEAK_PROTECTION'"); script.append(" --log-uid"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); } @@ -704,7 +816,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --dport ").append(mTransProxyPort); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); //allow access to local HTTP port @@ -716,7 +828,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --dport ").append(mTorService.getHTTPPort()); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); //allow access to local SOCKS port @@ -728,7 +840,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --dport ").append(mTorService.getSOCKSPort()); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); //allow access to local DNS port @@ -740,7 +852,7 @@ public class TorTransProxy implements TorServiceConstants { script.append(" --dport ").append(mDNSPort); script.append(" -j ACCEPT"); - executeCommand (shell, script.toString()); + executeCommand (script.toString()); script = new StringBuilder(); // Reject all other packets @@ -752,12 +864,120 @@ public class TorTransProxy implements TorServiceConstants { script.append(ALLOW_LOCAL); //allow access to localhost script.append(" -j REJECT"); - int lastExit = executeCommand (shell, script.toString()); + int lastExit = executeCommand (script.toString()); // fixTransproxyLeak (context); return lastExit; - } - + } + + + public static ArrayList getApps (Context context, SharedPreferences prefs) + { + + String tordAppString = prefs.getString(OrbotConstants.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 lAppInfo = pMgr.getInstalledApplications(0); + + Iterator itAppInfo = lAppInfo.iterator(); + + ArrayList apps = new ArrayList(); + + 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; + } } diff --git a/orbotservice/src/main/java/org/torproject/android/service/transproxy/TorifiedApp.java b/orbotservice/src/main/java/org/torproject/android/service/transproxy/TorifiedApp.java new file mode 100644 index 00000000..c786905d --- /dev/null +++ b/orbotservice/src/main/java/org/torproject/android/service/transproxy/TorifiedApp.java @@ -0,0 +1,261 @@ +package org.torproject.android.service.transproxy; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; + +import org.torproject.android.service.OrbotConstants; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.StringTokenizer; + +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; + } + + public static ArrayList getApps (Context context, SharedPreferences prefs) + { + + String tordAppString = prefs.getString(OrbotConstants.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 lAppInfo = pMgr.getInstalledApplications(0); + + Iterator itAppInfo = lAppInfo.iterator(); + + ArrayList apps = new ArrayList(); + + 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; + } +} diff --git a/src/org/torproject/android/service/DummyActivity.java b/orbotservice/src/main/java/org/torproject/android/service/util/DummyActivity.java similarity index 84% rename from src/org/torproject/android/service/DummyActivity.java rename to orbotservice/src/main/java/org/torproject/android/service/util/DummyActivity.java index 5400ba4f..20804b95 100644 --- a/src/org/torproject/android/service/DummyActivity.java +++ b/orbotservice/src/main/java/org/torproject/android/service/util/DummyActivity.java @@ -1,4 +1,4 @@ -package org.torproject.android.service; +package org.torproject.android.service.util; import android.app.Activity; import android.os.Bundle; diff --git a/src/org/torproject/android/Prefs.java b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java similarity index 97% rename from src/org/torproject/android/Prefs.java rename to orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java index d79f1605..38f2399c 100644 --- a/src/org/torproject/android/Prefs.java +++ b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java @@ -1,15 +1,13 @@ -package org.torproject.android; +package org.torproject.android.service.util; 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"; diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/orbotservice/src/main/java/org/torproject/android/service/util/TorResourceInstaller.java similarity index 81% rename from src/org/torproject/android/service/TorResourceInstaller.java rename to orbotservice/src/main/java/org/torproject/android/service/util/TorResourceInstaller.java index 67dc32df..36369aac 100644 --- a/src/org/torproject/android/service/TorResourceInstaller.java +++ b/orbotservice/src/main/java/org/torproject/android/service/util/TorResourceInstaller.java @@ -1,7 +1,7 @@ /* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */ /* See LICENSE for licensing information */ -package org.torproject.android.service; +package org.torproject.android.service.util; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -18,15 +18,14 @@ 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; +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.R; +import org.torproject.android.service.TorServiceConstants; + public class TorResourceInstaller implements TorServiceConstants { @@ -74,63 +73,41 @@ public class TorResourceInstaller implements TorServiceConstants { if (Build.CPU_ABI.contains("x86")) cpuPath = "x86"; - + deleteDirectory(installFolder); installFolder.mkdirs(); - - Shell shell = Shell.startShell(new ArrayList(),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 + '/' + OBFSCLIENT_ASSET_KEY + MP3_EXT); + outFile = new File(installFolder, OBFSCLIENT_ASSET_KEY); + 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); @@ -162,10 +139,8 @@ public class TorResourceInstaller implements TorServiceConstants { InputStream is; - Shell shell = Shell.startShell(new ArrayList(),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) @@ -174,8 +149,7 @@ public class TorResourceInstaller implements TorServiceConstants { streamToFile(sbis,filePolipo,true,false); } - shell.close(); - + return true; } @@ -185,11 +159,9 @@ public class TorResourceInstaller implements TorServiceConstants { InputStream is; File outFile; - Shell shell = Shell.startShell(new ArrayList(),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; diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/orbotservice/src/main/java/org/torproject/android/service/util/TorServiceUtils.java similarity index 85% rename from src/org/torproject/android/service/TorServiceUtils.java rename to orbotservice/src/main/java/org/torproject/android/service/util/TorServiceUtils.java index 9a072b97..9fa8bb80 100644 --- a/src/org/torproject/android/service/TorServiceUtils.java +++ b/orbotservice/src/main/java/org/torproject/android/service/util/TorServiceUtils.java @@ -1,29 +1,21 @@ /* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */ /* See LICENSE for licensing information */ -package org.torproject.android.service; +package org.torproject.android.service.util; 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; + +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.TorServiceConstants; public class TorServiceUtils implements TorServiceConstants { @@ -145,23 +137,25 @@ public class TorServiceUtils implements TorServiceConstants { * 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)); + }*/ + + Runtime.getRuntime().exec("busybox killall " + signal + " " + fileProcBin.getName()); + Runtime.getRuntime().exec("toolbox kill " + signal + " " + pidString); + Runtime.getRuntime().exec("busybox kill " + signal + " " + pidString); + Runtime.getRuntime().exec("kill " + signal + " " + pidString); try { Thread.sleep(1000); } catch (InterruptedException e) { // ignored } - shell.close(); + if (killAttempts > 4) throw new Exception("Cannot kill: " + fileProcBin.getAbsolutePath()); } diff --git a/src/org/torproject/android/service/Utils.java b/orbotservice/src/main/java/org/torproject/android/service/util/Utils.java similarity index 97% rename from src/org/torproject/android/service/Utils.java rename to orbotservice/src/main/java/org/torproject/android/service/util/Utils.java index a89e03fe..0fac4019 100644 --- a/src/org/torproject/android/service/Utils.java +++ b/orbotservice/src/main/java/org/torproject/android/service/util/Utils.java @@ -2,7 +2,7 @@ /* See LICENSE for licensing information */ -package org.torproject.android.service; +package org.torproject.android.service.util; import java.io.BufferedReader; import java.io.File; diff --git a/src/org/torproject/android/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java similarity index 87% rename from src/org/torproject/android/vpn/OrbotVpnManager.java rename to orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java index bfb564cb..1b4cca02 100644 --- a/src/org/torproject/android/vpn/OrbotVpnManager.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java @@ -14,30 +14,10 @@ * 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; +package org.torproject.android.service.vpn; import android.annotation.TargetApi; +import android.app.Application; import android.app.PendingIntent; import android.app.Service; import android.content.Context; @@ -56,8 +36,24 @@ 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) +import org.torproject.android.service.R; +import org.torproject.android.service.TorServiceConstants; +import org.torproject.android.service.transproxy.TorifiedApp; +import org.torproject.android.service.util.TorServiceUtils; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.concurrent.TimeoutException; + +@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public class OrbotVpnManager implements Handler.Callback { private static final String TAG = "OrbotVpnService"; @@ -73,8 +69,7 @@ public class OrbotVpnManager implements Handler.Callback { 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; @@ -82,20 +77,23 @@ public class OrbotVpnManager implements Handler.Callback { //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; + + + File filePdnsd = null; + + private boolean isRestart = false; - private boolean isRestart = false; - - private TorService mService; + private VpnService mService; - static{ - System.loadLibrary("tun2socks"); - } - - public OrbotVpnManager (TorService service) + public OrbotVpnManager (VpnService service) { mService = service; - } + + File fileBinHome = mService.getDir(TorServiceConstants.DIRECTORY_TOR_BINARY, Application.MODE_PRIVATE); + filePdnsd = new File(fileBinHome,TorServiceConstants.PDNSD_ASSET_KEY); + + } //public int onStartCommand(Intent intent, int flags, int startId) { public int handleIntent(Builder builder, Intent intent) { @@ -177,7 +175,7 @@ public class OrbotVpnManager implements Handler.Callback { { stopSocksBypass (); } - + try { mSocksProxyServer = new ProxyServer(new ServerAuthenticatorNone(null, null)); @@ -252,7 +250,7 @@ public class OrbotVpnManager implements Handler.Callback { Tun2Socks.Stop(); try { - TorServiceUtils.killProcess(OrbotApp.filePdnsd); + TorServiceUtils.killProcess(filePdnsd); } catch (Exception e) { e.printStackTrace(); } @@ -366,7 +364,7 @@ public class OrbotVpnManager implements Handler.Callback { private void doLollipopAppRouting (Builder builder) throws NameNotFoundException { - ArrayList apps = AppManager.getApps(mService, TorServiceUtils.getSharedPrefs(mService.getApplicationContext())); + ArrayList apps = TorifiedApp.getApps(mService, TorServiceUtils.getSharedPrefs(mService.getApplicationContext())); boolean perAppEnabled = false; @@ -402,24 +400,33 @@ public class OrbotVpnManager implements Handler.Callback { //super.onRevoke(); } - - + private void startDNS (String dns, int port) throws IOException, TimeoutException { - makePdnsdConf(mService, dns, port,OrbotApp.filePdnsd.getParentFile() ); + makePdnsdConf(mService, dns, port,filePdnsd.getParentFile() ); ArrayList customEnv = new ArrayList(); - 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()); + String baseDirectory = filePdnsd.getParent(); + + String[] cmdString = {filePdnsd.getCanonicalPath(),"-c",baseDirectory + "/pdnsd.conf"}; + ProcessBuilder pb = new ProcessBuilder(cmdString); + pb.redirectErrorStream(true); + Process proc = pb.start(); + try { proc.waitFor();} catch (Exception e){} + + Log.i(TAG,"PDNSD: " + proc.exitValue()); + + if (proc.exitValue() != 0) + { + BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); + + String line = null; + while ((line = br.readLine ()) != null) { + Log.d(TAG,"pdnsd: " + line); + } + + } + } @@ -436,10 +443,7 @@ public class OrbotVpnManager implements Handler.Callback { 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()) { diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/TorVpnService.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorVpnService.java new file mode 100644 index 00000000..f396860d --- /dev/null +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/TorVpnService.java @@ -0,0 +1,42 @@ +package org.torproject.android.service.vpn; + +import android.annotation.TargetApi; +import android.app.Service; +import android.content.Intent; +import android.net.VpnService; +import android.os.Build; +import android.text.TextUtils; +import android.util.Log; + +import org.torproject.android.service.OrbotConstants; +import org.torproject.android.service.TorServiceConstants; +import org.torproject.android.service.util.Prefs; + +/** + * Created by n8fr8 on 9/26/16. + */ +@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) +public class TorVpnService extends VpnService { + + + OrbotVpnManager mVpnManager; + + + @Override + public void onCreate() { + super.onCreate(); + + mVpnManager = new OrbotVpnManager(this); + } + + /* (non-Javadoc) + * @see android.app.Service#onStart(android.content.Intent, int) + */ + public int onStartCommand(Intent intent, int flags, int startId) { + + mVpnManager.handleIntent(new Builder(),intent); + + return Service.START_STICKY; + } + +} diff --git a/src/org/torproject/android/vpn/Tun2Socks.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java similarity index 94% rename from src/org/torproject/android/vpn/Tun2Socks.java rename to orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java index a7c638e9..cff4c1cb 100644 --- a/src/org/torproject/android/vpn/Tun2Socks.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/Tun2Socks.java @@ -1,4 +1,4 @@ -package org.torproject.android.vpn; +package org.torproject.android.service.vpn; /* * Copyright (c) 2013, Psiphon Inc. @@ -19,17 +19,22 @@ package org.torproject.android.vpn; * */ -import java.net.DatagramSocket; -import java.net.Socket; - import android.annotation.TargetApi; import android.os.Build; import android.os.ParcelFileDescriptor; import android.util.Log; +import java.net.DatagramSocket; +import java.net.Socket; + @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) public class Tun2Socks { + + static{ + System.loadLibrary("tun2socks"); + } + public static interface IProtectSocket { boolean doVpnProtect(Socket socket); @@ -51,9 +56,7 @@ public class Tun2Socks // 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, @@ -63,12 +66,6 @@ public class Tun2Socks String udpgwServerAddress, boolean udpgwTransparentDNS) { - - if (!mLibLoaded) - { - System.loadLibrary("tun2socks"); - mLibLoaded = true; - } mVpnInterfaceFileDescriptor = vpnInterfaceFileDescriptor; mVpnInterfaceMTU = vpnInterfaceMTU; diff --git a/jni/Android.mk b/orbotservice/src/main/jni/Android.mk similarity index 97% rename from jni/Android.mk rename to orbotservice/src/main/jni/Android.mk index f4af1d97..c4448dbc 100644 --- a/jni/Android.mk +++ b/orbotservice/src/main/jni/Android.mk @@ -15,7 +15,7 @@ # LOCAL_PATH := $(call my-dir) ROOT_PATH := $(LOCAL_PATH) -EXTERN_PATH := $(LOCAL_PATH)/../external +EXTERN_PATH := $(LOCAL_PATH)/../../../../external ######################################################## ## pdnsd library @@ -136,7 +136,7 @@ LOCAL_MODULE := tun2socks LOCAL_LDLIBS := -ldl -llog -LOCAL_SRC_FILES := $(addprefix ../external/badvpn/, $(TUN2SOCKS_SOURCES)) +LOCAL_SRC_FILES := $(addprefix ../../../../external/badvpn/, $(TUN2SOCKS_SOURCES)) ##include $(BUILD_EXECUTABLE) include $(BUILD_SHARED_LIBRARY) diff --git a/jni/Application.mk b/orbotservice/src/main/jni/Application.mk similarity index 75% rename from jni/Application.mk rename to orbotservice/src/main/jni/Application.mk index 554a462d..a356ed76 100644 --- a/jni/Application.mk +++ b/orbotservice/src/main/jni/Application.mk @@ -1,4 +1,4 @@ -APP_ABI := armeabi x86 +APP_ABI := armeabi APP_PLATFORM := android-16 APP_STL := stlport_static NDK_TOOLCHAIN_VERSION := 4.8 diff --git a/jni/libancillary/API b/orbotservice/src/main/jni/libancillary/API similarity index 100% rename from jni/libancillary/API rename to orbotservice/src/main/jni/libancillary/API diff --git a/jni/libancillary/COPYING b/orbotservice/src/main/jni/libancillary/COPYING similarity index 100% rename from jni/libancillary/COPYING rename to orbotservice/src/main/jni/libancillary/COPYING diff --git a/jni/libancillary/Makefile b/orbotservice/src/main/jni/libancillary/Makefile similarity index 100% rename from jni/libancillary/Makefile rename to orbotservice/src/main/jni/libancillary/Makefile diff --git a/jni/libancillary/ancillary.h b/orbotservice/src/main/jni/libancillary/ancillary.h similarity index 100% rename from jni/libancillary/ancillary.h rename to orbotservice/src/main/jni/libancillary/ancillary.h diff --git a/jni/libancillary/fd_recv.c b/orbotservice/src/main/jni/libancillary/fd_recv.c similarity index 100% rename from jni/libancillary/fd_recv.c rename to orbotservice/src/main/jni/libancillary/fd_recv.c diff --git a/jni/libancillary/fd_send.c b/orbotservice/src/main/jni/libancillary/fd_send.c similarity index 100% rename from jni/libancillary/fd_send.c rename to orbotservice/src/main/jni/libancillary/fd_send.c diff --git a/jni/libancillary/test.c b/orbotservice/src/main/jni/libancillary/test.c similarity index 100% rename from jni/libancillary/test.c rename to orbotservice/src/main/jni/libancillary/test.c diff --git a/jni/pdnsd/AUTHORS b/orbotservice/src/main/jni/pdnsd/AUTHORS similarity index 100% rename from jni/pdnsd/AUTHORS rename to orbotservice/src/main/jni/pdnsd/AUTHORS diff --git a/jni/pdnsd/COPYING b/orbotservice/src/main/jni/pdnsd/COPYING similarity index 100% rename from jni/pdnsd/COPYING rename to orbotservice/src/main/jni/pdnsd/COPYING diff --git a/jni/pdnsd/COPYING.BSD b/orbotservice/src/main/jni/pdnsd/COPYING.BSD similarity index 100% rename from jni/pdnsd/COPYING.BSD rename to orbotservice/src/main/jni/pdnsd/COPYING.BSD diff --git a/jni/pdnsd/ChangeLog b/orbotservice/src/main/jni/pdnsd/ChangeLog similarity index 100% rename from jni/pdnsd/ChangeLog rename to orbotservice/src/main/jni/pdnsd/ChangeLog diff --git a/jni/pdnsd/ChangeLog.old b/orbotservice/src/main/jni/pdnsd/ChangeLog.old similarity index 100% rename from jni/pdnsd/ChangeLog.old rename to orbotservice/src/main/jni/pdnsd/ChangeLog.old diff --git a/jni/pdnsd/INSTALL b/orbotservice/src/main/jni/pdnsd/INSTALL similarity index 100% rename from jni/pdnsd/INSTALL rename to orbotservice/src/main/jni/pdnsd/INSTALL diff --git a/jni/pdnsd/Makefile.am b/orbotservice/src/main/jni/pdnsd/Makefile.am similarity index 100% rename from jni/pdnsd/Makefile.am rename to orbotservice/src/main/jni/pdnsd/Makefile.am diff --git a/jni/pdnsd/Makefile.in b/orbotservice/src/main/jni/pdnsd/Makefile.in similarity index 100% rename from jni/pdnsd/Makefile.in rename to orbotservice/src/main/jni/pdnsd/Makefile.in diff --git a/jni/pdnsd/NEWS b/orbotservice/src/main/jni/pdnsd/NEWS similarity index 100% rename from jni/pdnsd/NEWS rename to orbotservice/src/main/jni/pdnsd/NEWS diff --git a/jni/pdnsd/PKGBUILD.in b/orbotservice/src/main/jni/pdnsd/PKGBUILD.in similarity index 100% rename from jni/pdnsd/PKGBUILD.in rename to orbotservice/src/main/jni/pdnsd/PKGBUILD.in diff --git a/jni/pdnsd/README b/orbotservice/src/main/jni/pdnsd/README similarity index 100% rename from jni/pdnsd/README rename to orbotservice/src/main/jni/pdnsd/README diff --git a/jni/pdnsd/README.par b/orbotservice/src/main/jni/pdnsd/README.par similarity index 100% rename from jni/pdnsd/README.par rename to orbotservice/src/main/jni/pdnsd/README.par diff --git a/jni/pdnsd/README.par.old b/orbotservice/src/main/jni/pdnsd/README.par.old similarity index 100% rename from jni/pdnsd/README.par.old rename to orbotservice/src/main/jni/pdnsd/README.par.old diff --git a/jni/pdnsd/THANKS b/orbotservice/src/main/jni/pdnsd/THANKS similarity index 100% rename from jni/pdnsd/THANKS rename to orbotservice/src/main/jni/pdnsd/THANKS diff --git a/jni/pdnsd/TODO b/orbotservice/src/main/jni/pdnsd/TODO similarity index 100% rename from jni/pdnsd/TODO rename to orbotservice/src/main/jni/pdnsd/TODO diff --git a/jni/pdnsd/acconfig.h b/orbotservice/src/main/jni/pdnsd/acconfig.h similarity index 100% rename from jni/pdnsd/acconfig.h rename to orbotservice/src/main/jni/pdnsd/acconfig.h diff --git a/jni/pdnsd/aclocal.m4 b/orbotservice/src/main/jni/pdnsd/aclocal.m4 similarity index 100% rename from jni/pdnsd/aclocal.m4 rename to orbotservice/src/main/jni/pdnsd/aclocal.m4 diff --git a/jni/pdnsd/compile b/orbotservice/src/main/jni/pdnsd/compile similarity index 100% rename from jni/pdnsd/compile rename to orbotservice/src/main/jni/pdnsd/compile diff --git a/jni/pdnsd/config.h b/orbotservice/src/main/jni/pdnsd/config.h similarity index 100% rename from jni/pdnsd/config.h rename to orbotservice/src/main/jni/pdnsd/config.h diff --git a/jni/pdnsd/config.h.in b/orbotservice/src/main/jni/pdnsd/config.h.in similarity index 100% rename from jni/pdnsd/config.h.in rename to orbotservice/src/main/jni/pdnsd/config.h.in diff --git a/jni/pdnsd/configure b/orbotservice/src/main/jni/pdnsd/configure similarity index 100% rename from jni/pdnsd/configure rename to orbotservice/src/main/jni/pdnsd/configure diff --git a/jni/pdnsd/configure.in b/orbotservice/src/main/jni/pdnsd/configure.in similarity index 100% rename from jni/pdnsd/configure.in rename to orbotservice/src/main/jni/pdnsd/configure.in diff --git a/jni/pdnsd/contrib/Makefile.am b/orbotservice/src/main/jni/pdnsd/contrib/Makefile.am similarity index 100% rename from jni/pdnsd/contrib/Makefile.am rename to orbotservice/src/main/jni/pdnsd/contrib/Makefile.am diff --git a/jni/pdnsd/contrib/Makefile.in b/orbotservice/src/main/jni/pdnsd/contrib/Makefile.in similarity index 100% rename from jni/pdnsd/contrib/Makefile.in rename to orbotservice/src/main/jni/pdnsd/contrib/Makefile.in diff --git a/jni/pdnsd/contrib/README b/orbotservice/src/main/jni/pdnsd/contrib/README similarity index 100% rename from jni/pdnsd/contrib/README rename to orbotservice/src/main/jni/pdnsd/contrib/README diff --git a/jni/pdnsd/contrib/change_pdnsd_server_ip.pl b/orbotservice/src/main/jni/pdnsd/contrib/change_pdnsd_server_ip.pl similarity index 100% rename from jni/pdnsd/contrib/change_pdnsd_server_ip.pl rename to orbotservice/src/main/jni/pdnsd/contrib/change_pdnsd_server_ip.pl diff --git a/jni/pdnsd/contrib/dhcp2pdnsd b/orbotservice/src/main/jni/pdnsd/contrib/dhcp2pdnsd similarity index 100% rename from jni/pdnsd/contrib/dhcp2pdnsd rename to orbotservice/src/main/jni/pdnsd/contrib/dhcp2pdnsd diff --git a/jni/pdnsd/contrib/pdnsd_dhcp.pl b/orbotservice/src/main/jni/pdnsd/contrib/pdnsd_dhcp.pl similarity index 100% rename from jni/pdnsd/contrib/pdnsd_dhcp.pl rename to orbotservice/src/main/jni/pdnsd/contrib/pdnsd_dhcp.pl diff --git a/jni/pdnsd/depcomp b/orbotservice/src/main/jni/pdnsd/depcomp similarity index 100% rename from jni/pdnsd/depcomp rename to orbotservice/src/main/jni/pdnsd/depcomp diff --git a/jni/pdnsd/file-list.base.in b/orbotservice/src/main/jni/pdnsd/file-list.base.in similarity index 100% rename from jni/pdnsd/file-list.base.in rename to orbotservice/src/main/jni/pdnsd/file-list.base.in diff --git a/jni/pdnsd/install-sh b/orbotservice/src/main/jni/pdnsd/install-sh similarity index 100% rename from jni/pdnsd/install-sh rename to orbotservice/src/main/jni/pdnsd/install-sh diff --git a/jni/pdnsd/missing b/orbotservice/src/main/jni/pdnsd/missing similarity index 100% rename from jni/pdnsd/missing rename to orbotservice/src/main/jni/pdnsd/missing diff --git a/jni/pdnsd/pdnsd.spec.in b/orbotservice/src/main/jni/pdnsd/pdnsd.spec.in similarity index 100% rename from jni/pdnsd/pdnsd.spec.in rename to orbotservice/src/main/jni/pdnsd/pdnsd.spec.in diff --git a/jni/pdnsd/src/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/Makefile.am similarity index 100% rename from jni/pdnsd/src/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/Makefile.am diff --git a/jni/pdnsd/src/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/Makefile.in similarity index 100% rename from jni/pdnsd/src/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/Makefile.in diff --git a/jni/pdnsd/src/cache.c b/orbotservice/src/main/jni/pdnsd/src/cache.c similarity index 100% rename from jni/pdnsd/src/cache.c rename to orbotservice/src/main/jni/pdnsd/src/cache.c diff --git a/jni/pdnsd/src/cache.h b/orbotservice/src/main/jni/pdnsd/src/cache.h similarity index 100% rename from jni/pdnsd/src/cache.h rename to orbotservice/src/main/jni/pdnsd/src/cache.h diff --git a/jni/pdnsd/src/conf-keywords.h b/orbotservice/src/main/jni/pdnsd/src/conf-keywords.h similarity index 100% rename from jni/pdnsd/src/conf-keywords.h rename to orbotservice/src/main/jni/pdnsd/src/conf-keywords.h diff --git a/jni/pdnsd/src/conf-parser.c b/orbotservice/src/main/jni/pdnsd/src/conf-parser.c similarity index 100% rename from jni/pdnsd/src/conf-parser.c rename to orbotservice/src/main/jni/pdnsd/src/conf-parser.c diff --git a/jni/pdnsd/src/conf-parser.h b/orbotservice/src/main/jni/pdnsd/src/conf-parser.h similarity index 100% rename from jni/pdnsd/src/conf-parser.h rename to orbotservice/src/main/jni/pdnsd/src/conf-parser.h diff --git a/jni/pdnsd/src/conff.c b/orbotservice/src/main/jni/pdnsd/src/conff.c similarity index 100% rename from jni/pdnsd/src/conff.c rename to orbotservice/src/main/jni/pdnsd/src/conff.c diff --git a/jni/pdnsd/src/conff.h b/orbotservice/src/main/jni/pdnsd/src/conff.h similarity index 100% rename from jni/pdnsd/src/conff.h rename to orbotservice/src/main/jni/pdnsd/src/conff.h diff --git a/jni/pdnsd/src/consts.c b/orbotservice/src/main/jni/pdnsd/src/consts.c similarity index 100% rename from jni/pdnsd/src/consts.c rename to orbotservice/src/main/jni/pdnsd/src/consts.c diff --git a/jni/pdnsd/src/consts.h b/orbotservice/src/main/jni/pdnsd/src/consts.h similarity index 100% rename from jni/pdnsd/src/consts.h rename to orbotservice/src/main/jni/pdnsd/src/consts.h diff --git a/jni/pdnsd/src/debug.c b/orbotservice/src/main/jni/pdnsd/src/debug.c similarity index 100% rename from jni/pdnsd/src/debug.c rename to orbotservice/src/main/jni/pdnsd/src/debug.c diff --git a/jni/pdnsd/src/debug.h b/orbotservice/src/main/jni/pdnsd/src/debug.h similarity index 100% rename from jni/pdnsd/src/debug.h rename to orbotservice/src/main/jni/pdnsd/src/debug.h diff --git a/jni/pdnsd/src/dns.c b/orbotservice/src/main/jni/pdnsd/src/dns.c similarity index 100% rename from jni/pdnsd/src/dns.c rename to orbotservice/src/main/jni/pdnsd/src/dns.c diff --git a/jni/pdnsd/src/dns.h b/orbotservice/src/main/jni/pdnsd/src/dns.h similarity index 100% rename from jni/pdnsd/src/dns.h rename to orbotservice/src/main/jni/pdnsd/src/dns.h diff --git a/jni/pdnsd/src/dns_answer.c b/orbotservice/src/main/jni/pdnsd/src/dns_answer.c similarity index 100% rename from jni/pdnsd/src/dns_answer.c rename to orbotservice/src/main/jni/pdnsd/src/dns_answer.c diff --git a/jni/pdnsd/src/dns_answer.h b/orbotservice/src/main/jni/pdnsd/src/dns_answer.h similarity index 100% rename from jni/pdnsd/src/dns_answer.h rename to orbotservice/src/main/jni/pdnsd/src/dns_answer.h diff --git a/jni/pdnsd/src/dns_query.c b/orbotservice/src/main/jni/pdnsd/src/dns_query.c similarity index 100% rename from jni/pdnsd/src/dns_query.c rename to orbotservice/src/main/jni/pdnsd/src/dns_query.c diff --git a/jni/pdnsd/src/dns_query.h b/orbotservice/src/main/jni/pdnsd/src/dns_query.h similarity index 100% rename from jni/pdnsd/src/dns_query.h rename to orbotservice/src/main/jni/pdnsd/src/dns_query.h diff --git a/jni/pdnsd/src/error.c b/orbotservice/src/main/jni/pdnsd/src/error.c similarity index 100% rename from jni/pdnsd/src/error.c rename to orbotservice/src/main/jni/pdnsd/src/error.c diff --git a/jni/pdnsd/src/error.h b/orbotservice/src/main/jni/pdnsd/src/error.h similarity index 100% rename from jni/pdnsd/src/error.h rename to orbotservice/src/main/jni/pdnsd/src/error.h diff --git a/jni/pdnsd/src/freebsd_netinet_ip_icmp.h b/orbotservice/src/main/jni/pdnsd/src/freebsd_netinet_ip_icmp.h similarity index 100% rename from jni/pdnsd/src/freebsd_netinet_ip_icmp.h rename to orbotservice/src/main/jni/pdnsd/src/freebsd_netinet_ip_icmp.h diff --git a/jni/pdnsd/src/hash.c b/orbotservice/src/main/jni/pdnsd/src/hash.c similarity index 100% rename from jni/pdnsd/src/hash.c rename to orbotservice/src/main/jni/pdnsd/src/hash.c diff --git a/jni/pdnsd/src/hash.h b/orbotservice/src/main/jni/pdnsd/src/hash.h similarity index 100% rename from jni/pdnsd/src/hash.h rename to orbotservice/src/main/jni/pdnsd/src/hash.h diff --git a/jni/pdnsd/src/helpers.c b/orbotservice/src/main/jni/pdnsd/src/helpers.c similarity index 100% rename from jni/pdnsd/src/helpers.c rename to orbotservice/src/main/jni/pdnsd/src/helpers.c diff --git a/jni/pdnsd/src/helpers.h b/orbotservice/src/main/jni/pdnsd/src/helpers.h similarity index 100% rename from jni/pdnsd/src/helpers.h rename to orbotservice/src/main/jni/pdnsd/src/helpers.h diff --git a/jni/pdnsd/src/icmp.c b/orbotservice/src/main/jni/pdnsd/src/icmp.c similarity index 100% rename from jni/pdnsd/src/icmp.c rename to orbotservice/src/main/jni/pdnsd/src/icmp.c diff --git a/jni/pdnsd/src/icmp.h b/orbotservice/src/main/jni/pdnsd/src/icmp.h similarity index 100% rename from jni/pdnsd/src/icmp.h rename to orbotservice/src/main/jni/pdnsd/src/icmp.h diff --git a/jni/pdnsd/src/ipvers.h b/orbotservice/src/main/jni/pdnsd/src/ipvers.h similarity index 100% rename from jni/pdnsd/src/ipvers.h rename to orbotservice/src/main/jni/pdnsd/src/ipvers.h diff --git a/jni/pdnsd/src/list.c b/orbotservice/src/main/jni/pdnsd/src/list.c similarity index 100% rename from jni/pdnsd/src/list.c rename to orbotservice/src/main/jni/pdnsd/src/list.c diff --git a/jni/pdnsd/src/list.h b/orbotservice/src/main/jni/pdnsd/src/list.h similarity index 100% rename from jni/pdnsd/src/list.h rename to orbotservice/src/main/jni/pdnsd/src/list.h diff --git a/jni/pdnsd/src/main.c b/orbotservice/src/main/jni/pdnsd/src/main.c similarity index 100% rename from jni/pdnsd/src/main.c rename to orbotservice/src/main/jni/pdnsd/src/main.c diff --git a/jni/pdnsd/src/make_rr_types_h.pl b/orbotservice/src/main/jni/pdnsd/src/make_rr_types_h.pl similarity index 100% rename from jni/pdnsd/src/make_rr_types_h.pl rename to orbotservice/src/main/jni/pdnsd/src/make_rr_types_h.pl diff --git a/jni/pdnsd/src/netdev.c b/orbotservice/src/main/jni/pdnsd/src/netdev.c similarity index 100% rename from jni/pdnsd/src/netdev.c rename to orbotservice/src/main/jni/pdnsd/src/netdev.c diff --git a/jni/pdnsd/src/netdev.h b/orbotservice/src/main/jni/pdnsd/src/netdev.h similarity index 100% rename from jni/pdnsd/src/netdev.h rename to orbotservice/src/main/jni/pdnsd/src/netdev.h diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/Makefile.am similarity index 100% rename from jni/pdnsd/src/pdnsd-ctl/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/Makefile.am diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/Makefile.in similarity index 100% rename from jni/pdnsd/src/pdnsd-ctl/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/Makefile.in diff --git a/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c b/orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c similarity index 100% rename from jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c rename to orbotservice/src/main/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c diff --git a/jni/pdnsd/src/pdnsd_assert.h b/orbotservice/src/main/jni/pdnsd/src/pdnsd_assert.h similarity index 100% rename from jni/pdnsd/src/pdnsd_assert.h rename to orbotservice/src/main/jni/pdnsd/src/pdnsd_assert.h diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/ArchLinux/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/Makefile.am diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/ArchLinux/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/Makefile.in diff --git a/jni/pdnsd/src/rc/ArchLinux/pdnsd.in b/orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/pdnsd.in similarity index 100% rename from jni/pdnsd/src/rc/ArchLinux/pdnsd.in rename to orbotservice/src/main/jni/pdnsd/src/rc/ArchLinux/pdnsd.in diff --git a/jni/pdnsd/src/rc/Debian/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/Debian/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/Debian/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/Debian/Makefile.am diff --git a/jni/pdnsd/src/rc/Debian/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/Debian/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/Debian/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/Debian/Makefile.in diff --git a/jni/pdnsd/src/rc/Debian/pdnsd.in b/orbotservice/src/main/jni/pdnsd/src/rc/Debian/pdnsd.in similarity index 100% rename from jni/pdnsd/src/rc/Debian/pdnsd.in rename to orbotservice/src/main/jni/pdnsd/src/rc/Debian/pdnsd.in diff --git a/jni/pdnsd/src/rc/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/Makefile.am diff --git a/jni/pdnsd/src/rc/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/Makefile.in diff --git a/jni/pdnsd/src/rc/README b/orbotservice/src/main/jni/pdnsd/src/rc/README similarity index 100% rename from jni/pdnsd/src/rc/README rename to orbotservice/src/main/jni/pdnsd/src/rc/README diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/RedHat/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/RedHat/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/RedHat/Makefile.am diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/RedHat/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/RedHat/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/RedHat/Makefile.in diff --git a/jni/pdnsd/src/rc/RedHat/pdnsd.in b/orbotservice/src/main/jni/pdnsd/src/rc/RedHat/pdnsd.in similarity index 100% rename from jni/pdnsd/src/rc/RedHat/pdnsd.in rename to orbotservice/src/main/jni/pdnsd/src/rc/RedHat/pdnsd.in diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/Slackware/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/Slackware/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/Slackware/Makefile.am diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/Slackware/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/Slackware/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/Slackware/Makefile.in diff --git a/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in b/orbotservice/src/main/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in similarity index 100% rename from jni/pdnsd/src/rc/Slackware/rc.pdnsd.in rename to orbotservice/src/main/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/rc/SuSE/Makefile.am similarity index 100% rename from jni/pdnsd/src/rc/SuSE/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/rc/SuSE/Makefile.am diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/rc/SuSE/Makefile.in similarity index 100% rename from jni/pdnsd/src/rc/SuSE/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/rc/SuSE/Makefile.in diff --git a/jni/pdnsd/src/rc/SuSE/pdnsd.in b/orbotservice/src/main/jni/pdnsd/src/rc/SuSE/pdnsd.in similarity index 100% rename from jni/pdnsd/src/rc/SuSE/pdnsd.in rename to orbotservice/src/main/jni/pdnsd/src/rc/SuSE/pdnsd.in diff --git a/jni/pdnsd/src/rr_types.c b/orbotservice/src/main/jni/pdnsd/src/rr_types.c similarity index 100% rename from jni/pdnsd/src/rr_types.c rename to orbotservice/src/main/jni/pdnsd/src/rr_types.c diff --git a/jni/pdnsd/src/rr_types.h b/orbotservice/src/main/jni/pdnsd/src/rr_types.h similarity index 100% rename from jni/pdnsd/src/rr_types.h rename to orbotservice/src/main/jni/pdnsd/src/rr_types.h diff --git a/jni/pdnsd/src/rr_types.in b/orbotservice/src/main/jni/pdnsd/src/rr_types.in similarity index 100% rename from jni/pdnsd/src/rr_types.in rename to orbotservice/src/main/jni/pdnsd/src/rr_types.in diff --git a/jni/pdnsd/src/servers.c b/orbotservice/src/main/jni/pdnsd/src/servers.c similarity index 100% rename from jni/pdnsd/src/servers.c rename to orbotservice/src/main/jni/pdnsd/src/servers.c diff --git a/jni/pdnsd/src/servers.h b/orbotservice/src/main/jni/pdnsd/src/servers.h similarity index 100% rename from jni/pdnsd/src/servers.h rename to orbotservice/src/main/jni/pdnsd/src/servers.h diff --git a/jni/pdnsd/src/sort_namevalues.pl b/orbotservice/src/main/jni/pdnsd/src/sort_namevalues.pl similarity index 100% rename from jni/pdnsd/src/sort_namevalues.pl rename to orbotservice/src/main/jni/pdnsd/src/sort_namevalues.pl diff --git a/jni/pdnsd/src/status.c b/orbotservice/src/main/jni/pdnsd/src/status.c similarity index 100% rename from jni/pdnsd/src/status.c rename to orbotservice/src/main/jni/pdnsd/src/status.c diff --git a/jni/pdnsd/src/status.h b/orbotservice/src/main/jni/pdnsd/src/status.h similarity index 100% rename from jni/pdnsd/src/status.h rename to orbotservice/src/main/jni/pdnsd/src/status.h diff --git a/jni/pdnsd/src/test/Makefile.am b/orbotservice/src/main/jni/pdnsd/src/test/Makefile.am similarity index 100% rename from jni/pdnsd/src/test/Makefile.am rename to orbotservice/src/main/jni/pdnsd/src/test/Makefile.am diff --git a/jni/pdnsd/src/test/Makefile.in b/orbotservice/src/main/jni/pdnsd/src/test/Makefile.in similarity index 100% rename from jni/pdnsd/src/test/Makefile.in rename to orbotservice/src/main/jni/pdnsd/src/test/Makefile.in diff --git a/jni/pdnsd/src/test/if_up.c b/orbotservice/src/main/jni/pdnsd/src/test/if_up.c similarity index 100% rename from jni/pdnsd/src/test/if_up.c rename to orbotservice/src/main/jni/pdnsd/src/test/if_up.c diff --git a/jni/pdnsd/src/test/is_local_addr.c b/orbotservice/src/main/jni/pdnsd/src/test/is_local_addr.c similarity index 100% rename from jni/pdnsd/src/test/is_local_addr.c rename to orbotservice/src/main/jni/pdnsd/src/test/is_local_addr.c diff --git a/jni/pdnsd/src/test/random.c b/orbotservice/src/main/jni/pdnsd/src/test/random.c similarity index 100% rename from jni/pdnsd/src/test/random.c rename to orbotservice/src/main/jni/pdnsd/src/test/random.c diff --git a/jni/pdnsd/src/test/tping.c b/orbotservice/src/main/jni/pdnsd/src/test/tping.c similarity index 100% rename from jni/pdnsd/src/test/tping.c rename to orbotservice/src/main/jni/pdnsd/src/test/tping.c diff --git a/jni/pdnsd/src/thread.c b/orbotservice/src/main/jni/pdnsd/src/thread.c similarity index 100% rename from jni/pdnsd/src/thread.c rename to orbotservice/src/main/jni/pdnsd/src/thread.c diff --git a/jni/pdnsd/src/thread.h b/orbotservice/src/main/jni/pdnsd/src/thread.h similarity index 100% rename from jni/pdnsd/src/thread.h rename to orbotservice/src/main/jni/pdnsd/src/thread.h diff --git a/jni/pdnsd/version b/orbotservice/src/main/jni/pdnsd/version similarity index 100% rename from jni/pdnsd/version rename to orbotservice/src/main/jni/pdnsd/version diff --git a/orbotservice/src/main/jniLibs/armeabi/libtun2socks.so b/orbotservice/src/main/jniLibs/armeabi/libtun2socks.so new file mode 100755 index 00000000..74d7c34f Binary files /dev/null and b/orbotservice/src/main/jniLibs/armeabi/libtun2socks.so differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_notifyerr.png new file mode 100644 index 00000000..1f97a9ed Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..b4d2e333 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_off.png b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_off.png new file mode 100644 index 00000000..6df646eb Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_off.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_xfer.png new file mode 100644 index 00000000..3d757218 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v11/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v11/inverse.png b/orbotservice/src/main/res/drawable-hdpi-v11/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v11/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_notifyerr.png new file mode 100644 index 00000000..58fc5ae8 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_tor.png b/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_tor.png new file mode 100644 index 00000000..1dfdc09a Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v9/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi-v9/inverse.png b/orbotservice/src/main/res/drawable-hdpi-v9/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi-v9/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_action_settings.png b/orbotservice/src/main/res/drawable-hdpi/ic_action_settings.png new file mode 100644 index 00000000..d57b2905 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_action_settings.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 00000000..e9954eb7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-hdpi/ic_stat_notifyerr.png new file mode 100644 index 00000000..b65fa648 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor.png new file mode 100644 index 00000000..0f3b147e Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor_xfer.png new file mode 100644 index 00000000..d222fb67 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-hdpi/inverse.png b/orbotservice/src/main/res/drawable-hdpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_notifyerr.png new file mode 100644 index 00000000..b73292dd Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..0f24ee8a Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v11/inverse.png b/orbotservice/src/main/res/drawable-ldpi-v11/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v11/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_notifyerr.png new file mode 100644 index 00000000..2787bbb5 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_tor.png b/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_tor.png new file mode 100644 index 00000000..82d54466 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v9/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi-v9/inverse.png b/orbotservice/src/main/res/drawable-ldpi-v9/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi-v9/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi/ic_action_settings.png b/orbotservice/src/main/res/drawable-ldpi/ic_action_settings.png new file mode 100644 index 00000000..c3927fd7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi/ic_action_settings.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi/ic_launcher.png b/orbotservice/src/main/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 00000000..dd665db2 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-ldpi/ic_stat_notifyerr.png new file mode 100644 index 00000000..518e188e Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-ldpi/ic_stat_tor.png new file mode 100644 index 00000000..3cd399db Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-ldpi/inverse.png b/orbotservice/src/main/res/drawable-ldpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-ldpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_notifyerr.png new file mode 100644 index 00000000..935e2093 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..a34840dc Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor_xfer.png new file mode 100644 index 00000000..fe291e76 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v11/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v11/inverse.png b/orbotservice/src/main/res/drawable-mdpi-v11/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v11/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_notifyerr.png new file mode 100644 index 00000000..b1490315 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_tor.png b/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_tor.png new file mode 100644 index 00000000..c150cede Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v9/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi-v9/inverse.png b/orbotservice/src/main/res/drawable-mdpi-v9/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi-v9/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/ic_action_settings.png b/orbotservice/src/main/res/drawable-mdpi/ic_action_settings.png new file mode 100644 index 00000000..d90f1255 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/ic_action_settings.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 00000000..e45ce29a Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-mdpi/ic_stat_notifyerr.png new file mode 100644 index 00000000..c4b3178e Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor.png new file mode 100644 index 00000000..6649e14a Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png new file mode 100644 index 00000000..73ab2330 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-mdpi/inverse.png b/orbotservice/src/main/res/drawable-mdpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-mdpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_notifyerr.png new file mode 100644 index 00000000..bed9e215 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..e742ae7b Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png new file mode 100644 index 00000000..27e86725 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v11/inverse.png b/orbotservice/src/main/res/drawable-xhdpi-v11/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v11/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_notifyerr.png new file mode 100644 index 00000000..7d1139c9 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_tor.png new file mode 100644 index 00000000..9e56f4fc Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v9/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi-v9/inverse.png b/orbotservice/src/main/res/drawable-xhdpi-v9/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi-v9/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/ic_action_settings.png b/orbotservice/src/main/res/drawable-xhdpi/ic_action_settings.png new file mode 100644 index 00000000..f2572c84 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/ic_action_settings.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 00000000..13ee02bc Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png new file mode 100644 index 00000000..f48e8e83 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor.png new file mode 100644 index 00000000..11254d2b Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png new file mode 100644 index 00000000..522d6530 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xhdpi/inverse.png b/orbotservice/src/main/res/drawable-xhdpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xhdpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..1451c505 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png new file mode 100644 index 00000000..59e63d4d Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..c2f2f45d Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor.png new file mode 100644 index 00000000..778cc1e2 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png new file mode 100644 index 00000000..eb8809c4 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xxhdpi/inverse.png b/orbotservice/src/main/res/drawable-xxhdpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxhdpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor.png new file mode 100644 index 00000000..a78d2907 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png new file mode 100644 index 00000000..30fe5893 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..74a31304 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor.png new file mode 100644 index 00000000..a2ff338a Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png new file mode 100644 index 00000000..8f967793 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable-xxxhdpi/inverse.png b/orbotservice/src/main/res/drawable-xxxhdpi/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable-xxxhdpi/inverse.png differ diff --git a/orbotservice/src/main/res/drawable/button.xml b/orbotservice/src/main/res/drawable/button.xml new file mode 100644 index 00000000..9f44d248 --- /dev/null +++ b/orbotservice/src/main/res/drawable/button.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orbotservice/src/main/res/drawable/button_off.xml b/orbotservice/src/main/res/drawable/button_off.xml new file mode 100644 index 00000000..1304d1b6 --- /dev/null +++ b/orbotservice/src/main/res/drawable/button_off.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orbotservice/src/main/res/drawable/button_on.xml b/orbotservice/src/main/res/drawable/button_on.xml new file mode 100644 index 00000000..27dc0922 --- /dev/null +++ b/orbotservice/src/main/res/drawable/button_on.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orbotservice/src/main/res/drawable/classyfabric.png b/orbotservice/src/main/res/drawable/classyfabric.png new file mode 100644 index 00000000..ca3d2679 Binary files /dev/null and b/orbotservice/src/main/res/drawable/classyfabric.png differ diff --git a/orbotservice/src/main/res/drawable/error.png b/orbotservice/src/main/res/drawable/error.png new file mode 100644 index 00000000..42dc6d66 Binary files /dev/null and b/orbotservice/src/main/res/drawable/error.png differ diff --git a/orbotservice/src/main/res/drawable/ic_chatsecure.png b/orbotservice/src/main/res/drawable/ic_chatsecure.png new file mode 100644 index 00000000..aaddd883 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_chatsecure.png differ diff --git a/orbotservice/src/main/res/drawable/ic_duckduckgo.png b/orbotservice/src/main/res/drawable/ic_duckduckgo.png new file mode 100644 index 00000000..696dcd6e Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_duckduckgo.png differ diff --git a/orbotservice/src/main/res/drawable/ic_launcher.png b/orbotservice/src/main/res/drawable/ic_launcher.png new file mode 100644 index 00000000..ea473739 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_launcher.png differ diff --git a/orbotservice/src/main/res/drawable/ic_menu_about.png b/orbotservice/src/main/res/drawable/ic_menu_about.png new file mode 100644 index 00000000..866d4e0b Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_menu_about.png differ diff --git a/orbotservice/src/main/res/drawable/ic_menu_exit.png b/orbotservice/src/main/res/drawable/ic_menu_exit.png new file mode 100644 index 00000000..d301ea64 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_menu_exit.png differ diff --git a/orbotservice/src/main/res/drawable/ic_menu_goto.png b/orbotservice/src/main/res/drawable/ic_menu_goto.png new file mode 100644 index 00000000..40183ebc Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_menu_goto.png differ diff --git a/orbotservice/src/main/res/drawable/ic_play.png b/orbotservice/src/main/res/drawable/ic_play.png new file mode 100644 index 00000000..a9197949 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_play.png differ diff --git a/orbotservice/src/main/res/drawable/ic_stat_tor_off.png b/orbotservice/src/main/res/drawable/ic_stat_tor_off.png new file mode 100644 index 00000000..6df646eb Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_stat_tor_off.png differ diff --git a/orbotservice/src/main/res/drawable/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable/ic_stat_tor_xfer.png new file mode 100644 index 00000000..73ab2330 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_stat_tor_xfer.png differ diff --git a/orbotservice/src/main/res/drawable/ic_twitter.png b/orbotservice/src/main/res/drawable/ic_twitter.png new file mode 100644 index 00000000..1e61c0a2 Binary files /dev/null and b/orbotservice/src/main/res/drawable/ic_twitter.png differ diff --git a/orbotservice/src/main/res/drawable/icon_martus.png b/orbotservice/src/main/res/drawable/icon_martus.png new file mode 100644 index 00000000..e72db19c Binary files /dev/null and b/orbotservice/src/main/res/drawable/icon_martus.png differ diff --git a/orbotservice/src/main/res/drawable/icon_orfox.png b/orbotservice/src/main/res/drawable/icon_orfox.png new file mode 100644 index 00000000..57ed1f0f Binary files /dev/null and b/orbotservice/src/main/res/drawable/icon_orfox.png differ diff --git a/orbotservice/src/main/res/drawable/icon_story_maker.png b/orbotservice/src/main/res/drawable/icon_story_maker.png new file mode 100644 index 00000000..9c54ca56 Binary files /dev/null and b/orbotservice/src/main/res/drawable/icon_story_maker.png differ diff --git a/orbotservice/src/main/res/drawable/inverse.png b/orbotservice/src/main/res/drawable/inverse.png new file mode 100644 index 00000000..65eff2c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable/inverse.png differ diff --git a/orbotservice/src/main/res/drawable/n8fr8.jpg b/orbotservice/src/main/res/drawable/n8fr8.jpg new file mode 100644 index 00000000..4939d5c7 Binary files /dev/null and b/orbotservice/src/main/res/drawable/n8fr8.jpg differ diff --git a/orbotservice/src/main/res/drawable/oldtoroff.png b/orbotservice/src/main/res/drawable/oldtoroff.png new file mode 100644 index 00000000..4b23e0b3 Binary files /dev/null and b/orbotservice/src/main/res/drawable/oldtoroff.png differ diff --git a/orbotservice/src/main/res/drawable/oldtoron.png b/orbotservice/src/main/res/drawable/oldtoron.png new file mode 100644 index 00000000..a99bec1c Binary files /dev/null and b/orbotservice/src/main/res/drawable/oldtoron.png differ diff --git a/orbotservice/src/main/res/drawable/oldtorstarting.png b/orbotservice/src/main/res/drawable/oldtorstarting.png new file mode 100644 index 00000000..a56844a9 Binary files /dev/null and b/orbotservice/src/main/res/drawable/oldtorstarting.png differ diff --git a/orbotservice/src/main/res/drawable/onion32.png b/orbotservice/src/main/res/drawable/onion32.png new file mode 100644 index 00000000..78467601 Binary files /dev/null and b/orbotservice/src/main/res/drawable/onion32.png differ diff --git a/orbotservice/src/main/res/drawable/tilebg.xml b/orbotservice/src/main/res/drawable/tilebg.xml new file mode 100644 index 00000000..6f0d2a3d --- /dev/null +++ b/orbotservice/src/main/res/drawable/tilebg.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/orbotservice/src/main/res/drawable/toggle.xml b/orbotservice/src/main/res/drawable/toggle.xml new file mode 100644 index 00000000..0f9a36e5 --- /dev/null +++ b/orbotservice/src/main/res/drawable/toggle.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/orbotservice/src/main/res/drawable/tor.png b/orbotservice/src/main/res/drawable/tor.png new file mode 100644 index 00000000..0d63dd97 Binary files /dev/null and b/orbotservice/src/main/res/drawable/tor.png differ diff --git a/orbotservice/src/main/res/drawable/tor25.png b/orbotservice/src/main/res/drawable/tor25.png new file mode 100644 index 00000000..20b7666c Binary files /dev/null and b/orbotservice/src/main/res/drawable/tor25.png differ diff --git a/orbotservice/src/main/res/drawable/toroff.png b/orbotservice/src/main/res/drawable/toroff.png new file mode 100644 index 00000000..a72790bb Binary files /dev/null and b/orbotservice/src/main/res/drawable/toroff.png differ diff --git a/orbotservice/src/main/res/drawable/toron.png b/orbotservice/src/main/res/drawable/toron.png new file mode 100644 index 00000000..e3592b1d Binary files /dev/null and b/orbotservice/src/main/res/drawable/toron.png differ diff --git a/orbotservice/src/main/res/drawable/torstarting.png b/orbotservice/src/main/res/drawable/torstarting.png new file mode 100644 index 00000000..6e84a6f1 Binary files /dev/null and b/orbotservice/src/main/res/drawable/torstarting.png differ diff --git a/orbotservice/src/main/res/layout/layout_notification_expanded.xml b/orbotservice/src/main/res/layout/layout_notification_expanded.xml new file mode 100644 index 00000000..c2a9c9ef --- /dev/null +++ b/orbotservice/src/main/res/layout/layout_notification_expanded.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/res/layout/notification_template_part_chronometer.xml b/orbotservice/src/main/res/layout/notification_template_part_chronometer.xml similarity index 100% rename from res/layout/notification_template_part_chronometer.xml rename to orbotservice/src/main/res/layout/notification_template_part_chronometer.xml diff --git a/res/layout/notification_template_part_time.xml b/orbotservice/src/main/res/layout/notification_template_part_time.xml similarity index 100% rename from res/layout/notification_template_part_time.xml rename to orbotservice/src/main/res/layout/notification_template_part_time.xml diff --git a/res/raw/geoip.mp3 b/orbotservice/src/main/res/raw/geoip.mp3 similarity index 100% rename from res/raw/geoip.mp3 rename to orbotservice/src/main/res/raw/geoip.mp3 diff --git a/res/raw/geoip6.mp3 b/orbotservice/src/main/res/raw/geoip6.mp3 similarity index 100% rename from res/raw/geoip6.mp3 rename to orbotservice/src/main/res/raw/geoip6.mp3 diff --git a/res/raw/pluto.properties b/orbotservice/src/main/res/raw/pluto.properties similarity index 100% rename from res/raw/pluto.properties rename to orbotservice/src/main/res/raw/pluto.properties diff --git a/res/raw/torpolipo.conf b/orbotservice/src/main/res/raw/torpolipo.conf similarity index 100% rename from res/raw/torpolipo.conf rename to orbotservice/src/main/res/raw/torpolipo.conf diff --git a/res/raw/torrc b/orbotservice/src/main/res/raw/torrc similarity index 100% rename from res/raw/torrc rename to orbotservice/src/main/res/raw/torrc diff --git a/orbotservice/src/main/res/values-ach/strings.xml b/orbotservice/src/main/res/values-ach/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-ach/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-ar/strings.xml b/orbotservice/src/main/res/values-ar/strings.xml new file mode 100644 index 00000000..0b2a1f63 --- /dev/null +++ b/orbotservice/src/main/res/values-ar/strings.xml @@ -0,0 +1,262 @@ + + + اوربوت + اوربوت هو تطبيق الوكيل-البروكسي الحر الذي يمكّن تطبيقات أخرى لاستخدام الإنترنت بأمان أكثر . يُستخدم اوربوت تور لتشفير تحركات مرورك على الإنترنت ، ثم يخفيك ويجعلك وهمي من خلال سلسلة من أجهزة الكمبيوتر في جميع أنحاء العالم . تور هو تطبيق حر وشبكة مفتوحة والتي تساعدك على حماية نفسك من مراقبة الشبكات التي تهدد الحرية الشخصية والخصوصية ، والأنشطة التجارية السرية والعلاقات ، وأمن الدولة والحكومات القمعيّة والتي تستخدم مايعرف باسم تحليل حركة مرور البيانات . + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + فعل و اوقف تور + torproxyservice + جاري تشغيل اوربوت... + متصل بشبكة تور + تم إيقاف اوربوت + جاري ايقاف خدمة تور + جاري تشغيل تور... + كامل. + انتظار. + تحذير: حركة مرورك ليست خفية حتي الآن! من فضلك قم بتكوين التطبيقات الخاصة بك لإستخدام بروكسي HTTP 127.0.0.1:8118 أو SOCK4A أو SOKS5 127.0.0.1:9050 + القائمة الرئيسية + تصفّح + إعدادات + السجل + مساعدة + في بي ان شبكة وهمية خاصة + بدء + توقف + حول + حمل التطبيق ... + تحميل + رفع + مساعدة + إغلاق + حول + مسح السجل + تحقق + خروج + فحص QR الجسر + مشاركة QR الجسر + - اضغط لفترة طويلة للبدء - + بروكسي ضمني (يتطلب اذن حساب رووت) + بروكسي ضمني + عملية توريفاي أوتوماتيكية للتطبيقات + استخدم تور مع جميع التطبيقات + مرر كل بيانات المرور الخاصة بالتطبيقات عبر تور + تراجع منفذ البروكسي + تحذير: تتحايل علي المنافذ الشائعة (80, 443, إلى آخره) *استخدم فقط* إذا كان وضع \'كل\' أو \'التطبيق\' لا يعمل. + قائمة المنافذ + قائمة بجميع المنافذ إلي البروكسي. *استخدم فقط* إذا كان وضع \'كل\' أو \'التطبيق\' لا يعمل. + ادخل المناقذ للبروكسي + اطلب إذن رووت + اطلب إذن رووت لتفعيل البروكسي الضمني + تم تثبيت تور بنجاح! + غير قادر على تثبيت ملفات تور. يرجى مراجعة السجل وإعلامنا على البريد الإلكتروني tor-assistants@torproject.org + خطأ في التطبيق + اوربوت + عن اوربوت + التالي + رجوع + إنهاء + موافق + إلغاء + + بعض التفاصيل عن اوربوت + اوربوت تطبيق مفتوح المصدر يحتويه تور، \"ليب افنت\" و \"بوليبو\". +وهو يوفر الوكيل-البروكسي المحلي HTTP (8118) ووكيل SOCKS (9050) في شبكة تور. + اوربوت أيضا قادر على الوصول لجذور الجهاز ، لإرسال كل تحركات الإنترنت من خلاله. + تم منح الإذن + أذونات اوربوت + ممتاز! لقد وجدنا بأنه لديك صلاحية حساب رووت لتمكين اوربوت. سوف نستخدم هذه السلطة بحكمة. + رغم أنه ليس ضروريا، يمكن ان يصبح أوربوت أداة قوية إذا كان لدى جهازك صلاحية حساب رووت. استخدم الزر بالأسفل لمنح اوربوت قوة أكبر! + إذا لم يكن لديك صلاحية حساب رووت أو ليست لديك أدنى فكرة عما نتحدث عنه، تأكد فقط من استخدام تطبيقات تعمل مع اوربوت. + أفهم ذلك وأود أن أستمر بدون صلاحيات حساب رووت + امنح اوربوت صلاحية حساب رووت + تكوين توريفاي + اوربوت يعطيك الخيار لتوجيه جميع حركات مرور التطبيقات عبر تور او لإختيار التطبيقات بشكل فردي. + مرر جميع التطبيقات عبر تور + اختر التطبيقات الفردية لتور + تطبيقات مهيئة لاوربوت + التطبيقات التالية تم تطويرها حتي تعمل مع اوربوت. اضغط علي ما تريد تثبيتة علي جهازك الأن, أو يمكنك ان تجدهم لاحقاً علي جوجل بلاي, أو علي موقعنا GuardianProject.info أو من خلال F-Droid.org. + الدردشة الآمنة - تأمين الرسائل الفورية لمستخدمي الاندرويد + إعدادات البروكسي - تعلم كيفية تكوين التطبيقات لتعمل مع اوربوت + تطبيق محرك البحث DuckDuckGo + اضبط البروكسي الخاص بتويتر إلي مستضيف \"localhost\" و المنفذ إلي 8118 + صانع القصة - اصنع قصة واتركها لأمان تور ! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + إعدادات البروكسي + إذا كان تطبيق الاندرويد الذي تستخدمه يدعم استخدام وكيل - بروكسيHTTP أو SOCKS إذاً يمكنك تكوينه للاتصال باوربوت واستخدام تور. إعدادات المضيف 127.0.0.1 أو \"مضيف\". ل HTTP، إعداد المنفذ هو 8118. لSOCKS، الوكيل هو 9050. يجب عليك استخدام SOCKS4A أو SOCKS5 إذا أمكن \ N \ N \ N \ N يمكنك معرفة المزيد حول إنشاء الوكلاء على الروبوت من خلال التعليمات على: +HTTP: / /tinyurl.com/proxyandroid\n + اوربوت جاهز للاستخدام! + الملايين من الناس في جميع أنحاء العالم تستخدم تور لمجموعة واسعة من الأسباب . الصحفيين والمدونين , المدافعين عن حقوق الإنسان ، وضباط تنفيذ القانون ، والجنود ، والشركات والمواطنين من الأنظمة القمعية ، وايضاً المواطنين العاديين ... والآن هل أنت جاهز ، هيا بنا ! + يرجى تكوين اوربوت واعداده لتستطيع البدء بإستخدامه ! + + لديك اتصال ناجح بشبكة تور - ولكن هذا لا يعني أن جهازك آمن . يمكنك استخدام زر \"متصفح\" لاختبار اتصالك . + زرنا على https://guardianproject.info/apps/orbot أو ارسل بريد الكتروني الى help@guardianproject.info لمعرفة المزيد. + سيؤدي هذا إلى فتح المتصفح الخاص بك لزيارة عنوان https://check.torproject.org من اجل التحقق إذا كان تكوين اوربوت يعمل بشكل صحيح ام لا وبأنك متصل بتور. + استضافة الخدمة المخفية + عام + شغل اوربوت عند فتح الجهاز + فعل اوربوت و اتصل بتور تلقائياً عندما يبدء جهاز الأندرويد الخاص بك بالعمل + + + اوربت يجعل تور ممكناً على نظام الأندرويد. يساعدك تور في الدفاع ضد عملية ترشيح المحتويات, تحليل مسارات المرور, ومراقبة الشبكة والتي تهدد خصوصيتك, المعلومات السرية والعلاقات الشخصية. هذه الأداة ستساعدك من تهيئة اوربت مع تور على جهازك + + تحذير + لن يقوم اوربت بأخفاء هوية مسارك بشكل اوتوماتيكي او آلي بمجرد تنصيبه. بل يجب عليك ان تقوم بتهيئته مع جهازك بالأضافة الى تهيئة تطبيقات اخرى لتستطيع استخدام تور بنجاح. + + الصلاحيات + يمكنك اعطاء اوربوت صلاحيات حساب رووت لتشغيل المميزات المتقدمة مثل البروكسي الضمني. + إذا كنت لا تريد أن تفعل هذا, الرجاء إستخدام برامج معدة للعمل مع اوربوت + + برامج معدة للعمل مع اوربوت + جات سكيور: هو تطبيق للدردشة بشكل آمن مع تشفير عالي جداً + اورفوكس: متصفح ذو خصوصية متقدمة يعمل ظمن او من خلال تور + يمكنك الحصول علي جميع تطبيقات مشروع الجاردين على جوجل بلاي + اكتشف كل تطبيقات مشروع الجارديان على اف-درويد + اكتشف كل تطبيقات مشروع الجارديان على https://f-droid.org + + بروكسي ضمني + هذه ستسمح للبرامج بالاتصال بشبكة تور تلقائياً دون اعداد مسبق. + (اختر هذا المربع إذا كنت لا تعلم عما نتحدث) + لا شيء + الربط بتور + اسمح بالبروكسي الضمني للواي فاي و اجهزة اليو اس بي (تحتاج لإعادة تشغيل الجهاز) + اطلب صلاحيات حساب رووت + حدد البرامج + اختر البرامح التي تريد تمريرها إلي شبكة تور + تكوين نقطة الاتصال + هذه الإعدادات متقدمة و قد تقلل من حماية هويتك + نقاط الدخول + بصمات، اسماء مستعارة، البلدان و العناوين لأول نقطة اتصال + أدخل نقاط الدخول + إسمح للخلفية بألبدأ + إسمح لأي تطبيق بأن يُخبِر اوربت بأن يفعل تور مع الخدمات المرتبطة به + اُخوِّل الكل + بدون تخويل + اعكس المُحدد + بروكسي الشبكة الصادرة (اختياري) + نوع البروكسي الصادر + البروتوكول المستخدم لخادم البروكسي: HTTP, HTTPS, Socks4, Socks5 + أدخل نوع البروكسي + عنوان البروكسي الصادر + اسم مضيف خادم البروكسي + أدخل مضيف البروكسي + منفذ البروكسي الصادر + منفذ خادم البروكسي + أدخل منفذ البروكسي + اسم مستخدم البروكسي الصادر + اسم مستخدم البروكسي (اختياري) + ادخل اسم مستخدم البروكسي + كلمة مرور بروكسي الشبكة الصادرة + كلمة مرور البروكسي (اختياري) + ادخل كلمة مرور البروكسي + الحالة + يتم إعداد بروكسي ضمني كامل... + يتم إعداد البروكسي الضمني حسب البرامج... + البروكسي الضمني مُفعل + البروكسي الضمني جاهز للربط! + تحذير: حصل خطأ بتشغيل البروكسي الضمني! + تم مسح قواعد البروكسي الضمني + لقد تعذر بدء تشغيل تور: + بوليبو يعمل على المحمول + يتم إعداد البروكسي الضمني حسب المنفذ... + خطأ بالجسر + حتي تستطيع إستخدم ميزة الجسور، يجب عليك ادخال عنوان انترنت لجسر واحد علي الأقل. + أرسل بريد إلكتروني إلى bridges@torproject.org مع عبارة \"get bridges\" بداخل الرسالة من حساب بريد gmail. + خطأ + إعدادات العنوان القابل للاتصال لديك تسببت بخطأ! + إعدادات المرحلات لديك تسببت بخطأ! + نقاط الخروج + البصمات، الاسماء المستعارة، البلدان و العناوين لآخر نقطة اتصال + أدخل نقاط الخروج + استثني النقاط + بصمات، الأسماء المستعارة، البلدان و العناوين ليتم استثنائها + أدخل النقاط المستثناه + النقاط المشددة + استخدم فقط تلك النقاط المحددة + الجسور + استخدم الجسور + الجسور الغامضة + اسمح باستخدام نقاط دخول بديلة إلي شبكة تور + فعل هذا الخيار إذا كانت الجسور المحددة جسور غامضة + عنوان الانترنت و المنفذ للجسور + أدخل عناوين الجسور + المرحلات + يرحل + اسمح لجهازك ليكون مرحل غير نهائي + منفذ المرحل + المنفذ المصغي لمُرحل تور الخاص بك + أدخل منفذ OR + الاسم المستعار للمُرحل + الاسم المستعار لمُرحل تور الخاص بك + أدخل اسم مستعار للمُرحل + العناوين التي يمكن الوصول إليها + العمل كخدمة من وراء جدار ناري بسياسات تقيدية + المنافذ التي يمكن الوصول إليها + منافذ مفتوحة عبر جدار ناري تقيدي + أدخل المنافذ + استضافة الخدمة المخفية + السماح للخادم الذي علي جهازك بأمكانية الوصول إليه من خلال شبكة تور + أدخل المنافذ المحلية للخدمات المخفية + منافذ الخدمات المخفية + اسم العنوان لخدمتك المخفية (يتم انشائه تلقائياً) + شغل سجل الـdebug ( للمراجعة يجب استخدام adb أو LogCat) + الموقع الرسمي للمشروع (المشاريع): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + رخصة استخدام تور + https://torproject.org + برامج من الطرف الثالث: + تور: https://www.torproject.org + لب إيفينت النسخة http://www.monkey.org/~provos/libevent/ :v2.0.21 + بوليبو النسخة 1.1.9 : https://github.com/jech/polipo + آي بي تايبلز النسخة 1.4.21: http://www.netfilter.org + اوبن اس اس ال النسخة: http://www.openssl.org 1.0.1q + هناك برنامج يحاول فتح منفذ لخادم مخفي %S إلي شبكة تور. هذا السلوك آمن إذا كنت تثق بهذا البرنامج. + عُثر علي عملية تور سابقة تعمل... + حصل خطأ ما. افحص السجل + الخدمات المخفية التي تعمل حالياً: + غير قادر على قراءة اسم الخدمة المخفية + غير قادر على بدء تور: + أعِد تشغيل جهازك, غير قادر على اعادة تشغيل تور + استخدم الـiptables التلقائية + استخدم مكونات الـiptables الموجودة ضمناً بالجهاز بدل النسخة المرفقة مع اوربوت + غير قادرة على تثبيت أو تحديث تور + دائما ضع الأيقونة في شريط الأدوات عندما يكون اوربوت متصلاً + تنبيهات دائمة + قم بأظهار التنبيه بشكل موسع بأستخدام تور. أخرج من البلد ورقم الآي بي رقم العنوان على الشبكة + تنبيه موسّع + تم تفعيل الجسور! + + اللغة + اختار الإعدادات المحلية و اللغة لاوربوت + اختار اللغة + إما ان تترك اللغة الافتراضية او إما ان تغير اللغة + مدعومة من قبل تور + حفظ الإعدادات + لا يوجد ارتباط بألانترنيت: تور في وضع الوقف المؤقت + عرض النطاق + اسفل + أعلى + لاتوجد شبكة نوم-آلي + ضع تور في وضع النوم عند عدم وجود الأنترنيت + لقد تحولت الى هوية تور جديدة + متصفح + استخدم جات سكيور + أدارة تور + قم بتمكين هذا التطبيق من التحكم بخدمات تور + لا يبدو بأن لديك اورفوكس منصباً. هل تريد مساعدتاً في ذلك او لنقم فقط بتشغيل المتصفح؟ + هل ترغب بتنصيب التطبيقات؟ + لا يوجد اتصال بألشبكة. سيدخل تور الى وضع النوم + الاتصال بألشبكة جيد. تنبيه تور من النوم + تحديث الاعدادات في خدمات تور + تور سوكس + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى وحدة الخدمة النائبة البروكسي في سوكس. (التقصير 9050 او 0 عدم القدرة) + تهيئة منفذ الشبكات الحاسوبية بورت في سوكس + منفذ الشبكات الحاسوبية في وحدة الخدمة النائبة البروكسي في تور + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى البروكسي الشفاف (التقصير 9040 او 0 عدم القدرة) + تهيئة بورت البروكسي الشفاف + تور, نظام اسماء النطاقات, بورت + منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى خدمة اسماء النطاق دي ان اس. (التقصير 5400 او 0 لعدم القدرة) + إعدادات بورت خادم اسماء النطاق + في بي ان شبكة وهمية خاصة + diff --git a/orbotservice/src/main/res/values-az/strings.xml b/orbotservice/src/main/res/values-az/strings.xml new file mode 100644 index 00000000..0a84a251 --- /dev/null +++ b/orbotservice/src/main/res/values-az/strings.xml @@ -0,0 +1,297 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Toru başlat və dayandır + + torproxyservice + Orbot başlayır... + Tor şəbəkəsinə bağlandı + Orbot deaktivasiya edildi + Tor xidməti işini başa vurur + Tor xidməti başlayır... + tamamla. + gözləyirik. + 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. + Ev + Bax + Quraşdırmalar + Jurnal + Kömək + VPN + Başla + Dur + Haqqında + Tətbiqetmələri əldə edin... + Endir + Yüklə + Kömək + Bağla + Haqqında + Jurnalı Təmizlə + Yoxla + Çıx + KörpüQR kodu skan edin + KörpüQR kodu paylaşın + - başlamaq üçün uzun klik - + Şəffaf Proksiləmə (Root Tələb Edir) + Şəffaf Proksiləmə + Aplikasiyaların Avtomatik Torlanması + Hər şeyi Torla + Tor vasitəsilə bütün aplikasiyaların proksi trafiki + Port Proksi Ehtiyatı + TƏHLÜKƏ: Ümumi alt portlar (80, 443 və s.). \'Hamısı\' və ya \'Tətbiqetmə\' işləmirsə, *YALNIZ İSTİFADƏ ET*. + Port Siyahısı + Proksiyə port siyahısı. \'Hamısı\' və ya \'Tətbiqetmə\' işləmirsə, *YALNIZ İSTİFADƏ ET*. + Proksiyə port daxil et + Root Giriş Tələb Et + Şəffaf proksiləmə üçün mənbə tələb et + Tor ikilisi müvəffəqiyyətlə yükləndi! + Tor ikili fayllarının quraşdırılması mümkün olmadı. Lütfən girişi yoxla və assistants@torproject.org-a xəbər ver. + Tətbiq Səhvi + Orbot + Orbot Haqqında + Sonrakı + Geri + Bitir + Okey + Ləğv et + + Bəzi Orbot Detalları + 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. + İcazə Verilir + Orbot İcazələri + Ə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. + 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! + Ə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. + Superistifadəçisiz davam etməyi anlayır və istəyirəm + Orbot üçün Mənbə Ver + Torifikasiyanı Quraşdır + Orbot sənə bütün və ya seçilmiş aplikasiyalarını Tor vasitəsilə istifadə etməyə imkan yaradır. + Bütün Aplikasiyaları Tor Vasitəsilə Proksi Et + Tor üçün Müəyyən Aplikasiyaları Seç + Orbota-açıq Aplikasiyalar + 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. + ChatSecure - Android üçün təhlükəsiz mesajlaşma müştərisi + Proksi Seçimləri - Aplikasiyaların Orbotla necə işləyəcəyini öyrən + DuckDuckGO Axtarış Qurğu aplikasiyası + \"Yerlihost\" və 8118 portuna sahiblik üçün Twitter proksini quraşdır + StoryMaker--Yazı yaz, təhlükəsizlik məsələsini torun öhdəsinə burax! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proksi qurğuları + İ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 + Orbot hazırdır! + 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! + Zəhmət olmasa, istifadəyə başlamazdan əvvəl Orbotu tənzimləyin! + + 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@guardianproject.info ünvanına məktub yazmaq olar. + 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. + Gizli Xidmət Hostinqi + Əsas + Android Açıldıqda Orbotu Başlat + Android cihazın işə başladıqda avtomatik olaraq Orbot başlansın və Tor-a qoşulsun + + + 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. + + Xəbərdarlıq + 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. + + İcazə + 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. + Bunu etmək istəmirsənsə, yalnız Orbot-la işləməsi mümkün aplikasiyalara sahib olduğuna əmin ol + 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. + + Orbot-a Açıq Aplikasiyalar + ChatSecure: Çat aplikasiyasını Qeydsiz Şifrləmə ilə təhlükəsizləşdir + Orfox: Tor vasitəsiylə işləyən və məxfiliyi artıran brauzer + Google Play-də bütün Guardian Layihə aplikasiyaları tap + F-Droiddəki bütün Guardian Project tətbiqetmələrini tapın + https://f-droid.org-də bütün Guardian Project tətbiqetmələrini tapın + + Şəffaf Proksiləmə + Bu heç bir konfiqurasiyaya ehtiyac olmadan aplikasiyalarının avtomatik olaraq Tor şəbəkəsi vasitəsilə işləməsini təmin edir. + (Dediklərimizdən heç biri haqqında xəbərin yoxdursa, qutunu işarələ) + Heç biri + Tor-un Son Həddi + 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) + Superistifadəçi Giriş Tələbi + Aplikasiya Seç + Tor vasitəsilə açılması üçün Aplikasiya seç + Kəsişmə Konfiqurasiyası + Bunlar sənin anonimliyini azalda biləcək ətraflı seçimlərdir + Giriş Kəsişmələri + Birinci sıçrayış üçün barmaq izləri, nişanlar, ölkələr və ünvanlar + Giriş Kəsişmələrini Əlavə et + Arxa fonun işə başlamasına icazə verin + Qoy hər-hansı tətbiqetmə Orbota Tor və əlaqəli xidmətləri işə salmalı olduğunu desin + Hər şeyi proksilə + + Heç nəyi proksiləmə + Seçiminin yerini dəyiş + İxrac Edilən Şəbəkə Proksisi (istəyə bağlı) + İxrac Edilən Proksi Növü + Proksi serveri istifadə etmək üçün protokol: HTTP, HTTPS, Socks4, Socks5 + Proksi Növünü Daxil Et + İxrac Edilən Proksi Hostu + Proksi Server host adı + Proksi Hostu Daxil Et + İxrac Edilən Proksi Port + Proksi Server portu + Proksi portu daxil et + İxrac Edilən Proxy İstifadəçi Adı + Proksi İstifadəçi Adı (istəyə bağlı) + Proksi İstifadəçi Adı Daxil Et + İxrac Edilən Proksi Şifrə + Proksi Şifrə (istəyə bağlı) + Proksi Şifrə Daxil et + Status + Tam şəffaf proksiləmənin quraşdırılması... + Aplikasiya əsaslı şəffaf proksiləmənin quraşdırılması... + Şəffaf proksiləmə AKTİVLƏŞDİRİLDİ + Bağlanma üçün TransProksi aktivləşdirildi! + TƏHLÜKƏ: şəffaf proksiləmənin başlanmasında xəta! + TransProksi qaydalar təmizləndi + Tor prosesi başlana bilmədi: + Polipo portda işləyir + Porta əsaslanmış proksiləmənin quraşdırılması... + Körpü Xətası + Körpü funksiyasını istifadə etmək üçün ən azı bir körpü IP ünvanı əlavə etməlisən. + Gmail hesabından bridges@torproject.org ünvanına mətn hissəsində \"körpü əldə et\" sözləri yazılmaqla məktub göndər. + Xəta + Sənin ƏlçatanÜnvanlar seçimin istisnaya səbəb oldu! + Sənin keçid seçimlərin istisnaya səbəb oldu! + Kəsişmələri Xaric Et + Son sıçrayış üçün barmaq izləri, nişanlar, ölkələr və ünvanlar + Çıxış Kəsişmələrini Daxil Et + Kəsişmələri Xaric Et + İxrac üçün barmaq izləri, nişanlar, ölkələr və ünvanlar + İxrac Kəsişmələrini Daxil Et + Kəskin Kəsişmələr + *Yalnız* bu xüsusi kəsişmələri istifadə et + Körpülər + Körpü İstifadə Et + Çaşdırıcı Körpülər + Tor Şəbəkəsinə alternativ giriş kəsişmələrini aktivləşdir + Quraşdırılmış körpülər çaşdırıcı körpülər olsa, aktivləşdir + Körpülərin IP ünvanı və portu + Körpü Ünvanlarını Daxil et + Keçidlər + Keçidləmə + Cihazının son-keçid funksiyasını aktivləşdir + Keçid Portu + Tor keçidin üçün portun dinlənməsi + OR port daxil et + Keçid adı + Tor keçidin üçün ad + İlkin keçidə ad daxil et + Əlçatan Ünvanlar + Məhdudlaşmış siyasətlə qoruyucu divar arxasındakı müştəri kimi işlət + Əlçatan portlar + Məhdudlaşdırılmış qoruyucu divar arxasında əlçatan portlar + Port daxil et + Gizli Xidmət Hostinqi + cihaz serverinin Tor şəbəkəsi tərəfindənəldə edilən olmasına icazə ver + gizli xidmətlər üçün yerlihost portlarını daxil et + Gizli Xidmət Portları + gizli xidmətin üçün ünvanlanan ad (avtomatik hazırlanmış) + məhsul üçün sazlama girişi daxil et (baxmaq üçün adb və ya aLogCat istifadə etməlisən) + Layihə Evi(ləri): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor Lisenziyası + https://torproject.org + Xidməti Quraşdırma: + +Tor: https://www.torproject.org + +LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + SSL-i aç v1.0.1q: http://www.openssl.org + Aplikasiya Tor şəbəkəsinə %S gizli server portu açmaq istəyir. Aplikasiyaya inandığın halda bu təhlükəsizdir. + mövcud Tor prosesi tapıldı... + Nə isə pis bir şey oldu. Girişi yoxla + burada gizli xidməti: + gizli xidmət adını oxumağı deaktivləşdir + Tor-un başlanmasını dayandır: + Cihazınızı yenidən yükləyin, Toru bərpa etmək olmur! + Mövcud Ipstol İstifadə Et + Orbotla bağlanmış ipstol əvəzinə daxili cüt ipstol istifadə et + Tor cütlükləri quraşdırıla və ya təkmilləşdirilə bilmədi. + Həmişə Orbot qoşulduğu hallarda nişanı alətlət panelində saxla + Həmişə Açıq Xəbərdarlıqlar + Torla birlikdə ətraflı bildirişi göstərib ölkə və IP-dən çıxın. + Ətraflı bildirişlər + Körpülər aktivləşdirildi! + + Dil + Orbot üçün dil standartlarını və dili seç + Dil Seç + Olduğu kimi saxla, ya da mövcud dilə keç + Tor tərəfindən yaradılmış + Seçimləri Saxla + İnternet yoxdur; Tor gözləyir + Ötürmə qabiliyyəti: + aşağı + yuxarı + Avto-Yuxu Şəbəkəsi Yoxdur + İnternet olmadıqda icazə ver Tor yatsın + Yeni Tor oxşarına qoşuldun! + Bax + ChatSecure istifadə et + Toru İdarə Et + Tor xidmətini idarə etməsi üçün aplikasiyanı aktivləşdir + Deyəsən Orfoxu quraşdırmamısınız. Yardıma ehtiyacınız var, yoxsa yalnız brauzeri açmalıyıq? + Aplikasiya quraşdırılsın? + İnternetlə əlaqə yoxdur. Tor gözləmə rejiminə keçir... + İnternetlə əlaqə yaxşıdır. Tor iş rejiminə keçir... + Tor xidmətində quraşdırmalar yüklənir + Tor SOCKS + Torun təklif etdiyi Port SOCKS proksi işləyir (standart: 9050, yaxud söndürmək üçün 0) + SOCKS Port Config + Tor TransProxy Port + Torun təklif etdiyi Port Transparent proksi işləyir (standart: 9040, yaxud söndürmək üçün 0) + TransProxy Port Config + Tor DNS Port + Torun təklif etdiyi Port DNS işləyir (standart: 5400, yaxud söndürmək üçün 0) + DNS Port Config + Torrc Custom Config + YALNIZ EKSPERTLƏR: birbaşa torrc config xətlərini daxil edin + Custom Torrc + Mobile Martus - Benetech İnsan haqları Sənədləri tətbiqetməsi + Sizin ictimai Tor İP-ləriniz + Orbotla bağlı probleminiz varsa, lütfən, Android->Settings->Apps-də bu tətbiqetməni söndürün; + Tətbiqetmə konflikti + Transproxy avtomatik yeniləmə + Şəbəkə vəziyyəti dəyişəndə Transproxy qaydalarını yenidən tətbiq edin + Transproxy MƏCBURİ POZMA + Bütün transproxy şəbəkə qaydalarını elə İNDİ ləğv etmək üçün bura klikləyin + Transparent proksi qaydaları ləğv edildi + Root girişiniz yoxdur + 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. + VPN + kbps + mbps + KB + MB + Körpülər yeniləndi + Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər tətbiq edilsin. + QR kodlar + 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Ç. + Körpü rejimi + Emeyl + Veb + Aktivləşdir + Tətbiqetmələr VPN Rejimi + 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. + Emeyl göndərin + 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. + Orfoxu quraşdırın + Standart Brauzer + QEYD: Intel X86/ATOM cihazlarında yalnız standart Tor körpülər işləyir. + Dünya + diff --git a/orbotservice/src/main/res/values-bg/strings.xml b/orbotservice/src/main/res/values-bg/strings.xml new file mode 100644 index 00000000..22aff363 --- /dev/null +++ b/orbotservice/src/main/res/values-bg/strings.xml @@ -0,0 +1,293 @@ + + + Орбот + Orbot е безплатна прокси програма, която дава възможноста на други програми да използват интерент по-сигурно. Orbot използва Tor, за да криптира Интернет трафика и след това го скрива като препраща през няколко компютъра по целия свят. Tor е безплатен софтуер и отворена мрежа, която ти помага да се предпазиш от шпиониране по мрежата, което заплашва твоята свобода и лично пространство, конфиденциални бизнес отношение и връзки, и от вид правителствено следене наречено трафик анализ. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + стартирай и стопирай Тор + Tor прокси + Орбот стартира... + Свързан към Тор мрежата + Орбот е деактивиран + TorService спира + Стартиране на Тор клиент... + завършено. + изчакване. + ВНИМАНИЕ: Трафикът Ви не е анонимен! Моля конфигурирайте приложенията си да използват HTTP proxy 127.0.0.1:8118 или SOCKS4A или SOCKS5 proxy 127.0.0.1:9050 + Начало + Прелисти + Настройки + Лог + Помощ + VPN + Старт + Стоп + Относно + Изтегли приложения... + Изтегли + Качи + Помощ + Затвори + Относно + Изчисти лог + Check + Изход + Сканирай BridgeQR + Сподели BridgeQR + - за старт натисни и задръж - + Прозрачно прокси (Изисква Root) + Прозрачно прокси + Автоматично прекарване на приложенията през Тор + Всичко през Тор + Прехвърляй през Тор трафика на всички приложения + Тор прокси услугата смени порта + ВНИМАНИЕ: Заобикаля стандартните портове(80, 443, т.н.). *ИЗПОЛЗВАЙ САМО* ако режимиете \'Всички\' или \'Програма\' не работят. + Списък портове + Списък с портовете, на които да се ползва прокси. *ИЗПОЛЗВАЙ САМО* ако режимиете \'Всички\' или \'Програма\' не работят. + Въведи портове на прокси + Изисквай Root достъп + Изисквай root достъп за прозрачно прокси + Тор е успешно инсталиран! + Двуичните файлове на Тор не са инсталирани. Моля проверете лога и уведомете tor-assistants@torproject.org + Грешка в приложението + Орбот + Относно Орбот + Следващ + Обратно + Край + ОК + Откажи + + Някои Орбот детайли + Orbot е приложение с отворен код, което съдържа Tor, LibEvent и Polipo. То предлага локално HTTP прокси (8118) и SOCKS прокси (9050) към Tor мрежата. Orbot също така има възможноста, на усройства с root достъп, да препраща целият интернет трафик през Tor. + Правата дадени + Orbot Permissions + Отлично! Засякохме, че имате root права достъпни за Орбот. Ще използваме тази сила разумно. + Въпреки че не е задължително, Орбот може да стане по-мощно приложение ако има root достъп. Използвайте бутона долу за да дадете на Орбот суперсили! + Ако нямате root достъп или не знаете за какво става въпрос, просто използвайте приложения направени да работят с Орбот. + Разбирам и искам да продължа без Суперпотребител + Разреши Root за Орбот + Настрой Торификацията + Орбот Ви дава възможност да прекарате всичкия трафик през Тор или да изберете приложения по отделно. + Прекарай всички приложения през Тор + Избери отделни приложения за Тор + Поддържани от Орбот приложения + Приложенията по-долу са създадени така, че да работят с Орбот. Цъкни на всеки бутон, за да инсталираш сега или може да ги намериш по-късно в Андроид маркет. + ChatSecure - Криптиран чат програма за Андроид + Proxy Settings - Научете как да конфигурирате приложения да работят през Орбот + DuckDuckGo Търсачка + Нагласете проксито на Twitter на \"localhost\" и порт 8118 + StoryMaker - Създай история и остави сигурноста на tor! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Прокси настройки + Ако Андроид приложението, което използваш поддържа 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 + Орбот е готов! + Милиони хора по света използват Tor по голям брой причини.\n\nЖурналисти и блогъри, защитници на човешките права, органите на реда, войници, корпорации, граждани на държави с репресивни режими, и най-обикновени граждани... а сега и ти! + Моля, настрой Orbot преди да почнеш да го използваш! + + Успешн се свързахте с Tor мрежата - това НЕ значи, че устройството Ви е предпазено. Може да използвате \'Браузър\' бутона да тествате връзката. \n\nОтидете на https://guardianproject.info/apps/orbot или изпратете имейл на help@guardianproject.info, за да научите повече. + Това ще те заведе на https://check.torproject.org, за да провери дали Orbot е правилно настроен и дали си свързан с Tор. + Скрити услуги + Главни + Стартирай Орбот при стартиране на устройството + Автоматично стартирай Орбот и се свържи към Тор когато твоето Андроид устройство стартира + + + Орбот дава достъп до Tor през Android!\n\nTor ти помага да се предпазиш от филтриране на интернетът, анализ на трафика и подслушване по интернет всички, от които заплашват личното ти пространство, конфиденциалната ти информация и личните ти връзки.\n\nТози стъпка по стъпка наръчни ще ти помогне да настроиш Orbot и Tor на устройството си. + + Внимание + Самото инсталиране на Orbot няма автоматично да анонимизира мобилния ти трафик.\n\nТрябва да настроиш Orbot, устройството ти и други приложения, за да ползваш Tor успешно. + + Права + Ако желаеш може да разрешиш на Orbot \'Superuser\' права, за да включиш допълнителни функиции, като Прозрачно Проксифициране. + Ако не желаеш това се увери, че програмите, които ще използваш са съвместими с Orbot + Устройството ти не изглежда да има или предлага root или така наречения \'Суперпотребителски\' достъп.\n\nМоля, използвай режидъмът \'Приложения\' на главния екран. + + Приложения през Орбот + ChatSecure: Криптирана чат програма с подръжка на Off-the-Record енкрипция. + Orfox: Браузър с насоченост към осигуряване на личното пространство, който работи през Tor + Намери всики Guardin Project програми в Google Play + Намери всички приложения на Guardian Project в F-Droid + Намери всички Guardian Project приложения на https://f-droid.org + + Прозрачно прокси + Това позволява на приложенията Ви автоматично да използват мрежата на Тор без никаква конфигурация. + (Избери тази опция ако нямаш представа за какво става въпрос) + Нищо + Тетъринг през Тор + Включи Прозрачно Тор Проксифициране през Wifi и USB (изисква рестартирване) + Изискай достъп на Суперпотребител + Избери приложения + Избрери приложения за използване през Тор + Настройки на node-а + Това са допълнителни настройки, които могат да намалят Вашата анонимност + Входящи точки + Отпечатъци, никсове, държави и адреси за първия скок + Въведи входящи точки + Разреши тихо стартиране + Разреши на всяко приложение да иска от Orbot да стартира Tor услуги + Прокси за всички + Прокси за нито една + Обърни селекцията + Изходящо Мрежово Прокси (Незадължително) + Тип прокси + Протокол за прокси сървър: HTTP, HTTPS, Socks4, Socks5 + Тип на входящо прокси + Прокси хост + Адреса на Прокси Сървърът + Въведи прокси хост + Порт на прокси + Порта на Прокси Сървърът + Въведи прокси порт + Изходящ Прокси Потребителско Име + Прокси Потребителско Име (Незадължително) + Въведи Прокси Потребителско Име + Изходяща Прокси Парола + Прокси Парола (Незадължително) + Въведи Прокси Парола + Статус + Конфигуриране на напълно прозрачно прокси... + Конфигуриране на прозрачно прокси на база приложение... + Прозрачно прокси АКТИВНО + TransProxy е включен за Тетъринг! + ВНИМАНИЕ: грешка при стартиране на прозрачно проски! + TransProxy правила изчистени + Неуспешно стартиране на Тор процес: + Polipo работи на порт: + Конфигуриране на прозрачно прокси на база порт... + Бридж грешка + За да използвате бридж функционалността трябва да въведете поне един IP адрес на бридж. + Изпрати и-мейл до bridges@torproject.org със съдържание \"get bridges\" в и-мейл от акаунт в gmail. + Грешка + Твоята ReachableAddresses настройка предизвика грешка! + Твоите настройки за препращане предизвикаха изключение! + Изходни точки + Отпечатъци, никсове, държави и адреси за последния скок + Въведи изходни точки + Не ползвай Node-ве + Отпечатъци, никсове, държави и адреси, които да не бъдат ползвани + Край + Задължителни Node-we + Използвай *само* изброените node-ве + Бриджове + Използвай Бриджове + Скрити Мостове + Включи алтернативени входящи node-ве в Tor Мрежата + Включи ако настроените мостове са скрити мостове + IP адрес и порт на бриджове + Въведи адреси на бриджове + Препращачи(Relays) + Препращане + Разреши устройството ти да бъде не изходен препращач + Порт за Препращане + Порт за слушане на твоя Тор препращач + Въведи OR порт + Прякор на препращача + Прякор за твоя Tor препращач + Въведи прякор за препращача + Достижими адреси + Стартирай като клиент зад firewall с рестриктивни политики + Достъпни портове + Портове достъпни зад firewall с рестриктивни политики + Въведи портове + Включи скрити услуги + стартирай сървъри достъпни през Тор мрежата + въведи локални портове за скрити услуги + Портове на скрити услуги + Автоматично генериран адрес за твоята скрита услуга(hidden service) + включи запис на дебъг доклади (трябва да ползвате aLogCat или adb, за да ги разглеждаш) + Начални Станици на Проектите: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Тор лиценз + https://torproject.org + Софтуер на трети страни: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Приложение иска да отвори порт на скрит сървър %S към Тор мрежата. Безопасно е да се доверите на приложението. + намерил си съвместим Tor проект... + Нещо лошо се случи. Проверете лога + Скрита услуга включена: + не може да прочете име на скрита услуга + Не може да стартира Тор: + Рестартирай устройството си, неуспешно рестариване на Tor! + Използвай Iptables по подразбиране + използвай вградените двуични iptables вместо тези идващи с Orbot + Двуичните файлове на Тор не бяха инсталирани или обновени. + Винаги показвай икона в тулбара когато Орбот е свързан + Уведомления винаги включени + Покажи разширена информация за Tor изходната държава и IP в лентата за известия + Разширени известия + Мостове включени! + + Език + Избери местоположение и език за Орбот + Избери език + Остави по подразбиране или смени наличния език + базиран на Tor + Запази настройки + Няма интернет връзка; Tor е в режим на изчакване... + Скорост: + теглене + изпращане + Лиспва Автоматичен Режим на Изчакване + Сложи Tor в режим на изчакване, когато няма интернет + Сменихте своята Тор идентичност! + Браузър + Използвай ChatSecure + Настрой Tor + Разреши тази програма да контролира Tor + Не изглежда да имате Orfox инсталиран. Желаете ли помощ с това, или просто да отворим браузъра? + Инсталирай програми? + Няма интернет връзка. Преминаване в режим на изчкаване... + Добра интернет връзка. Събуждане на Tor... + обновяване на настройките в Tor услугата + Tor SOCKS + Порт, на който Tor предлага своето SOCKS прокси(подразбиране: 9050 или 0, за да забраниш) + SOCKS Port Config + Tor TransProxy Port + Порт, на който Tor предлага своето Transparent прокси прокси(подразбиране: 9040 или 0, за да забраниш) + TransProxy Port Config + Tor DNS Port + Порт, на който Tor предлага своят DNS (подразбиране: 5400 или 0, за да забраниш) + DNS Port Config + Torrc Custom Config + САМО ЗА ЕКСПЕРТИ: въведи директно torrc конфигурационният код + Ръчно настроен Torrc + Mobile Martus - Benetech Human Rights Documentation App + Твоите публични Tor IP-та: + Моля, забрани тази програма в Android->Настройки->Приложения ако имаш проблеми с Orbot: + Конфликт с друго приложение + Транспрокси автоматично освежаване + Приложи повторно транспрокси правилата при промяна на състоянието на мрежата + Транспроски ПРИНУДИТЕЛНО ПРЕМАХВАНЕ + Натисни тук, за да изтриеш всички транспркси мрежови правила ВЕДНАГА + Транспрокси правилата изтрити! + Нямаш ROOT достъп до устройството + Може да се наложи да спреш и стартираш Orbot, за да могат някои настройки да влязат в действие. + VPN + kbps + mbps + KB + MB + Мостове включени! + Моля, рестартирай Orbot, за да влязат в действие промените + QR Кодове + Ако вашата мрежа целенасочено блирва Tor, може да използвате Мост, за да се свържете. ИЗБЕРЕТЕ един от видовете мостове изброени по-горе, за да включите тази функционалност. + Режим мост + Имейл + Уеб + Активирай + Приложения във VPN режим + Можеш да настроиш всички приложения да минават през Tor мрежата използвайки VPN функцията на Андроид.\n\n*ПРЕДУПРЕЖДЕНИЕ* Това е нова, експериментална функция и в някои случаи може да не стартира автоматично, или да спре. НЕ бива да се използва за анонимност, а САМО за преминаване през файъруоли и филтри. + Изпрати имейл + Можеш да получиш адреса на мост по имейл, интернет или като сканираш QR kod. Избери \'Имейл\' или \'Интернет\' по-долу, за да поискаш адрес на мост.\n\nВеднъж щом получиш адреса го копирай в \"Мостове\", в настройките на Orbot и рестартирай приложението. + Инсталирай Orfox + Нормален Браузър + БЕЛЕЖКА: Само стандартни Tor мостове работя на Intel X86/ATOM устройства + Свят + diff --git a/orbotservice/src/main/res/values-bn-rBD/strings.xml b/orbotservice/src/main/res/values-bn-rBD/strings.xml new file mode 100644 index 00000000..d179a61e --- /dev/null +++ b/orbotservice/src/main/res/values-bn-rBD/strings.xml @@ -0,0 +1,40 @@ + + + অরবট + Orbot একটি ফ্রি প্রক্সি অ্যাপ্লিকেশন যা অন্যান্য Apps কে আরও নিরাপদভাবে ইন্টারনেট ব্যবহার করার ক্ষমতাপ্রদান করে। Orbot আপনার ইন্টারনেট ট্রাফিক এনক্রিপ্ট করতে টর ব্যবহার এবং তারপর সারা বিশ্বের কম্পিউটারের সিরিজের moddho diye porichalito kore gopon kore. টর ফ্রি সফটওয়্যার এবং আপনি ট্রাফিক বিশ্লেষণ হিসেবে পরিচিত ব্যক্তিগত স্বাধীনতা ও গোপনীয়তা, গোপনীয় বাণিজ্যিক কার্যক্রম এবং সম্পর্ক, এবং রাষ্ট্রীয় নিরাপত্তা হুমকির মুখে পড়ে নেটওয়ার্ক নজরদারি একটি ফর্ম বিরুদ্ধে রক্ষা করতে সাহায্য করে যে একটি খোলা নেটওয়ার্ক. + টর প্রক্সি সার্ভিস + অরবট চালু হচ্ছে . . . + টর নেটওয়ার্কের সাথে সংযুক্ত হয়েছে + অরবট নিষ্ক্রিয় করা হয়েছে + টর ক্লায়েন্ট চালু করা হচ্ছে + সম্পূর্ণ + অপেক্ষা করা হচ্ছে + হোম + নিয়ম বিন্যাস + সাহায্য + শুরু + শেষ + সাহায্য + বন্ধ + চালু করার জন্য ধরে থাকুন + সব কিছু টরের মাধ্যমে করুন + অরবট + পরবর্তী + পেছনে + শেষ + ঠিক আছে + বাদ + + অরবট এর অনুমতিসমূহ + আমি বুঝতে পেরেছি এবং এগিয়ে যেতে চাই Superuser ছাড়া। + + সাধারণ + + + + + অনুমতিসমূহ + + + + diff --git a/orbotservice/src/main/res/values-bn-rIN/strings.xml b/orbotservice/src/main/res/values-bn-rIN/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-bn-rIN/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-bn/strings.xml b/orbotservice/src/main/res/values-bn/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-bn/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-brx/strings.xml b/orbotservice/src/main/res/values-brx/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-brx/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-bs/strings.xml b/orbotservice/src/main/res/values-bs/strings.xml new file mode 100644 index 00000000..bcef3470 --- /dev/null +++ b/orbotservice/src/main/res/values-bs/strings.xml @@ -0,0 +1,18 @@ + + + Pomoć + Pomoć + Zatvori + Nazad + Otkaži + + Proksi postavke + + + + + + + + + diff --git a/orbotservice/src/main/res/values-ca/strings.xml b/orbotservice/src/main/res/values-ca/strings.xml new file mode 100644 index 00000000..709b1e45 --- /dev/null +++ b/orbotservice/src/main/res/values-ca/strings.xml @@ -0,0 +1,226 @@ + + + Orbot + http://orbot/ + https://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Inicia i atura Tor + torproxyservice + L\'Orbot s\'està iniciant... + Esteu connectat a la xarxa Tor + L\'Orbot està desactivat + S\'està iniciant el client Tor... + fet. + s\'està esperant. + 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 + Inici + Navega + Preferències + Registre + Ajuda + Inicia + Atura + Quant a... + Baixada + Pujada + Ajuda + Tanca + Quant a... + Esborra el registre + Prova + Surt + - mantén-lo premut per iniciar - + Proxy transparent (requereix Root) + Utilitza un proxy transparent + Torificació automàtica de les apps + Tor per a tot + Canalitza el trànsit de totes les aplicacions a través de Tor + Port alternatiu per al proxy + ATENCIÓ: Això trampeja els ports habituals (80, 443, etc.) *UTILITZEU-HO NOMÉS* si el mode «Totes» o «App» no funcionen. + Llista de ports + Llista de ports a canalitzar per proxy. *UTILITZEU-HO NOMÉS* si el mode «Totes» o «App» no funcionen. + Introduïu els ports a canalitzar per proxy + Demana l\'accés root + Demana l\'accés root per a la canalització a través de proxy transparent + Els binaris de Tor s\'han instal·lat correctament. + Els fitxers binaris de Tor no s\'han pogut instal·lar. Comproveu el registre i notifiqueu-ho a tor-assistants@torproject.org + Error de l\'aplicació + Us donem la benvinguda a l\'Orbot + Quant a Orbot... + Següent + Enrere + Fi + D\'acord + Cancel·la + + Alguns detalls de l\'Orbot... + Permís concedit + Permisos de l\'Orbot + Perfecte! Hem detectat que teniu els permisos root activats per a l\'Orbot. Utilitzarem aquesta capacitat amb sensatesa. + 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! + 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. + Ho entenc i vull continuar sense accés de superusuari + Concedeix accés root a l\'Orbot + Configura la connexió a Tor + 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. + Canalitza totes les aplicacions a través de Tor. + Selecciona les aplicacions individualment + Aplicacions per utilitzar amb l\'Orbot + 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. + ChatSecure - Client de missatgeria instantània segura per a Android + Proxy Settings - Aprèn a configurar aplicacions per a què funcionin amb l\'Orbot + DuckDuckGo - Aplicació de cerca al web + Estableix el proxy de Twitter a l\'amfitrió «localhost» i port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Ajustaments del proxy + L\'Orbot és a punt! + Configureu l\'Orbot abans d\'utilitzar-lo! + + 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. + Serveis ocults + General + Inicia l\'Obot a l\'arrencada + Inicia l\'Orbot i connecta a Tor automàticament quan el vostre dispositiu Android arrenca. + + + + Advertència + + Permisos + Opcionalment podeu concedir accés «superusuari» a l\'Orbot per activar funcions avançades, com el servidor intermediari transparent. + Si no voleu fer això assegureu-vos de fer servir aplicacions dissenyades per funcionar amb l\'Orbot. + + Aplicacions dissenyades per a l\'Orbot + ChatSecure: Aplicació de xat segur amb encriptació confidencial. + Trobareu totes les aplicacions de Guardian Project a Google Play Store + + Servidor intermediari transparent + Això permet que les vostres aplicacions es connectin a través de la xarxa Tor sense haver de configurar res. + (Marqueu aquesta casella si no teniu ni idea del que estem parlant) + Cap + Compartició de xarxa amb Tor + Activa el servidor intermediari transparent de Tor pels dispositius connectats a través de la compartició de xarxa via Wifi o USB (cal reiniciar) + Petició d\'accés de superusuari + Selecciona les apps + Trieu quines apps s\'han de canalitzar a través de Tor + Configuració de node + Aquests són paràmetres avançats que poden reduir el vostre anonimat + Node d\'entrada + Empremtes, àlies, països i adreces pel primer salt + Introduïu els nodes d\'entrada + Totes via proxy + Cap via proxy + Inverteix selecció + Servidor intermediari de sortida a la xarxa (opcional) + Tipus de servidor intermediari de sortida + Protocol a utilitzar pel servidor intermediari: HTTP, HTTPS, Socks4, Socks5 + Introduïu el tipus de servidor intermediari + Amfitrió del servidor intermediari de sortida + Nom de l\'amfitrió del servidor intermediari + Introduïu l\'amfitrió del servidor intermediari + Port del servidor intermediari de sortida + Port del servidor intermediari + Introduïu el port del servidor intermediari + Nom d\'usuari del servidor intermediari de sortida + Nom d\'usuari del servidor intermediari (opcional) + Introduïu el nom d\'usuari del servidor intermediari + Contrasenya del servidor intermediari de sortida + Contrasenya del servidor intermediari (opcional) + Introduïu la contrasenya del servidor intermediari + Estat + S\'està configurant el servidor intermediari transparent complet... + S\'està configurant el servidor intermediari transparent per apps... + S\'ha ACTIVAT el servidor intermediari transparent + S\'ha activat el servidor intermediari per la compartició de xarxa + ATENCIÓ: hi ha hagut un error en iniciar el servidor intermediari transparent + S\'han esborrat les regles del servidor intermediari transparent + No s\'ha pogut iniciar el procés Tor: + S\'està configurant el servidor intermediari transparent per ports... + Hi ha hagut un error de pont + Per poder utilitzar la funcionalitat de pont, cal que introduïu almenys una adreça IP de pont. + Envieu un correu a bridges@torproject.org amb la línia «get bridges» sola al cos del missatge des d\'un compte de gmail. + Error + Els paràmetres d\'adreces accessibles han provocat una excepció. + Els paràmetres de reemissió han causat una excepció. + Nodes de sortida + Empremtes, àlies, països i adreces per l\'últim salt + Introduïu els nodes de sortida + Nodes per excloure + Empremtes, àlies, països i adreces per excloure + Introduïu nodes per excloure + Nodes estrictes + Utilitza *només* aquests nodes especificats + Ponts + Utilitza ponts + Ponts ofuscats + Activa nodes alternatius d\'entrada a la xarxa Tor + Activeu-ho si els ponts configurats són ponts ofuscats + Adreça IP i port dels ponts + Introduïu les adreces del pont + Reemissors + Reemissió + Activa el vostre dispositiu per ser un reemissor sense sortida + Port de reemissió + Port d\'escolta per la vostra reemissió de Tor + Introduïu el port OR + Àlies del reemissor + L\'àlies pel vostre reemissor de Tor + Introduïu un àlies personalitzat pel vostre reemissor + Adreces accessibles + S\'executa com a client darrera d\'un tallafocs amb normes restrictives + Ports accessibles + Ports que es poden accedir darrera d\'un tallafocs restrictiu + Introduïu els ports + Allotjament de servei ocult + Permet que un servidor al dispositiu sigui accessible des de la xarxa Tor + introduïu els ports de l\'amfitrió local pels serveis ocults + Ports del servei coult + el nom adreçable pel vostre servei ocult (generat automàticament) + activa la sortida del registre de depuració (cal utilitzar l\'adb o l\'aLogCat per veure\'l) + Lloc(s) web del projecte: + La llicència Tor + https://torproject.org + Programari de terceres parts: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Una aplicació vol obrir el port %S de servei ocult a la xarxa Tor. Això és segur si confieu en l\'aplicació. + s\'ha trobat un procés Tor existent... + Ha fallat alguna cosa. Comproveu el registre + servei ocult a: + ha estat impossible llegir el nom del servei ocult + Ha estat impossible iniciar Tor: + Utilitza les Iptables per defecte + utilitza el binari incorporat amb l\'Iptables enlloc del que porta l\'Orbot + Els binaris de Tor no s\'han pogut instal·lar o actualitzar. + Manté la icona sempre a la barra d\'eines mentre l\'Orbot està connectat + Notificacions sempre activades + Ponts activats. + + Trieu la localització i la llengua per l\'Orbot + Tria la llengua + Deixa-ho per defecte o canvia la llengua actual + funciona amb Tor + Desa els paràmetres + Ample de banda: + baixada + pujada + No hi ha autodesconnexió de xarxa + Posa el Tor en pausa mentre no hi ha connexió a internet + Heu canviat a una nova identitat Tor. + Utilitza ChatSecure + Gestiona Tor + Activa aquesta app per controlar el servei Tor + Voleu instal·lar les apps? + Les vostres IP públiques de Tor: + kbps + mbps + KB + MB + Correu-e + Web + Activa + Navegador estàndard + diff --git a/orbotservice/src/main/res/values-cs-rCZ/strings.xml b/orbotservice/src/main/res/values-cs-rCZ/strings.xml new file mode 100644 index 00000000..468e0b44 --- /dev/null +++ b/orbotservice/src/main/res/values-cs-rCZ/strings.xml @@ -0,0 +1,223 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + spustit a vypnout Tor + torproxyservice + Orbot se spouští... + Připojen k síti Tor + Orbot je deaktivován + Startuji Tor klienta... + hotovo. + čekám. + 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 + Domů + Prohlížet + Nastavení + Log + Pomoc + Zapnout + Vypnout + O aplikaci + Stáhnout + Nahrát + Nápověda + Zavřít + O aplikaci + Vyčistit log + Ověřit + Konec + - podržte pro spuštění - + Transparentní proxy (vyžaduje roota) + Transparentní proxy + Automatické Torování aplikací + Torovat všechno + Proxynovat všechny aplikace skrz Tor + Záložní port pro proxy + VAROVÁNÍ: Obchází běžné porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují. + Seznam portů + Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují + Zadejte porty pro proxynování + Vyžaduje root přístup + Požádat o práva roota kvůli transparentnímu proxy + Binárky toru byly úspěšně nainstalovány! + Nebylo možno nainstalovat binárky Toru. Prosím zkontrolujte log a upozorněte tor-assistants@torproject.org + Chyba aplikace + Orbot + O Orbotovi + Další + Zpět + Dokončit + Budiž + Zrušit + + Pár detailů o Orbot + Práva udělena + Oprávnění Orbota + Výborně! Bylo detekováno, že root oprávnění bylo Orbotu uděleno. Budeme tuto sílu užívat moudře. + 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. + 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í. + Rozumín a přeji si pokračovat bez roota (superuživatelských oprávnění) + Udělit Orbotovi root oprávnění + Nastavení Torování + Orbot umožňuje směrovat datový provoz všech aplikací přes Tor NEBO zvolit aplikace individuálně. + Tor Proxy pro všechny aplikace + Zvolit aplikace pro Tor individuálně + Aplikace povolené pro Orbota + 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. + ChatSecure - Bezpečný instant messaging klient pro Android + Proxy Nastavení - Naučte se, jak nastavit aplikace, aby pracovaly s Orbotem + Aplikace DuckDuckGo pro vyhledávací engine + Nastavit Twitter proxy na host \"localhost\" a port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Nastavení Proxy + Orbot je připraven! + Orbot musíte nejdříve nastavit, než ho začnete používat! + + 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. + Skrytý hosting služby + Obecné + Spustit Orbot při startu systému + Automaticky spustit Orbot a připojit se k Tor po startu zařízení + + + + Varování + + Oprávnění + Volitelně můžete Orbotu udělit \'siperuýivatelský\' (root) přístup pto povolení rozšířených funkcí, například transparentní proxy. + Pokud si to nepřejete, používejte prosím aplikace napsané tak, aby spolupracovaly s Orbotem + + Orbot-povolené aplikace + ChatSecure: Bezpečná chatovací aplikace s technologií Off-the-Record Encryption + Najděte všechny aplikace Guardian Projektu na Obchodu Play + + Transparentní proxy + Toto povolí aplikacím automaticky běžet přes Tor síť bez jakéhokoliv nastavování. + (Povolte tuto volbu, pokud nemáte ponětí, o co se jedná) + Žádné + Tor Tethering + Povolit Tor transparentní proxy pro zařízení připojená přes Wifi a USB tethering (vyžaduje restart) + Požadavek na Superuživatelský přístup + Vybrat aplikace + Zvolte aplikace používající směrováni přes Tor + Konfigurace uzlu (nodu) + Tato rozšířená nastavení mohou snížit vaši anonymitu + Vstupní nody + Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro první skok (hop) + Zadejte vstupní nody + Převrátit výběr + Odchozí síťová proxy (volitelné) + Typ odchozí proxy + Protokol pro proxy server: HTTP, HTTPS, Socks4, Socks5 + Zadejte typ proxy + Hostitel odchozí proxy + Jméno hostitele proxy serveru + Zadejte hostitele proxy + Port odchozí proxy + Port proxy serveru + Zadejte proxy port + Uživatelské jméno odchozí proxy + Proxy uživatelské jméno (volitelné) + Zadejte Proxy uživatelské jméno + Heslo odchozí proxy + Proxy heslo (volitelné) + Zadejte Proxy heslo + Stav + Nastavuji transparentní proxy… + Nastavení na aplikacích založené transparentní proxy... + Transparentní proxy POVOLENA + Transparentní proxy povolena pro Tethering! + VAROVÁNÍ: chyba při startu transparentní proxy! + Pravidla TransProxy vymazána + Nelze spustit Tor proces: + Nastavení na portu založené transparentní proxy... + Chyba bridge + Pro použití bridge musíte zadat minimálné jednu IP adresu bridge. + Zašlete email pouze s řádkem \"get bridges\" v obsahu zprávy z vašeho gmail účtu na adresu bridges@torproject.org + Chyba + Vaše nastavení dostupných adres (ReachableAddresses) způsobilo chybu! + Vaše nastavení relace způsobilo výjimku! + Výstupní nody + Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro poslední skok (hop) + Zadejte výstupní nody + Vyloučené nody + Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro vyloučené nody + Zadejte nody k vyloučení + Striktní nody + Použít *pouze* tyto specifické nody + Bridge + Použít bridge + Matoucí bridge (Obfuscated Bridges) + Povolit alternativní vstupní nody do sítě Tor + Povolte, pokud jsou nastavené bridge matoucí bridge + IP adresy a porty bridgů + Zadejte adresy bridgů + Relé + Používání relé + Spuštění zařízení jako neodchozího relé + Port relé + Naslouchání Vašeho Tor relé + Zadejte OR port + Přezdívka relé + Přezdívka Vašeho Tor relé + Zadejte klientskou přezdívku relé + Dostupné adresy + Běžet jako klient za firewallem s restriktivní politikou + Dostupné porty + Porty dostupné za restriktivním firewallem + Zadejte porty + Skrytý hosting služby + umožnit serveru na zařízení být přístupné skrze síť Tor + vložte porty localhostu pro skryté služby + Skryté porty služby + adresovatelné jméno pro vaši skrytou službu (generováno automaticky) + umožnit ladicí informace na výstup (musí používat adb nebo aLogCat k prohlížení) + Domovské(á) umístění projektu + Tor Licence + https://torproject.org + Software třetích stran: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Aplikace požaduje otevření skrytého portu serveru %S k síti Tor. Toto je bezpečně, pokud aplikaci důvěřujete. + nalezev existující Tor proces… + Stalo se něco špatného. Zkontrolujte log + skrytá služba na: + nelze číst název skryté služby + Nelze spustit Tor: + Restartujte vaše zařízení, nejsme schopni resetovat Tor! + Použít defaultní Iptables + použít vestavěné iptables binárky místo těch dodávaných s Orbotem + Nelze nainstalovat nebo aktualizovat Tor binárky. + Vždy zobrazit ikonu ve stavovém řádku, pokud je Orbot připojen. + Notifikace vždy zapnuté + Bridge povoleny! + + Jazyk + Zvolte jazyk pro Orbot + Zvolte jazyk + Ponechat standartní, nebo přepnout stávající jazyk + Uložit nastavení + Šířka pásma: + stahování + nahrávání + Vypnout uspávání sítě + Uspat Tor když není k dispozici přístup k Internetu + Vaše identita na Toru byla změněna! + Použít ChatSecure + Spravovat Tor + Umožnit této aplikaci ovládat službu Tor + Nainstalovat aplikace? + Pro projevení změn restartujte Orbot + QR kódy + Email + Web + Aktivovat + Pošli email + Standartní prohlížeč + diff --git a/orbotservice/src/main/res/values-cs/strings.xml b/orbotservice/src/main/res/values-cs/strings.xml new file mode 100644 index 00000000..65e386fa --- /dev/null +++ b/orbotservice/src/main/res/values-cs/strings.xml @@ -0,0 +1,74 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + spustit a vypnout Tor + torproxyservice + Orbot se spouští… + Připojen k síti Tor + \"Orbot je deaktivován + Orbot se vypíná + Startuji Tor klienta… + hotovo. + čekám. + 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 + Domů + Prohlížet + Nastavení + Log + Pomoc + Aplikace + Zapnout + Vypnout + O aplikaci + Pomoc + Zavřít + O aplikaci + Vyčistit log + Ověřit + Konec + - podržte pro spuštění - + Transparentní proxy (vyžaduje roota) + Transparentní proxy + Automatické Torování aplikací + Torovat všechno + Proxynovat všechny aplikace skrz Tor + Záložní port pro proxy + VAROVÁNÍ: Obchází časté porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují. + Seznam portů + Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují + Zadejte porty pro proxynování + Vyžaduje root přístup + Požádat o práva roota kvůli transparentnímu proxy + Binárky toru byly úspěšně nainstalovány! + Chyba aplikace + Orbot + O Orbotovi + Další + Zpět + Dokončit + Zrušit + + Práva udělena + Nastavení Proxy + Orbot je připraven! + + Hlavní + + + + Varování + + + + Transparentní proxy + Není + Status + Chyba + + Uloz nastaveni + Aplikace + diff --git a/orbotservice/src/main/res/values-cy/strings.xml b/orbotservice/src/main/res/values-cy/strings.xml new file mode 100644 index 00000000..a48a10a4 --- /dev/null +++ b/orbotservice/src/main/res/values-cy/strings.xml @@ -0,0 +1,81 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + cychwyn a stopio Tor + gwasanaethdirpwrytor + Mae Orbot yn cychwyn... + Wedi cysylltu â rhwydwaith Tor + Yn cychwyn cleient Tor + Wedi ei gwblhau. + yn aros. + 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 + Hafan + Pori + Gosodiadau + Log + Help + Cychwyn + Stop + Amdanom ni + Llwytho i lawr + Llwytho i fyny + Help + Cau + Amdanom ni + Clirio log + Gwirio + Gadael + - pwyswch yn hir i gychwyn - + Dirprwyo tryloyw (angen Gwreiddyn) + Dirprwyo tryloyw + \'Torifying\' o Apps yn awtomatig + Popeth Tor + Traffig dirprwy i\'r holl apps drwy Tor + Rhestr Porthau + Rhestr o borthau i\'w dirprwyo. *DEFNYDDIER YN UNIG* os nad yw modd \'Popeth\' neu \'App\' yn gweithio + Orbot + Am Orbot + Nesaf + Yn ôl + Gorffen + Iawn + Diddymu + + Rhai manylion am Orbot + Caniatâd wedi\'i roi + Gosodiadau Dirprwy + Mae Orbot yn barod! + + Cyffredinol + + + + Rhybudd + + + + Dirprwyo\'n dryloyw + Dim + Dewiswch Apps + Dewiswch Apps i\'w llwybro drwy Tor + Ffurfweddiad nod + Nodau mynediad + I mewn i nodau mynediad + Cyfrinair y Dirprwy (Dewisol) + Statws + Gwall + Nodau Gadael + I mewn i Nodau Gadael + Yn eithrio Nodau + I mewn i Nodau Eithrio + Trwydded Tor + Meddalwedd 3ydd-parti + + Dewiswch locale ac iaith i Orbot + Dewiswch iaith + Cadw\'r gosodiadau + diff --git a/orbotservice/src/main/res/values-da/strings.xml b/orbotservice/src/main/res/values-da/strings.xml new file mode 100644 index 00000000..2c63a078 --- /dev/null +++ b/orbotservice/src/main/res/values-da/strings.xml @@ -0,0 +1,203 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + start og stop Tor + torproxyservice + Orbot starter op ... + Der er forbindelse til Tor-netværket + Orbot er slået fra + Starter Tor klienten... + udført. + afventer. + 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 + Hjem + Brows + Indstillinger + Log + Hjælp + Start + Stop + Om + Henter + Sender + Hjælp + Luk + Om + Ryd log + Tjek + Afslut + - hold nede for start - + Transparent proxy (kræver Root) + Transparent proxy + Anvend automatisk Tor på programmer + Brug Tor til alt + Proxy-trafik for alle programmer gennem Tor + Tilbagefaldsport for proxy + ADVARSEL: Omgår almindelige porte (80, 443, osv). Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker. + Portliste + Liste af porte der skal filtreres gennem proxyen. Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker. + Indtast porte der skal filtreres gennem proxyen. + Forespørg om Root-adgang + Kræver root privilegier for gennemsigtig proxy. + Tor\'s binære filer succesfuldt installeret! + Tor\'s binære filer kunne ikke installeres. Læs venligst loggen og underret tor-assistants@torproject.org + Programfejl + Orbot + Om Orbot + Næste + Tilbage + Afslut + Okay + Fortryd + + Nogle Orbot detaljer + Tilladelse givet + Orbot tilladelser + Fremragende! Vi kan se at du har givet root tilladelser til Orbot . Vi vil bruge denne magt med omtanke. + 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! + 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. + Jeg forstår og vil gerne fortsætte uden Superuser + Tillad root for Orbot + Indstil Torifikation + Orbot giver dig mulighed for at føre al app-trafik igennem Tor ELLER vælge individuelt imellem apps. + Kør alle programmers trafik gennem Tor proxyen + Vælg individuelle apps for Tor + Orbot-aktiverede apps + 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. + Proxy indstillinger - Lær hvordan du konfigurerer apps til at fungere med Orbot + DuckDuckGo søgemaskine-programmet + Indstil Twitter proxyen til værten \"localhost\" og port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy-indstillinger + Orbot er klar! + + 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. + Udbyd en skjult service + Generelt + Start Orbot ved opstart + Start automatisk Orbot og forbind til Tor når din android enhed starter + + + + Advarsel + + Tilladelser + Du kan eventuelt give Orbot \'Superuser\' adgang for at aktivere funktioner som f.eks. Transparent Proxying. + Hvis du ikke vil dette, så vær sikker på at du bruger apps som fungerer med Orbot + + Orbot-aktiverede apps + Find alle Guardian Project programmer på Google Play + + Transperant Proxying + Dette tillader at dine apps automatisk kører gennem Tor netværket uden nogen konfiguration. + (Check denne boks hvis du ikke aner hvad vi snakker om) + Ingen + Tor internet-hotspot + Start Tor gennemsigtig proxy for Wifi og internetdeling over USB (kræver genstart) + Anmod om Superuser adgang + Vælg apps + Vælg apps som føres gennem Tor + Konfiguration af Tor node + Avancerede indstillinger, der kan reducere anonymiteten + Indgangspunkter til Tor netværket + Fingeraftryk, servernavne, lande og adresser for første hop + Indtast indgangspunkter + Udgående netværksproxy (Valgfri) + Udgående proxy-type + Protokol til proxy serveren: HTTP, HTTPS, Socks4, Socks5 + Indtast proxy type + Udgående proxy-vært + Værtsnavn for proxyserver + Indtast proxy vært + Udgående proxy-port + Proxyserverens port + Indtast proxy port + Brugernavn for udgående proxy + Proxy brugernavn (Valgfri) + Indtast proxy-brugernavnet + Kodeord for udgående proxy + Adgangskode for udgående proxy (Valgfri) + Indtast proxy-kodeordet + Status + Opsætter total, gennemsigtig proxy... + Opsætter program-afhængig transparent proxy... + Transparent proxying AKTIVERET + TransProxy slået til for internetdeling! + ADVARSEL: fejl under start af den gennemsigtige proxy! + Indstillinger for TransProxy er nulstillet + Kunne ikke starte Tor processen: + Opsætter port-baseret gennemsigtig proxy... + Fejl ved Bro + For at kunne bruge bro-komponenten, skal du indaste mindst én IP-adresse på en bro. + Send en e-mail til bridges@torproject.org med teksten \"get bridges\" alene i mailens tekstfelt fra en gmail-konto. + Fejl + Din ReachableAdresses indstilling forudsagede en fejl! + Dine relæindstillinger forårsagede en fejl! + Udgangspunkter + Fingeraftryk, servernavne, lande og adresser for det sidste hop + Indtast udgangspunkter + Ekskluder punkter + Fingeraftryk, servernavne, lande og adresser der skal ekskluderes + Indtast noder at ekskludere + Strikte punkter + Brug *kun* disse specificerede punkter + Broer + Brug broer + Skjulte broer + Slå alternative indgangspunkter til Tor netværket til + Aktiver hvis de indstillede broer er skjulte broer + IP adresser og porte på broer + Indtast bro-adresser + Relæer + Relæfunktion + Lad denne enhed være et ikke-udgangs relæ + Relæets port + Port at dette Tor relæ lytter på + Indtast OR port + Relænavn + Kaldenavnet for dit Tor-relæ + Indtast et valgfrit navn for relæet + Opnåelige adresser + Kør som en klient bag en firewall med restrektive regler + Porte hvor forbindelse kan dannes + Porte bag en restriktiv firewall hvor en forbindelse kan oprettes + Indtast porte + Udbyd en service + tillad at en server på enheden er tilgængelig via Tor-netværket + indtast lokale adresser for skjulte services + Skjulte service porte + den absolutte sti til din skjulte service (genereres automatisk) + aktiver fejlfindings-log til output (der skal anvendes adb eller aLogCat for at se dette) + Projekt hjemmeside(r): + Tor licensen + https://torproject.org + Tredjeparts-software: + Tor: https://www.torproject.org + Et program vil åbne den skjulte server-port %S til Tor netværket. Dette er sikkert hvis du stoler på programmet. + fandt eksisterende Tor process... + Noget slemt er sket. Check loggen + skjult service på: + ikke i stand til at læse navnet på den skjulte service + Kunne ikke starte Tor: + Genstart din enhed. Ude af stand til at nulstille tor! + Anvend standardindstillinger for Iptables + anvend det indbyggede iptables-program i stedet for versionen der følger med Orbot + Kunne ikke installere eller opgradere Tor programmerne. + Vis altid ikonet i statuslinien når Orbot er forbundet til netværket + Vis altid notifikationer + Broer er aktiverede! + + Sprog + Vælg sproginstillinger og sprog for Orbot + Vælg sprog + Behold standardindstilling eller skift det nuværende sprog + drevet af Tor + Gem Indstillinger + Ingen internetforbindelse; Tor er på standby... + Båndbredde: + diff --git a/orbotservice/src/main/res/values-de-rAT/strings.xml b/orbotservice/src/main/res/values-de-rAT/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-de-rAT/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-de/strings.xml b/orbotservice/src/main/res/values-de/strings.xml new file mode 100644 index 00000000..acf26626 --- /dev/null +++ b/orbotservice/src/main/res/values-de/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Tor starten und beenden + Tor-Vermittlungsdienst + Orbot startet … + Verbunden mit dem Tor-Netzwerk + Orbot ist deaktiviert + TorService wird heruntergefahren + Tor-Programm wird gestartet … + abgeschlossen. + warten. + 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. + Start + Durchsuchen + Einstellungen + Protokoll + Hilfe + VPN + Start + Stopp + Über + Weitere Apps … + Heruntergeladen + Hochgeladen + Hilfe + Schließen + Über + Protokoll löschen + Überprüfen + Beenden + BrückenQR scannen + BrückenQR teilen + - Zum Starten gedrückt halten - + Transparente Vermittlung (benötigt Root-Rechte) + Transparente Vermittlung + Anwendungen automatisch durch Tor leiten + Alles durch Tor leiten + Verbindungen aller Anwendungen durch Tor leiten + Rückfallportvermittlung + WARNUNG: Umgeht öffentliche Ports (80, 443, usw.). *NUR BENUTZEN*, wenn »All« oder »App«-Modus nicht funktioniert. + Portliste + Liste von Anschlüssen zur Vermittlung. *NUR BENUTZEN* wenn »All« oder »App«-Modus nicht funktioniert + Ports zur Vermittlung eingeben + Anfrage auf Root-Zugriff + Anfrage auf Root-Zugriff für transparente Vermittlung + Die Tor-Programmdateien wurden erfolgreich installiert! + Die Tor-Programmdateien konnten nicht erfolgreich installiert werden. Bitte prüfen Sie das Protokoll und wenden Sie sich an tor-assistants@torproject.org. + Anwendungsfehler + Willkommen bei Orbot + Über Orbot + Weiter + Zurück + Fertigstellen + OK + Abbrechen + + Nähere Informationen zu Orbot + 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. + Berechtigung erteilt + Orbot-Berechtigungen + Ausgezeichnet! Sie haben Orbot Root-Rechte eingeräumt. Orbot wird diese Berechtigung sinnvoll verwenden. + 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. + Falls Sie keinen Root-Zugriff haben oder nicht wissen, was das ist, achten Sie darauf, dass Sie Anwendungen verwenden, die Orbot nutzen können. + Ich habe verstanden und möchte ohne Systemverwalterzugriff weitermachen + Orbot Root-Rechte einräumen + Torification konfigurieren + Orbot lässt Ihnen die Wahl, den Datenverkehr aller Anwendungen durch Tor zu leiten ODER einzelne Anwendungen auszuwählen. + Den Verkehr aller Anwendungen durch Tor leiten + Anwendungen einzeln für Tor auswählen + Orbot aktivierte Anwendungen + 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. + ChatSecure - Ein sicheres Sofortnachrichtenprogramm für Android + Vermittlungseinstellungen - Lernen, wie Sie Anwendungen so konfigurieren, dass sie mit Orbot zusammenarbeiten. + DuckDuckGo-Suchmaschinen-App + Twitter-Proxy auf den Rechner »localhost« und Port 8118 einstellen + StoryMaker - Schreiben Sie eine Geschichte und überlassen Sie Tor das Sicherheitsmanagement! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Vermittlungseinstellungen + 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 + Orbot ist bereit! + 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! + Bitte konfigurieren Sie Orbot, bevor Sie es verwenden können! + + 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@guardianproject.info, um mehr zu erfahren. + 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. + Versteckte Dienste + Allgemein + Orbot beim Systemstart ausführen + Automatisches Starten von Orbot und Verbinden mit Tor beim Start des Android-Gerätes + + + 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. + + Warnung + 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. + + Zugriffsrechte + Sie können Orbot wahlweise Systemverwalterzugriff geben, um erweiterte Funktionen zu aktivieren, wie z.B. transparente Vermittlung. + Wenn Sie dies nicht möchten, stellen Sie bitte sicher, Anwendungen zu verwenden, die für die Zusammenarbeit mit Orbot geschrieben wurden. + 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. + + Orbot aktivierte Anwendungen + ChatSecure: Sichere Unterhaltungsanwendung mit vertraulicher Verschlüsselung + Orfox: Datenschutz optimierter Browser der Tor verwendet + Alle Guardian Project-Anwendungen im Google Play Store finden + Alle Guardian Project-Anwendungen bei F-Droid finden + Alle Guardian Project-Anwendungen unter https://f-droid.org finden + + Transparente Vermittlung + Dies ermöglicht Ihren Anwendungen automatisch das Tor-Netzwerk zu verwenden, ohne dieses konfigurieren zu müssen. + (Dieses Feld auswählen, wenn Sie nicht wissen wovon wir reden) + Nichts + Tor-Anbindung + Transparente Tor-Vermittlung für WLAN und angebundene USB-Geräte aktivieren (benötigt einen Neustart) + Systemverwalterzugriff anfordern + Anwendungen auswählen + Die Anwendungen auswählen, welche durch Tor geleitet werden sollen + Netzknotenkonfiguration + Dies sind erweiterte Einstellungen, die Ihre Anonymität beeinträchtigen können + Eingangsnetzknoten + Fingerabdrücke, Spitznamen, Länder und Adressen für den ersten Knotenpunkt + Eingangsnetzknoten eingeben + Hintergrundstatistiken erlauben + Erlauben Sie jeder Anwendung, Orbot zu beauftragen, Tor und zugehörige Dienste zu starten + Alles über Proxy + Nichts über Proxy + Auswahl umkehren + Ausgehender Netzwerk-Proxy (optional) + Ausgehender Vermittlungstyp + Protokoll zur Verwendung des Proxy Servers: HTTP, HTTPS, Socks4, Socks5 + Vermittlungstyp eingeben + Ausgehender Vermittlungsrechner + Rechnername des Vermittlungsservers + Vermittlungsrechner eingeben + Ausgehender Proxy-Anschluss + Anschluss des Vermittlungsservers + Vermittlungsanschluss eingeben + Ausgehender Proxy-Benutzername + Proxy-Benutzername (optional) + Proxy-Benutzernamen eingeben + Ausgehendes Proxy-Passwort + Proxy-Passwort (optional) + Proxy-Passwort eingeben + Status + Voll transparente Vermittlung wird eingestellt … + Anwendungsbasierte transparente Vermittlung wird eingestellt … + Transparente Vermittlung AKTIVIERT + TransProxy für Anbindung aktiviert! + WARNUNG: Fehler beim Starten der transparenten Vermittlung! + TransProxy-Regeln gelöscht + Tor-Prozess konnte nicht gestartet werden: + Polipo läuft auf Port: + Anschlussbasierte transparente Vermittlung wird eingestellt … + Brückenfehler + Um die Brückenfunktion nutzen zu können, müssen Sie mindestens eine Brücken-IP-Adresse eingeben. + Von Ihrem Gmail-Konto eine E-Mail an bridges@torproject.org mit dem Text »get bridges« im Nachrichtenfeld senden. + Fehler + Ihre eingestellten erreichbaren Adressen haben einen Ausnahmefehler verursacht! + Ihre Relaiseinstellungen haben einen Ausnahmefehler verursacht! + Ausgangsnetzknoten + Fingerabdrücke, Spitznamen, Länder und Adressen für den letzten Knotenpunkt. + Ausgangsnetzknoten eingeben + Netzknoten ausschließen + Fingerabdrücke, Spitznamen, Länder und Adressen, die ausgeschlossen werden sollen + Auszuschließende Netzknoten eingeben + Absolute Netzknoten + *Ausschließlich* diese angegebenen Netzknoten verwenden + Brücken + Brücken benutzen + Verschleierte Brücken + Alternative Eingangsnetzknoten in das Tor-Netzwerk aktivieren + Aktivieren, falls Brücken verschleierte Brücken sind + IP-Adresse und Port der Brücken + Brückenadressen eingeben + Relais + Weiterleitung + Ihr Gerät als Nichtausgangsrelais aktivieren + Relaisanschluss + Anschluss, auf dem bei Ihrem Tor-Relais gehört werden soll + OR-Port eingeben + Relaisspitzname + Der Spitzname für Ihr Tor-Relais + Einen selbsterstellten Relaisspitznamen eingeben + Erreichbare Adressen + Als Programm hinter einer Firewall mit restriktiven Regeln betreiben + Erreichbare Ports + Die Anschlüsse sind hinter einer restriktiven Firewall erreichbar + Ports eingeben + Versteckte Dienste + Auf dem Gerät einen Server betreiben, auf den das Tor-Netzwerk zugreifen kann + Lokale Ports für versteckte Dienste eingeben + Ports der versteckten Dienste + Der adressierbare Name für Ihren versteckten Dienst (wird automatisch generiert) + Ausgabe des Fehlerdiagnoseprotokolls aktivieren (benötigt adb oder aLogCat zur Ansicht) + Internetseite(n) des Projektes: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Die Tor-Lizenz + https://torproject.org + Drittanbieteranwendungen: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Eine Anwendung möchte den versteckten Server-Anschluss %S öffnen. Das ist sicher, wenn Sie der Anwendung vertrauen. + bestehender Tor-Prozess gefunden … + Etwas ist schief gelaufen. Bitte Protokoll prüfen + Versteckte Dienste auf: + Name des versteckten Dienstes kann nicht gelesen werden + Tor kann nicht gestartet werden: + Starten Sie Ihr Gerät neu, Tor konnte nicht zurückgesetzt werden! + Vorgegebene IPtables verwenden + Die vorhandene IPtables-Datei verwenden, anstatt der von Orbot mitgelieferten. + Die Tor-Programmdateien konnten nicht installiert oder aktualisiert werden. + Wenn Orbot verbunden ist immer das Orbot-Symbol in der Statusleiste anzeigen + Aktivitätsanzeige + Erweiterte Benachrichtigung mit Tor-Austrittsland und IP anzeigen + Erweiterte Benachrichtigungen + Brücken aktiviert! + + Sprache + Gebietsschema und Sprache für Orbot auswählen + Sprache auswählen + Voreinstellung beibehalten oder Sprache ändern + betrieben mit Tor + Einstellungen speichern + Keine Internetverbindung; Tor ist in Bereitschaft … + Bandbreite: + runter + hoch + Bereitschaft wenn kein Netz + Tor in Bereitschaft versetzen, wenn kein Internet verfügbar ist + Sie haben zu einer neuen Tor-Identität gewechselt! + Browser + ChatSecure benutzen + Tor verwalten + Diese Anwendung aktivieren, um den Tor-Dienst zu kontrollieren + Es sieht nicht so aus, dass Sie Orfox installiert haben. Wollen Sie dabei Hilfe oder sollen wir einfach den Browser öffnen? + Anwendungen installieren? + Keine Netzwerkverbindung. Tor wird in Bereitschaft versetzt … + Netzwerkverbindung ist vorhanden. Tor wird aktiviert … + Einstellungen im Tor-Dienst werden aktualisiert + Tor SOCKS + Port auf dem der SOCKS-Proxy bereitgestellt wird (Standard: 9050 oder 0 zum deaktivieren) + SOCKS-Portkonfiguration + Tor TransProxy-Port + Port auf dem der Transparente Proxy bereitgestellt wird (Standard: 9040 oder 0 zum deaktivieren) + TransProxy-Portkonfiguration + Tor DNS-Port + Port auf dem DNS bereitgestellt wird (Standard: 5400 oder 0 zum deaktivieren) + DNS-Portkonfiguration + Benutzerdefinierte Torrc-Konfiguration + NUR FÜR EXPERTEN: torrc-Konfigurationszeilen direkt eingeben + Benutzerdefinierte Torrc + Mobile Martus - Benetech-Anwendung zur Menschenrechtsdokumentierung + Ihre öffentlichen IPs für Tor: + Bitte deaktivieren Sie diese Anwendung unter Android->Einstellungen->Anwendungen, falls Sie Probleme mit Orbot haben: + Anwendungskonflikt + Automatische Transproxy-Aktualisierung + Transproxy-Regeln erneut anwenden, wenn sich der Netzwerkstatus ändert + Transproxy ENTFERNEN ERZWINGEN + Hier Tippen, um JETZT alle Transparent-Proxy Netzwerkregeln zu löschen + Transparente Proxy-Regeln geleert! + Sie haben keinen aktivierten Root-Zugang + Sie müssen Tor stoppen und wieder Starten, um die neuen Einstellungen zu übernehmen. + VPN + kbit/s + Mbit/s + KB + MB + Brücken aktualisiert + Bitte Orbot zum Aktivieren der Änderungen neustarten + QR-Codes + 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. + Brückemodus + E-Mail + Netz + Aktivieren + VPN-Modus der Anwendungen + 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. + E-Mail senden + 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. + Orfox installieren + Standard-Browser + HINWEIS: Nur die Standard Tor-Brücken funktionieren mit Intel X86/Atom Geräten + Welt + diff --git a/orbotservice/src/main/res/values-el/strings.xml b/orbotservice/src/main/res/values-el/strings.xml new file mode 100644 index 00000000..30c827c2 --- /dev/null +++ b/orbotservice/src/main/res/values-el/strings.xml @@ -0,0 +1,208 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + εκκίνηση και διακοπή Tor + torproxyservice + Το Orbot ξεκινά + Συνδέθηκε στο δίκτυο Tor + \"Το Orbot είναι Απενεργοποιημένο + Εκκίνηση του πελάτη Tor... + ολοκληρώθηκε... + αναμονή + ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η κυκλοφορία σας δεν είναι ακόμη ανώνυμη! Ρυθμίστε τις εφαρμογές σας ώστε να χρησιμοποιούν ως πληρεξούσιο HTTP 127.0.0.1:8118 ή SOCKS5 127.0.0.1:9050 + Αρχική + Περιήγηση + Ρυθμίσεις + Καταγραφή + Βοήθεια + Εκκίνηση + Διακοπή + Σχετικά + Λήψη (ταχύτητα/σύνολο) + Αποστολή (ταχύτητα/σύνολο) + Βοήθεια + Κλείσιμο + Σχετικά + Διαγραφή Καταγραφής + Έλεγχος + Έξοδος + -για να εκκινήσει κρατήστε το πατημένο- + Διαφανής Πληρεξούσιος Διακομηστής (Απαιτεί διαχείριση root) + Διαφανής Πληρεξούσιος Διακομηστής + Αυτόματη Προσαρμογή Εφαρμογών στο Tor + Ανωνυμοποίηση Όλων + Να γίνεται η μεταβίβαση της κυκλοφορίας όλων των εφαρμογών μέσω του Tor + Θύρα αναδίπλωσης του πληρεξούσιου διακομιστή + ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Παρακάμπτει τις κοινές θύρες (80, 443, κλπ). *ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΜΟΝΟΝ* όταν οι λειτουργίες \'All\' ή \'App\' δεν αποδίδουν. + Λίστα θυρών + Λίστα θυρών πληρεξούσιου διακομιστή. *ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΜΟΝΟΝ* όταν οι λειτουργίες \'All\' ή \'App\' δεν αποδίδουν. + Εισάγετε θύρες πληρεξούσιου διακομιστή + Άιτημα πρόσβασης με δικαιώματα υπερχρήστη + Άιτημα πρόσβασης με δικαιώματα υπερχρήστη για διαφανή μεταβίβαση δεδομένων μέσω πληρεξούσιου διακομιστή + Τα δυαδικά αρχεία του Tor εγκαταστάθηκαν με επιτυχία! + Τα δυαδικά αρχεία του Tor δεν εγκαταστάθηκαν. Ελέγξτε τις καταγραφές και ειδοποιείστε στην διεύθυνση tor-assistants@torproject.org + Σφάλμα εφαρμογής + Orbot + Σχετικά με το Orbot + Επόμενο + Πίσω + Τέλος + Okay + Άκυρο + + Μερικές λεπτομέρειες για το Orbot + Η άδεια παραχωρήθηκε + Άδειες Orbot + Καλώς! Διαπιστώνουμε ότι έχετε ενεργοποιημένο τον υπερχρήστη για το Orbot. Θα χρησιμοποιήσουμε το προνόμιο αυτό με σύνεση. + Αν και δεν είναι απαραίτητο, το Orbot μπορεί να γίνει ισχυρότερο όταν η συσκευή σας έχει διαμορφωθεί για πρόσβαση υπερχρήστη. Πατήστε το πιο κάτω κουμπί για να δώσετε αυξημένα δικαιώματα στο Orbot! + Αν δεν διαθέτετε πρόσβαση υπερχήστη ή δεν καταλαβαίνετε τι εννοούμε, απλώς χρησιμοποιείτε εφαρμογές που φτιάχτηκαν για να συνεργάζονται με το Orbot. + Καταλαβαίνω και θέλω να συνεχίσω ως Υπερχρήστης + Απόδοση Διαχειρισης στο Orbot + Ρύθμιση Torification + Το Orbot σας επιτρέπει να κατευθύνετε όλη την κυκλοφορία κάποιας εφαρμογής προς το Tor ή να επιλέξετε κάθε μια εφαρμογή ξεχωριστά. + Το Tor να γίνει ενδιάμεσος διακομιστής Proxy για όλες τις εφαρμογές + Επιλογή μεμονωμένων εφαρμογών για το Tor + Εφαρμογές συμβατές για Orbont + Οι παρακάτω εφαρμογές αναπτύχθηκαν ώστε να λειτουργούν με το Orbot. Πατήστε σε κάθε κουμπί για να εγκατασταθεί τώρα ή μπορείτε να τις βρείτε αργότερα στο Android Market + ChatSecure - Εφαρμογή ασφαλούς ανταλλαγής άμεσων μηνυμάτων για Android + Ρυθμίσεις proxy: Μάθετε πώς θα ρυθμίσετε τις εφαρμογές ώστε να λειτουργούν με το Orbot + Εφαρμογή Μηχανής Αναζήτησης Duckduckgo + Το Twitter υποστηρίζει http proxy localhost:8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Ρυθμίσεις proxy + Το Orbot είναι έτοιμο! + + Θα ανοίξει ο περιηγητής δικτύου στην σελίδα https://check.torproject.org για να διαπιστώσετε αν το Orbot είναι σωστά ρυθμισμένο και ότι είστε συνδεδεμένος/η στο Tor. + Φιλοξενία κρυφών υπηρεσιών + Γενικά + Έναρξη του Orbot κατά την εκκίνηση + Αυτόματη έναρξη του Orbot και σύνδεση στο Tor όταν ξεκινά η Android συσκευή σας + + + + Προειδοποίηση + + Άδειες + Αν θέλετε, μπορεί να δώσετε στο Orbot πρόσβαση \'Υπερχρήστη\' ώστε να ενεργοποιήσετε τα προχωρημένα χαρακτηριστικά, όπως το Transparent Proxying. + Αν δεν θέλετε κάτι τέτοιο, βεβαιωθείτε ότι χρησιμοποιείτε εφαρμογές που συνεργάζονται με το Orbot + + Εφαρμογές συμβατές με Orbot + ChatSecure: Ασφαλές chat app με Off-the-Record κρυπτογράφηση + Βρες όλες τις εφαρμογές Guardian Project στο Google Play + + Διαφανής μεσολάβηση διακομιστή + Το στοιχείο αυτό επιτρέπει στις εφαρμογές σας να λειτουργούν μέσω του δικτύου Tor χωρίς κάποια ρύθμιση. + (Επιλέξτε αυτό το τετράγωνο αν δεν καταλαβαίνετε για τι πράγμα μιλάμε) + Καμία + Διασύνδεση Tor + Ενεργοποίηση της Διαφανούς μεσολάβησης διακομιστή για συσκευές με WiFi και διασύνδεση USB (απαιτεί επανεκκίνηση) + Αίτημα Πρόσβασης Υπερχρήστη + Επιλογή εφαρμογών + Επιλέξτε τις εφαρμογές που θα διέλθουν μέσω Tor + Ρύθμιση κόμβου + Οι ρυθμίσεις αυτές είναι προχωρημένες και μπορούν να μειώσουν την ανωνυμία σας. + Κόμβοι εισόδου + Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις για την πρώτη σύνδεση + Εισάγετε κόμβους εισαγωγής + Διακομιστής μεσολάβησης εξερχομένων δεδομένων + Τύπος του διακομιστή μεσολάβησης εξερχομένων δεδομένων + Πρωτόκολλο του διακομιστή μεσολάβησης: HTTP, HTTPS, Socks4, Socks5 + Εισάγετε τύπο διακομιστή μεσολάβησης + Διακομιστής μεσολάβησης εξερχόμενων δεδομένων + Hostname Διακομιστή Μεσολάβησης + Εισάγετε τον υπολογιστή για τον διακομιστή μεσολάβησης + Θύρα εξερχομένων του διακομιστή μεσολάβησης + Θύρα Διακομιστή Μεσολάβησης + Εισάγετε την θύρα του διακομιστή μεσολάβησης + Όνομα χρήστη για τον Διακομιστή Μεσολάβησης εξερχόμενων δεδομένων + Όνομα χρήστη για το Διακομιστή Μεσολάβησης (Προαιρετικό) + Εισάγετε το Όνομα Χρήστη για το Διακομιστή Μεσολάβησης + Κωδικός για τον Διακομιστή Μεσολάβησης εξερχόμενων δεδομένων + Κωδικός για τον Διακομιστή Μεσολάβησης (Προαιρετικό) + Εισάγετε τον Κωδικό για τον Διακομιστή Μεσολάβησης + Κατάσταση + Ρύθμιση + Ρύθμιση της διαφανούς μεσολάβησης διακομιστή + Η διαφανής μεσολάβηση διακομιστή ΕΝΕΡΓΟΠΟΙΗΘΗΚΕ + Το TransProxy ενεργοποιήθηκε για την διασύνδεση - Tethering + ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σφάλμα κατά την εκκίνηση της διαφανούς μεσολάβησης διακομιστή! + Οι ρυθμίσεις του TransProxy απομακρύνθηκαν + Αδυναμία εκκίνησης της διεργασίας Tor: + Ρύθμιση της διαφανούς μεσολάβησης διακομιστή κατά θύρα... + Σφάλμα γέφυρας + Για να χρησιμοποιήσετε το στοιχείο γέφυρας, πρέπει να εισάγετε την διεύθυνση ΙΡ τουλάχιστον μιας γέφυρας. + Μέσω ενός λογαριασμού gmai στείλτε ένα μήνυμα στην διεύθυνση bridges@torproject.org με την φαση \"get bridges\" μόνη της στο σώμα το μηνύματος. + Σφάλμα + Οι ρυθμίσεις ReachableAddresses προκάλεσαν μια εξαίρεση! + Οι ρυθμίσεις αναμεταδότη σας προκάλεσαν μια εξαίρεση! + Κόμβοι εξόδου + Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις της τελευταίας σύνδεσης + Εισάγετε κόμβους εξόδου + Εξαιρετέοι κόμβοι + Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις προς εξαίρεση + Εισάγετε Εξαιρετέους κόμβους + Αποκλειστικοί κόμβοι + Χρήση *μόνον* αυτών των συγκεκριμένων κόμβων + Γέφυρες + Χρήση γεφυρών + Κρυφές γέφυρες + Ενεργοποίηση εναλλακτικών κόμβων εισόδου στο δίκτυο Tor + Ενεργοποιήστε το αν οι ρυθμισμένες γέφυρες είναι κρυφές + Διεύθυνση ΙΡ και θύρα των γεφυρών + Εισάγετε την διεύθυνση της γέφυρας + Αναμεταδότες + Γίνεται αναμετάδοση + Μετατρέψτε την συσκευή σας σε ένα αναμεταδότη μη-εξόδου + Θύρα αναμετάδοσης + Θύρα ακρόασης για τον αναμεταδότη σας + Εισάγετε την θύρα OR + Ψευδώνυμο του αναμεταδότη + Το ψευδώνυμο του αναμεταδότη σας Tor + Εισάγετε ένα προτιμώμενο ψευδώνυμο αναμεταδότη + Προσιτές διευθύνσεις + Εκτέλεση ως πελάτη πίσω από τοίχος προστασίας με περιοριστικές πολιτικές + Προσιτές θύρες + Προσιτές θύρες πίσω από περιοριστικό τοίχος προστασίας + Εισάγετε θύρες + Φιλοξενία κρυφών υπηρεσιών + να επιτρέπετε στον διακομιστή της συσκευής να είναι προσβάσιμος μέσω του δικτύου Tor + εισάγετε τις θύρες κρυφών υπηρεσιών του localhost + Θύρες κρυφών υπηρεσιών + το όνομα προσπέλασης για τις κρυφές υπηρεσίες σας (παράγεται αυτόματα) + ενεργοποίηση καταγραφών αποσφαλμάτωσης (για την προβολή τους απαιτείται χρήση adb ή aLogCat) + Ιστοσελίδες του έργου: + Η Άδεια Tor + https://torproject.org + Λογισμικό τρίτων: + Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %S στο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή. + αναζήτηση διεργασιών Tor... + Κάτι κακό συνέβη. Ελέγξτε τις καταγραφές + ενεργοποιημένη κρυφή υπηρεσία: + αδυναμία ανάγνωσης του ονόματος της κρυφής υπηρεσίας + Αδυναμία εκκίνησης του Tor: + Χρήση αρχικού iptables + χρήση του ενσωματωμένου iptables αντί για εκείνων του πακέτου Orbot + Τα αρχεία Tor δεν μπόρεσαν να εγκατασταθούν ή να αναβαθμιστούν. + Να διατηρείται πάντοτε το εικονίδιο στην γραμμή εργαλείων όταν το Orbot συνδέεται + Ειδοποιήσεις διαρκούς σύνδεσης + Οι γέφυρες ενεργοποιήθηκαν! + + Επιλέξτε ρυθμίσεις τοπικότητας και γλώσσας για το Orbot + Επιλέξτε γλώσσα + Παραμείνετε στην αρχική ή αλλάξτε την τρέχουσα γλώσσα + Αποθήκευση ρυθμίσεων + Εύρος ζώνης: + κατέβασμα + ανέβασμα + Χωρίς Αυτόματη Αναστολή Δικτύου + Θέσε το Tor σε λειτουργία sleep όταν δεν υπάρχει διαθέσιμη σύνδεση Ιnternet + Έχετε αλλάξει επιτυχώς την ταυτότητα σας στο Tor! + Χρήση του ChatSecure + Διαχείριση Tor + Εξουσιοδοτήστε την εφαρμογή να ελέγχει την υπηρεσία του Tor + Εγκατάσταση εφαρμογών? + diff --git a/orbotservice/src/main/res/values-en-rGB/strings.xml b/orbotservice/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 00000000..4ddc60d8 --- /dev/null +++ b/orbotservice/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,13 @@ + + + Next + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-eo/strings.xml b/orbotservice/src/main/res/values-eo/strings.xml new file mode 100644 index 00000000..3c103de7 --- /dev/null +++ b/orbotservice/src/main/res/values-eo/strings.xml @@ -0,0 +1,146 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + ŝalti kaj malŝalti Tor + torproxyservice + Orbot ŝaltiĝas... + Konektita al Tor-reto + Orbot estas malaktivigita + Ŝaltiĝas Tor-kliento... + kompleta. + atendas. + 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 + Hejma tasto + Foliumi + Agordoj + Protokolo + Helpo + Starti + Halti + Pri + Elŝutado + Alŝutado + Helpo + Fermi + Pri + Forviŝi protokolon + Kontroli + Eliri + - longe puŝi por ŝalti - + Aŭtomata Tor-igo de Aplikaĵoj + Tor-igu ĉion + Listo de Pordoj + Peti Administrajn Rajtojn + Binara kodo de Tor estas sukcese instalita! + Binaraj dosieroj de Tor ne povis esti instalitaj. Kontrolu protokolon kaj sciigu nin per tor-assistants@torproject.org + Eraro de Aplikaĵo + Orbot + Pri Orbot + Sekva + Malantaŭe + Fini + Rezigni + + Kelkaj Detaloj pri Orbot + Permeso estas Aluĝita + Permesoj de Orbot + Mi komprenas kaj volas daŭri sen administraj rajtoj + Agordi Tor-igon + Elekti Individualajn Aplikaĵojn por Tor + Aplikaĵoj permesitaj por Orbot + ChatSecutre - Sekura tujmesaĝilo por Android + Agordoj de prokurilo - Lernu kiel agordi aplikaĵojn por kunlabori kun Orbot + Agordi prokurilon por Twitter je adreso \"localhost\" kaj pordo 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Retperant‐agordoj + Orbot estas preparita! + + Gastigado de kaŝita servo + Ĝenerala + Ŝalti Orbot dum praŝargado + Aŭtomate startigi Orbot kaj konekti al Tor dum praŝargado de via Androida ilo + + + + Averto + + Permesoj + Se vi ne volas fari tion, bonvolu certiĝi ke eblas agordi aplikaĵojn por kunlabori kun Orbot + + Aplikaĵoj permesitaj por Orbot + Trovu ĉiujn aplikaĵojn de Guardian Project ĉe Google Play + + (Marku ĉi tiun butonon se vi ne scias pri kio ni parolas) + Neniom + Tor Tethering + Peti Administrajn Rajtojn + Elekti aplikaĵojn + Agordo de Nodoj + Tie troviĝas progresintaj agordoj kiuj povas limigi vian anonimecon + Eniraj nodoj + Fingrospuroj, kaŝnomoj, landoj kaj adresoj por la unua hopo + Entajpu enirajn nodojn + Elira prokurilo (Malnepra) + Tipo de elira prokurilo + Protokolo uzata de la prokurilo: HTTP, HTTPS, Socks4, Socks5 + Entajpu tipon de la prokurilo + Adreso de la elira prokurilo + Adresnomo de la prokurilo + Entajpu adreson + Pordo de la elira prokurilo + Pordo de la Prokurservilo + Entajpu la pordon + Uzantnomo de la elira prokurilo + Uzantnomo de la prokurilo (Malnepra) + Entajpu uzantnomon + Pasvorto de la elira prokurilo + Pasvorto de la prokurilo (Malnepra) + Entajpu pasvorton + Stato + Tor-procedo ne sukcesis stariĝi: + Eraro de Ponto + Eraro + Via agordo de relajso kaŭzis escepton! + Finnodoj + Fingrospuroj, kaŝnomoj, landoj kaj adresoj por la lasta hopo + Entajpu finnofojn + Uzi *nur* tiujn ĉi nodojn + Pontoj + Uzi Pontojn + IP-adresoj kaj pordoj de pontoj + Entajpu OR-pordon + Kaŝnomo de la relajso + Kaŝnomo por via Tor-relajso + Entajpu propran kaŝnomon de la relajso + Atingeblaj adresoj + Startigi kiel kliento malantaŭ fajromuro kun restriktaj reguloj + Atingeblaj pordoj + Pordoj, kiuj atingeblas tra la restrikta fajromuro + Entajpu pordojn + Gastigado de Kaŝitaj Servoj + permesi al servilo sur ĉi tiu aparato esti atingebla per Tor-reto + entajpi localhost-pordojn de kaŝitaj servoj + Pordoj de Kaŝitaj Servoj + adreso de via kaŝita servo (aŭtomate generata) + Retpaĝaro(j) de la Projekto: + The Tor License + https://torproject.org + trovi ekzistantan Tor-procedon... + kaŝitaj servoj je: + ne eblas legi nomon de la kaŝita servo + Ne eblas startigi Tor: + Uzi defaŭltajn Iptables + + Elekti lokaĵaron kaj lingvon por Orbot + Elekti lingvon + Konservi Agordojn + Kapacito: + el + al + Uzi ChatSecure + Instali aplikaĵojn? + diff --git a/orbotservice/src/main/res/values-es-rAR/strings.xml b/orbotservice/src/main/res/values-es-rAR/strings.xml new file mode 100644 index 00000000..b921a402 --- /dev/null +++ b/orbotservice/src/main/res/values-es-rAR/strings.xml @@ -0,0 +1,69 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + reiniciar Tor + torproxyservice + Orbot está iniciándose... + Conectado a la red Tor + \"Orbot está Desactivado + Iniciando el cliente Tor... + Completar + esperando... + 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 + Inicio + Navegar + Configuración + Registro + Ayuda + Iniciar + Detener + Acerca de + Descargar + Subir + Ayuda + Cerrar + Acerca de + Borrar Registros + Chequear + Salir + Proxying Transparente (Requiere Root) + Proxying Transparente + Torificación Automática de Aplicaciones + Torear Todo + Los archivos binarios Tor no pudieron ser instalado. Compruebe el registro y notificar a tor-assistants@torproject.org + Error de la aplicación + Orbot + Acerca de Orbot + Siguiente + Atrás + Finalizar + Ok + Cancelar + + Algunos detalles de Orbot + Orbot está listo! + + General + + + + + + + Proxying Transparente + Ingrese contraseña Proxy + Ingresar puertos + La Licencia de Tor + https://torproject.org + No se puede iniciar Tor: + + Elegir el lenguaje + Guardar configuración + Ancho de banda: + Usar ChatSecure + Instalar apps? + diff --git a/orbotservice/src/main/res/values-es/strings.xml b/orbotservice/src/main/res/values-es/strings.xml new file mode 100644 index 00000000..15c5d59c --- /dev/null +++ b/orbotservice/src/main/res/values-es/strings.xml @@ -0,0 +1,294 @@ + + + Orbot + 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. + http://orbot/ + https://check.torproject.org/?lang=es + https://check.torproject.org/?lang=es + https://check.torproject.org/?TorButton=true + iniciar y detener Tor + torproxyservice + Orbot está iniciandose... + Conectado a la red Tor + Orbot está desactivado + TorService se está cerrando + Iniciando cliente Tor... + completado. + en espera. + 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) + Principal + Examinar + Configuración + Registro (log) + Ayuda + VPN + Iniciar + Detener + Acerca de + Obtener aplicaciones... + Descarga + Subida + Ayuda + Cerrar + Acerca de + Limpiar registro (log) + Verificar + Salir + Escanear QR de bridge + Compartir QR de bridge + - mantega pulsado para iniciar - + Proxyficación transparente (requiere root) + Proxyficación transparente + Torificado automático de aplicaciones + Torificar todo + Proxyfica vía Tor el tráfico de todas las aplicaciones sin configurarlas + Puertos a proxyficar para contingencias + ADVERTENCIA: Evita puertos comunes (80, 443, etc). *USAR SÓLO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan. + Lista de puertos + Lista de puertos a proxyficar. *USAR SÓLO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan + Introduzca los puertos a proxyficar + Solicitar permisos de root + Solicita permisos de root para usar proxyficación transparente + ¡Los binarios de Tor se instalaron con éxito! + Los archivos binarios de Tor no pudieron ser instalados. Revise el registro (log) y notifique a tor-assistants@torproject.org + Error de la aplicación + Orbot + Acerca de Orbot + Siguiente + Atrás + Finalizar + Aceptar + Cancelar + + Algunos detalles de Orbot + 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. + Permiso concedido + Permisos de Orbot + ¡Excelente! Hemos detectado que ha concedido a Orbot permisos de root. Utilizaremos estos poderes sabiamente. + 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! + 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). + Comprendo, y quiero continuar sin poderes administrativos + Conceder permisos de root a Orbot + Configurar torificación + 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. + Proxyficar todas la aplicaciones a través de Tor + Seleccionar aplicaciones individuales para Tor + Aplicaciones habilitadas para Orbot + 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 + ChatSecure - Cliente de mensajería instantánea segura para Android + Preferencias para proxy - aprenda cómo configurar aplicaciones para que trabajen con Orbot + Aplicación del motor de búsqueda DuckDuckGo + Configure por proxy la aplicación de Twitter en localhost:8118 + StoryMaker - ¡Elabore una historia y déjesela a Tor por seguridad! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Preferencias para proxy + 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 + ¡Orbot está listo! + 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! + ¡Por favor, configure Orbot antes para poder comenzar a usarlo! + + 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@guardianproject.info para conocer más. + Esto abrirá https://check.torproject.org/?lang=es en su navegador predeterminado para comprobar que Orbot esté configurado y que esté conectado a Tor. + Alojamiento de servicios ocultos (dentro de la red Tor) + General + Iniciar Orbot en el arranque + Inicia Orbot y conecta a Tor automáticamente cuando arranca su dispositivo Android + + + ¡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. + + Advertencia + 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. + + Permisos + Opcionalmente puede conceder permisos de \'Superusuario\' a Orbot para habilitar las características avanzadas, como la proxyficación transparente. + Si no desea hacer esto, asegúrese de utilizar aplicaciones específicamente preparadas para trabajar con Orbot (o configurables para ello) + 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. + + Aplicaciones habilitadas para Orbot + ChatSecure: Aplicación de chat segura con cifrado Off-The-Record (OTR) + Orfox: Navegador con privacidad mejorada que funciona a través de Tor + Descubre todas las aplicaciones de Guardian Project en Google Play + Encontrará todas las aplicaciones del Guardian Project en F-Droid + Encontrará todas las aplicaciones del Guardian Project en https://f-droid.org + + Proxyficación transparente + Permite que sus aplicaciones se ejecuten automáticamente a través de la red Tor sin realizar configuración alguna. + (Marque esta casilla si no tiene idea de qué estamos hablando) + Ninguno + Tor tethering + 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) + Solicitar permisos de superusuario + Seleccionar aplicaciones + Escoja las aplicaciones a redirigir través de Tor + Configuración de nodos + ¡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. + Nodos de entrada + 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. + Introduzca nodos de entrada + Permitir inicios en segundo plano + Deja que cualquier aplicación le diga a Orbot que inicie Tor y servicios relacionados + Proxyficar todo + No proxyficar nada + Invertir selección + Proxy de salida a la red (opcional) + Tipo de proxy saliente + Protocolo a usar para el servidor proxy saliente: HTTP, HTTPS, Socks4, Socks5. + Introduzca tipo de proxy + Servidor proxy saliente + Nombre del servidor proxy + Introduzca el servidor proxy + Puerto del proxy saliente + Puerto del servidor proxy + Introduzca el puerto del proxy + Nombre de usuario en el proxy de salida + Nombre de usuario en el proxy (opcional) + Introduzca nombre de usuario en el proxy + Contraseña en el proxy de salida + Contraseña en el proxy (opcional) + Introduzca contraseña en el proxy + Estado + Estableciendo proxyficación transparente completa... + Estableciendo proxyficación transparente por aplicaciones... + Proxyficación transparente ACTIVADA + ¡TransProxy (proxyficación transparente) habilitado para tethering (pasarela)! + ADVERTENCIA: ¡Error al iniciar la proxyficación transparente! + Reglas de TransProxy (proxyficación transparente) borradas + No se pudo iniciar el proceso de Tor: + Polipo se está ejecutando en el puerto: + Estableciendo proxyficación transparente por puertos... + Error de bridge (repetidor puente) + 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. + Envíe un correo a bridges@torproject.org 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) + Error + ¡Sus \'Reglas de direcciones accesibles\' han producido una excepción! + ¡La configuración de su repetidor ha producido una excepción! + Nodos de salida + 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) + Introduzca repetidores de salida + Excluír nodos + 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) + Introduzca repetidores a evitar + Hacer estricta la exclusión de nodos (incluso si falla la comunicación) + Usar *sólo* estos nodos especificados + Bridges (repetidores puente) + Usar bridges + Bridges ofuscados (contra análisis DPI del tráfico) + Habilita nodos alternativos de entrada a la red Tor, de publicitación restringida. Prevalece sobre \'Nodos de entrada\' + 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) + Direcciones IP y puertos de los bridges + Introduzca direcciones de bridge + Repetidores + Repetición de tráfico + Habilitar que su dispositivo no sea repetidor de salida (de la red Tor) + Puerto de repetidor + Puerto de escucha para su repetidor Tor + Introduzca puerto OR (Onion Routing, repositorio de repetidores) + Alias del repetidor + El apodo que identificará a su repetidor en la red Tor + Introduzca un alias personalizado para su repetidor + Reglas de direcciones accesibles ([accept(*)|reject] IP:port, etc.) + Ejecutar Tor como sólo cliente detrás de un cortafuegos (firewall) con políticas restrictivas + Puertos accesibles + Puertos accesibles detrás de un firewall restrictivo (80 y 443 por defecto) + Introduzca puertos + Activar alojamiento de servicios ocultos (en la red Tor) + Permite el acceso a servidores ocultos por dispositivo (IP oculta al usuario) accesibles a través de la red Tor (dominio .onion, sin DNS) + Introduzca los puertos locales de sus servicios ocultos + Puertos de los servicios ocultos + El nombre direccionable (sin DNS, .onion generado automáticamente) para su servicio oculto + Habilitar el registro de depuración (debug log) a la salida (debe utilizar adb o aLogCat para verlo) + Página(s) principal(es) del proyecto: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Licencia de Tor + https://torproject.org + Software de terceras partes + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + 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. + Se encontró un proceso de Tor ya existente... + Hubo algún tipo de problema. Compruebe el registro (log) + Servicio oculto en: + No fue posible leer el nombre del servicio oculto + No fue posible iniciar Tor: + ¡Reinicie su dispositivo, no se pudo reiniciar Tor! + Usar el Iptables por defecto + Usa el binario de Iptables del sistema en lugar del incluído en el paquete de Orbot + No fue posible instalar o actualizar los binarios de Tor. + Mantener siempre el icono de Orbot en la barra de tareas cuando esté conectado + Notificaciones siempre activadas + Mostrar notificación expandida con el país de salida de Tor y la IP + Notificaciones expandidas + ¡Bridges habilitados! + + Idioma + Elija la configuración regional y el idioma para Orbot + Escoja idioma + Deje el predeterminado o cambie de idioma + impulsado por Tor + Guardar configuración + Sin conexión a Internet; Tor está en suspensión... + Ancho de banda: + bajada + subida + Sin suspensión-automática de la red + Ponga Tor en suspensión cuando no haya Internet disponible + ¡Ha cambiado a una nueva identidad de Tor! + Navegador + Usar ChatSecure + Administrar Tor + Habilita esta aplicación para controlar el servicio Tor + No parece que tenga Orfox instalado. ¿Quiere ayuda con eso, o simplemente debemos abrir el navegador? + ¿Instalar aplicaciones? + No hay conectividad de red. Poniendo a Tor a dormir... + La conectividad de red es buena. Despertando a Tor... + actualizando la configuración en el servicio Tor + SOCKS de Tor + Puerto sobre el que Tor ofrece su proxy SOCKS (por defecto: 9050 o 0 para deshabilitarlo) + Configuración del puerto SOCKS + Puerto de TransProxy de Tor + Puerto sobre el que Tor ofrece su Proxy Transparente (por defecto: 9040 o 0 para deshabilitarlo) + Configuración del puerto de TransProxy + Puerto DNS de Tor + Puerto sobre el que Tor ofrece su DNS (por defecto: 5400 o 0 para deshabilitarlo) + Configuración del puerto DNS + Configuración personalizada de torrc + SÓLO EXPERTOS: Introduzca directamente las líneas de configuración en el fichero torrc + torrc personalizado + Martus Móvil - Aplicación de documentación de derechos humanos de Benetech + Las IPs públicas de su Tor: + Por favor, deshabilite esta aplicación en Android->Configuración->Aplicaciones si está teniendo problemas con Orbot: + Conflicto de la aplicación + Auto-refresco de transproxy + Reaplica las reglas de transproxy cuando el estado de la red cambia + Transproxy FORZAR ELIMINACIÓN + Pulse aquí para desechar AHORA todas las reglas de red de transproxy + ¡Reglas de proxy transparente desechadas! + No tiene habilitado el acceso como ROOT + Puede que tenga que detener e iniciar Orbot para que el cambio de configuración se habilite. + VPN + kbps + mbps + KB + MB + Bridges actualizados + Por favor, reinicie Orbot para habilitar los cambios + Códigos QR + 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. + Modo bridge + Correo electrónico + Página web + Activar + Aplicaciones en modo VPN + 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. + Enviar correo + 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. + Instalar Orfox + Navegador estándar + NOTA: Sólo los repetidores puente (bridges) estándar de Tor funcionan en dispositivos Intel X86/ATOM + Mundo + diff --git a/orbotservice/src/main/res/values-et/strings.xml b/orbotservice/src/main/res/values-et/strings.xml new file mode 100644 index 00000000..9ef3be46 --- /dev/null +++ b/orbotservice/src/main/res/values-et/strings.xml @@ -0,0 +1,210 @@ + + + Orbot + http://orbot/ + http://check.torproject.orghttp://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + käivita ja peata Tor + torproxyteenus + Orbot käivitub... + Ühendatud Tor võrgustikku + Orbot deaktiveeritud + Tor kliendi käivitamine... + valmis. + ootel. + 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 + Kodu + Sirvi + Seaded + Logi + Abi + Start + Stopp + Lähemalt + Lae alla + Lae üles + Abi + Sulge + Lähemalt + Nulli logi + Kontrolli + Välja + - pikk vajutus alustamiseks - + Läbipaistev proxy (Nõuab Root õigusi) + Läbipaistev proxy + Rakenduste automaatne Torifitseerimine + Kõik läbi Tor\'i + Proxy kõikide reakenduste liiklus läbi Tor\'i + Pordiproxy reserv + HOIATUS: Väldib tavaporte (80, 443, jne). *KASUTAGE AINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta. + Portide loend + Proxy portide loend. *KASUTAGE SINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta + Sisestage pordid mida proxy\'da + Nõua root juurdepääsu + Nõua läbipaistva proxy jaoks root juurdepääsu + Tor binaarid edukalt paigaldatud! + Tor binaarfailide paigaldamine ebaõnnestus. Palun kontrollige logi ja teavitage tor-assistants@torproject.org + Rakenduse Viga + Orbot + Lähemalt Orbot\'ist + Edasi + Tagasi + Lõpeta + Hea küll + Katkesta + + Mõned Orbot\'i detailid + Luba Antud + Orbot õigused + Vinge! Leidsime et teie seadmes on Orbot\'ile lubatud root õigused. Lubame kasutada seda väge arukalt. + 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! + 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. + Saan aru ja jätkan ilma Superkasutajata + Luba Orbotile Root õigused + Seadista Torifitseerimine + Orbot võimaldab juhtida kõigi rakenduste liikluse läbi Tor\'i VÕI valida need rakendused individuaalselt. + Proxy kõik rakendused läbi Tor\'i + Valige Tor\'i jaoks individuaalsed rakendused + Orbot-lubatud rakendused + 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. + ChatSecure - Turvaline kiirsõnumiklient Androidile + Proxy seaded - Õpi kuidas seadistada rakendusi töötama koos Orbot\'iga + DuckDuckGo otsingumootori rakendus + Seadistage Twitteri proxy server \"localhost\" ja port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxyseaded + Orbot on valmis! + + See avab teie veebisivikus lehe https://check.torproject.org mille kaudu saate näha kas Orbot on ehk seadistatud ja olete ühenduses Tor\'iga. + Peidetud Teenuste Majutus + Üldist + Käivita Orbot seadme käivitumisel + Automaatne Orbot käivitumine ja Tor külge ühendumine seadme käivitumisel + + + + Hoiatus + + Load + Võite Orbot\'ile lubada \'Superkasutaja\' juurdepääsu selleks et võimaldada rohkem võimalusi, nagu näiteks Läbipaistev Proxy. + Kui te ei soovi seda teha, siis palun kindlustage et kasutate ainult rakendusi mis on seadistatud töötama koos Orbot\'iga + + Orbot\'ile mõeldud rakendused + ChatSecure: Turvaline vestlusrakendus Off-the-Record krüptoga + Kõik Guardian Project rakendused on leitavad ka Google Play kaudu + + Läbipaistev Proxy + Saate kõik rakendused suunata iseeneslikult Tor kaudu, lisaseadistusteta. + (Klikkige sellele kastile kui teil pole õrna aimugi millest jutt käib) + Puudub + Tor lõastamine + Luba Tor Läbipaistev Proxy WiFi ja USB lõastatud seadmetele (vajab uuestilaadimist) + Nõua Superkasutaja Juurdepääsu + Vali Rakendused + Vali läbi Tor suunatavad rakendused + Sõlme seadistamine + Need on seadistused edasijõudnutele ja võivad vähendada teie anonüümsust + Sisendsõlmed + Sõrmejäljed, hüüdnimed, riigid ja aadressid esimese hüppe jaoks + Sisestage sisendsõlmed + Väljuva võrgu proxy (Valikuline) + Väljuva proxy tüüp + Proxy serveri kasutamise protokoll: HTTP, HTTPS, Socks4, Socks5 + Sisestage proxy tüüp + Väljuva proxy seade + Proxyserveri seadmenimi + Sisestage proxy seade + Väljuva proxy port + Proxyserveri port + Sisestage proxy port + Väljuva proxy kasutajanimi + Proxy kasutajanimi (Valikuline) + Sisestage proxy kasutajanimi + Väljuva proxy salasõna + Proxy salasõna (Valikuline) + Sisestage proxy salasõna + Olek + Täisläbipaistva proxy seadistamine... + Rakenduspõhise läbipaistva proxy seadistamine... + Läbipaistev proxy LUBATUD + LäbivProxy lõastamine lubatud! + Hoiatus: viga läbipaistva proxy käivitamisel! + LäbivProxy seaded nullitud + Tor protsessi käivitamine ebaõnnestus: + Pordipõhise läbipaistva proxy seadistamine... + Silla viga + Silla võimaluse kasutamiseks peate sisestama vähemalt ühe silla IP aadressi. + Saatke e-kiri oma gmail kontolt aadressile bridges@torproject.org mis sisaldab ainult ühte rida \"get bridges\". + Viga + Teie ReachableAddresses seadistus põhjustas ekse! + Teie releeseadistus põhjustas ekse! + Väljundsõlmed + Sõrmejäljed, hüüdnimed, riigid ja aadressid viimase hüppe jaoks + Sisestage väljundsõlmed + Välistatud sõlmed + Sõrmejäljed, hüüdnimed, riigid ja aadressid mida välistada + Sisestage välistatavad sõlmed + Kindlad sõlmed + Kasuta *ainult* neid märgitud sõlmi + Sillad + Kasuta sildu + Varjatud sillad + Luba Tor võrgustiku alternatiivseid sisendsõlmi + Luba siis kui seadistatud sillad on varjatud sillad + Sildade IP aadressid ja pordinumbrid + Sisestage silla aadressid + Edastajad + Edastamine + Luba oma seadmel hakata mitte-väljund edastajaks + Edastusport + Port mida teie Tor edastaja kuulab + Kas Enter VÕI port + Edastaja hüüdnimi + Teie Tor edastaja hüüdnimi + Sisestage edastaja kohandatud hüüdnimi + Juurdepääsetavad aadressid + Käivita kui piirava poliitikaga tulemüüri taga asuvat klienti. + Juurdepääsetavad pordid + Piirava poliitikaga tulemüüris avatud pordid + Sisestage pordid + Varjatud teenuste majutamine + luba üle Tor võrgustiku juurdepääs seadmes töötavale serverile + sisestage varjatud teenuste localhost pordid + Varjatud teenuste pordid + teie varjatud teenuste adresseeritav nimi (luuakse automaatselt) + lubage väljastatav silumislogi (vaatamiseks peab kasutama kas adb või aLogCat utiliite) + Projekti kodu(d): + Tor litsents + https://torproject.org + Kolmanda osapoole tarkvara: + Üks rakendus soovib avada varjatud teenuse porti %S Tor võrgustikule. See on turvaline kui te usaldate seda rakendust. + leidus töötav Tor protsess... + Juhtus midagi halba. Kontrollige logi + varjatud teenused: + ei õnnestu lugeda varjatud teenuse nime + Tor käivitamine ebaõnnestus: + Kasuta iptables vaikeseadeid + kasuta Orbot\'iga kaasneva iptables binaari asemel süsteemset binaari + Tor binaaride paigaldamine või uuendamine ebaõnnestus. + Ühendatud Orbot korral näidata katkematult ikoonide tööriistariba + Pidevalt kuvatavad teated + Sillad lubatud! + + Valige Orbot lokaat ja keel + Valige keel + Jätkake vaikeväärtusega või vahetage kehtiv keel + Salvesta seaded + Ribalaius: + alla + üles + Pole võrgu auto-und + Pane Tor magama kui Internetiühendus puudub + Lülitusite uuele Tor identiteedile! + Kasutage ChatSecure\'t + Hallake Tor\'i + Lubage sellel rakendusel hallata Tor teenust + Paigaldada rakendusi? + Interneti ühendus puudub. Panen Tori magama... + Interneti ühendus hea. Äratan Tori üles... + diff --git a/orbotservice/src/main/res/values-eu/strings.xml b/orbotservice/src/main/res/values-eu/strings.xml new file mode 100644 index 00000000..198c6121 --- /dev/null +++ b/orbotservice/src/main/res/values-eu/strings.xml @@ -0,0 +1,218 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Tor abiarazi eta gelditu + torproxyservice + Orbot abiarazten ari da... + Tor sarera konektatuta + \"Orbot desaktibatuta dago + Tor bezeroa hasten... + eginda. + itxaroten. + 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 + Etxea + Arakatu + Ezarpenak + Saioa hasi + Laguntza + Abiarazi + Gelditu + Honi buruz + Deskargatu + Igo + Laguntza + Itxi + Honi buruz + Zerrenda Garbitu + Egiaztatu + Irten + - sakatu luze hasteko - + Proxyatze Gardena (Root behar du) + Proxyatze Gardena + Aplikazioen Torifikatze Automatikoa + Tor-tu Dena + Aplikazio guztien trafikoa Tor bidez proxyatu + Azken aukerako proxy portuak + KONTUZ: Ohizko portuak sahiezten ditu (80, 443, etab.) *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil. + Portu Zerrenda + Proxyak baimenduko dituen portuak. *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil + Sartu proxyatzeko portuak + Root sarrera eskatu + Root sarrera eskatu proxyatze gardenarentzat + Tor bitarrak zuzen instalatuta! + Tor fitxategi bitarrak ezin izan dira instalatu. Mesedez ikusi erregistroa eta jakinarazi tor-assistants@torproject.org + Aplikazio Akatsa + Orbot + Orboti buruz + Hurrengoa + Atzera + Amaitu + Ados + Utzi + + Orbot xehetasun batzuk + Baimena Emanda + Orbot Baimenak + Bikain! Orbotentzako root baimenak gaituta dituzula detektatu dugu. + Beharrezkoa ez den arren, Orbot tresna ahaltsuagoa bihurtu daiteke zure gailuak root atzipena badu. Erabili beheko botoia Orboteri superbotereak emateko! + Root atzipenik ez baduzu edo zertaz ari garen ez badakizu, ziurtatu zire appak Orbotekin lan egiteko konfiguratzen dituzula. + Ulertzen dut eta supererabiltzaile gabe jarraitu nahiko nuke + Root Orboti eman + Torifikazioa Konfiguratu + Orbotek zure aplikazio guztien EDO banan-banan hautatutako aplikazioen trafiko guztia Tor bidez bideratzeko aukera ematen dizu. + Aplikazio guztiak Tor bidez proxyatu + Hautatu Banakako Aplikazioak Torentzat + Orbot-gaitutako Aplikazioak + 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. + ChatSecure - Andriodentzako berehalako mezulari bezero ziurra + Proxy Ezarpenak - Ikasi zure aplikazioak Orbotekin funtziona dezaten nola konfiguratu + DuckDuckGo Bilaketa Motorraren appa + Twittereko proxyaren ostalarian \"localhost\" jarri eta portuan 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy Ezarpenak + Orbot prest dago! + + Honek https://check.torproject.org web nabigatzailean irekiko du Orbot konfiguratuta eta Tor-era konektatuta zauden antzemateko. + Ezkutuko Zerbitzuak + Orokorra + Hasi Orbot Abiarazterakoan + Automatikoki Orbot hasi eta Tor konektatu zure Android gailua abiarazterakoan + + + + Abisua + + Baimenak + Aukera moduan Orbot-i \'Supererabiltzaile\' atzipena eman ahal diozu ezaugarri aurreratuak erabiltzeko, Proxy gardena adibidez. + Ez baduzu hau egin nahi ziurtatu Orbot-ekin lan egiten duten aplikazioak erabiltzen dituzula. + + Orbot-Gaitutako Aplikazioak + ChatSecure: Txat aplikazio segurua Off-the-Record enkriptazioarekin. + Google Play-n Guardiak Proiektuko aplikazio guztiak bilatu + + Proxyatze Gardena + Honek zure aplikazioak konfiguratu beharrik Tor saretik joatea ahalbidetzen du. + (Gaituta utzi zertaz ari garez ulertzen ez baduzu) + Bat ere ez + Tor Tethering + Gaitu proxy gardena Wifi eta USB bidez Tethering-atutako gailuentzat (berrabiaraztea beharrezkoa) + Supererabiltzaile sarrera eskatu + Aplikazioak hautatu + Tor bidez bideratuko diren aplikazioak hautatu + Nodo Konfigurazioa + Hauek zure anonimotasuna murriztu dezaketen ezarpen aurreratuak dira + Sarrera Nodoak + Lehen jauzirako hatzmarka, ezizen, herrialde eta helbideak + Sartu Sarrera Nodoak + Irteera sareko proxya (Aukerazkoa) + Proxy mota + Proxy zerbitzariarentzako erabiltzeko protokoloak: HTTP, HTTPS, Socks4, Socks5 + Sartu Proxy Mota + Proxy Ostalaria + Proxy zerbitzariaren helbidea + Sartu Proxy Ostalaria + Proxy Portua + Proxy zerbitzariaren portua + Sartu Proxy portua + Irteerako proxyaren erabiltzaile izena + Proxy erabiltzaile izena (Aukerazkoa) + Sartu proxy erabiltzailea + Irteerako proxyaren pasahitza + Proxy pasahitza (Aukerazkoa) + Sartu proxy pasahitza + Egoera + Guztientzako proxy gardena martxan ezartzen... + Aplikazioetan oinarritutako proxy transparentea ezartzen... + Proxyatze gardena GAITUTA + Proxy gardena gaituta Tethering-ean! + ABISUA: akatsa proxyatze gardena hasterakoan! + Proxy gardeneko erregelak garbituta + Ezin izan da Tor prozesua hasi: + Portuetan oinarritutako proxy gardena ezartzen... + Zubi Akatsa + Zubi ezaiugarria erabiltzeko gutxienez zubi baten IP helbidea sartu behar duzu. + Gmail kontutik bridges@torproject.org helbidera eposta bat bidali gorputzean \"get bridges\" lerroa duena. + Akatsa + Zure helbide atzigarriak salbuespena sortu du! + Zure errele ezarpenak salbuespena sortu dute! + Irteera Nodoak + Hatzmarkak, ezizenak, herrialdeak eta helbideak azkeneko jauzirako + Irteera Nodoak sartu + Nodoak baztertu + Baztertuko diren hatzmarkak, ezizenak, herrialdeak eta helbideak + Baztertzeko nodoak sartu + Nodo hertsiak + *Bakarrik* zehaztutako nodo hauek erabili + Zubiak + Zubiak erabili + Nahasitako Zubiak + Tor sarera sartzeko nodo alternatiboak gaitu + Gaitu konfiguratutako zubiak nahasitako zubiak badira + IP helbidea eta zubien portua + Sartu Zubi Helbideak + Erreleak + Erreleatzea + Zure gailua ez-irteerako errelea izatea gaitu + Errele Portua + Zure Tor errelearentzako entzuteko portua + Sartu OR portua + Errele ezizena + Zure Tor errelearen ezizena + Sartu gustoko errelearen ezizena + Helbide atzigarriak + Suheziaren atzean exekutatu politika murriztaileekin + Portu atzigarriak + Suhezi murriztailetik atzigarri diren portuak + Portuak sartu + Ezkutuko Zerbitzuak Gaitu + gailuko zerbitzuak Tor saretik atzitzea gaitu + sartu localhost portuak ezkutuko zerbitzuentzat + Ezkutuko Zerbitzu Portuak + zure eskutuko zerbitzuaren izen atzigarria (automatikoki sortuta) + arazketarako logak gaitu (adb edo aLogCat erabili ikusteko) + Proiektuaren etxea(k): + Tor Lizentzia + https://torproject.org + 3.-Ataleko-Softwarea: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Aplikazio batek ezkutuko zerbitzariko %S portua ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara. + Aurreko Tor prozesua topatuta... + Zerbait txarra gertatu da. Begiratu logetan + ezkutuko zerbitzua hemen: + ezkutuko zerbitzuare izena ezin da irakurri + Ezin izan da Tor hasi: + Lehenetsitako Iptables erabili + Sistemako iptables programa erabili Orbot-ekin datorreraren ordez + Tor programak ezin izan dira instalatu edo eguneratu. + Orbot konektatuta dagoenean ikonoa tresna barran mantendu beti + Jakinarazpenetan beti + Zubiak gaituta! + + Aukeratu Orbotentzako lokala eta hizkuntza + Hizkuntza aukeratu + Lehenetsia utzi edo uneko hizkuntzara aldatu + Tor-ek eskainita + Ezarpenak gorde + Ez dago Interneterako konexiorik; Tor egonean dago... + Banda zabalera: + behera + gora + Sareko lokartze automatikorik ez + Jarri Tor lotan internet atzigarri ez dagoenean + ChatSecure - Andriodentzako berehalako mezulari bezero ziurra + ChatSecure erabili + Tor kudeatu + Gaitu app hau Tor zerbitzua kontrolatzeko + App-ak instalatu? + KB + MB + QR Kodeak + Nabigatzaile Estandarra + diff --git a/orbotservice/src/main/res/values-fa/strings.xml b/orbotservice/src/main/res/values-fa/strings.xml new file mode 100644 index 00000000..b70cc0f1 --- /dev/null +++ b/orbotservice/src/main/res/values-fa/strings.xml @@ -0,0 +1,292 @@ + + + ربات پیازی + اربت یک برنامه پروکسی مجانی است که دیگر برنامه ها را به استفاده امن از اینترنت توانمند می کند . اربوت از تور برای رمزگذاری کردن ترافیک اینترنت شما استفاده می کند و بعد آن ها را از طریق کامپیوترهای متفاوت در نقاط مختلف جهان مخفی می کند. تور یک برنامه مجانی و شبکه باز است که شما از شما در مقابل تحت نظر بودن در شبکه٬‌ تهدید آزادی های شخصی٬ خصوصی٬ فعالیت های کاری و رابطه های شخصی بطور امن محافظت می کند. + https://guardianproject.info/apps/orbot/ + https://check.torproject.org/?lang=fa_IR + https://check.torproject.org/?lang=fa_IR + https://check.torproject.org/?TorButton=true + شروع و پایان تور + سرويس پروکسی تور + اربوت درحال آغاز است... + متصل به شبکه تور + اربوت غیرفعال شده است. + TorService خاموش است + شروع کلاینت تور... + تمام. + در حال انتظار. + هشدار: فعالیت شما هنوز \"گمنام\" نیست! لطفن اپلیکیشن خود را تنظیم کنید تا از HTTP پروکسی 127.0.0.1:8118 و یا SOCKS4A و یا SOCKS5 پروکسی 127.0.01:9050 استفاده کند. + خانه + مرور + تنظیمات + ورود + کمک + وی پی ان + آغاز + ایست + درباره + دریافت برنامه ها ... + دانلود + آپلود + کمک + بسته + درباره + پاکسازی ورد + بررسی + خروج + اسکن BridgeQR + اشتراک BridgeQR + - نگهدارید برای شروع - + پروکسیدن شفاف (نیاز به Root دارد) + پروکسی شفاف + تور-نمایی اتوماتیک اپلیکیشن ها + تور همه چیز + فعالیت همه اپلیکیشن ها را از طریق تور پروکسی کنید. + قطع پروکسی پورت + هشدار: پورتهای رایج دور زدن (80, 444, غیره). *فقط در شرایطی استفاده کنید* که حالت های \'همه\' یا \'اپلیکیشن\' کار نمیکند. + فهرست پورت + فهرست پرتها به پروکسی.*فقط در شرایطی استفاده کنید* که حالت های \'همه\' یا \'اپلیکیشن\' کار نمیکند. + پورت ها را به پروکسی وارد کن + درخواست دسترسی root + درخواست دسترسی رون برای پروکسی کردن شفاف + باینری های تور با موفقیت نصب شدند! + نصب فایل های دوتایی تور ممکن نبود. لطفن قطعه را وارسی کنید و به tor-assistance@torproject.org اطلاع دهید. + خطای اپلیکیشین + اوربوت + درباره اوربوت + بعدی + بازگشت + پایان + قبول + لغو + + برخی جزییات درباره اوربوت + اربت یک برنامه زبان باز است که شامل Tor, LibEvent and Polipo می شود و وظیفه آن ارائه local HTTP proxy (8118) و SOCKS proxy (9050) به شبکه تور است. همچنین اربت این قابلیت را در دستگاه های ریشه دار دارد که می تواند ترافیک اینترنت را از طریق تور ارسال کند. + مجوز صادر گردید + مجوزهای اوربوت + بسیار عالی! اینطور که معلوم است شما دارای مجوز root برای فعال کردن ربات پیازی هستید. این امکان را بخوبی مورد استفاده قرار خواهیم داد. + هرچند ضرورت ندارد اما اگر سیستم شما دارای دسترسی root باشد ربات پیازی با ظرفیت بسیار بیشتری عمل خواهد کرد. دکمه زیر را فشار دهید تا ربات پیازی دارای ظرفیت حداکثری بشود. + اگر سیستم شما دارای دسترسی root نیست و یا اصلا چیزی از این عبارت متوجه نمی شوید، حتما سعی کنید از اپلکیشن هایی استفاده کنید که ویژه ربات پیازی تهیه شده اند. + متوجه هستم و ترجیح می دهم بدون root ادامه بدهم. + واگذاری دسترسی root برای ربات پیازی + تنظیمات تبدیل به تور + ربات پیازی به شما امکان می دهد که تمام اپلیکشین ها را از طریق توز منتقل کنید و یا اپلیکیشن مورد نظر خود را شخصن انتخاب کنید. + تمام اپلیکیشن ها را از طریق تور منتقل کنید. + اپلیکیشن های منفرد برای تور انتخاب کنید. + اپلیکیشن هایی که برای ربات پیازی تنظیم شده اند + توصیه می کنیم داونلود و فعال کنید؛ اپلیکیشن هایی را استفاده کنید که مستقیم به اوربوت وصل می شوند. دکمه های زیر را فشار دهید تا نصب شود. + ChatSecure - برنامه امن ارسال پیغام فوری برای اندروئید + تنظیمات پروکسی - یادگیری تنظیم اپلیکیشن ها برای کار با اوربوت + اپلیکیشن موتور جستجوی داک داک گو + توییتر از \"http proxy \"localhost:8118 پشتیبانی می کند + StoryMaker - ساختن یک داستان و ترک آن به Tor برای امنیت! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + تنظیمات پروکسی + اگر برنامه آندرویدی که استفاده می کنید می تواند از استفاده 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 + اوربوت آماده استفاده میباشد! + بسیاری از مردم در سرتاسر جهان از تور به دلایل متفاوت استفاده می کنند.\n\n خبرنگارها و بلاگرها٬ فعالان حقوق بشر٬ سربازان٬ ماموران اجرای قانون٬ شهروندان رژیم های سرکوبگر و مردم معمولی... و حالا تو + لطفا اوربوت را پیکربندی کنید قبل از اینکه شما شروع به استفاده از آن کنید! + + با موفقیت به شبکه Tor متصل شده اید - اما این بدان معنا نیست دستگاه شما امن است. شما می توانید استفاده کنید از کلید \"مرورگر\" برای تست اتصال . \n\n درباره ما در https://guardianproject.info/apps/orbot و یا ارسال ایمیل به help@guardianproject.info برای کسب اطلاعات بیشتر. + با این قدم پیشفرض مرورگر وب شما به صفحه https://check.torproject.org باز می شود تا شما مشاهده کنید آیا ربات پیازی تنظیم شده است و آیا شما به تور وصل شده اید یا نه. + سرويس های مخفی هاست + کلی + اوربوت را همزمان با بوت آغاز کن + وقتی اندروید بوت شد، بصورت خودکار ربات پیازی را اجرا و آن را به شبکه تور متصل کن + + + اربت٬ تور را برای آندروید می آورد تا از محتویات فیلتر شده٬ آنالیز ترافیک و کنترل شبکه که خطری برای حریم خصوصی است و اطلاعات شخصی و رابطه ها دفاع کند. \n\nT این جادوگر برای تنظیم اربت و تور در دستگاه شما کمک می کند. + + هشدار + نصب کردن اربت به خودی خود ترافیک موبایل شما را ناشناس نخواهد کرد.\n\n باید حتما اربت را در دستگاه یا برنامه ای که از آن استفاده می کنید برای استفاده از تور تنظیم نمایید. + + دسترسی‌ها + اگر بخواهید میتوانید به ربات پیازی اجازه دسترسی سوپر یوزر بدهید تا ویژگیهای پیشرفته مانند پروکسی شفاف را فعال کند + اگر نمیخواهید این کار را انجام دهید ، لطفا مطمئن شوید که از اپلیکیشنهایی استفاده می کنید که با ربات پیازی کار می کنند + بنظر می رسد دستگاه شما ریشه ندارد یا ریشه ای ارائه کند یا دسترسی به کاربری مدیر داشته باشد. \n\n لطفا حالت Apps را در صفحه اصلی روشن نمایید. + + اپلیکیشنهایی که ربات پیازی روی آنها فعال است + ChatSecure: برنامه گفتگوی امن محرمانه با قابلیت رمزگزاری + تمامي برنامه های Guardian Project را در Google Play پيدا كنيد. + یافتن همه برنامه های Guardian Project در F-Droid + یافتن همه برنامه های Guardian Project در https://f-droid.org + + پروکسی کردن شفاف + این به برنامه ها به شما اجازه میدهد که بدون هیچ تنظیمی، بصورت خودکار از طریق شبکه تور اجرا شوند + (اگر هیچ ایده‌ای ندارید که راجع به چه چیزی حرف میزنیم این گزینه را انتخاب کنید) + هیـچ + تترینگ از طریق تور + پروکسی شفاف از طریق تور را برای دستگاه هایی که با یو اس بی یا وای فای تتر شده اند مجاز کن. (به ری استارت نیاز دارند) + درخواست دسترسی برای سوپریوزر + انتخاب برنامه ها + انتخاب اپلیکیشن برای مسیریابی از طریق تور + تنظیمات گره + اینها تنظیمات پیشرفته ای هستند که ممکن است گمنامی شما را کاهش دهند + گره های ورودی + اثرانگشت ها، اسامی مستعار، کشورها و آدرسهای جهش اول + گره های ورودی را وارد کنید + اجازه دادن اجرا در پس زمینه + همه پروکسی ها + هیچ پروکسی + انتخاب برعکس شود + پراکسی شبکه خروجی + نوع پروکسی + پروتکل مورد استفاده برای پراکسی سرور: HTTP, HTTPS, Socks4, Socks5 + نوع پروکسی را وارد کنید + پروکسی میزبان + نام سرور پروکسی میزبان + نام پروکسی میزبان را وارد کنید + پورت پروکسی خروجی + پورت سرور پروکسی + پورت پروکسی را وارد کنید + نام کاربری پراکسی خروجی + نام کاربری پروکسی(اختیازی) + نام کاربری پروکسی را وارد نمایید + کلمه عبور پراکسی خروجی + رمز عبور پروکسی(اختیاری) + رمز عبور پروکسی را وارد نمایید + وضعیت + نصب پروکسی کاملن شفاف... + نصب پروکسی شفاف مبتنی بر برنامه... + پروکسی شفاف فعال است + TransProxy برای Tethering فعال شده است! + هشدار: خطا در هنگام راه اندازی پروکسی شفاف! + قوانین TransProxy پاک شدند + تور نتواست اجرا شود: + Polipo در حال اجرا است در پورت: + نصب پروکسی شفاف مبتنی بر پورت... + خطای Bridge + برای استفاده از ویژگی Bridge، باید حداقل آدرس IP یک پل را وارد کنید. + از یک حساب کاربری جیمیل، ایمیلی با متن \"get bridges\" به آدرس bridges@torproject.org بفرستید. + خطا + تنظیمات شما برای آدرس قابل دسترسی باعث ایجاد خطا شده اند ! + تنظیمات رله شما موجب خطا شده اند + گره های خروجی + اثر انگشتها ، اسامی مستعار ، کشورها و آدرسها برای آخرین جهش + گره های خروجی را وارد کنید + این گره ها را استفاده نکن + اثر انگشتها، اسامی مستعار ، کشورها و آدرسهایی که نباید استفاده شوند + گره هایی که نباید استفاده شوند + گره های محدود + فقط * از این گره های مشخص شده استفاده کنید* + Bridges + از پل Bridges کن + پل های گیج کننده + گره ورودی متناوب به شبکه تور را فعال کنید + اگر Bridges تنظیم شده پلهای مربوط به پروکسی گیج کننده هستند این گزینه را فعال کنید + آدرس آی پی و پورتِ پل ها + آدرس Bridges را وارد کنید + بازپخش کننده ها + درحال بازپخش + دستگاه خود را برای یک بازپخش کننده غیر-خروجی فعال کنید + پورت بازپخش کننده + پورت شنونده برای باز پخش تور + پورت OR را وارد کنید + نام مستعار بازپخش کننده + نام مستعار بازپخش کننده شما + یک نام مستعار دلخواه برای بازپخش کننده وارد کنید + آدرس های قابل دسترس + بعنوان یک کاربر پشت دیواره آتش با سیاست های محدود کننده اجرا کنید + پورت‌های قابل دسترس + پورت‌های قابل دسترس پشت یک فایروال محدودکننده + پورت‌ها را وارد کنید + سرویس‌های مخفی را فعال کن + اجازه بده سرورهای روی دستگاه از طریق شبکه تور قابل دسترسی باشند + پورت های لوکال هاست را برای سرویس مخفی وارد کنید + پورت‌های سرویس مخفی + نام نشانی پذیر برای سرویس مخفی شما (بصورت خودکار تولید شده است) + ثبت گزارش اشکال زدایی را به خروجی فعال کن (برای نمایش باید از adb یا aLogCat استفاده کنید) + صفحه (های) اصلی پروژه: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + گواهی تور + https://torproject.org + 3rd-Party-Software: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + یک اپلیکیشن میخواهد پورت %S سرویس مخفی را به شبکه تور باز کند. اگر به این اپلیکیشن اعتماد دارید این بی خطر است. + یک تور درحال اجرا پیدا شد... + اتفاق بدی افتاد. وقایع ثبت شده را چک کنید + سرویس مخفی روی: + ناتوان در خواندن نام سرویس مخفی + ناتوان در راه اندازی تور: + راه اندازی مجدد دستگاه شما ، قادر نیست به تنظیم مجدد Tor ! + از Iptables پیش فرض استفاده کن + به جای چیزی که با ربات پیازی اومده، از باینری آی پی تیبلز داخلی استفاده کن + فایلهای باینری تور قادر به نصب و یا ارتقا نبودند + وقتی ربات پیازی متصل است، همیشه آیکون مربوط را در نوار ابزار نگه دار. + آگاهسازی همیشه روشن + نمایش اطلاع رسانی گسترده با کشور خروجی Tor و IP + اطلاعیه گسترده + Bridges فعال شدند! + + زبان + زبان محلی ربات پیازی را انتخاب کنید + انتخاب زبان + زبان کنونی را تعویض و یا به شکل پیشفرض رهایش کنید + طراحی شده توسط Tor + ذخیره تنظیمات + ارتباط اینترنتی وجود ندارد; تور آماده کار است... + پهنای باند: + پائین + بالا + خاموش کردن در صورت عدم وجود شبکه + در صورتی که شبکه وجود نداشته باشد خاموش شود + شما به شناسه جدید تور منتقل شدید + مرورگر + استفاده از ChatSecure + مدیریت تور + این برنامه بتواند سرویس تور را مدیریت کند + برنامه نصب شود؟ + ارتباط شبکه ای وجود ندارد. تور به حالت خواب می رود + ارتباط شبکه ای خوب است. تور را بیدار نمایید... + به روز رسانی تنظیمات در سرویس Tor + Tor SOCKS + پورتی که تور ارائه می دهد SOCKS proxy روی (پیش فرض: 9050 یا 0 برای غیرفعال کردن) + پیکربندی پورت SOCKS + Tor TransProxy Port + پورتی که تور ارائه می دهد Transparent Proxy روی (پیش فرض: 9040 یا 0 برای غیرفعال کردن) + پیکربندی پورت Transproxy + پورت Tor DNS + پورتی که Tor ارائه می دهد آن DNS روی (به طور پیش فرض: 5400 یا 0 برای غیر فعال کردن) + پیکربندی پورت DNS + پیکربندی سفارشی Torrc + فقط متخصصان: enter direct torrc config lines + سفارشی Torrc + موبایل مارتوس - Benetech Human Rights Documentation App + IP های عمومی Tor شما: + لطفا این برنامه را در آندروید از کار بیندازید Android->Settings->Apps اگر مشکلی با اربت دارید: + تعارض برنامه + خودکار تازه کردن Transproxy + درخواست مجدید برای قوانین Transproxy وقتی وضعیت شبکه تغییر کرد + حذف اجباری Transproxy + اینجا را فشار دهید برای برهم ریختن تمام قوانین transproxy + قوانین Transparent proxy برهم ریخته شد! + شما دسترسی روت را فعال نکردید. + برای اعمال تنظیمات جدید باید اوربات را خاموش و روشن کنید. + وی پی ان + kbps + mbps + KB + MB + Bridges به روز شدند + برای فعال کردن تغییرات لطفا Orbot را راه اندازی مجدد کنید + کدهای QR + حالت Bridges + ایمیل + وب + فعال + حالت نرم افزار VPN + با استفاده از امکان وی پی ان اندروید٬ اوربات ترافیک تمام اپلیکیشن های موبایل شما را از طریق شبکه تور انتقال میدهد. +\n\n*هشدار* +امکان تونل تمام گوشی هنوز جدید و در حال آزمایش است. به همین دلیل امکان دارد که به صورت خودکار فعال نشود یا هنگام استفاده قطع شود. از این امکان برای ناشناس بودن در وب هرگز نباید استفاده کنید و باید فقط از آن برای عبور از فایروال ها و دور زدن فیلترینگ استفاده شود. + ایمیل بفرست + می توانید آدرس bridge را از طریق ایمیل٬ وب یا با اسکن کردن bridge QR code بدست آورید. ایمیل یا وب پایین را برای درخواست آدرس bridge انتخاب کنید.\n\n وقتی آدرس را دارید آن را کپی کنید و برگردانید در اولویت های Bridges در تنظیمات اربت و آن را دوباره راه اندازی کنید. + نصب Orfox + مرورگر استاندارد + نکته: Tor bridges استاندارد فقط بر روی دستگاه های Intel X86/ATOM کار می کند + جهان + diff --git a/orbotservice/src/main/res/values-fi/strings.xml b/orbotservice/src/main/res/values-fi/strings.xml new file mode 100644 index 00000000..01794933 --- /dev/null +++ b/orbotservice/src/main/res/values-fi/strings.xml @@ -0,0 +1,278 @@ + + + Orbot + 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ä. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + käynnistä ja pysäytä Tor + torproxyservice + Orbot käynnistyy... + Yhdistetty Tor-verkkoon + Orbot on poistettu käytöstä + Käynnistetään Tor-ohjelmaa... + valmis. + odottaa. + 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 + Alkuun + Selaa + Asetukset + Loki + Ohje + Aloita + Lopeta + Tietoa + Lataa + Lähetä + Apua + Sulje + Tietoa + Tyhjennä loki + Tarkista + Lopeta + Skannaa sillan QR-koodi + Jaa sillan QR-koodi + - paina pitkään käynnistääksesi - + Läpinäkyvä välityspalvelimen käyttö (vaatii roottauksen) + Läpinäkyvä välityspalvelimen käyttö + Ohjelmien automaattinen Torimointi + Torraa kaikki + Välitä kaikki ohjelmien liikenne Torin läpi + Välityspalvelinportin varoasetus + VAROITUS: Kiertää yleisiä portteja (80, 443, jne). *KÄYTÄ VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi. + Porttilista + Välityspalvelimen kautta vietävien porttien lista. *KÄYTÄ VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi. + Kirjoita portit, jotka viedään välityspalvelimen kautta + Pyydä root-tason oikeuksia + Pyydä root-tason oikeuksia läpinäkyvään tiedonvälitykseen + Tor-binääritiedostojen asennus onnistui! + Tor-binääritiedostojen asennus epäonnistui. Tarkista loki ja ilmoita asiasta osoitteeseen tor-assistants@torproject.org + Sovellusvirhe + Orbot + Tietoja Orbotista + Seuraava + Takaisin + Lopeta + Selvä + Peruuta + + Joitakin Orbotin yksityiskohtia + 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. + Lupa myönnetty + Orbot-oikeudet + Loistavaa! Olemme havainneet että olet antanut root-tason oikeudet Orbotille. Käytämme näiden oikeuksien suomia mahdollisuuksia harkiten. + 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! + Jos sinulla ei ole root-tason oikeuksia tai et tiedä, mitä tarkoitamme, käytä vain Orbotille suunniteltuja ohjelmia. + Ymmärrän ja haluan jatkaa ilman Superuser-tason oikeuksia + Anna root-tason oikeudet Orbotille + Konfiguroi Torimointi + Orbot mahdollistaa kaiken sovellusliikenteen reitittämisen Tor-sovelluksen kautta TAI valita sovelluksesi yksilöllisesti. + Välitä kaikkien sovellusten tiedonsiirto Tor-verkon kautta + Valitse Tor-verkkoa käyttävät sovellukset + Orbotia käyttävät sovellukset + 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. + ChatSecure - Turvallinen pikaviestisovellus Androidille + Välityspalvelinasetukset - Opi konfiguroimaan sovellukset toimimaan Orbotin kanssa + DuckDuckGo-hakukonesovellus + Aseta Twitter-välityspalvelinisännäksi \"localhost\" ja portiksi 8118 + StoryMaker - Tee tarina ja jätä se torin turvallisuuteen! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Välityspalvelinasetukset + 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 + Orbot on valmis! + 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! + Määritä Orbot ennen kuin alat käyttää sitä! + + Tämä avaa selaimesi osoitteeseen https://check.torproject.org nähdäkseen, onko Orbot varmaan konfiguroitu ja onko sinut yhdistetty Tor-sovellukseen. + Piilopalvelun isännöinti + Yleiset + Aloita Orbot käynnistettäessä + Käynnistä Orbot ja yhdistä Toriin automaattisesti, kun Anroid-laitteesi käynnistyy + + + 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. + + Varoitus + 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. + + Käyttöoikeudet + Voit antaa Orbotille Superuser-oikeudet mahdollistaaksesi joitakin lisäominaisuuksia, kuten läpinäkyvän tiedonvälityksen. + Jos et halua tehdä tätä, varmista, että käytät Orbotin kanssa toimivaksi suunniteltuja sovelluksia. + Laitteesi ei vaikuta olevan rootattu tai tarjoavan root- tai \'Superuser\'-oikeuksia.\n\nKokeile \'Sovellukset\'-tilaa päänäytöltä. + + Orbotia käyttävät sovellukset + ChatSecure: Turvallinen chattailusovellus Off-the-Record -salauksella + Löydä kaikki Guardian-projektin sovellukset Googlen Play-kaupasta + Löydä kaikki Guardian Projectin sovellukset F-Droidista + Löydä kaikki Guardian Projectin sovellukset osoitteesta https://f-droid.org + + Läpinäkyvä tiedonvälitys + Tämä sallii sovellustesi tietoliikenteen menemisen automaattisesti Torin läpi + (Rastita tämä ruutu, jos et tiedä, mitä tarkoitamme) + Ei mikään + Tor-välityspalvelimena oleminen + Salli Torin läpinäkyvä tiedonvälitys Wifille ja USB-välityspalvelimena oleville laitteille (vaatii uudelleenkäynnistyksen) + Pyydä Superuser-oikeuksia + Valitse sovellukset + Valitse Torin läpi reititettävät sovellukset + Tor-solmukohdan konfigurointi + Nämä ovat lisäasetuksia, jotka voivat vähentää anonyymiyttäsi + Tor-sisääntulosolmu + Sormenjäljet, lovet, maat ja osoitteet ensimmäiseen hyppyyn + Kirjoita sisääntulosolmujen nimet + Välitä kaikki + Älä välitä mitään + Käännä valinta + Lähtevän liikenteen välityspalvelin (valinnainen) + Lähtevän liikenteen välityspalvelimen tyyppi + Välityspalvelimen protokolla: HTTP, HTTPS, Socks4, Socks5 + Kirjoita välityspalvelintyyppi + Ulosmenovälityspalvelimen isäntä + Välityspalvelimen verkko-osoite + Kirjoita välityspalvelimen isäntä + Ulosmenovälityspalvelimen portti + Välityspalvelimen portti + Kirjoita välityspalvelimen portti + Ulosmenovälityspalvelimen käyttäjänimi + Välityspalvelimen käyttäjätunnus (valinnainen) + Kirjoita välityspalvelimen käyttäjätunnus + Ulosmenovälityspalvelimen salasana + Välityspalvelimen salasana (valinnainen) + Kirjoita välityspalvelimen salasana + Tila + Täyttä läpinäkyvää tiedonvälitystä otetaan käyttöön... + Sovelluspohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön... + Läpinäkyvä tiedonvälitys SALLITTU + TransProxy on otettu käyttöön Tor-välityspalvelimimena olemista varten! + VAROITUS: virhe aloittaessa läpinäkyvää tiedonvälitystä! + TransProxyn säännöt tyhjennetty + Tor-prosessin käynnistäminen epäonnistui: + Polipo on käynnissä portissa: + Porttipohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön... + Siltavirhe + Jos haluat käyttää siltaominaisuutta, kirjoita vähintään yhden sillan IP-osoite. + Lähetä sähköpostia osoitteeseen bridges@torproject.org gmail-osoitteesta siten, että viestin ainoa rivi on \"get bridges\". + Virhe + ReachableAccess-asetuksesi aiheuttivat virheen! + Releasetuksesi aiheuttivat virheen! + Päätesolmut + Sormenjäljet, lovet, maat ja osoitteet viimeiselle hypylle + Kirjoita päätesolmut + Vältä solmuja + Vältettävät sormenjäljet, lovet, maat ja osoitteet + Kirjoita vältettävät solmut + Tarkat solmukohdat + Käytä *vain* näitä solmuja + Sillat + Käytä siltoja + Hämärät sillat + Salli vaihtoehtoiset sisääntulosolmut Tor-verkkoon + Salli hämärien siltojen konfigurointi + Siltojen IP-osoitteet ja portit + Kirjoita siltaosoitteet + Releet + Releytys + Salli laitteen käyttö välireleenä + Releportti + Tor-releesi kuunteluportti + Kirjoita OR-portti + Releen kutsumanimi + Kutsumanimi Tor-releellesi + Kirjoita mukautettu relenimi + Saavutettavissa olevat osoitteet + Aja asiakkaana rajoitetun palomuurin takaa + Saavutettavissa olevat portit + Rajoitetun palomuurin takaa saavutettavat portit + Kirjoita portit + Piilopalvelun isännöinti + salli laitteensisäisen palvelimen käyttö osana Tor-verkkoa + kirjoita sisäiset portit piilopalveluille + Piilopalveluiden portit + piilopalvelusi nimiosoite (luodaan automaattisesti) + salli virheenjäljityslokin tulo tulostevirtaan (käytä adb:tä tai aLogCat:ia tarkastellaksesi) + Projektin kotisivu(t): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor-lisenssi + https://torproject.org + 3:n osapuolen ohjelmisto: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Sovellus haluaa avata piilopalveluportin %S Tor-verkkoon. Tämä on turvallista, jos luotat sovellukseen. + löytyi olemassaoleva Tor-prosessi... + Jotain pahaa tapahtui. Tarkista loki + piilopalvelun sijainti: + piilopalvelunimen lukeminen epäonnistui + Torin käynnistys epäonnistui: + Toria ei voitu nollata, käynnistä laitteesi uudelleen! + Käytä Ip-oletustauluja + käytä sisäänrakennettua Ip-taulubinääriä Orbotin mukana tulleen sijasta + Tor-binääritiedostojen asentaminen tai päivitys epäonnistui. + Pidä kuvake aina työkalupalkissa, kun Orbot on yhdistetty + Ilmoitukset aina käytössä + Näytä laajennettu ilmoitus (Torin ulostulon maa ja IP) + Laajennetut ilmoitukset + Sillat käytössä! + + Kieli + Valitse maa-asetus ja kieli Orbit-sovellukselle + Valitse kieli + Jätä oletusarvoon tai vaihda nykyiseen kieleen + perustuu Toriin + Tallenna asetukset + Ei internet-yhteyttä; Tor on valmiustilassa... + Kaistanleveys: + alas + ylös + Ei verkon automaattilepotilaa + Laita Tor nukkumaan, kun internet-yhteyttä ei ole saatavilla + Vaihdoit Tor-identiteettisi uuteen! + Käytä ChatSecurea + Hallinnoi Toria + Anna tämän sovelluksen ohjata Tor-palvelua + Asennetaanko sovelluksia? + Ei verkkoyhteyttä. Tor siirtyy valmiustilaan... + Verkkoyhteys toimii. Herätetään Tor... + päivitetään Tor-palvelun asetuksia + Tor SOCKS + Portti, jossa Torin SOCKS-proxy on (oletus: 9050, 0 = poista käytöstä) + SOCKS-portin valinta + Tor TransProxyn portti + Portti, jossa Torin läpinäkyvä välityspalvelin on (oletus: 9040, 0 = poista käytöstä) + TransProxy-portin valinta + Tor DNS-portti + Portti, jossa Torin DNS on (oletus: 5400, 0 = poista käytöstä) + DNS-portin valinta + Torrc:n mukautetut asetukset + VAIN ASIANTUNTIJAT: syötä torrc:n määritysrivejä suoraan + Mukautettu torrc + Mobile Martus - Benetechin ihmisoikeuksien dokumentaatiosovellus + Julkiset Tor-IP:si: + Poista tämä sovellus käytöstä kohdassa Android->Asetukset->Sovellukset, jos Orbotin kanssa on ongelmia: + Sovellusristiriita + Transproxyn automaattinen päivitys + Uudista Transproxy-säännöt, kun verkon tila muuttuu + Transproxyn PAKOTETTU POISTO + Kosketa tätä tyhjentääksesi transproxyn verkkosäännöt VÄLITTÖMÄSTI + Läpinäkyvän välityspalvelimen säännöt tyhjennetty! + Sinulla ei ole ROOT-oikeuksia käytössä + Saatat joutua pysäyttämään ja käynnistämään Orbotin, jotta asetusten muutos tulee käyttöön + kbps + Mbps + kt + Mt + Sillat päivitetty + Käynnistä Orbot uudelleen ottaaksesi muutokset käyttöön + QR-koodit + Siltatila + Sähköposti + Verkkosivu + Ota käyttöön + 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. + Lähetä sähköpostia + 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. + Normaali selain + HUOMAA: Vain standardit Tor-sillat toimivat Intel X86/ATOM -laitteilla. + diff --git a/res/values-fr/strings.xml b/orbotservice/src/main/res/values-fr-rFR/strings.xml similarity index 92% rename from res/values-fr/strings.xml rename to orbotservice/src/main/res/values-fr-rFR/strings.xml index d1eaf2b9..3a11d068 100644 --- a/res/values-fr/strings.xml +++ b/orbotservice/src/main/res/values-fr-rFR/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. @@ -8,11 +8,11 @@ https://check.torproject.org/?TorButton=true démarrer et arrêter Tor torproxyservice - Orbot démarre… + Orbot démarre... Connecté au réseau Tor Orbot est désactivé - Orbot est en cours d\'extinction - Démarrage du client Tor… + TorService est en cours d\'extinction + Démarrage du client Tor... terminé. attente. 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 @@ -21,11 +21,11 @@ Paramètres Journal Aide - Applis + RPV Démarrer Arrêter À propos - Assistant + Obtenir des applis... Télchargement Téléversement Aide @@ -84,10 +84,10 @@ Paramètres du mandataire 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 Orbot est prêt ! - 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 ! + 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 ! Veuillez configurer Orbot avant de pouvoir commencer à l\'utiliser ! - Vous êtes connecté avec succès au réseau Tor - mais cela ne signifie PAS que votre appareil est sécurisé. Vous pouvez utiliser l\'option « Vérifier » du menu pour tester votre navigateur.\n\n Rendez-nous visite sur https://guardianproject.info/apps/orbot ou envoyez un courriel à help@guardianproject.info pour en savoir plus. + 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@guardianproject.info pour en savoir davantage. 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. Hébergement de services cachés Général @@ -107,7 +107,7 @@ Applis conçues pour Orbot Chatsecure : appli sécurisée de clavardage avec chiffrement confidentiel - Orweb : navigateur à confidentialité améliorée qui fonctionne avec Tor + Orfox : navigateur à confidentialité améliorée fonctionnant sur Tor Trouver toutes les applis du Projet Guardian sur Google Play Trouver toutes les applis du Projet Guardian sur F-Droid Trouver toutes les applis du Projet Guardian sur https://f-droid.org @@ -126,6 +126,8 @@ Nœuds d\'entrée Empreintes, pseudos, pays et adresses pour le premier saut Saisir les nœuds d\'entrée + Permet des lancements en arrière-plan + Laissez n\'importe quelle appli dire à Orbot de démarrer Tor et les services connexes Tout relayer Ne rien relayer Inverser la sélection @@ -146,15 +148,15 @@ Mot de passe du mandataire (optionnel) Saisir le mot de passe du mandataire État - Configuration le relayage entièrement transparent… - Configuration d\'un relayage transparent par appli… + Configuration le relayage entièrement transparent... + Configuration d\'un relayage transparent par appli... Relayage transparent ACTIVÉ Relais transparent activé pour pour la fonction modem ! AVERTISSEMENT : erreur lors du démarrage du relayage transparent ! Règles du relais transparent effacées Impossible de démarrer le processus Tor : Polipo tourne sur le port : - Configuration du relayage transparent par port… + Configuration du relayage transparent par port... Erreur de pont Afin de pouvoir utiliser la fonction pont, vous devez au moins saisir l\'adresse IP d\'un pont. Envoyez un courriel à bridges@torproject.org avec la ligne « get bridges », seule, dans le corps du courriel à partir d\'un compte Gmail. @@ -205,9 +207,9 @@ LibEvent v2.0.21 : http://www.monkey.org/~provos/libevent/ Polipo v1.1.9 : https://github.com/jech/polipo IPtables v1.4.21 : http://www.netfilter.org - OpenSSL v1.0.1i : http://www.openssl.org + OpenSSL v1.0.1q : http://www.openssl.org Une appli veut ouvrir le port %S du serveur caché au réseau Tor. ceci est sécuritaire si vous faites confiance à l\'appli. - un processus existant de Tor a été trouvé… + un processus existant de Tor a été trouvé... Quelque chose n\'a pas été. Vérifiez le journal service caché sur : impossible de lire le nom du service caché @@ -228,21 +230,21 @@ Laisser à la valeur par défaut ou changer la langue actuelle propulsé par Tor Enregistrer les paramètres - Pas de connexion Internet ; Tor est en attente… + Pas de connexion Internet ; Tor est en attente... Bande passante : aval amont Pas de mise en veille automatique du réseau Mettre Tor en veille quand aucune connexion Internet n\'est disponible Vous avez basculé vers une nouvelle identité Tor ! - Vérifier le navigateur + Navigateur Utiliser ChatSecure Gérer Tor Autoriser cette appli à contrôler le service Tor - Il semble qu\'Orweb ne soit pas installé. Voulez-vous de l\'aide à ce sujet ou devrions-nous juste ouvrir le navigateur ? + Il semble qu\'Orfox n\'est pas installé. Voulez-vous de l\'aide à ce sujet ou devrions-nous juste ouvrir le navigateur ? Installer les applis ? - Pas de connectivité réseau. Mise au repos de Tor… - La connectivité réseau est bonne. Réveil de Tor… + Pas de connectivité réseau. Mise au repos de Tor... + La connectivité réseau est bonne. Réveil de Tor... mise à jour des paramètres dans le service Tor SOCKS Tor Port sur lequel Tor offre son mandataire SOCKS (par défaut : 9050 ou 0 pour le désactiver) @@ -267,7 +269,7 @@ Les règles du mandataire transparent ont été vidées ! L\'accès ROOT n\'est pas activé Vous pourriez avoir à arrêter et démarrer Orbot pour que les changements de paramètres soient activés. - Applis + RPV kbps mbps Ko @@ -275,16 +277,17 @@ Ponts mis à jour Veuillez redémarrer Orbot pour activer les changements Codes QR - Si votre réseau mobile bloque activement Tor, vous pouvez utiliser un pont Tor pour accéder au réseau.\n\nVeuillez choisir un des types de pont ci-dessus pour activer cette fonction. + 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. Mode pont Courriel Web Activer - Mode applis + Mode RPV des applis 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. Envoyer un courriel 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. - Installer Orweb + Installer Orfox Navigateur standard Note : seuls les ponts Tor standards fonctionnent sur les appareils Intel X86/ATOM + Monde diff --git a/orbotservice/src/main/res/values-fr/strings.xml b/orbotservice/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..fa051335 --- /dev/null +++ b/orbotservice/src/main/res/values-fr/strings.xml @@ -0,0 +1,54 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Démarrer et arrêter Tor + torproxyservice + Démarrage de Orbot... + Connecté au réseau Tor + Orbot est désactivé + Le service Tor est en cours de fermeture + Démarrage du client Tor... + terminé. + en attente. + 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 + Accueil + Naviguer + Paramètres + Log + Aide + VPN + Démarrer + Arrêter + A propos + Obtenir des applications + Télécharger + Envoyer + Aide + Fermer + A propos + Effacer la log + Vérifier + Quitter + Analyser BridgeQR + Partager BridgeQR + - appui long pour commencer - + Passage du trafic Internet de manière transparente (Requiert le Root) + Passage du trafic Internet de manière transparente + Orbot + + + + + + + + + Passage du trafic Internet de manière transparente + + VPN + diff --git a/orbotservice/src/main/res/values-gl/strings.xml b/orbotservice/src/main/res/values-gl/strings.xml new file mode 100644 index 00000000..8496d4b6 --- /dev/null +++ b/orbotservice/src/main/res/values-gl/strings.xml @@ -0,0 +1,209 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + iniciar e deter Tor + torproxyservice + Orbot está a se iniciar... + Conectado á rede Tor + Orbot está desactivado + Iniciando cliente Tor... + completado. + á espera. + 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 + Inicio + Examinar + Axustes + Rexistro (log) + Axuda + Iniciar + Deter + Sobre + Descargar + Cargar + Axuda + Pechar + Sobre + Limpar rexistro + Comprobar + Saír + - toque longo para comezar- + Proxyficación transparente (cómpre ser root) + Proxyficación transparente + Torificación Automática dos Aplicativos + Tor para todo + Pasar todo o tráfico dos aplicativos por Tor + Porto de Reserva do Proxy + ATENCIÓN: Evita os portos comúns (80, 443, etc). * USAR SÓ* se os modos \'Todo\' ou \'Aplicación\' non funcionan. + Lista de Portos + Lista de portos a pasar. *USAR SÓ* se os modos \'Todo\' ou \'Aplicación\' non funcionan + Introduza os portos a pasar + Requerir Acceso de Superusuario + Requerir acceso de root para proxy transparente + Se instalaron con éxito os binarios de Tor! + Non se puideron instalar os ficheiros binarios de Tor. Por favor, comprobe o rexistro e notifíqueo a tor-assistants@torproject.org + Erro de Aplicativo + Orbot + Acerca de Orbot + Seguinte + Atrás + Rematar + Aceptar + Cancelar + + Algúns detalles sobre Orbot + Permiso Concedido + Permisos de Orbot + Excelente! Detectamos que ten permisos de root habilitados para Orbot. Empregaremos este poder sabiamente. + 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! + 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. + Entendo e gostaríame continuar sen Superusuario + Conceder Root a Orbot + Configurar Torificación + Orbot dá-lle a opción de enrutar todo o tráfico dos aplicativos a través de Tor OU elexir ditos aplicativos individualmente. + Enviar Todos os Aplicativos Por Tor + Elixir Aplicativos Individuais por Tor + Aplicativos habilitados para Tor + 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. + ChatSecure - Cliente de mensaxería instantánea segura para Android + Axustes do Proxy - Aprenda cómo configurar aplicativos para que funcionen con Orbot + Aplicativo do Motor de Búsquedas DuckDuckGo + Axustar o host para proxy de Twitter a \"localhost\" e porto 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Axustes do proxy + Orbot está listo! + + Isto abrirá no seu navegador https://check.torproject.org para ver se Obrbot está configurado probablemente e se está conectado a Tor. + Aloxamento Oculto de Servizo + Xeral + Inciar Orbot no Arranque + Iniciar Orbot automáticamente cando o seu dispositivo Android arranque + + + + Aviso + + Permisos + Opcionalmente pode darlle a Orbot acceso de \'Superusuario\' para habilitar características avanzadas, como o Proxy Transparente. + Se non quere facer isto, por favor asegúrese de usar aplicativos feitos para traballar con Orbot + + Aplicativos Habilitados para Orbot + CahtSecure: Aplicativo de chat seguro con Off-the-Record Encryption (OTR) + Atope todos os aplicativos de Guardian Project apps en Google Play + + Proxy Transparente + Isto permite que os seus aplicativos funcionen a través de rede Tor sen ningunha configuración. + (Marque esta caixa se non ten nin idea do que lle estamos a falar) + Ningunha + Tor Tethering + Habilitar Proxy Transparente Tor para dispositivos enlazados por Wifi ou USB (require reiniciar) + Pedir Acceso de Superusuario + Seleccionar Aplicativos + Elixir Aplicativos a Enrutar a Través de Tor + Configuración de Nodo + Estes son axuste avanzados que poden reducir o seu anonimato + Nodos de Entrada + Huellas, alias, países e direccións para o primeiro salto + Introduzca Nodos de Entrada + Proxy para a Rede de Saída (Opcional) + Tipo de Proxy de Saída + Protocolo a usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5 + Introduzca Tipo de Proxy + Host de Proxy de Saída + Nome do Host Proxy Servidor + Introduzca o Host Proxy + Porto do Proxy de Saída + Porto do Servidor Proxy + Introduzca o porto do Proxy + Nome de usuario do Proxy de Saída + Nome de Usuario do Proxy (Opcional) + Introduza o Nome de Usuario do Proxy + Contrasinal do Proxy de Saída + Contrasinal do Proxy (Opcional) + Introduza Contrasinal do Proxy + Estado + Preparando proxy transparente completo... + Preparando proxy transparente baseado en aplicativo... + Proxy Transparente HABILITADO + TransProxy habilitado para Enlazamento! + ATENCIÓN: erro arrancando o proxy transparente! + Regras TransProxy limpadas + No se pudio inciar o proceso Tor: + Preparando proxy transparente baseado en porto... + Erro de Ponte + Para usar a característica de ponte, debe introducir cando menos unha dirección IP de ponte. + Envíe un email a bridges@torproject.org só coa liña \"get bridges\" no corpo do correo dende unha conta de gmail. + Erro + O seu axuste de ReachableAddresses causou unha excepción! + Os seus axustes de relay causou unha excepción! + Nodos de Saída + Huellas, alias, países e direccións para o último salto + Introduza Nodos de Saída + Excluir Nodos + Huellas, alias, países e direccións a excluír + Introduza Nodos Excluídos + Nodos Estritos + Usar *só* este nodos específicos + Pontes + Usar Pontes + Pontes Ofuscadas + Habilitar nodos alternativos de entrada á rede Tor + Habilitar se oas pontes configuradas son pontes ofuscadas + Dirección IP e porto das pontes + Introduza Direccións das Pontes + Reenvíos + Reenvío + Habilite o seu dispositivo para ser un reenvío non de saída + Porto de Reenvío + Porto de Escoita do seu reenvío Tor + Introduza o porto OR + Alias de Reenvío + Seu alias para reenvío de Tor + Introduza un alias personalizado de reenvío + Direccións Alcanzábeis + Executar como un cliente detrás dun firewall con políticas restritivas + Portos Alcanzábeis + Portos alcanzábeis detrás dun firewall restritivo + Inserir portos + Aloxamento de Servizo Oculto + permitir ao servidor no dispositivo estar accesible na rede Tor + introduza os portos localis para servizos ocultos + Portos de Servicios Ocultos + nome para referirse ao seu servizo oculto (xenerado automáticamente) + habilitar rexistro de depuración na saída (debe usar adb ou aLogCat para ver) + Páxina(s) de Inicio do Proxecto: + A Licencia de Tor + https://torproject.org + Software de Terceiros: + Un aplicativo quere abrir o porto do servidor oculto %S na rede Tor. Isto é seguro se confía no aplicativo. + atopado proceso Tor existente... + Algo malo pasou. Comprobe o rexistro + servizo oculto en: + imposible ler nome de servizo oculto + Incapaz de arrancar Tor + Usar iptables por Defecto + usar o binario de iptables instalado en lugar do empaquetado con Orbot + Non se puideron instalar ou actualizar os binarios de Tor + Mostrar sempre a icona na barra de ferramentas cando Orbot estea conectado + Notificacións Sempre Acesas + Pontes habilitadas! + + Elixir locale e idioma para Orbot + Escoller idioma + Deixar por defecto ou cambiar ao idioma actual + Gardar os axustes + Ancho de Banda: + caído + levantado + Auto-Parado Sen Rede + Parar Tor cando non hai conexión a internet + Cambiou a unha nova identidade Tor! + Usar ChatSecure + Xestionar Tor + Hablitar este aplicativo para controlar o servicio Tor + Instalar aplicativos? + diff --git a/orbotservice/src/main/res/values-gu-rIN/strings.xml b/orbotservice/src/main/res/values-gu-rIN/strings.xml new file mode 100644 index 00000000..bfb4b94f --- /dev/null +++ b/orbotservice/src/main/res/values-gu-rIN/strings.xml @@ -0,0 +1,14 @@ + + + રદ કરો + + પ્રોક્સી ગોઠવણીઓ + + + + + + + + + diff --git a/orbotservice/src/main/res/values-gu/strings.xml b/orbotservice/src/main/res/values-gu/strings.xml new file mode 100644 index 00000000..3965a3d3 --- /dev/null +++ b/orbotservice/src/main/res/values-gu/strings.xml @@ -0,0 +1,17 @@ + + + મદદ + મદદ + બંધ કરો + રદ્ કરો + + પ્રોક્સી ગોઠવણીઓ + + + + + + + + + diff --git a/orbotservice/src/main/res/values-he/strings.xml b/orbotservice/src/main/res/values-he/strings.xml new file mode 100644 index 00000000..e5e33f9b --- /dev/null +++ b/orbotservice/src/main/res/values-he/strings.xml @@ -0,0 +1,233 @@ + + + Orbot + Orbot הינה אפליקציית פרוקסי חינמית המאפשרת לאפליקציות אחרות להשתמש באינטרנט בבטחה. Orbot נעזרת ב-Tor כדי להצפין את תעבורת האינטרנט שלך ולהסוותה באמצעותה ניתובה דרך מספר מחשבים ברחבי העולם. Tor היא תוכנה חופשית ורשת פתוחה המסייעת לך להתגונן מפני סוגים מסוימים של אמצעי ניטור ומעקב אחר רשת האינטרנט המאיימים על הפרטיות, החירות האישית, פעילויות עסקיות ומערכות יחסים חשאיות. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + התחל ועצור את Tor + שירות פרוקסי Tor + Orbot מתחיל… + מחובר לרשת Tor + Orbot כבוי + מתחיל לקוח Tor... + הושלם. + מחכה. + אזהרה: התעבורה שלך אינה אנונימית עדיין! בבקשה הגדר את האפליקציות שלך כך שיתאפשר שימוש בפרוקסי HTTP (קרי 127.0.0.1:8118) או SOCKS4A או SOCKS5 (קרי 127.0.0.1:9050) + בית + דפדף + הגדרות + רישום + עזרה + התחל + עצור + אודות + הורדה + העלאה + עזרה + סגור + אודות + נקה רישום + בדוק + יציאה + סרוק BridgeQR + שתף BridgeQR + -נגיעה ארוכה להתחלה- + פרוקסי שקוף (שורש נדרש) + פרוקסי שקוף + עבודה אוטומטית עם אפליקציות דרך Tor + הכל דרך Tor + תעבור דרך פרוקסי עבור כל האפליקציות דרך Tor + מפלט פורט פרוקסי + אזהרה: עקוף פורטים נפוצים (80,443 וכו\'). *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + רשימת פורטים + רשימת פורטים לפרוקסי. *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + הזן פורטים לפרוקסי + דרושה גישת שורש + בקש גישה עליונה עבור שימוש בפרוקסי שקוף + קבצים ברי הרצה של Tor הותקנו בהצלחה! + הקבצים ברי ההרצה של Tor לא ניתנו להתקנה. בבקשה בדוק את הלוג והודע ל +tor-assistants@torproject.org + שגיאת אפליקציה + Orbot + אודות Orbot + הבא + הקודם + סיים + אישור + ביטול + + פרטים מסוימים של Orbot + Orbot היא אפליקציית קוד פתוח הכוללת את Tor, LibEvent ו-Polipo. היא מתחבר לרשת Tor באמצעות שרת פרוקסי HTTP מקומי (8118) ושרת פרוקסי SOCKS (פורט 9050). Orbot יכולה בנוסף עם הרשאות רוט לנתב את כל תעבורת האינטרנט של המכשיר דרך Tor כברירת מחדל. + ניתנה הרשאה + הרשאות Orbot + מצוין! גילינו כי יש לך הרשאות שורש מאופשרות בשביל Orbot. אנחנו נשתמש בכוח הזה בחוכמה. + בזמן שזה לא נדרש, Orbot יכולה להפוך להיות כלי חזק יותר אם למכשיר שלך יש גישה עליונה. תשתמש בכפתור למטה כדי לקבל כוחות על של Orbot ! + אם אין לך גישה עליונה או אין לך מושג על מה אנחנו מדברים, רק תוודא שתשתמש באפליקציות שנועדו לעבוד עם Orbot. + הבנתי ואני מעדיף להמשיך בלי Superuser + אפשר גישת שורש עבור Orbot + הגדר עבודה באמצעות Tor + Orbot נותנת לך אפשרות לכוון את כל תעבורת האפליקציות דרך Tor או לבחור את האפליקציות שלך בנפרד. + השתמש בפרוקסי בכל האפליקציות דרך Tor + בחר אפליקציות מסוימות עבור Tor + Orbot מתאפשר על ידי אפליקציות + האפליקציות מתחת פותחו לעבודה עם Orbot. לחץ על כל כפתור להתקנה מיידית, או שאתה יכול למצוא אותם אחר כך ב Google Play, באתר GuardianProject.info או +דרך F-Droid.org + ChatSecure - תוכנת מסרים מידיים מאובטחת לאנדרואיד + הגדרות פרוקסי - למד איך להגדיר אפליקציות לעבוד עם Orbot + DuckDuckGo אפליקציית מנוע חיפוש + קבע פרוקסי Twitter למארח \"localhost\" ולפורט 8118 + StoryMaker - מערך שיעורים לעיתונאים על שימוש ב-Tor להגנה על עבודתם. + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + הגדרות פרוקסי + אם אפליקצת האנדרואיד שאתה משתמש תומכת בפרוקסי מבוסס 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 + Orbot מוכן! + מיליוני אנשים ברחבי העולם משתמשים בTor מסיבות רבות.\n\n עיתונאים ובלוגרים, פעילי זכויות אדם, שוטרים, חיילים, תאגידים, אזרחי במשטרים מדוגאים וגם אזרחים פשוטים... ועכשיו גם אתה! + אנא הגדר את Orbot לפני שתוכל להתחיל להשתמש בה! + + דבר זה יוביל את דפדפן הרשת שלך למוד https://check.torproject.org כדי לראות אם Orbot הוגדרה כראוי וכן כי אתה מחובר לרשת Tor. + איחסון שירותים נסתרים + כללי + התחל את Orbot בהדלקת המכשיר + התחל את Orbot והתחבר לרשת Tor אוטומטית כאשר המכשיר נדלק + + + + אזהרה + + הרשאות + אתה יכול להעניק לאפליקציה Orbot גישת \'Superuser\' כדי לאפשר מאפיינים מתקדמים כמו למשל, פרוקסי שקוף. + אם אתה לא רוצה לעשות את זה, אנא הקפד להשתמש באפליקציות שיועדו לעבוד עם Orbot + + Orbot-יישומים מופעלים + ChatSecure: אפליקציית מסרים עם הצפנת Off-the-Record + מצא את כל אפליציות Guardian Project אצל Google Play + + פרוקסי שקוף + זה מאפשר לאפליקציות שלך לרוץ באופן אוטומטי דרך רשת Tor ללא כל תצורה. + (סמן תיבה זו אם אין לך מושג על מה אנחנו מדברים) + כלום + Tor Tethering + מאפשר עבודה עם פרוקסי שקוף עבור רשת אלחוטית ומכשירי USB Tethered (דורש אתחול מחדש) + דרוש אישור Superuser + בחר אפלקציות + בחר אפלקציות + הגדרות Node + קיימות הגדרות מתקדמות שיכולות להפחית את האנונימיות שלך + Entrance Nodes + טביעות אצבע, כינויים, ארצות וכתובות עבור המעבר הראשון + הכנס Entrance Nodes + העבר הכל דרך פרוקסי + אל תשתמש בפרוקסי + הפוך בחירה + Outbound Proxy Type + פרוטוקול שימוש בשרת פרוקסי: HTTP, HTTPS, Socks4,Socks5 + סוג הפרוקסי + מארח של Outbound Proxy + שם מארח שרת פרוקסי + הכנס מארח פרוקסי + פורט של Outbound Proxy + פורט שרת פרוקסי + הכנס פורט של פרוקסי + שם משתמש של Outbound Proxy + שם משתמש פרוקסי (רשות) + הזן שם משתמש פרוקסי + סיסמא של Outbound Proxy + סיסמת פרוקסי (רשות) + הזן סיסמת פרוקסי + סטטוס + הכנה של הפרוקסי השקוף... + הכנה של הפרוקסי השקוף מבוסס אפליקציות... + פרוקסי שקוף מאופשר + פרוקסי שקוף מאופשר ל Tathering! + אזהרה: שגיאה התחילה את הפרוקסי השקוף! + כללי TransProxy טוהרו + אין אפשרות להתחיל תהליך Tor: + Polipo רץ על פורט: + הכנה של הפרוקסי השקוף מבוסס פורט... + שגיאת גשר + שגיאה + צמתי יציאה + הזן צמתי יציאה + צמתים מוצאים + הזן צמתים מוצאים + צמתים קפדנים + השתמש *רק* בצמתים מצוינים אלו + גשרים + השתמש בגשרים + גשרים מעורפלים + כתובת ה-IP ויציאה של הגשרים + הכנס כתובות גשר + ממסרים + ממסור + אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה + פורט הממסר + פורט מאזין עבור Tor relay + הכנס יציאת OR + כינוי הממסר + הכינוי לממסר Tor שלך + הזן כינוי עבור ממסר + כתובות בהישג יד + פורטים בהישג יד + הזן פורטים + אחסון שירותים נסתרים + הזן פורטים של localhost עבור שירותים נסתרים + פורט השירותים הנסתרים + אתרי הפרויקט: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + הרשיון של Tor + https://torproject.org/ + תוכנה-צד-ג׳: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + נמצא תהליך Tor קיים… + משהו רע התרחש. בדוק את היומן + שירות נסתר ב: + לא מסוגל לקרוא שם שירות נסתר + לא מסוגל להתחיל את Tor: + אתחל את המכשיר שלך, אין אפשרות להפעיל מחדש את Tor! + השתמש בברירות המחדל של iptables + לשמור תמיד את האיקון בסרגל כלים כשאורבוט מחובר + גשרים מאופשרים! + + שפה + בחר את המקומיות והשפה של Orbot + בחר שפה + השאר ברירת מחדל או החלף לשפה הנוכחית + מופעל באמצעות Tor + שמירת הגדרות + אין חיבור לאינטרנט; תור ממתין... + רוחב פס: + מטה + מעלה + כבה את Tor כאשר אין חיבור לאינטרנט + החלפת אל זהות Tor חדשה! + הפעל את ChatSecure + נהל Tor + אפשר את אפליקציה זו כדי לשלוט בשירות Tor + להתקין אפליקציה? + אין חיבור לרשת. מכבה את Tor.... + החיבור עובד טוב. מעיר את Tor... + מעדכן הגדרות Tor במכשיר + Tor SOCKS + הגדרות SOCKS Port + Tor TransProxy Port + הגדרת הפורט של TransProxy + Tor DNS Port + הIPs החיצוניים שלך עם Tor: + אין לך גישת רוט מאופשרת + תצטרך לכבות ולהפעיל את Orbot על מנת להחיל את השינוי בהגדרות. + kbps + mbps + KB + MB + קוד QR + דוא\"ל + אתר + הפעל + שלח דוא\"ל + דפדפן רגיל + diff --git a/orbotservice/src/main/res/values-hi/strings.xml b/orbotservice/src/main/res/values-hi/strings.xml new file mode 100644 index 00000000..9156dfa2 --- /dev/null +++ b/orbotservice/src/main/res/values-hi/strings.xml @@ -0,0 +1,26 @@ + + + Orbot + औरबौट एक मुफ्त अैप + ब्राउज़ + सेटिंग्स + मदद + मदद + बंद करें + Orbot + वापस + रद्द करें + + प्रोक्सी सेटींग + + समन्य + + + + + + + कोई नहीं + स्थिति + + diff --git a/orbotservice/src/main/res/values-hr-rHR/strings.xml b/orbotservice/src/main/res/values-hr-rHR/strings.xml new file mode 100644 index 00000000..717ae740 --- /dev/null +++ b/orbotservice/src/main/res/values-hr-rHR/strings.xml @@ -0,0 +1,30 @@ + + + Polazno + Pretraži + Postavke + Pomoć + O + Pomoć + Zatvori + O + Izlaz + Povratak + Odustani + + Postavke Proxya + + Općenito + + + + Upozorenje + + + + Nepoznato + Status + Greška + + Spremi postavke + diff --git a/orbotservice/src/main/res/values-hr/strings.xml b/orbotservice/src/main/res/values-hr/strings.xml new file mode 100644 index 00000000..19ddf3e5 --- /dev/null +++ b/orbotservice/src/main/res/values-hr/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + pokreni i zaustavi Tor + torproxyusluga + Orbot se pokreće... + Spojen na Tor mrežu + Orbot je deaktiviran + TorService se gasi + Pokrećem Tor klijent... + gotovo. + čekam. + 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 + Polazno + Pretraži + Postavke + Dnevnik + Pomoć + VPN + Početak + Zaustavi + O + Dohvati aplikacije... + Preuzimanje + Slanje + Pomoć + Zatvori + O + Očisti Dnevnik + Provjeri + Izlaz + Skeniraj BridgeQR + Podijeli BridgeQR + - dugi klik za početak - + Transparentni Proxy (Zahtijeva Root) + Transparentni Proxy + Automatska Torifikacija Aplikacija + Tor Sve + Proxy promet svih aplikacija kroz Tor + Port Proxy Rezerva + UPOZORENJE: Zaobilazi uobičajene portove (80, 443, itd.) *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi. + Popis portova + Popis portova za proxy. *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi + Unesite port za proxy + Zatraži Root Pristup + Zatraži root pristup za transparentni proxy + Tor izvršne datoteke uspješno instalirane! + Tor izvršne datoteke nije bilo moguće instalirati. Molimo provjerite dnevnik i obavijestite tor-assistans@torproject.org + Greška u Aplikaciji + Orbot + O Orbot-u + Sljedeće + Natrag + Završi + U redu + Odustani + + Detalji o Orbot-u + 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. + Dopuštenje Odobreno + Orbot Dopuštenja + Odlično! Uočili smo da imate root dopuštenja omogućena za Orbot. Koristit ćemo ovu moć mudro. + 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! + Ako nemate root pristup ili nemate pojma o čemu pričamo, osigurajte da koristite aplikacije koje rade s Orbot-om. + Razumijem i želim nastaviti bez Superuser-a + Odobri Root za Orbot + Konfiguriraj Torifikaciju + Orbot Vam daje opciju da usmjerite sav aplikacijski promet kroz Tor ILI odaberete aplikacije individualno. + Proxy Sve Aplikacije Kroz Tor + Odaberi Individualne Aplikacije za Tor + Orbot-omogućene Aplikacije + 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. + ChatSecure - Sigurni klijent instant poruka za Adnroid + Proxy Postavke - Naučite kako konfigurirati aplikacije za rad s Orbot-om + DuckDuckGo aplikacija za pretraživanje + Namjesti Twitter proxy na host \"localhost\" i port 8118 + StoryMaker - napravite priču i prepustite sigurnost Tor-u! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Postavke Proxy-a + 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 + Orbot je spreman! + 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! + Molimo konfigurirajte Orbot prije nego ga počnete koristiti! + + 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@guardianproject.info kako bi naučili više. + Ovo će otvoriti Vaš web preglednik na https://check.torproject.org kako bi vidjeli je li Orbot konfiguriran i jeste li povezani na Tor. + Hosting Skrivenih Usluga + Općenito + Pokreni Orbot pri pokretanju + Automatski pokreni Orbot i poveži Tor kad se Android uređaj pokrene + + + 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. + + Upozorenje + 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. + + Dopuštenja + Opcionalno, možete odobriti Orbot-u \'Superuser\' pristup da bi omogućili napredne značajke, kao što je Transparentni Proxy. + Ako ne želite ovo, budite sigurni da koristite aplikacije koje su napravljene da rade s Orbotom + Čini se da Vaš uređaj nije root-an.\n\nMolimo probajte \'Aplikacije\' način rada na glavnom ekranu. + + Orbot-Omogućene Aplikacije + ChatSecure: Sigurna aplikacija za čavrljanje s Povjerljivom Enkripcijom + Orfox: Preglednik s pojačanom privatnosti koji radi kroz Tor + Pronađi sve Guardian Projekt aplikacije na Google Play + Pronađi sve Guardian Project aplikacije na F-Droid-u + Pronađi sve Guardian Project aplikacije na https://f-droid.org + + Transparentni Proxy + Ovo omogućava Vašim aplikacijama da automatski rade kroz Tor mrežu bez ikakve konfiguracije. + (Stavite kvačicu ako nemate pojma o čemu pričamo) + Ništa + Tor Privezanje + Omogući Tor Transparentni Proxy za Wifi i USB privezane uređaje (zahtijeva ponovno pokretanje) + Zatraži Pristup Superuser-u + Odaberi Aplikacije + Odaberi Aplikacije koje će se usmjeriti kroz Tor + Konfiguracija Čvora + Ovo su napredne postavke koje mogu smanjiti Vašu anonimnost + Ulazni Čvorovi + Otisci prstiju, nadimci, države i adrese za prvi skok + Unesi Ulazne Čvorove + Dozvoli pokretanja u pozadini + Dopusti bilo kojoj aplikaciji da kaže Orbot-u da pokrene Tor i povezane usluge + Proxy-raj sve + Ne proxy-raj ništa + Izokreni odabrano + Izlazni Mrežni Proxy (Opcionalno) + Vrsta Izlaznog Proxy-a + Protokol koji se koristi za proxy server: HTTP, HTTPS, Socks4, Socks5 + Unesi Tip Proxyj-a + Domaćin Izlaznog Proxy-a + Ime domaćina Proxy Poslužitelja + Unesi Domaćina Proxy-a + Port Izlaznog Proxy-a + Port Proxy Poslužitelja + Unesite port za proxy. + Proxy izlazno korisničko ime + Proxy korisničko ime (Opcionalno) + Unesite Proxy korisničko ime + Proxy izlazna lozinka + Proxy lozinka (Opcionalno) + Unesite Proxy lozinku + Status + Postavljam potpuno transparentan proxy... + Postavljam transparentan proxy zasnovan na aplikaciji... + Transparentni Proxy OMOGUĆENO + TransProxy omogućen za Privezivanje! + UPOZORENJE: greška pri pokretanju transparentnog proxy-a! + TransProxy pravila očišćena + Nije moguće započeti Tor proces: + Polipo je pokrenut na portu: + Postavljam transparentan proxy zasnovan na portu... + Greška Mosta + Da bi koristili mostove, morate unijeti bar jednu IP adresu mosta. + Pošaljite email koristeći gmail račun na bridges@torproject.org samo s tekstom \"get bridges\" u sadržaju. + Greška + Vaše ReachableAddresses postavke su uzrokovale iznimku! + Vaše postavke releja su uzrokovale iznimku! + Izlazni Čvorovi + Otisci prstiju, nadimci, države i adrese za zadnji skok + Unesi Izlazne Čvorove + Nemoj Uključiti Čvorove + Otisci prstiju, nadimci, države i adrese koje ne treba uključiti + Unesi Čvorove koje treba isključiti + Striktni Čvorovi + Koristi *samo* ove navedene čvorove + Mostovi + Koristi Mostove + Skriveni Mostovi + Omogući naizmjenične ulazne čvorove u Tor Mrežu + Omogućite ako su postavljeni mostovi skriveni mostovi + IP adresa i port mostova + Unesi Adrese Mostova + Releji + Prenošenje + Omogućite svom uređaju da bude ne-izlazni relej + Relej Port + Port za slušanje Vašeg Tor releja + Unesi OR port + Nadimak releja + Nadimak za Vaš Tor relej + Unesi prilagođeni nadimak releja + Dostupne Adrese + Pokreni kao klijent iza firewall-a sa restriktivnim pravilima + Dostupni portovi + Portovi dostupni iza restriktivnog firewall-a + Unesi portove + Hosting Skrivenih Usluga + dopusti poslužitelju na uređaju da bude dostupan preko Tor mreže + unesi localhost portove za skrivene usluge + Portovi za skrivene usluge + adresirano ime za vašu skrivenu uslugu (generirano automatski) + omogući izlaznost dnevnika o otkrivanju greške (mora koristiti adb ili aLogCat za pregled) + Dom(ovi) Projekta: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor licenca + https://torproject.org + Software treće strane: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Aplikacija želi otvoriti port %S skrivenog poslužitelja Tor mreži. Ovo je sigurno ako vjerujete aplikaciji. + pronađeni postojeći Tor procesi... + Nešto loše se dogodilo. Provjerite dnevnik + skrivena usluga na: + nije moguće pročitati ime skrivene usluge + Nije moguće pokrenuti Tor: + Ponovno pokrenit svoj uređaj, nije moguće ponovno pkrenuti Tor! + Koristi Zadane Iptablice + koristi ugrađene iptablice umjesto onih zapakiranih s Orbot-om + Nije bilo moguće instalirati ili nadograditi Tor datoteke . + Uvjek drži ikonu na alatnoj traci kad je Orbot spojen + Obavijesti o stalnoj pokrenutosti + Prikaži proširene obavijesti s Tor izlaznom državom i IP-em + Proširene obavijesti + Mostovi omogućeni! + + Jezik + Odaberi lokaciju i jezik za Orbot + Odaberi Jezik + Ostavi zadano ili promjeni na trenutni jezik + pogoni Tor + Spremi postavke + Nema internet veze; Tor je u stanju pripravnosti... + Bandwidth: + dolje + gore + Nema mrežnog auto-spavanja + Stavi Tor na spavanje kad internet nije dostupan + Prebacili ste se na nov Tor identitet! + Preglednik + Koristi ChatSecure + Upravljaj Tor-om + Omogući ovoj palikaciji da upravlja Tor-om + Čini se da nemate Orfox instaliran. Želite li pomoć s tim ili da samo otvorimo preglednik? + Instaliraj aplikacije? + Nema mrežne povezivosti. Stavljam Tor na spavanje... + Mrežan povezanost je dobra. Budim Tor... + ažuriram postavke u Tor usluzi + Tor SOCKS + Port na kojem Tor pruža svoj SOCKS proxy (zadano: 9050, 0 za onemogućavanje) + Konfiguracija SOCKS porta + Tor TransProxy Port + Port na kojem Tor pruža Transparentni Proxy (zadano: 9040, 0 za onemogućivanje) + Konfiguracija TransProxy porta + Tor DNS Port + Port na kojem Tor pruža DNS (zadano 5400, 0 za onemogućivanje) + Postavljanje DNS porta + Torrc prilagođena konfiguracija + SAMO ZA STRUČNJAKE: unesite direktno torrc konfiguracijske linije + Prilagođeni Torrc + Mobile Martus - Benetech aplikacija za dokumentaciju ljudskih prava + Vaši javni Tor IP-evi: + Onemogućite ovu palikaciju u Android->Postavke->Aplikacije ako imate problema s Orbot-om: + Konflikt aplikacija + Automatsko osvježavanje Transproxy-a + Ponovno primjeni Transproxy pravila kad se promjeni mrežno stanje + Transproxy PRISILNO UKLANJANJE + Dotaknite ovdje da bi očistili sva transproxy mrežna pravila ODMAH + Pravila transparentnog proxy-a očišćena! + Nema omogućen root pristup + Možda će te morati zaustaviti i pokrenuti Orbot da bi se omogućile promjenjene postavke. + VPN + kbps + mbps + KB + MB + Mostova ažurirano + Ponovno pokrenite Orbot da bi omogućili promjene + QR kodovi + 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. + Način rada Most + Email + Web + Aktiviraj + VPN način rada aplikacija + 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. + Pošalji email + 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. + Instaliraj Orfox + Standardni preglendik + NAPOMENA: samo standardni Tor mostovi rade na Intel X86/ATOM uređajima + Svijet + diff --git a/orbotservice/src/main/res/values-hu/strings.xml b/orbotservice/src/main/res/values-hu/strings.xml new file mode 100644 index 00000000..6b4e2644 --- /dev/null +++ b/orbotservice/src/main/res/values-hu/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + a Tor indítása, leállítása + torproxyservice + Az Orbot indul... + Csatlakozva a Tor hálózathoz + Az Orbot deaktiválva + A TorService leáll + A Tor kliens indítása... + kész. + várakozik. + 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 + Kezdőlap + Böngészés + Beállítások + Log + Súgó + VPN + Indítás + Leállítás + Névjegy + Alkalmazások beszerzése... + Letöltés + Feltöltés + Súgó + Bezár + Névjegy + Log törlése + Ellenőrzés + Kilépés + BridgeQR szkennelése + BridgeQR megosztása + - hosszú nyomás az indításhoz - + Transzparens Proxyzás (Root szükséges) + Transzparens Proxyzás + Alkalmazások automatikus Tor-izálása + Minden Tor-olása + Minden forgalom átproxyzása a Tor-on + Port Proxy visszacsatolás + 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. + Port Lista + A proxyzandó portok listája. *CSAK AKKOR HASZNÁLD* ha a \'Minden\' vagy \'Alkalmazás\' mód nem működik. + Add meg a proxyzandó portokat + Root hozzáférés szükséges + Root hozzáférés szükséges a transzparens proxyzáshoz + A Tor binárisok sikeresen telepítve lettek! + A Tor bináris állományok telepítése sikertelen. Ellenőrizd a naplót és értesítsd a tor-assistants@torproject.org -ot + Alkalmazás hiba + Orbot + Az Orbot-ról + Tovább + Vissza + Befejezés + OK + Mégsem + + Néhány Orbot adat + 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. + Jogosultság megadva + Orbot jogosultságok + 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. + 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! + 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. + Értettem és Superuser nélkül folytatnám tovább + Root jog megadása az Orbot-nak + Tor-izálás konfigurálása + 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. + Minden alkalmazás keresztülproxyzása a Tor-on + Alkalmazások kiválasztása a Tor-hoz + Orbot-engedélyezett alkalmazások + 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. + ChatSecure - Biztonságos azonnali üzenetküldő kliens Androidra + Proxy beállítások - Tanuld meg, hogyan állíthatod be az alkalmazásaidat, hogy együttműködjenek az Orbot-tal + DuckDuckGo keresőmotor alkalmazás + Állítsd be a Twitter proxyt a hosztnál \"localhost\"-ra és a port-nál 8118-ra + StoryMaker - Készíts egy történetet és hagyd a Tor-ra a biztonságért! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy beállítások + 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 + Az Orbot kész! + 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! + Kérlek konfiguráld az Orbot-ot, mielőtt elkezded használni! + + 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@guardianproject.info -ra, hogy többet megtudj. + 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. + Rejtett szolgáltatás kiszolgálás + Általános + Az Orbot indítása rendszerindításkor + Automatikusan elindítja az Orbot-ot és csatlakozik a hálózathoz, amikor az Android eszköz betölt + + + 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. + + Figyelem + 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. + + Jogosultságok + 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. + 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 + 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. + + Orbot-engedélyezett Alkalmazások + ChatSecure: Biztonságos üzenetküldő alkalmazás OTR titkosítással + Orfox: Fokozott adatvédelmi böngésző, ami Tor-on keresztül működik + Az összes Guardian Project alkalmazás keresése a Google Play-en + Az összes Guardian Project alkalmazást megtalálod az F-Droid -on + Az összes Guardian Project alkalmazást megtalálod a https://f-droid.org -on + + Átlátszó Proxyzás + 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. + (Jelöld be ezt négyzetet, ha fogalmad sincs arról, hogy miről beszélünk) + Nincs + Tor Tethering + A Tor Transzparens Proxyzásának engedélyezése a Wifi és az USB Tetherelt eszközök felé (újraindítást igényel) + Superuser hozzáférés kérése + Alkalmazások kiválasztása + Válassz alkalmazásokat, amik keresztül haladjanak a Tor-on + Csomópont konfiguráció + Ezek haladó beállítások, amelyek csökkenthetik a névtelenséged. + Belépő csomópontok + Ujjlenyomatok, becenevek, országok és címek az első ugráshoz + Belépő csomópontok megadása + Háttérbeli indulások engedélyezése + Bármely alkalmazás közölheti az Orbot-tal, hogy indítsa a Tor-t és a kapcsolódó szolgáltatásokat + Mindent proxyz + Semmit nem proxyz + Kijelölés megfordítása + Kimenő hálózati proxy (választható) + Proxy típus + A Proxy szerver által használandó protokoll: HTTP, HTTPS, Socks4, Socks5 + Add meg a proxy típusát + Kimenő proxy hoszt + Proxy szerver állomásneve + Add meg a proxy hosztot + Proxy port + Proxy szerver port + Add meg a proxy portját + Kimenő proxy felhasználónév + Proxy felhasználónév (választható) + Add meg a proxy felhasználónevet + Kimenő proxy jelszó + Proxy jelszó (választható) + Add meg a proxy jelszót + Állapot + A teljes körű transzparens proxyzás beállítása... + Alkalmazásalapú transzparens proxyzás beállítása... + Transzparens proxyzás ENGEDÉLYEZVE + TransProxy engedélyezve tetheringre! + FIGYELMEZTETÉS: hiba a transzparens proxyzás indításakor! + TransProxy szabályok törölve + Nem indítható el a Tor folyamat: + A Polipo ezen a porton fut: + Port alapú transzparens proxyzás beállítása... + Híd hiba + A híd szolgáltatás használatához legalább egy híd IP címét meg kell adnod. + Küldj egy emailt a bridges@torproject.org -ra a \"get bridges\" sorral a levél törzsében egy gmail fiókból. + Hiba + Az elérhető címeid beállításai kivételt okoztak! + Az átjátszód beállításai kivételt okoztak! + Kilépési csomópontok + Ujjlenyomatok, becenevek, országok és címek az utolsó ugráshoz + Kilépési csomópontok megadása + Csomópontok kizárása + Kizárandó ujjlenyomatok, becenevek, országok és címek + Add meg a kizárandó csomópontokat + Szigorú csomópontok + *Csak* ezeknek a megadott csomópontoknak a használata + Hidak + Hidak használata + Fedőhidak + Alternatív belépési pontok engedélyezése a Tor hálózatba + Bekapcsolva, ha a konfigurált hidak fedőhidak + A hidak IP címe és portja + Add meg a híd címeit + Átjátszók + Átjátszás + Engedélyezd az eszközödnek, hogy nem-átjátszó elosztó legyen + Átjátszó port + Hallgató port a Tor átjátszódnak + Enter VAGY port + Átjátszó becenév + A Tor átjátszód beceneve + Adj meg egy egyedi átjátszó becenevet + Elérhető címek + Futtatás kliensként egy tűzfal mögül, korlátozó rendelkezésekkel + Elérhető portok + A tűzfal mögött elérhető portok + Add meg a portokat + Rejtett szolgáltatás kiszolgálás + a készülék szerver elérhetőségének engedélyezése a Tor hálózaton keresztül + add meg a localhost portokat a rejtett szolgáltatásokhoz + Rejtett szolgáltatás portok + a címezhető neve a rejtett szolgáltatásaidnak (automatikusan generált) + a hibakeresési napló engedélyezése a kimenetre (adb -t vagy aLogCat -t kell használni a megtekintéshez) + Projekt honlap(ok): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + A Tor Licenc + https://torproject.org + 3. fél szoftver: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Egy alkalmazás a %S rejtett szerver portot akarja megnyitni a Tor hálózathoz. Ez biztonságos, ha megbízol az alkalmazásban. + létező Tor folyamat találva... + Valami rossz történt. Nézd meg a naplót. + rejtett szolgáltatás itt: + nem olvasható a rejtett szolgáltatás neve + A Tor indítása sikertelen: + Indítsd újra a készüléked, nem lehet helyreállítani a Tor-t! + Alapértelmezett Iptables használata + a beépített iptables bináris használata az Orbot-tal egybecsomagolt helyett + A Tor binárisok nem telepíthetőek, vagy frissíthetőek. + Mindig tartsa az ikont az eszköztáron, ha az Orbot csatlakoztatva van. + Mindig-bekapcsolt értesítések + Mutassa a bővített értesítést a Tor kilépő országgal és IP-vel + Bővített értesítések + Hidak engedélyezve! + + Nyelv + Válaszd ki a helyszínt és nyelvet az Orbot-nak + Válassz nyelvet + Hagyd alapértelmezetten vagy válts az aktuális nyelvre + powered by Tor + Beállítások mentése + Nincs internetkapcsolat; Tor készenlétben... + Sávszélesség: + le + fel + Nincs hálózati auto-alvás + A Tor alvó módba helyezése, ha internet nem elérhető + Új Tor identitásra váltottál! + Böngésző + ChatSecure használata + Tor kezelése + Engedélyezi ennek az alkalmazásnak, hogy a Tor szolgáltatást vezérelje + Úgy tűnik, hogy neked nincs Orfox telepítve. Kérsz segítséget benne, vagy csak nyissuk meg böngészőt? + Alkalmazások telepítése? + Nincs hálózati kapcsolat. Tor alvó állapotba helyezése... + A hálózati kapcsolat jó. Tor felébresztése... + a Tor szolgáltatás beállításainak frissítése + Tor SOCKS + Port amelyen a Tor a SOCKS proxyt biztosítja (alapértelmezett: 9050 vagy 0 a tiltáshoz) + SOCKS port konfiguráció + Tor TransProxy port + Port, amelyen a Tor a transzparens proxyt ajánl (alapértelmezett: 9040 vagy 0 a tiltáshoz) + TransProxy port konfiguráció + Tor DNS port + Port, amelyen a Tor a saját DNS-t ajánlja (alapértelmezett: 5400 vagy 0 a letiltáshoz) + DNS port konfiguráció + Torrc egyedi konfiguráció + CSAK SZAKÉRTŐKNEK: torrc konfigurációs sorok közvetlen beírása + Egyedi Torrc + Mobile Martus - Benetech emberi jogok dokumentációja alkalmazás + A Tor-od publikus IP-jei: + 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: + Alkalmazás ütközés + Transproxy auto-frissítés + A Transproxy szabályok újraalkalmazása, ha a hálózati állapot változik + Transproxy KÉNYSZERÍTETT ELTÁVOLÍTÁSA + Érintsd meg itt, az összes transproxy hálózati szabály AZONNALI kiürítéséhez + Transzparens proxy szabályok kiürítve! + Nincs ROOT hozzáférésed engedélyezve + 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. + VPN + kbps + mbps + KB + MB + Hidak frissítve + Kérlek indítsd újra az Orbot-ot a változások engedélyezéséhez + QR kódok + 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. + Híd mód + Email + Web + Aktiválás + Alkalmazások VPN mód + 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. + Email küldése + 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. + Orweb telepítése + Standard böngésző + MEGJEGYZÉS: Csak standard Tor hidak működnek az Intel X86/ATOM eszközökön + Világ + diff --git a/orbotservice/src/main/res/values-hy-rAM/strings.xml b/orbotservice/src/main/res/values-hy-rAM/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-hy-rAM/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-ia/strings.xml b/orbotservice/src/main/res/values-ia/strings.xml new file mode 100644 index 00000000..db863c61 --- /dev/null +++ b/orbotservice/src/main/res/values-ia/strings.xml @@ -0,0 +1,30 @@ + + + Initio + Navigar + Configurationes + Adjuta + Circa + Adjuta + Clauder + Circa + Sortir + Retro + Cancellar + + Configurationes de proxy: + + General + + + + Advertimento + + + + Nulle + Stato + Error + + Salveguardar configurationes + diff --git a/orbotservice/src/main/res/values-id/strings.xml b/orbotservice/src/main/res/values-id/strings.xml new file mode 100644 index 00000000..344037a2 --- /dev/null +++ b/orbotservice/src/main/res/values-id/strings.xml @@ -0,0 +1,284 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mulai dan akhiri Tor + torproxyservice + Orbot sedang dimulai... + Tersambung ke Jaringan Tor + Orbot telah dibatalkan + TorService dimatikan + Memulai klien Tor... + selesai. + menunggu. + 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 + Beranda + Jelajah + Pengaturan + Log + Bantuan + VPN + Mulai + Berhenti + Tentang + Dapatkan aplikasi... + Unduh + Unggah + Bantuan + Tutup + Tentang + Hapus Log + Periksa + Keluar + Pindai BridgeQR + Bagikan BridgeQR + - sentuh dan tahan untuk memulai - + Proxy Transparan (Dibutuhkan Root) + Proxy Transparan + Otomatis Torfying Aplikasi + Tor Semuanya + Trafik proxy untuk semua aplikasi melalui Tor + Alternatif Port Proxy + PERINGATAN: Temukan port umum (80, 443, dll). *Gunakan Hanya* jika \'Semua\' atau \'Aplikasi\' mode tidak bekerja. + Daftar Port + Daftar port untuk proxy. *GUNAKAN HANYA* jika modus \'Semua\' atau \'Apl\' tidak bekerja + Masukkan port untuk proxy + Minta Akses Root + Meminta akses root untuk proxy transparan + Binary Tor berhasil dipasang! + File binary Tor tidak dapat dipasang. Silahkan periksa log dan beritahukan ke tor-assistants@torprojects.org + Kesalahan Pada Aplikasi + Orbot + Tentang Orbot + Berikutnya + Kembali + Selesai + Oke + Batal + + Beberapa Rincian Orbot + 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. + Izin Diberikan + Perizinan Orbot + Baik sekali! Kami telah mendeteksi bahwa anda telah mengaktifkan perizinan root untuk Orbot. Kami akan menggunakan kekuatan ini secara bijak. + 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! + Jika anda tidak memiliki akses root atau tidak tahu tentang apa yang kita bicarakan, pastikan untuk menggunakan aplikasi yang dibuat untuk bekerja dengan Orbot. + Saya mengerti dan ingin melanjutkan tanpa Superuser + Berikan Akses Root untuk Orbot + Konfigurasi Torifikasi + Orbot memberikan pilihan kepada anda untuk mengerahkan semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi anda secara individu. + Proxy Semua Aplikasi Melalui Tor + Pilih Individu Aplikasi untuk Tor + Orbot- Aplikasi teraktifkan + 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 + ChatSecure - Client instant messaging aman untuk Android + Pengaturan Proxy - Pelajari bagaimana mengkonfigurasikan aplikasi untuk bekerja dengan Orbot + Aplikasi Mesin Pencari DuckDuckGo + Setel proxy Twitter ke host \"localhost\" dan port 8118 + StoryMaker - Tulis cerita dan biarkan Tor yang mengurus keamanannya! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Pengaturan Proxy + 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 + Orbot sudah siap! + 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! + Konfigurasi Orbot terlebih dahulu sebelum anda menggunakannya! + + 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. + Jasa Penyimpanan Rahasia + Umum + Mulai Orbot saat Boot + Secara otomatis memulai Orbot dan menghubungkan dengan Tor ketika perangkat Android anda boot + + + 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. + + Peringatan + 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. + + Perizinan + Anda dapat secara opsional memberikan Orbot akses \'Superuser\' untuk mengaktifkan fitur lanjutan, seperti Transparan Proxying. + Jika anda tidak ingin melakukan ini, mohon pastikan bahwa anda menggunakan aplikasi yang dibuat untuk dapat bekerja dengan Orbot. + Perangkat anda belum di-root atau tidak punya akses \'Superuser\'. Silakan coba mode \'Aplikasi\' di tampilan utama. + + Orbot-Aplikasi Teraktifkan + ChatSecure: Aplikasi obrolan aman dengan Enkripsi Off-the-Record + Temukan semua aplikasi Guardian Project di Google Play + Temukan semua aplikasi Guardian Project di F-Droid + Temukan semua aplikasi Guardian Project di https://f-droid.org + + Transparan Proxying + Hal ini akan memungkinkan aplikasi anda untuk secara otomatis berjalan melalui jaringan Tor tanpa konfigurasi apapun. + (Tandai box ini jika anda tidak tahu apa yang kita bicarakan) + Tidak ada + Tor Tethering + Mengaktifkan Transparan Proxying Tor untuk Wifi dan Perangkat Tether USB (diperlukan restart) + Meminta Akses Superuser + Pilih Aplikasi + Pilih Aplikasi untuk Mengerahkan Melalui Tor + Konfigurasi Simpul + Itu adalah pengaturan lanjutan yang dapat mengurangi anonimitas anda + Simpul Masuk + Sidik jari, alias, negara dan alamat untuk loncatan pertama + Masukkan Simpul Masuk + Ijinkan Latar Belakang Berjalan + Proxy Semuanya + Tanpa Proxy + Balik Pilihan + Outbound Proxy Jaringan (Opsional) + Outbound Jenis Proxy + Protokol yang digunakan untuk server proxy: HTTP, HTTPS, Socks4, Socks5 + Masukkan Jenis Proxy + Outbound Host Proxy + Nama host Server Proxy + Masukkan Host Proxy + Outbound Port Proxy + Port Server Proxy + Masukkan port Proxy + Outbound Nama Pengguna Proxy + Nama Pengguna Proxy (Opsional) + Masukkan Nama Pengguna Proxy + Outbound Sandi Proxy + Sandi Proxy (Opsional) + Masukkan Sandi Proxy + Status + Menyetel transparan proxying penuh... + Menyetel apl-berbasis proxying transparan... + Proxying transparan DIAKTIFKAN + TransProxy diaktifkan untuk Tethering! + PERINGATAN: kesalahan dalam memulai proxying transparan! + Aturan TransProxy dibersihkan + Tidak dapat memulai proses Tor: + Polipo aktif di port: + Menyetel proxying transparan berbasis-port... + Kesalahan pada Bridge + Agar dapat menggunakan fitur bridge, anda perlu memasukkan minimal satu alamat IP bridge. + Kirimkan email ke bridges@torproject.org dengan baris \"get bridges\" dengan sendirinya dalam tubuh surat dari akun gmail. + Kesalahan + Pengaturan ReachableAddresses anda menyebabkan kesalahan! + Pengaturan relay anda menyebabkan kesalahan! + Node Keluar + fingerprints, nama, negara dan alamat untuk hop terakhir + Memasuki Node Keluar + Node pengecualian + Pengecualian fingerprints,nama, negara dan alamat + Memasuki Node Pengecualian + Node Terlarang + Pakai *hanya* spesifik node + Bridges + Pakai Bridges + Bridges Terobfuskasi + Nyalakan alternatif node masuk ke dalam Tor Network + Nyalakan jika pengaturan bridges adalah bridges terobfuskasi + Alamat IP dan port bridges + Memasuki Alamat Bridge + Relays + Sedang me-Relay + Nyalakan perangkat anda menjadi non-exit relay + Port Relay + Port mendengarkan untuk TOR relay anda + Memasuki OR port + Nama Relay + sebuah nama untuk Tor Relay anda + Masukkan nama relay + Addresses Terjangkau + Jalankan sebagai client dibalik firewall dengan ketentuan ketat + Ports terjangkau + Port terjangkau dibalik firewall ketat + Memasuki ports + Layanan Penyimpanan Rahasia + Membolehkan perangkat-nyala untuk diakses lewat Tor Network + memasuki localhost port untuk layanan rahasia + Ports Layanan Rahasia + nama teralamatkan untuk layanan rahasia anda (otomatis dibuat) + nyalakan debug log untuk output (harus menggunakan adb atau aLogCat untuk menampilkan) + Beranda Projek: + https://www.torproject.org/docs/android https://guardianproject.info/apps/orbot/ + Lisensi Tor + https://torproject.org + Perangkat Lunak Pihak Ke-3: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Sebuah aplikasi ingin membuka port %S server tersembunyi ke jaringan Tor. Hal ini aman jika anda mempercayai aplikasi tersebut. + menemukan proses Tor yang ada... + Sesuatu yang buruk terjadi. Periksa log + layanan tersembunyi pada: + tidak dapat membaca nama layanan tersembunyi + Tidak dapat memulai Tor: + Boot ulang perangkat anda, gagal me-reset Tor! + Gunakan Iptables Default + menggunakan binary iptables built-in daripada yang disertakan dengan Orbot + Binary Tor tidak dapat dipasang atau ditingkatkan + Selalu pelihara icon dalam toolbar ketika Orbot terhubung + Pemberitahuan Selalu-Hidup + Tampilkan notifikasi melebar dengan negara dan IP keluar Tor + Notifikasi Melebar + Bridge diaktifkan! + + Bahasa + Pilih lokal dan bahasa untuk Orbot + Pilih Bahasa + Biarkan default atau berlaih ke bahasa saat ini + diperkuat dengan Tor + Simpan Pengaturan + Tidak ada koneksi internet; Tor sedang standby... + Bandwidth: + unduh + unggah + Auto-Tidur Tidak Ada Jaringan + Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia + Anda telah beralih ke identitas Tor baru! + Peramban + Gunakan ChatSecure + Kelola Tor + Aktifkan aplikasi ini untuk mengontrol layanan Tor + Pasang aplikasi? + Tidak ada jaringan terhubung. Menidurkan Tor... + Jaringan terhubung baik. Memanggil Tor... + memperbarui setting pada layanan Tor + SOCKS Tor + Port tempat proxy SOCKS Tor aktif (standar: 9050 atau 0 untuk mematikan) + Konfigurasi Port SOCKS + Port TransProxy Tor + Port tempat Proxy Transparan Tor aktif (standar: 9040 atau 0 untuk mematikan) + Konfigurasi Port TransProxy + Port DNS Tor + Port tempat DNS Tor aktif (standar: 5400 atau 0 untuk mematikan) + Konfigurasi Port DNS + Konfigurasi Torrc + HANYA UNTUK AHLI: masukkan baris konfigurasi direct Torrc + Torrc Custom + Mobile Martus - Aplikasi Dokumentasi Hak Asasi Manusia milik Benetech + IP Publik Tor Anda: + Mohon nonaktifkan aplikasi ini di Android Settings Apps jika Orbot anda bermasalah + Konflik Aplikasi + Auto-Refresh Transproxy + Pasang ulang rule Transproxy saat status jaringan berubah + BUANG PAKSA Transproxy + Ketuk disini untuk mengosongkan semua rule jaringan Transproxy SEKARANG + Rule proxy transparan telah kosong! + Anda tidak punya akses ROOT + Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif. + VPN + kbps + mbps + KB + MB + Bridge Telah Diperbarui + Silakan start ulang Orbot untuk mengaktifkan perubahan + Kode QR + Mode Bridge + Email + Laman + Aktivasi + 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. + Kirim Email + 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. + Peramban Standar + CATATAN: Hanya bridge Tor yang standar yang bekerja di perangkat Intel X86/ATOM + diff --git a/orbotservice/src/main/res/values-in-rID/strings.xml b/orbotservice/src/main/res/values-in-rID/strings.xml new file mode 100644 index 00000000..344037a2 --- /dev/null +++ b/orbotservice/src/main/res/values-in-rID/strings.xml @@ -0,0 +1,284 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mulai dan akhiri Tor + torproxyservice + Orbot sedang dimulai... + Tersambung ke Jaringan Tor + Orbot telah dibatalkan + TorService dimatikan + Memulai klien Tor... + selesai. + menunggu. + 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 + Beranda + Jelajah + Pengaturan + Log + Bantuan + VPN + Mulai + Berhenti + Tentang + Dapatkan aplikasi... + Unduh + Unggah + Bantuan + Tutup + Tentang + Hapus Log + Periksa + Keluar + Pindai BridgeQR + Bagikan BridgeQR + - sentuh dan tahan untuk memulai - + Proxy Transparan (Dibutuhkan Root) + Proxy Transparan + Otomatis Torfying Aplikasi + Tor Semuanya + Trafik proxy untuk semua aplikasi melalui Tor + Alternatif Port Proxy + PERINGATAN: Temukan port umum (80, 443, dll). *Gunakan Hanya* jika \'Semua\' atau \'Aplikasi\' mode tidak bekerja. + Daftar Port + Daftar port untuk proxy. *GUNAKAN HANYA* jika modus \'Semua\' atau \'Apl\' tidak bekerja + Masukkan port untuk proxy + Minta Akses Root + Meminta akses root untuk proxy transparan + Binary Tor berhasil dipasang! + File binary Tor tidak dapat dipasang. Silahkan periksa log dan beritahukan ke tor-assistants@torprojects.org + Kesalahan Pada Aplikasi + Orbot + Tentang Orbot + Berikutnya + Kembali + Selesai + Oke + Batal + + Beberapa Rincian Orbot + 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. + Izin Diberikan + Perizinan Orbot + Baik sekali! Kami telah mendeteksi bahwa anda telah mengaktifkan perizinan root untuk Orbot. Kami akan menggunakan kekuatan ini secara bijak. + 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! + Jika anda tidak memiliki akses root atau tidak tahu tentang apa yang kita bicarakan, pastikan untuk menggunakan aplikasi yang dibuat untuk bekerja dengan Orbot. + Saya mengerti dan ingin melanjutkan tanpa Superuser + Berikan Akses Root untuk Orbot + Konfigurasi Torifikasi + Orbot memberikan pilihan kepada anda untuk mengerahkan semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi anda secara individu. + Proxy Semua Aplikasi Melalui Tor + Pilih Individu Aplikasi untuk Tor + Orbot- Aplikasi teraktifkan + 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 + ChatSecure - Client instant messaging aman untuk Android + Pengaturan Proxy - Pelajari bagaimana mengkonfigurasikan aplikasi untuk bekerja dengan Orbot + Aplikasi Mesin Pencari DuckDuckGo + Setel proxy Twitter ke host \"localhost\" dan port 8118 + StoryMaker - Tulis cerita dan biarkan Tor yang mengurus keamanannya! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Pengaturan Proxy + 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 + Orbot sudah siap! + 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! + Konfigurasi Orbot terlebih dahulu sebelum anda menggunakannya! + + 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. + Jasa Penyimpanan Rahasia + Umum + Mulai Orbot saat Boot + Secara otomatis memulai Orbot dan menghubungkan dengan Tor ketika perangkat Android anda boot + + + 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. + + Peringatan + 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. + + Perizinan + Anda dapat secara opsional memberikan Orbot akses \'Superuser\' untuk mengaktifkan fitur lanjutan, seperti Transparan Proxying. + Jika anda tidak ingin melakukan ini, mohon pastikan bahwa anda menggunakan aplikasi yang dibuat untuk dapat bekerja dengan Orbot. + Perangkat anda belum di-root atau tidak punya akses \'Superuser\'. Silakan coba mode \'Aplikasi\' di tampilan utama. + + Orbot-Aplikasi Teraktifkan + ChatSecure: Aplikasi obrolan aman dengan Enkripsi Off-the-Record + Temukan semua aplikasi Guardian Project di Google Play + Temukan semua aplikasi Guardian Project di F-Droid + Temukan semua aplikasi Guardian Project di https://f-droid.org + + Transparan Proxying + Hal ini akan memungkinkan aplikasi anda untuk secara otomatis berjalan melalui jaringan Tor tanpa konfigurasi apapun. + (Tandai box ini jika anda tidak tahu apa yang kita bicarakan) + Tidak ada + Tor Tethering + Mengaktifkan Transparan Proxying Tor untuk Wifi dan Perangkat Tether USB (diperlukan restart) + Meminta Akses Superuser + Pilih Aplikasi + Pilih Aplikasi untuk Mengerahkan Melalui Tor + Konfigurasi Simpul + Itu adalah pengaturan lanjutan yang dapat mengurangi anonimitas anda + Simpul Masuk + Sidik jari, alias, negara dan alamat untuk loncatan pertama + Masukkan Simpul Masuk + Ijinkan Latar Belakang Berjalan + Proxy Semuanya + Tanpa Proxy + Balik Pilihan + Outbound Proxy Jaringan (Opsional) + Outbound Jenis Proxy + Protokol yang digunakan untuk server proxy: HTTP, HTTPS, Socks4, Socks5 + Masukkan Jenis Proxy + Outbound Host Proxy + Nama host Server Proxy + Masukkan Host Proxy + Outbound Port Proxy + Port Server Proxy + Masukkan port Proxy + Outbound Nama Pengguna Proxy + Nama Pengguna Proxy (Opsional) + Masukkan Nama Pengguna Proxy + Outbound Sandi Proxy + Sandi Proxy (Opsional) + Masukkan Sandi Proxy + Status + Menyetel transparan proxying penuh... + Menyetel apl-berbasis proxying transparan... + Proxying transparan DIAKTIFKAN + TransProxy diaktifkan untuk Tethering! + PERINGATAN: kesalahan dalam memulai proxying transparan! + Aturan TransProxy dibersihkan + Tidak dapat memulai proses Tor: + Polipo aktif di port: + Menyetel proxying transparan berbasis-port... + Kesalahan pada Bridge + Agar dapat menggunakan fitur bridge, anda perlu memasukkan minimal satu alamat IP bridge. + Kirimkan email ke bridges@torproject.org dengan baris \"get bridges\" dengan sendirinya dalam tubuh surat dari akun gmail. + Kesalahan + Pengaturan ReachableAddresses anda menyebabkan kesalahan! + Pengaturan relay anda menyebabkan kesalahan! + Node Keluar + fingerprints, nama, negara dan alamat untuk hop terakhir + Memasuki Node Keluar + Node pengecualian + Pengecualian fingerprints,nama, negara dan alamat + Memasuki Node Pengecualian + Node Terlarang + Pakai *hanya* spesifik node + Bridges + Pakai Bridges + Bridges Terobfuskasi + Nyalakan alternatif node masuk ke dalam Tor Network + Nyalakan jika pengaturan bridges adalah bridges terobfuskasi + Alamat IP dan port bridges + Memasuki Alamat Bridge + Relays + Sedang me-Relay + Nyalakan perangkat anda menjadi non-exit relay + Port Relay + Port mendengarkan untuk TOR relay anda + Memasuki OR port + Nama Relay + sebuah nama untuk Tor Relay anda + Masukkan nama relay + Addresses Terjangkau + Jalankan sebagai client dibalik firewall dengan ketentuan ketat + Ports terjangkau + Port terjangkau dibalik firewall ketat + Memasuki ports + Layanan Penyimpanan Rahasia + Membolehkan perangkat-nyala untuk diakses lewat Tor Network + memasuki localhost port untuk layanan rahasia + Ports Layanan Rahasia + nama teralamatkan untuk layanan rahasia anda (otomatis dibuat) + nyalakan debug log untuk output (harus menggunakan adb atau aLogCat untuk menampilkan) + Beranda Projek: + https://www.torproject.org/docs/android https://guardianproject.info/apps/orbot/ + Lisensi Tor + https://torproject.org + Perangkat Lunak Pihak Ke-3: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Sebuah aplikasi ingin membuka port %S server tersembunyi ke jaringan Tor. Hal ini aman jika anda mempercayai aplikasi tersebut. + menemukan proses Tor yang ada... + Sesuatu yang buruk terjadi. Periksa log + layanan tersembunyi pada: + tidak dapat membaca nama layanan tersembunyi + Tidak dapat memulai Tor: + Boot ulang perangkat anda, gagal me-reset Tor! + Gunakan Iptables Default + menggunakan binary iptables built-in daripada yang disertakan dengan Orbot + Binary Tor tidak dapat dipasang atau ditingkatkan + Selalu pelihara icon dalam toolbar ketika Orbot terhubung + Pemberitahuan Selalu-Hidup + Tampilkan notifikasi melebar dengan negara dan IP keluar Tor + Notifikasi Melebar + Bridge diaktifkan! + + Bahasa + Pilih lokal dan bahasa untuk Orbot + Pilih Bahasa + Biarkan default atau berlaih ke bahasa saat ini + diperkuat dengan Tor + Simpan Pengaturan + Tidak ada koneksi internet; Tor sedang standby... + Bandwidth: + unduh + unggah + Auto-Tidur Tidak Ada Jaringan + Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia + Anda telah beralih ke identitas Tor baru! + Peramban + Gunakan ChatSecure + Kelola Tor + Aktifkan aplikasi ini untuk mengontrol layanan Tor + Pasang aplikasi? + Tidak ada jaringan terhubung. Menidurkan Tor... + Jaringan terhubung baik. Memanggil Tor... + memperbarui setting pada layanan Tor + SOCKS Tor + Port tempat proxy SOCKS Tor aktif (standar: 9050 atau 0 untuk mematikan) + Konfigurasi Port SOCKS + Port TransProxy Tor + Port tempat Proxy Transparan Tor aktif (standar: 9040 atau 0 untuk mematikan) + Konfigurasi Port TransProxy + Port DNS Tor + Port tempat DNS Tor aktif (standar: 5400 atau 0 untuk mematikan) + Konfigurasi Port DNS + Konfigurasi Torrc + HANYA UNTUK AHLI: masukkan baris konfigurasi direct Torrc + Torrc Custom + Mobile Martus - Aplikasi Dokumentasi Hak Asasi Manusia milik Benetech + IP Publik Tor Anda: + Mohon nonaktifkan aplikasi ini di Android Settings Apps jika Orbot anda bermasalah + Konflik Aplikasi + Auto-Refresh Transproxy + Pasang ulang rule Transproxy saat status jaringan berubah + BUANG PAKSA Transproxy + Ketuk disini untuk mengosongkan semua rule jaringan Transproxy SEKARANG + Rule proxy transparan telah kosong! + Anda tidak punya akses ROOT + Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif. + VPN + kbps + mbps + KB + MB + Bridge Telah Diperbarui + Silakan start ulang Orbot untuk mengaktifkan perubahan + Kode QR + Mode Bridge + Email + Laman + Aktivasi + 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. + Kirim Email + 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. + Peramban Standar + CATATAN: Hanya bridge Tor yang standar yang bekerja di perangkat Intel X86/ATOM + diff --git a/orbotservice/src/main/res/values-in/strings.xml b/orbotservice/src/main/res/values-in/strings.xml new file mode 100644 index 00000000..42c44612 --- /dev/null +++ b/orbotservice/src/main/res/values-in/strings.xml @@ -0,0 +1,48 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mulai dan akhiri Tor + torproxyservice + Orbot sedang dimulai… + Tersambung ke Jaringan Tor + Orbot telah dibatalkan + Orbot sedang dimatikan + PERINGATAN: + Home + Jelajahi + Pengaturan + Log + Bantuan + Mengenai + Bantuan + Dekat + Mengenai + Hapus Log + Periksa + Keluar + Tor Semuanya + Daftar Port + Minta Akses Dasar + Kembali + Batal + + Pengaturan Proxy + + Umum + + + + Peringatan + + + + Tidak ada + Status + Kesalahan + + Simpan Pengaturan + diff --git a/orbotservice/src/main/res/values-is/strings.xml b/orbotservice/src/main/res/values-is/strings.xml new file mode 100644 index 00000000..ca2f9cbd --- /dev/null +++ b/orbotservice/src/main/res/values-is/strings.xml @@ -0,0 +1,278 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + ræsa og stöðva Tor + torproxyþjónusta + Orbot er að ræsa... + Tengdur við Tor netið + Orbot er slökkt + Kveiki á Tor notanda... + lokið. + bíða. + 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 + Heim + Vafra + Stillingar + Skráning + Hjálp + Byrja + Stöðva + Um + Niðurhal + Upphal + Hjálp + Loka + Um + Hreinsa Skráningu + Athuga + Hætta + Skanna BridgeQR + Deila BridgeQR + - ýttu lengi til að byrja - + Gegnsætt Proxy (Þarfnast Rótaraðgangs) + Gegnsætt Proxy + Sjálfkrafa Tor-gera smáforrit + Tor Allt + Beina umferð fyrir öll smáforrit í gegnum Tor + Port Beinir til vara + AÐVÖRUN: Fer framhjá algengum portum (80, 443, etc). *NOTA AÐEINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki. + Porta Listi + Listi yfir port til að proxya. *NOTA AÐEINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki + Settu inn port til að proxya + Biðja um Rótaraðgang + Þarfnast rótaraðgangs fyrir gegnsæja proxýun + Uppsetning Tor skráa tókst! + Tor binary skrár gátu ekki verið settar upp. Vinsamlegast athugaðu Skráninguna og láttu vita til tor-assistants@torproject.org + Villa í Forriti + Orbot + Um Orbot + Næsta + Til baka + Enda + Ókei + Hætta við + + Fáein Orbot Smáatriði + 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. + Aðgangur Heimilaður + Orbot Leyfisveiting + Frábært! Við höfum skynjað að þú hefur rótaraðgang heimilaðan fyrir Orbot. Við munum nota þetta vald skynsamlega. + Þ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! + 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. + Ég skil og vil halda áfram án réttinda Ofurnotanda + Veita rótaraðgang fyrir Orbot + Stilla Torinleika + Orbot gefur þér möguleikann á að beina allri umferð smáforrita í gegnum Tor EÐA að velja smáforrit hvert fyrir sig. + Beina umferð fyrir öll smáforrit í gegnum Tor + Velja Einstök Smáforrit fyrir Tor + Orbot-virk Smáforrit + 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. + ChatSecure - Öruggur spjall þjónn fyrir Android + Proxy Stillingar - Lærðu hvernig á að stilla smáforrit til að virka með Orbot + DuckDuckGo Leitarvél smáforrit + Setja Twitter proxy hýsir til \"localhost\" and port 8118 + StoryMaker - Búða til sögu og skildu það eftir fyrir tor vegna öryggis! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy Stillingar + 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 + Orbot er tilbúinn! + 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! + Vinsamlegast stilltu Orbot áður en þú getur byrjað að nota það! + + Þ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. + Falin Þjónusta Hýsing + Almennt + Virkja Orbot við Ræsingu + Sjálfkrafa virkja Orbot og tengja Tor þegar Android tækið þitt ræsist + + + 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. + + Aðvörun + 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. + + Leyfisveitingar + Þú getur valfrjálst veitt Orbot \'Ofurnotanda\' aðgang til að virkja stillingar fyrir lengra komna, eins og Gegnsæ Proxýun. + Ef þú vilt ekki gera þetta, vinsamlegast vertu viss um að nota smáforrit sem gerð eru til að vinna með Orbot + 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. + + Orbot-Virk Smáforrit + ChatSecure: Öruggt spjall smáforrit með Utanvegar Dulkóðun + Finndu öll Guardian Verkefnis smáforrit á Google Play + Finndu öll smáforrit úr Guardian Verkefninu á F-Droid + Finndu öll smáforrit úr Guardian Verkefninu á https://f-droid.org + + Gegnsæ Proxýun + Þetta leyfir smáforritunum þínum sjálfkrafa að keyra í gengum Tor netið án nokkurra stillinga. + (Hakaðu í þenna reit ef þú hefur enga hugmynd um hvað við erum að tala) + Engin + Tor Netaðgangspunktur + Leyfa Tor Gegnsæja Proxýun fyrir WiFi og USB Tæki með Netaðgengi (þarfnast endurræsingar) + Biðja um Ofurnotandaréttindi + Velja Smáforrit + Velja Smáforrit til að Beina í gegnum Tor + Punkta Stilling + Þetta eru flóknari stillingar sem geta minnkað nafnleysið þitt + Inngangs Punktur + Fingraför, uppnefni, lönd og heimilisföng fyrir fyrsta hoppið + Sláðu Inn Inngangspunkt + Proxy Allt + Proxy Ekkert + Öfugt Val + Útistandandi Net Proxy (Valfrjálst) + Útistandandi Proxy Gerð + Protocol til að nota fyrir proxy þjón: HTTP, HTTPS, Socks4, Socks5 + Sláðu Inn Gerð Proxýs + Útistandandi Proxy Hýsir + Proxy Netþjóns nafn + Sláðu Inn Proxy Þjón + Útistandandi Proxy Port + Proxy Netþjóns port + Sláðu Inn Proxy port + Útistandandi Proxy Notendanafn + Proxy Notendanafn (Valfrjálst) + Sláðu Inn Proxy Notendanafn + Útistandandi Proxy Lykilorð + Proxy Lykilorð (Valfrjálst) + Sláðu Inn Proxy Lykilorð + Staða + Set upp full-gegnsæjan proxy... + Set upp smáforrita-byggðan gegnsæjan proxy... + Gegnsæ proxýun KVEIKT + TransProxy kveikt fyrir Netaðgangspunkt! + AÐVÖRUN: villa við að kveikja á gegnsærri proxýun + TransProxy reglur hreinsaðar + Gat ekki kveikt á Tor þráð: + Polipo keyrir á porti: + Set upp port-byggða gegnsæja proxýun... + Brúar Villa + Til að nota brúar viðbótina, verðuru að slá inn að minnsta kosti eina IP addressu fyrir brú. + Sendu tölvupóst til bridges@torproject.org með setningunni \"get bridges\" eitt og sér í innihaldi skeytisins frá gmail aðgangi. + Villa + Þitt ReachableAddressur stillingar ollu undanþágu! + Endurvarp stillingar þínar ollu undanþágu! + Útgangspunktar + Fingraför, uppnefni, lönd og heimilisföng fyrir síðasta hoppið + Sláðu Inn Útgangspunkta + Útiloka Punkta + Fingraför, uppnefni, lönd og heimilisföng til að útiloka + Sláðu Inn Útiloka Punkta + Strangir Punktar + Nota *aðeins* þessa tilgreindu punkta + Brýr + Nota Brýr + Villandi Brýr + Kveikja hliðstæðan inngangspunkt inná Tor Netið + Leyfa ef stilltar brýr eru villandi brýr + IP addressa og brúarport + Sláðu Inn Brúar Addressur + Endurvarpar + Endurvörpun + Leyfa tækinu þínu að vera útgangslaus endurvarpi + Endurvörpunar Port + Hlustunar port fyrir Tor endurvarpann þinn + Sláðu Inn OR port + Endurvörpunar viðurnefni + Viðurnefni fyrir Tor endurvarpið þitt + Sláðu Inn sérhannað endurvarp viðurnefni + Nálgunarhæf Heimilisföng + Keyra sem notandi bakvið eldvegg með hamlandi skilyrðum + Nálgunarhæf port + Port nálgunarhæf bakvið hamlandi eldvegg + Sláðu Inn port + Falin Þjónusta Hýsing + leyfa á-tæki netþjón til að vera aðgengilegur í gegnum Tor netið + sláðu inn localhost port fyrir faldar þjónustur + Falin Þjónustu Port + nafnið fyrir falda þjónustu þína (búið til sjálfkrafa) + leyfa villuskráningu á verða búin til (verður að nota adb eða aLogCat til að skoða) + Heimili Verkefni(sins): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor Leyfið + https:torproject.org + Hugbúnaður frá 3ja aðila: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Smáforrit vill opna falið port þjóns %S að Tor netinu. Þetta er öruggt ef þú treystir smáforritinu. + fann annan Tor þráð... + Eitthvað slæmt gerðist. Athugaðu skráninguna + falin þjónusta á: + get ekki lesið nafn földu þjónustunnar + Get ekki kveikt á Tor: + Endurræstu tækið þitt, ekki hægt að núllstilla Tor! + Nota Upprunalegar IPtöflur + nota innbyggðar iptöflur binary í staðinn fyrir þær sem fylgja með Orbot + Tor binary-in gátu ekki verið uppsettar eða uppfærðar. + Alltaf hafa smámynd í glugganum þegar Orbot er tengudr + Alltaf-Á Upplýsingar + Sýndu útvíkkaðar upplýsingar varðandi Tor útgangsland og IP tölu + Útvíkkaðar Upplýsingar + Brýr kveiktar! + + Tungumál + Veldu staðsetningu og tungumál fyrir Orbot + Veldu Tungumál + Leyfa upprunalega eða skipta núverandi tungumáli + gert kleift af Tor + Geyma Stillingar + Engin tenging við netið; Tor er í biðstöðu... + Bandvídd: + niðri + uppi + Enginn Netkerfis Sjálfvirkur-Svefn + Svæfðu Tor þegar engin internet tenging er til staðar + Þú ert komin með nýtt Tor auðkenni! + Nota ChatSecure + Stilla Tor + Leyfa þessu smáforriti að stjórna Tor þjónustunni + Setja upp smáforrit? + Engin tenging við netið. Tor verður svæfður... + Tenging við netið er góð. Tor verður vakinn... + uppfæri stillingar í Tor þjónustu + Tor SOCKS + Port sem Tor býður SOCKS proxy á (upprunalegt: 9050 eða 0 til að slökkva) + SOCK Port Stilling + Tor GegnsærProxy Port + Port sem Tor býður Gegnsæjum Proxy á (upprunalegt: 9040 eða 0 til að slökkva) + GegnsærProxy Port Stilling + Tor DNS Port + Port sem Tor býður DNS á (upprunalegt: 5400 eða 0 til að slökkva) + DNS Port Stilling + Torrc Mótanleg Stilling + AÐEINS SÉRFRÆÐINGAR: sláðu inn beinar torrc stillingar línur + Mótanlegt Torrc + Mobile Martus - Benetech Mannréttinda Skjölunar Smáforrit + Tor Almennings IP tölurnar Þínar + Vinsamlegast slökktu á þessu smáforriti í Android->Settings->Apps ef þú ert í vandræðum með Orbot: + Smáforrita Árekstur + Gegnsærproxy Sjálfkrafa Endurnýjun + Endursetja Gegnsærproxy reglurnar þegar ástand netsins breytist + Gegnsærproxy ÞVINGUÐ FJARLÆGING + Ýttu hér til að henda öllum gegnsærproxy net reglunum NÚNA + Gegnsær proxy reglum hent! + Þú ert ekki með RÓTAR aðgang kveikt + Þú gætir þurft að stöðva og byrja Orbot til að stillinga breytingar taka gildi. + kbps + mbps + KB + MB + Brýr Uppfærðar + Vinsamlegast endurræstu Orbot til að breytingarnar taki gildi + QR Kóðar + Brúar Viðmót + Tölvupóstur + Vefur + Virkja + Þú 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. + Senda Tölvupóst + Þú 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. + Staðlaður Vafri + ATHUGAÐU: Aðeins staðlaðar Tor brýr virka á Intel X86/ATOM devices + diff --git a/orbotservice/src/main/res/values-it/strings.xml b/orbotservice/src/main/res/values-it/strings.xml new file mode 100644 index 00000000..62f1455a --- /dev/null +++ b/orbotservice/src/main/res/values-it/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + avvia e ferma Tor + torproxyservice + Orbot è in esecuzione... + Connesso alla rete Tor + \"Orbot è disattivato + TorService si sta spegnendo + Avvio client Tor... + completa. + attesa. + 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 + Home + Sfoglia + Impostazioni + Log + Aiuto + VPN + Avvio + Ferma + About + Installa apps... + Download (velocità/totale) + Upload (velocità/totale) + Aiuto + Chiudi + About + Cancella log + Controlla + Esci + Scansiona BridgeQR + Condividi BridgeQR + - tieni premuto per avviare - + Proxying trasparente (Richiede root) + Proxying trasparente + Torifying automatico delle app + Tor ovunque + Traffico proxy di tutte le app attraverso Tor + Fallback porte proxy + ATTENZIONE: Aggira le porte comuni (80, 443, ecc). *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano. + Elenco porte + Lista di porte per cui fare proxy. *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano. + Inserisci porte da proxare + Richiesto accesso root + Richiede il root per il proxying trasparente + I binari di Tor sono stati installati con successo! + I file binari di Tor non possono essere installati. Controlla i log e notifica l\'accaduto su tor-assistants@torproject.org + Errore applicazione + Benvenuti in Orbot + About Orbot + Avanti + Indietro + Fine + Ok + Annulla + + Alcuni dettagli su Orbot + 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. + Permesso concesso + Permessi Orbot + Eccellente! Abbiamo rilevato la presenza dei permessi di root attivati per Orbot. Useremo questi poteri con saggezza. + 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! + Se non hai i permessi root o non hai idea di cosa siano, assicurati solamente di utilizzare applicazioni fatte per lavorare con Orbot. + Ho capito e desidero continuare senza il root + Concedi permessi root a Orbot + Configura Torification + Orbot dà la possibilità di instradare tutto il traffico delle applicazioni tramite Tor o scegliere le applicazioni singolarmente. + Usa Tor come proxy per tutte le applicazioni. + Seleziona singole App per Tor + App abilitate per Orbot + Ti invitiamo a scaricare & usare app che possono connettersi direttamente a Orbot. Fai click sui pulsanti qui sotto per installare. + ChatSecure - Client sicuro di messaggistica istantanea, per Android + Impostazioni proxy - Ulteriori informazioni su come configurare le app per funzionare con Orbot + App del motore di ricerca Duckduckgo + Twitter supporta il proxy http \"localhost:8118\" + StoryMaker - Crea una storia e lascia a Tor la sicurezza! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Impostazioni proxy + 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 + Orbot è pronto! + 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! + Perfavore configura Orbot prima di iniziare ad usarlo! + + 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@guardianproject.info per saperne di più. + Si aprirà il browser web predefinito per https://check.torproject.org per controllare se Orbot probabilmente è configurato e si è connessi a Tor. + Servizi nascosti + Generale + Avvia Orbot al boot + Avvia automaticamente Orbot e connetti Tor quando il dispositivo Android viene avviato + + + 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. + + Attenzione + 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. + + Permessi + Opzionalmente, è possibile concedere ad Orbot l\'accesso da superutente per abilitare funzionalità avanzate come il proxying trasparente. + Se non si vuole intraprendere questa scelta, ci si assicuri di utilizzare applicazioni fatte per funzionare con Orbot + Il vostro dispositivo non sembra essere rooted o fornire accesso da \'Superutente\'.\n\nPerfavore prova invece la modalità \'App\' nella schermata principale. + + Orbot-App abilitate + ChatSecure: App chat sicura con Cifratura Off-the-Record + Orfox: Browser progettato per la privacy che funziona attraverso Tor + Cerca tutte le app del Guardian Project su Google Play + Trova tutte le app Guardian Projec su F-Droid + Trova tutte le app Guardian Project su https://f-droid.org + + Proxying trasparente + Questo permette alle tue applicazioni di passare automaticamente attraverso la rete Tor senza necessità di ulteriore configurazione. + (Seleziona questa casella se non hai idea di quello di cui stiamo parlando) + Nessuno + Tethering Tor + Abilita il proxying trasparente di Tor per i dispositivi connessi in tethering via WiFi e USB (necessita di riavvio) + Richiede accesso superuser + Seleziona app + Scegli le applicazioni da utilizzare attraverso Tor + Configurazione nodo + Questi sono parametri di configurazione avanzati che possono ridurre il vostro anonimato + Nodi di entrata + Identificativi, nicknames, paesi ed indirizzi del primo hop + Inserisci nodi di entrata + Permetti Avvii in Background + Permetti a qualsiasi app di comunicare ad Orbot di avviare Tor e servizi relativi + Proxa tutto + Non proxare niente + Inverti selezione + Proxy di Rete in Uscita (Facoltativo) + Tipo proxy + Protocolli da utilizzare per i server proxy: HTTP, HTTPS, Socks4, Socks5 + Inserisci tipo proxy + Host proxy + Hostname server proxy + Inserire l\'host del proxy + Porta proxy + Porta del server proxy + Inserire la porta del proxy + Nome Utente del Proxy in Uscita + Nome Utente del Proxy (Facoltativo) + Inserisci Nome Utente del Proxy + Password del Proxy in Uscita + Password del Proxy (Facoltativo) + Inserisci Password Proxy + Stato + Configurazione del proxying completamente trasparente... + Configurazione del proxying trasparente basato su applicazione... + Proxying trasparente ABILITATO + Proxying trasparente abilitato per il tethering + AVVERTIMENTO: errore nell\'avvio del TransProxy! + Regole del TransProxy cancellate + Impossibile avviare il processo Tor: + Polipo è in esecuzione sulla porta: + Configurazione del proxying trasparente basato su porta... + Errore bridge + Al fine di utilizzare la funzionalità bridge, è necessario inserire almeno l\'indirizzo IP di un bridge. + Si consiglia di inviare una email a bridges@torproject.org con la linea \"get bridges\" da sola nel corpo del messaggio da un account gmail. + Errore + La tua configurazione dell\'indirizzo raggiungibile ha causato un\'eccezione! + La configurazione del tuo relay ha causato un\'eccezione! + Nodi di uscita + Identificatori, nicknames, paesi ed indirizzi per l\'ultimo hop + Inserire i nodi d\'uscita + Escludere i nodi + Identificatori, nicknames, paesi ed indirizzi da escludere + Inserire i nodi da escludere + Nodi specifici + Utilizza *solo* i nodi specificati + Ponti + Utilizza i bridge + Bridge mascherati + Abilita nodi alternati in entrata nella rete Tor + Attiva se i Bridge configurati sono mascherati + Indirizzo IP e porta dei bridge + Inserire gli indirizzi dei bridge + Relays + Relaying + Abilita il tuo dispositivo per essere un relay non di uscita + Porta del relay + Porta in ascolto per il proprio Tor relay + Inserire la porta OR + Nickname del relay + Il nickname per il proprio relay Tor + Inserire un nickname personalizzato per il relay + Indirizzo raggiungibile + Esegui come un client dietro un firewall con politiche restrittive + Porte raggiungibili + Porte raggiungibili dietro un firewall restrittivo + Inserisci porte + Abilita servizi nascosti + esegui server accessibili attraverso la rete Tor + inserire la porta per l\'host locale per i servizi nascosti + Porta per i servizi nascosti + il nome di indirizzamento per i propri servizi nascosti (generato automaticamente) + abilita i log di debug in output (richiede l\'uso di adb o aLogCat per esser visualizzato) + Home progetto: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Licenza Tor + https://torproject.org + Software di terze parti: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Un applicazione ha richiesto di aprire la porta per servizi nascosti %S alla rete Tor. Questo è sicuro se ci si fida dell\'applicazione. + trovato un processo Tor esistente... + E\' accaduto un evento indesiderato. Controllare i log. + servizio nascosto attivo: + Impossibile leggere il nome del servizio nascosto. + Impossibile avviare Tor: + Riavvia il tuo dispositivo, impossibile resettare Tor! + Utilizza Iptables di default + utilizza il binario di iptables installato invece di quello fornito con Orbot + Non è stato possibile installare o aggiornare i binari di Tor. + Mantieni sempre l\'icona nella barra degli strumenti quando Orbot è connesso. + Notifiche sempre attive + Visualizza notifica espansa con nazione e ip dell\'nodo d\'uscita Tor + Espandi notifiche + Bridge attivati! + + Lingua + Scegli le impostazioni internazionali e la lingua di Orbot + Scegli Lingua + Lasciare la predefinita o cambiare la lingua corrente + powered by Tor + Salva impostazioni + Nessuna connessione ad internet; Tor è in standby... + Larghezza di Banda: + giù + su + impedire spegnimento automatico della rete + Stand-by di Tor quando non c\'è un collegamento a internet disponibile + Sei passato a una nuova identità Tor! + Browser + Usa ChatSecure + Gestisci Tor + Abilita questa app per controllare il servizio Tor + Non sembra che tu abbia Orfox installato. Necessiti di aiuto, o apro semplicemente il browser? + Installare applicazioni? + Nessuna connettività di rete. Mettendo Tor a riposo... + Connettività di rete buona. Svegliando Tor... + aggiornamento impostazioni nel servizio Tor + Tor SOCKS + Porta sulla quale Tor offre il proxy SOCKS (default: 9050 o 0 per disabilitare) + Configurazione Porta SOCKS + Porta TransProxy Tor + Porta sulla quale Tor offre il Proxy Trasparente (default: 9040 o 0 per disabilitare) + Configurazione Porta TransProxy + Porte Tor DNS + Porta sulla quale Tor offre i DNS (default: 5400 o 0 per disabilitare) + Configurazione porte DNS + Configurazioni personalizzate di Torrc + SOLO ESPERTI: inserisci direttamente configurazioni torrc + Torrc personalizzate + Mobile Martus - App per la Documentazione dei Diritti Umani Benetech + Il tuo Tor IP pubblico è: + Perfavore disabilita quest\'app in Android->Impostazioni->Apps se stai avendo problemi con Orbot: + Conflitto app + Auto-Refresh TransProxy + Ri-applica regole Transproxy quando cambia lo stato della rete + FORZA RIMOZIONE Transproxy + Clicca qui per eliminare tutte le regole di rete Transproxy IMMEDIATAMENTE + Regole Proxy Trasparente eliminate! + Non ci sono i permessi di ROOT abilitati + Potrebbe essere necessario riavviare Orbot per applicare i cambiamenti delle impostazioni. + VPN + kbps + mbps + KB + MB + Bridge attivati + Per favore riavvia Orbot per rendere effettive le modifiche + Codici QR + 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 + Modalità Bridge + Email + Web + Attiva + Modalità VPN per le applicazioni + 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. + Invia email + 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. + Installa Orfox + Browser standard + NOTA: Solo i Tor Bridges standard funzionano sui dispositivi Intel x86/Atom + Mondo + diff --git a/orbotservice/src/main/res/values-iw/strings.xml b/orbotservice/src/main/res/values-iw/strings.xml new file mode 100644 index 00000000..e5e33f9b --- /dev/null +++ b/orbotservice/src/main/res/values-iw/strings.xml @@ -0,0 +1,233 @@ + + + Orbot + Orbot הינה אפליקציית פרוקסי חינמית המאפשרת לאפליקציות אחרות להשתמש באינטרנט בבטחה. Orbot נעזרת ב-Tor כדי להצפין את תעבורת האינטרנט שלך ולהסוותה באמצעותה ניתובה דרך מספר מחשבים ברחבי העולם. Tor היא תוכנה חופשית ורשת פתוחה המסייעת לך להתגונן מפני סוגים מסוימים של אמצעי ניטור ומעקב אחר רשת האינטרנט המאיימים על הפרטיות, החירות האישית, פעילויות עסקיות ומערכות יחסים חשאיות. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + התחל ועצור את Tor + שירות פרוקסי Tor + Orbot מתחיל… + מחובר לרשת Tor + Orbot כבוי + מתחיל לקוח Tor... + הושלם. + מחכה. + אזהרה: התעבורה שלך אינה אנונימית עדיין! בבקשה הגדר את האפליקציות שלך כך שיתאפשר שימוש בפרוקסי HTTP (קרי 127.0.0.1:8118) או SOCKS4A או SOCKS5 (קרי 127.0.0.1:9050) + בית + דפדף + הגדרות + רישום + עזרה + התחל + עצור + אודות + הורדה + העלאה + עזרה + סגור + אודות + נקה רישום + בדוק + יציאה + סרוק BridgeQR + שתף BridgeQR + -נגיעה ארוכה להתחלה- + פרוקסי שקוף (שורש נדרש) + פרוקסי שקוף + עבודה אוטומטית עם אפליקציות דרך Tor + הכל דרך Tor + תעבור דרך פרוקסי עבור כל האפליקציות דרך Tor + מפלט פורט פרוקסי + אזהרה: עקוף פורטים נפוצים (80,443 וכו\'). *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + רשימת פורטים + רשימת פורטים לפרוקסי. *השתמש רק* אם האופנים \'All\' או \'App\' לא עובדים. + הזן פורטים לפרוקסי + דרושה גישת שורש + בקש גישה עליונה עבור שימוש בפרוקסי שקוף + קבצים ברי הרצה של Tor הותקנו בהצלחה! + הקבצים ברי ההרצה של Tor לא ניתנו להתקנה. בבקשה בדוק את הלוג והודע ל +tor-assistants@torproject.org + שגיאת אפליקציה + Orbot + אודות Orbot + הבא + הקודם + סיים + אישור + ביטול + + פרטים מסוימים של Orbot + Orbot היא אפליקציית קוד פתוח הכוללת את Tor, LibEvent ו-Polipo. היא מתחבר לרשת Tor באמצעות שרת פרוקסי HTTP מקומי (8118) ושרת פרוקסי SOCKS (פורט 9050). Orbot יכולה בנוסף עם הרשאות רוט לנתב את כל תעבורת האינטרנט של המכשיר דרך Tor כברירת מחדל. + ניתנה הרשאה + הרשאות Orbot + מצוין! גילינו כי יש לך הרשאות שורש מאופשרות בשביל Orbot. אנחנו נשתמש בכוח הזה בחוכמה. + בזמן שזה לא נדרש, Orbot יכולה להפוך להיות כלי חזק יותר אם למכשיר שלך יש גישה עליונה. תשתמש בכפתור למטה כדי לקבל כוחות על של Orbot ! + אם אין לך גישה עליונה או אין לך מושג על מה אנחנו מדברים, רק תוודא שתשתמש באפליקציות שנועדו לעבוד עם Orbot. + הבנתי ואני מעדיף להמשיך בלי Superuser + אפשר גישת שורש עבור Orbot + הגדר עבודה באמצעות Tor + Orbot נותנת לך אפשרות לכוון את כל תעבורת האפליקציות דרך Tor או לבחור את האפליקציות שלך בנפרד. + השתמש בפרוקסי בכל האפליקציות דרך Tor + בחר אפליקציות מסוימות עבור Tor + Orbot מתאפשר על ידי אפליקציות + האפליקציות מתחת פותחו לעבודה עם Orbot. לחץ על כל כפתור להתקנה מיידית, או שאתה יכול למצוא אותם אחר כך ב Google Play, באתר GuardianProject.info או +דרך F-Droid.org + ChatSecure - תוכנת מסרים מידיים מאובטחת לאנדרואיד + הגדרות פרוקסי - למד איך להגדיר אפליקציות לעבוד עם Orbot + DuckDuckGo אפליקציית מנוע חיפוש + קבע פרוקסי Twitter למארח \"localhost\" ולפורט 8118 + StoryMaker - מערך שיעורים לעיתונאים על שימוש ב-Tor להגנה על עבודתם. + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + הגדרות פרוקסי + אם אפליקצת האנדרואיד שאתה משתמש תומכת בפרוקסי מבוסס 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 + Orbot מוכן! + מיליוני אנשים ברחבי העולם משתמשים בTor מסיבות רבות.\n\n עיתונאים ובלוגרים, פעילי זכויות אדם, שוטרים, חיילים, תאגידים, אזרחי במשטרים מדוגאים וגם אזרחים פשוטים... ועכשיו גם אתה! + אנא הגדר את Orbot לפני שתוכל להתחיל להשתמש בה! + + דבר זה יוביל את דפדפן הרשת שלך למוד https://check.torproject.org כדי לראות אם Orbot הוגדרה כראוי וכן כי אתה מחובר לרשת Tor. + איחסון שירותים נסתרים + כללי + התחל את Orbot בהדלקת המכשיר + התחל את Orbot והתחבר לרשת Tor אוטומטית כאשר המכשיר נדלק + + + + אזהרה + + הרשאות + אתה יכול להעניק לאפליקציה Orbot גישת \'Superuser\' כדי לאפשר מאפיינים מתקדמים כמו למשל, פרוקסי שקוף. + אם אתה לא רוצה לעשות את זה, אנא הקפד להשתמש באפליקציות שיועדו לעבוד עם Orbot + + Orbot-יישומים מופעלים + ChatSecure: אפליקציית מסרים עם הצפנת Off-the-Record + מצא את כל אפליציות Guardian Project אצל Google Play + + פרוקסי שקוף + זה מאפשר לאפליקציות שלך לרוץ באופן אוטומטי דרך רשת Tor ללא כל תצורה. + (סמן תיבה זו אם אין לך מושג על מה אנחנו מדברים) + כלום + Tor Tethering + מאפשר עבודה עם פרוקסי שקוף עבור רשת אלחוטית ומכשירי USB Tethered (דורש אתחול מחדש) + דרוש אישור Superuser + בחר אפלקציות + בחר אפלקציות + הגדרות Node + קיימות הגדרות מתקדמות שיכולות להפחית את האנונימיות שלך + Entrance Nodes + טביעות אצבע, כינויים, ארצות וכתובות עבור המעבר הראשון + הכנס Entrance Nodes + העבר הכל דרך פרוקסי + אל תשתמש בפרוקסי + הפוך בחירה + Outbound Proxy Type + פרוטוקול שימוש בשרת פרוקסי: HTTP, HTTPS, Socks4,Socks5 + סוג הפרוקסי + מארח של Outbound Proxy + שם מארח שרת פרוקסי + הכנס מארח פרוקסי + פורט של Outbound Proxy + פורט שרת פרוקסי + הכנס פורט של פרוקסי + שם משתמש של Outbound Proxy + שם משתמש פרוקסי (רשות) + הזן שם משתמש פרוקסי + סיסמא של Outbound Proxy + סיסמת פרוקסי (רשות) + הזן סיסמת פרוקסי + סטטוס + הכנה של הפרוקסי השקוף... + הכנה של הפרוקסי השקוף מבוסס אפליקציות... + פרוקסי שקוף מאופשר + פרוקסי שקוף מאופשר ל Tathering! + אזהרה: שגיאה התחילה את הפרוקסי השקוף! + כללי TransProxy טוהרו + אין אפשרות להתחיל תהליך Tor: + Polipo רץ על פורט: + הכנה של הפרוקסי השקוף מבוסס פורט... + שגיאת גשר + שגיאה + צמתי יציאה + הזן צמתי יציאה + צמתים מוצאים + הזן צמתים מוצאים + צמתים קפדנים + השתמש *רק* בצמתים מצוינים אלו + גשרים + השתמש בגשרים + גשרים מעורפלים + כתובת ה-IP ויציאה של הגשרים + הכנס כתובות גשר + ממסרים + ממסור + אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה + פורט הממסר + פורט מאזין עבור Tor relay + הכנס יציאת OR + כינוי הממסר + הכינוי לממסר Tor שלך + הזן כינוי עבור ממסר + כתובות בהישג יד + פורטים בהישג יד + הזן פורטים + אחסון שירותים נסתרים + הזן פורטים של localhost עבור שירותים נסתרים + פורט השירותים הנסתרים + אתרי הפרויקט: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + הרשיון של Tor + https://torproject.org/ + תוכנה-צד-ג׳: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + נמצא תהליך Tor קיים… + משהו רע התרחש. בדוק את היומן + שירות נסתר ב: + לא מסוגל לקרוא שם שירות נסתר + לא מסוגל להתחיל את Tor: + אתחל את המכשיר שלך, אין אפשרות להפעיל מחדש את Tor! + השתמש בברירות המחדל של iptables + לשמור תמיד את האיקון בסרגל כלים כשאורבוט מחובר + גשרים מאופשרים! + + שפה + בחר את המקומיות והשפה של Orbot + בחר שפה + השאר ברירת מחדל או החלף לשפה הנוכחית + מופעל באמצעות Tor + שמירת הגדרות + אין חיבור לאינטרנט; תור ממתין... + רוחב פס: + מטה + מעלה + כבה את Tor כאשר אין חיבור לאינטרנט + החלפת אל זהות Tor חדשה! + הפעל את ChatSecure + נהל Tor + אפשר את אפליקציה זו כדי לשלוט בשירות Tor + להתקין אפליקציה? + אין חיבור לרשת. מכבה את Tor.... + החיבור עובד טוב. מעיר את Tor... + מעדכן הגדרות Tor במכשיר + Tor SOCKS + הגדרות SOCKS Port + Tor TransProxy Port + הגדרת הפורט של TransProxy + Tor DNS Port + הIPs החיצוניים שלך עם Tor: + אין לך גישת רוט מאופשרת + תצטרך לכבות ולהפעיל את Orbot על מנת להחיל את השינוי בהגדרות. + kbps + mbps + KB + MB + קוד QR + דוא\"ל + אתר + הפעל + שלח דוא\"ל + דפדפן רגיל + diff --git a/orbotservice/src/main/res/values-ja/strings.xml b/orbotservice/src/main/res/values-ja/strings.xml new file mode 100644 index 00000000..1f117565 --- /dev/null +++ b/orbotservice/src/main/res/values-ja/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + Orbotは他のアプリがインターネットをより安全に使うことを可能にするフリーのプロキシアプリです。Orbotでは、Torを用いてあなたの端末のトラフィックを暗号化し、世界中のコンピューターを中継することで、そのトラフィックを隠します。Torはフリーのソフトウェアとオープンなネットワークであり、ユーザーの自由とプライバシーを脅かす監視活動や、機密のビジネス活動、国家によるトラフィック分析から身を守ることを助けてくれます。 + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Torを起動・停止する + Torプロクシサービス + Orbotが開始されています... + Torネットワークに接続しています + \"Orbotが解除されました + TorServiceが終了しています + Torクライエントを開始しています... + 完了 + お待ちください + 警告:この通信はまだ匿名化されていません! HTTP proxy 127.0.0.1:8118 か、 SOCKS4A または SOCKS5 proxy 127.0.0.1:9050 を利用するようにアプリケーション側で設定してください + ホーム + 閲覧 + 設定 + 履歴 + ヘルプ + VPN + スタート + 停止 + 情報 + アプリを入手… + ダウンロード + アップロード + ヘルプ + 閉じる + について + ログを削除する + 確認 + 終了 + ブリッジQRをスキャン + ブリッジQRを共有 + - 長押しして起動 - + 透過プロキシ (要root) + 透過プロキシ + アプリの自動Tor化中 + 全てをTor化 + 全てのアプリをTor経由で使う + Port Proxy Fallback + 警告:通常のポート(80,443等)を迂回。「全て」か「指定アプリ」モードが動作しない場合にのみ使用してください。 + ポート一覧 + プロキシを通すポート *警告* 「全て」か「指定アプリ」が動作しない場合にのみ使用してください。 + プロキシのポート番号を入力 + ルートアクセスの許可を要求します + 透過プロキシのためにroot権限が必要です + Torバイナリインストールが成功しました + Torバイナリファイルがインストールできませんでした。ログを調べて、通知をtor-assistants@torproject.orgに送信してください。 + アプリケーションエラー + Orbot + Orbotについて + + 戻る + 終了 + OK + キャンセル + + Orbot詳細 + Orbot はTor、LibEvent、Privoxyを含むオープンソース アプリケーションです。ローカルのHTTPプロキシ (8118) とSOCKSプロキシ (9050) を提供してTor接続します。root化された端末では、Orbotは全てのインターネット通信をTorを通して送信することもできます。 + 権限を取得完了 + Orbotの権限 + Orbotがroot権限を取得したことを確認しました。全ての機能が利用できます。 + Orbotはroot化された端末では全ての機能を活用できます。下のボタンを押してOrbotに管理者権限を与えてください。 + root化していなかったり、そもそもroot化が何のことだかわからない方は、Orbot上で動作確認が取れているアプリだけを使用してください。 + Superuserを利用せずに続行 + Orbotにroot権限を与える + Torをソフトウェアに使用する設定 + Orbotでは全てのアプリにTorプロキシを通すか、Torアプリを使う個々のアプリを指定できます。 + 全てのアプリにTorプロキシを通す + 指定したアプリだけにTorプロキシを通す + Orbotが有効化されたアプリ + 以下のアプリはOrbot用に作られています。それぞれのボタンを押すと今すぐインストールできます。Google Playからも同じものが探せます。 + ChatSecure - Android 用のセキュアなインスタントメッセージクライアント + Proxy Settings - Orbotでアプリを動かすための手順書 + DuckDuckGo 検索エンジンアプリ + Twitter proxyを「localhost」と8118番ポートに合わせる + StoryMaker - ストーリーを作成して、セキュリティのためTorで残します! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + プロキシ設定 + 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を参照してください。 + Orbotの準備が完了しました + 世界中で数百万人が様々な理由でTorを利用しています。\n\nジャーナリストやブロガー、人権団体、法的機関、軍隊、企業、独裁国家の市民、普通の市民も… そしてあなたも同じように利用することができます! + 使用を開始する前にOrbotを設定してください! + + Torネットワークに正常に接続しました - しかしお使いの端末が安全だとは限りません。「ブラウザ」ボタンを使用して接続のテストができます。 \n\nさらに詳細はhttps://guardianproject.info/apps/orbot を参照するか、help@guardianproject.info にメールを送信してください。 + ブラウザを開いてhttps://check.torproject.org にTor接続し、Orbotの設定が成功したかを試します。 + Hidden Services + 一般 + 起動時にOrbotを実行する + Android端末の起動時にOrbotを自動実行 + + + AndroidでもOrbotでTorが使えます!\n\nTorは、コンテンツフィルタリング、トラフィック分析、そしてプライバシー、機密情報や個人的な関係を脅かすネットワーク監視から守ることができます。\n\nこのウィザードはお使いの端末でOrbotとTorの設定ができます。 + + 注意 + Orbotをインストールしただけでは通信は匿名化されません。\n\nOrbot、Android端末、アプリの全てを正しく設定しないとTorは使えません。 + + 許可 + オプションとしてOrbotにスーパーユーザー権限を与えることで透過プロキシなどの追加機能が使えます。 + これを実行しない場合、Orbot用に作られたアプリだけを使ってください。 + お使いの端末はroot化されていないか、rootまたは「Superuser」にアクセスできないようです。 \n\n代わりに、メイン画面の「アプリ」モードを試してください。 + + Orbotが有効化されたアプリ + ChatSecure: 非記録式暗号によるセキュアなチャットアプリ + Orfox: Torを介して動作するプライバシーを強化したブラウザ + Google Playで全てのGuardian Projectのアプリを見つける + F-Droidで全てのGuardian Projectのアプリを見つける + https://f-droid.org で全てのGuardian Projectのアプリを見つける + + 透過プロキシ + これはあなたのアプリを自動的にTor経由で通信させます。 + (何を言っているのかわからないときはここをチェックしてください) + 無し + Torテザリング + Tor透過プロクシをWifiかUSBテザリングされたデバイスに対して有効化(再起動が必要) + 管理許可アクセスを要求します + アプリケーションを選択します + Torを経由させるアプリを選択 + ノード設定 + ご注意、先進設定が匿名レベルを縮小します + 入り口ノード + 最初のホップのためのデジタル指紋、ニックネーム、国とIPアドレス + 入り口ノードを入力 + バックグラウンドの開始を許可 + OrbotがTorと関連サービスを開始するように、任意のアプリに伝えます + すべてプロキシ + プロキシなし + 選択の反転 + 外方向ネットワークプロキシ (オプション) + 外方向プロキシの種類 + HTTP,HTTPS,Socks4,Socks5で使用するプロトコル + プロキシの種類を入力してください + 外方向プロキシのホスト + プロキシサーバのホスト名 + プロクシ ホストを入力 + 外方向プロキシのポート + プロキシサーバのポート + プロキシのポートを入力してください + 外方向プロキシのポート + プロキシユーザー名 (オプション) + プロキシのユーザー名を入力してください + 外方向プロキシのパスワード + プロキシのパスワード (オプション) + プロキシのパスワードを入力してください + 状態 + 完全な透過プロキシをセットアップ中... + アプリベースの透過プロキシをセットアップ中... + 透過プロキシ 有効 + テザリングでの透過プロキシ有効 + 警告: 透過プロキシの開始時にエラー発生 + 透過プロキシ ルール 消去完了 + Torプロセスの起動に失敗: + Polipoを実行中のポート: + ポートベースの透過プロキシをセットアップ中... + ブリッジ エラー + ブリッジ機能を利用するには、最低一つのブリッジIPアドレスの入力が必要です。 + gmailを使って、本文に「get bridges」と書いたメールをbridges@torproject.orgに送信してください。 + エラー + あなたのReachableAddresses設定により例外が発生しました! + あなたのリレー設定により例外が発生しました! + 出口ノード + 最後のホップのためのデジタル指紋、ニックネーム、国とIPアドレス + 出口ノードを入力 + 除外ノード + 除外するデジタル指紋、ニックネーム、国とIPアドレス + 除外ノードを入力 + Strictノード + ここに指定したノードのみを使用 + ブリッジ + ブリッジを使う + Obfus化されたブリッジ + 代替入り口ノードを有効化 + 設定したブリッジがObfus化されたブリッジであれば有効 + ブリッジのIPアドレスとポート + ブリッジのアドレスを入力 + リレー + リレー中 + この端末を非出口リレーにする + リレー ポート + このTorリレーのリスニングポート + ORポートを入力 + リレーのニックネーム + このTorリレーのニックネーム + リレーのカスタムニックネームを入力 + 到達可能アドレス + 制限設定のファイアウォールを通してクライアントとして実行 + 到達可能ポート + 制限設定のファイアウォールを通して到達可能なポート + ポートを入力 + Hidden Serviceのホスティング + デバイス上のサーバーをTor経由でアクセス可能にする + Hidden Service用のlocalhostのポートを入力 + Hidden Serviceのポート + あなたのHidden Serviceのアドレス(自動生成されます) + デバッグログの出力を有効化(閲覧にはadbかaLogCatが必要) + プロジェクトのホーム: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor ライセンス文書 + https://torproject.org + 第三者製のソフトウェア + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + アプリがhidden serverの port %S をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。 + Torプロセスを発見 + 何かが起こりました。ログを確認してください。 + hidden service 有効: + hidden serviceの名前読込不能 + Torを実行できませんでした + Torをリセットできません。お使いのデバイスを再起動してください! + デフォルトのlptablesを使う + Orbotバンドル版ではなく内蔵のiptablesを使う + Torバイナリのインストールまたはアップグレードは不可能でした。 + Orbotが接続中はアイコンを常にツールバーに表示 + 通知を常に有効化 + 拡張通知で、Torの出口の国とIPを表示します + 拡張通知 + ブリッジが有効です! + + 言語 + Orbotの地域と言語を選択 + 言語を選択 + 今の言語を変更するか、そのままにする + powered by Tor + 設定を保存 + インターネット接続なし。Torは待機中です... + 帯域幅: + ダウン + アップ + ネットワークなし時オートスリープ + ネット接続がない時 Tor をスリープさせる + 新たな Tor の身元に切り替えました。 + ブラウザ + ChatSecure を使用 + Tor を管理 + このアプリが Tor サービスをコントールできるようにする + Orfox をインストールしていないようです。それについて助けが必要ですか、あるいはただブラウザを開くべきですか? + アプリをインストールしますか? + ネットワーク接続がありません。Torはスリープします… + ネットワーク接続は良好です。Torを有効にします… + Torサービスの設定を更新中 + Tor SOCKS + TorがSOCKSプロキシを提供するポート (デフォルト: 9050、0にすると無効) + SOCKS ポート設定 + Tor透過プロキシポート + Torが透過プロキシを提供するポート (デフォルト: 9040、0にすると無効) + 透過プロキシポート設定 + Tor DNS ポート + TorがDNSを提供するポート (デフォルト: 5400、0にすると無効) + DNS ポート設定 + Torrc カスタム設定 + 上級者家のみ: 直接torrc設定行を入力します + Torrcをカスタム + Mobile Martus - Benetech 人権文書アプリ + あなたのTor公開IP: + Orbotで問題が発生する場合は、Android->設定->アプリ で、このアプリを無効にしてください: + アプリの競合 + 透過プロキシ自動リフレッシュ + ネットワークの状態が変化したとき、透過プロキシのルールを再適用します + 透過プロキシ強制削除 + ここをタップすると、今すぐすべての透過プロキシ ネットワークルールをフラッシュします + 透過プロキシのルールをフラッシュしました! + ROOT アクセスが有効ではありません + 変更した設定を有効にするために、Orbotを停止して開始する必要があるかもしれません。 + VPN + kbps + mbps + KB + MB + ブリッジを更新しました + 変更を有効にするにはOrbotを再起動してください + QRコード + モバイルネットワークが積極的にTorをブロックする場合、ブリッジを使用してネットワークにアクセスすることができます。\n\nブリッジを有効にするため、上のいずれかのブリッジタイプを選択してください。 + ブリッジ モード + メール + Web + アクティブ化 + アプリ VPN モード + AndroidのVPN機能を使用して、デバイス上のすべてのアプリをTorネットワークを介するようにすることができます\n\n個*警告* これは新しい、実験的な機能であり、いくつかのケースで自動的に起動しないこと、または停止することがあります。これは匿名のために使用しないでください。ファイアウォールやフィルターを通すためにのみ使用してください。 + メール送信 + あなたは、メール、ウェブを介して、またはブリッジQRコードをスキャンしてブリッジアドレスを取得することができます。ブリッジアドレスを要求するため、下の「メール」または「ウェブ」を選択してください。\n\nアドレスを入手したら、それをOrbot設定の「ブリッジ」設定にコピー& 貼り付けして、Orbotを再起動します。 + Orfoxをインストール + 標準ブラウザ + 注: 標準のTorブリッジは、Intel X86/ATOM デバイス上でのみ動作します + ワールド + diff --git a/orbotservice/src/main/res/values-kn-rIN/strings.xml b/orbotservice/src/main/res/values-kn-rIN/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-kn-rIN/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-kn/strings.xml b/orbotservice/src/main/res/values-kn/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-kn/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-ko/strings.xml b/orbotservice/src/main/res/values-ko/strings.xml new file mode 100644 index 00000000..765b5720 --- /dev/null +++ b/orbotservice/src/main/res/values-ko/strings.xml @@ -0,0 +1,214 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Tor 시작 및 중지 + Tor 프록시 서비스 + Orbot 시작 중… + Tor 네트워크에 연결됨 + Orbot이 비활성화되어 있습니다 + Tor 클라이언트 시작 중… + 완료. + 대기 중. + 경고: 귀하의 트래픽은 아직 익명이 아닙니다! HTTP 프록시 127.0.0.1:8118 또는 SOCKS4A 또는 SOCKS5 프록시 127.0.0.1:9050을 사용하여 응용 프로그램을 구성하십시오 + + 탐색 + 설정 + 로그 + 도움말 + VPN + 시작 + 중지 + 정보 + 다운로드 + 업로드 + 도움말 + 닫기 + 정보 + 로그 지우기 + 확인 + 종료 + 브릿지 QR코드 스캔하기 + 브릿지 QR코드 공유하기 + - 길게 눌러서 시작하기 - + 투명한 프록시 (루팅 필요) + 투명한 프록시 + 앱의 자동적인 토르화 + 모두 토르화 + 토르를 통한 모든 응용 프로그램에 대한 프록시 트래픽 + 대체 프록시 포트 + 경고 : 흔한 포트(80,443 등)만 순환. 전체 모드나 앱 모드가 작동하지 않을 경우에만 사용할 것. + 포트 목록 + 프록시 처리할 포트 목록. 만약 전체 모드나 앱 모드가 작동하지 않을 경우에만 사용할 것. + 프록시 포트 입력 + 루트 권한에 대한 접근 필요 + 명백한 프록시를 위해 루트 권한 요구 + Tor 바이너리가 성공적으로 설치되었습니다! + 토르 바이너리 파일을 설치할 수 없습니다. 로그를 확인해 주시고 tor-assistants@torproject.org 에 알려 주십시오. + 애플리케이션 오류 + Orbot + Orbot 정보 + 다음 + 뒤로 + 마침 + 확인 + 취소 + + Orbot에 대한 몇몇 상세사항 + Orbot은 Tor와, LibEvent, Polipo를 탑재한 오픈소스 어플리케이션입니다. 다이 앱은 Tor 네트워크로 연결되는 HTTP 프록시 (8118)와 SOCKS 프록시 (9050) 을 제공합니다. Orbot은 또한, 루팅된 폰의 경우, 모든 트래픽을 Tor를 통할 수 있도록 합니다. + 사용 권한 부여 + Orbot 사용 권한 + 완벽합니다! Orbot을 위해 루트 권한이 활성화된것을 감지했습니다. 우리는 이 힘을 현명하게 사용할 것입니다. + 이것은 필수가 아닌 반면, 귀하의 장치가 루트 권한을 가지고 있다면 Orbot은 더 강력한 도구가 될 수 있습니다. Orbot에게 수퍼유저 권한을 부여하려면 아래 버튼을 누르십시오. + 루트 권한을 가지고 있지 않거나 무엇을 말하는 것인지 모르겠다면, Orbot과 동작하는 애플리케이션만을 사용하십시오. + 내용을 이해하였으며, 수퍼유저 권한 없이 계속 진행합니다. + Orbot에게 루트권한 부여 + 토르화 설정 + Orbot은 모든 애플리케이션 또는 선택된 애플리케이션을 Tor를 통해 통신하도록 할 수 있습니다. + 모든 앱을 토르 프록시로 연결하기 + Tor를 위해 각각의 앱 선택 + Orbot이 활성화된 앱 + 아래의 앱은 Orbot과 작동되도록 개발되었습니다. 지금 설치하려면 각각의 버튼을 누르십시오. 또는 나중에 Google Play, GuardianProject.info, F-Droid.org 에서 찾을 수 있습니다. + ChatSecure - 안드로이드를 위한 안전한 인스턴트 메세징 클라이언트 + Proxy Settings - Orbot과 작동하도록 앱을 설정하는 방법을 배우기 + DuckDuckGo 검색 엔진 앱 + 트위터 프록시를 localhost:8118로 설정 + StoryMaker - 스토리는 당신이 만들고 보안은 Tor에 맏기세요! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + 프록시 설정 + Orbot이 준비되었습니다! + + Orbot이 정상적으로 설정되었고 Tor에 연결되었는지 확인하기 위해 https://check.torproject.org 을 귀하의 웹 브라우저에 열 것입니다. + 숨겨진 서비스 호스팅 + 일반 + 부팅 후 Orbot 시작 + 안드로이드 장치가 시작할 때 자동적으로 Orbot을 시작하고 Tor에 연결합니다 + + + + 경고 + + 권한 + 투명 프록시 같은 고급 기능을 활성화하기 위해 귀하는 선택적으로 Orbot에게 \'수퍼유저\' 권한을 줄 수 있습니다. + 이것을 원하지 않으신다면, Orbot과 작동하도록 만들어진 앱만을 사용하십시오. + + Orbot을 사용하는 앱 + ChatSecure: 오프 더 레코드 암호화를 적용한 안전한 채팅 앱 + 구글 플레이에서 모든 가디언 프로젝트 앱 찾기 + + 투명 프록시 + 이것은 어떠한 설정 없이도 귀하의 앱이 자동적으로 토르 네트워크를 통해 작동하도록 해 줍니다. + (위 내용을 이해할 수 없다면 이것을 선택해주십시오.) + 없음 + 토르 테더링 + 테더링 된 와이파이와 USB 장치에 토르 투명 프록시 활성화 (재시작 필요) + 수퍼유저 권한 요청 + 앱 선택 + Tor를 통한 통신을 사용할 앱 선택 + 노드 설정 + 귀하의 익명성을 감소시킬 수 있는 고급 설정이 있습니다. + 입구 노드 + 첫번째 Hop을 위한핑거프린트, 별칭, 나라와 주소 + 입구 노드 입력 + 외부 네트워크 프록시 (선택) + 외부 프록시 유형 + 프록시 서버를 위한 사용되는 프로토콜 : HTTP, HTTPS, Socks4, Socks5 + 프록시 형식 입력 + 외부 프록시 호스트 + 프록시 서버 호스트네입 + 프록시 호스트 입력 + 외부 프록시 포트 + 서버 포트 입력 + 프록시 포트 입력 + 외부 프록시 사용자명 + 프록시 사용자명 (선택) + 프록시 사용자명 입력 + 외부 프록시 비밀번호 + 프록시 비밀번호 (선택) + 프록시 비밀번호 입력 + 상태 + 전체 투명 프록시 설정중... + 앱에 기반한 투명 프록시 설정중... + 투명 프록시 활성화됨 + 테더링을 위한 TransProxy 활성화됨 + 경고 : 투명 프록시 시작 오류 + TransProxy 규칙 모두 삭제됨 + Tor 프로세스 시작 불가능: + 포트에 기반한 투명 프록시 설정 + 브릿지 오류 + 브릿지 기능을 사용하기 위해서, 최소한 1개 이상의 브릿지 IP 주소가 필요합니다. + 메일 본문에 get bridges라고 적어서 Gmail로 bridges@torproject.org에 메일을 보내십시오. + 오류 + 귀하의 ReachableAddress 설정은 예외를 발생시켰습니다! + 귀하의 중계서버 설정은 예외를 발생시켰습니다! + 출구 노드 + 마지막 Hop을 위한핑거프린트, 별칭, 나라와 주소 + 출구 노드 입력 + 차단할 노드 + 차단할 핑거프린트, 별칭, 나라와 주소 + 차단할 노드 입력 + 노드 선택 + 이 특정한 노드*만* 사용합니다. + 중계서버 + 중계서버 사용 + Obfuscated Bridges + Tor 네트워크로 들어가는 대안의 입구 노드 활성화 + 설정된 bridge가 obfsproxy bridge면 활성화 + 중계서버의 IP 주소와 + 중게서버 주소 입력 + 중계서버 + 중계 + 귀하의 장치를 출구가 아닌 중계서버로 활성화 + 중계 포트 + 귀하의 Tor 중계서버를 위한 Listening 포트 + OR 포트 입력 + 중계서버 별명 + 귀하의 중계서버를 위한 별명 + 임의의 중계서버 별명을 입력 + 도달 가능한 주소 + 엄격한 정책을 가진 방화벽 뒤에서 클라이언트 가동 + 도달 가능한 포트 + 엄격한 방화벽 뒤에서 접근 가능한 포트 + 포트 입력 + 히든 서비스 호스팅 + 장치 내의 서버가 Tor 네트워크를 통해 접근 가능하도록 허용 + 히든 서비스를 위한 localhost 포트 입력 + 히든 서비스 포트 + 귀하의 히든 서비스를 위한 주소화된 이름(자동으로 생성됨) + 디버그 로그 출력 활성화 (보기 위해서는 adb나 aLogCat을 사용해야 함) + 프로젝트 홈 페이지: + The Tor License + https://torproject.org + 3rd-Party-Software: + 앱이 Tor 네트워크로 히든 서버 포트를 열고 싶어합니다. 앱을 믿는다면 안전합니다. + 존재하고 있는 Tor 프로세스 발견 + 어떤 나쁜 것이 발생. 로그 확인하세요. + 히든 서비스 목록 : + 히든 서비스 이름을 읽을 수 없음 + Tor 시작 불가능 + 기본 iptables 사용 + Orbot에 동봉된 것 대신에 빌트인된 iptables 바이너리 사용 + Tor 바이너리는 설치되거나 없그레이드 될 수 없었습니다. + Orbot이 연결되었을 때 툴바에 아이콘 보이기 + 항상 켜진 알림 + bridge 활성화됨 + + Orbot을 위한 로케일과 언어 선택 + 언어 선택 + 기본값으로 두거나 현재 언어 바꾸기 + 설정 저장 + 대역폭: + 아래로 + 위로 + 네트워크가 없을 때의 자동 슬립 + 인터넷이 불가능하다면 Tor를 슬립 모드로 두십시오 + 새로운 Tor 신원으로 전환되었습니다! + ChatSecure 사용 + Tor 관리 + Tor 서비스를 제어하기 위해 이 앱을 활성화하십시오 + 앱을 설치할까요? + VPN + diff --git a/orbotservice/src/main/res/values-ky/strings.xml b/orbotservice/src/main/res/values-ky/strings.xml new file mode 100644 index 00000000..89c837cc --- /dev/null +++ b/orbotservice/src/main/res/values-ky/strings.xml @@ -0,0 +1,21 @@ + + + Ырастоолор + Жардам + Программа жөнүндө + Жардам + Программа жөнүндө + Чыгуу + Айнуу + + + + + + + + + Абал + Ката + + diff --git a/orbotservice/src/main/res/values-lt-rLT/strings.xml b/orbotservice/src/main/res/values-lt-rLT/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-lt-rLT/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-lt/strings.xml b/orbotservice/src/main/res/values-lt/strings.xml new file mode 100644 index 00000000..b9253dd9 --- /dev/null +++ b/orbotservice/src/main/res/values-lt/strings.xml @@ -0,0 +1,28 @@ + + + Naršyti + Nustatymai + Pagalba + Apie + Pagalba + Uždaryti + Apie + Išeiti + Atgal + Atsisakyti + + Proxy nustatymai + + + + + Įspėjimas + + + + Joks + Statusas + Klaida + + Išsaugoti nustatymus + diff --git a/orbotservice/src/main/res/values-lv/strings.xml b/orbotservice/src/main/res/values-lv/strings.xml new file mode 100644 index 00000000..194c7b0b --- /dev/null +++ b/orbotservice/src/main/res/values-lv/strings.xml @@ -0,0 +1,278 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + startēt un apturēt Tor + torproxyservice + Orbot startē... + Izveidots savienojums ar tīklu Tor + Orbot ir deaktivēts + Startē Tor klientu... + pabeidz. + gaida. + 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 + Mājas + Pārlūkot + Iestatījumi + Žurnāls + Palīdzība + Startēt + Apturēt + Par + Lejupielāde + Augšupielāde + Palīdzība + Aizvērt + Par + Notīrīt žurnālu + Pārbaudīt + Iziet + Skenēt BridgeQR + Koplietot BridgeQR + Lai startētu, nospiediet ilgi + Pārredzama starpniekošana (nepieciešamas saknes pilnvaras) + Pārredzama starpniekošana + Lietotņu automātiska torificēšana + Tor\'ēt visu + Visu lietotņu starpnieku datplūsma caur Tor + Porta starpnieka atkāpnorāde + BRĪDINĀJUMS: Apiet parastos portus (80., 443., u.tml.). *IZMANTOJIET VIENĪGI* ja nestrādā \'All\' vai \'App\' režīmi. + Portu saraksts + Saraksts portiem uz starpnieku. *IZMANTOJIET VIENĪGI* ja nestrādā \'All\' vai \'App\' režīmi. + Ievadiet portus uz starpnieku + Pieprasīt piekļuves saknes tiesības + Pieprasīt piekļuves saknes tiesības pārredzamai starniekošanai + Sekmīgi instalētas Tor binārās datnes! + Nebija iespējams instalēt Tor binārās datnes. Lūdzu pārbaudiet žurnālu, un informējiet tor-assistants@torproject.org + Lietojumprogrammas kļūda + Orbot + Par Orbot + Tālāk + Atpakaļ + Beigt + Labi + Atcelt + + Vairāk informācijas par Orbot + 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. + Tiesības piešķirtas + Orbot tiesības + Ļoti labi! Mēs konstatējām, ka Orbot\'am ir iespējotas saknes tiesības. Mēs apdomīgi izmantosim šīs tiesības. + 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! + 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. + Es saprotu un vēlos turpināt bez superlietotāja tiesībām. + Piešķirt Orbot saknes tiesības + Konfigurēt torifikāciju + 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. + Visas lietotnes izmantot starpniecības režīmā caur Tor + Izvēlēties individuālas lietotnes Tor\'am + Orbot-iespējotas lietotnes + 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ū. + ChatSecure - Drošs Android\'a tūlītējās ziņojumapmaiņas klients + Starpnieka iestatījumi - Uzzini kā konfigurēt lietotnes, lai tās strādātu ar Orbot + Meklētājprogrammas Duckduckgo lietotne + Twitter atbalsta http starpnieku \"localhost:8118\" + StoryMaker - Sagatavojiet stāstu un, lai uzlabotu drošību, atstājiet to Tor! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Starpnieka iestatījumi + 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 + Orbot ir gatavs darbam! + 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! + Lūdzu nokonfigurējiet Orbot pirms sākat to lietot! + + Šī 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. + Slēptu pakalpojumu viesošana + Vispārīgi + Startēt Orbot, kad ielādējas + Automātiski startēt Orbot, un veidot savienojumu ar Tor, kad Jūsu Android ierīce ielādējas + + + 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. + + Brīdinājums + 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. + + Tesības + 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ā . + Ja nevēlaties šo darīt, lūdzu, pārliecinieties, ka izmantojat lietotnes, kuras paredzētas darbam ar Orbot + Šķ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”. + + Orbot\'a iespējotas lietotnes + ChatSecure: Padarīt tērzēšanas lietotni drošāku ar Off-the-Record šifrēšanu + Visas Guardian Project\'a lietotnes atrodamas Google Play\'ā + Atrodiet visas Guardian Project lietotnes F-Droid\'ā + Atrodiet visas Guardian Project lietotnes https://f-droid.org + + Pārredzama starpniekošana + Šis ļauj Jūsu lietotnēm automātiski, bez jebkādas papildu konfigurācijas darboties caur Tor tīklu. + (Atzīmējiet šo kastīti gadījumā ja Jums nav ne mazākās nojausmas par to, ko mēs te runājam) + Neviens + Tor valgošana + Iespējot Tor Pārredzamo starpniekošanu Wifi\'m un USB valgošanas ierīcēm (nepieciešams pārstartēt) + Pieprasīt superlietotāja piekļuvi + Izvēlēties lietotnes + Izvēlēties lietotnes, lai maršrutētu caur Tor + Mezglu konfigurācija + Šie it lietpratīgie iestatījumi, kuri var samazināt Jūsu anonimitāti + Ieejas mezgli + Ciparvirknes, segvārdi, valstis un adreses pirmajam lēkumam + Ievadiet ieejas mezglus + Lietot starpniekserveri visam + Nekam nelietot starpniekserveri + Mainīt atlasi uz pretējo + Tīkla ārejošais starpnieks (neobligāts) + Ārvērstā starpnieka tips + Starpnieka serverim izmantojamais protokols: HTTP, HTTPS, Socks4, Socks5 + Ievadiet starpnieka tipu + Ārvērstā starpnieka viesotājs + Starpniekservera mitinātājvārds + Ievadiet starpnieka viesotāju + Ārvērstā starpnieka ports + Starpniekservera ports + Ievadiet starpnieka portu + Ārvērstā starpnieka lietotājvārds + Starpnieka lietotājvārds (neobligāts) + Ievadīt starpnieka lietotājvardu + Ārvērstā starpnieka parole + Starpnieka parole (neobligāti) + Ievadīt starpnieka paroli + Statuss + Iestata pilnībā pārredzamu starpniekošanu... + Iestata lietotņu nodrošinātu starpniekošanu... + Pārredzama starpniekošana IESPĒJOTA + TransProxy iespējots valgošanai! + BRĪDINĀJUMS: kļūda uzsākot pārredzamu starpniekošanu! + TransProxy kārtulas notīrītas + Neizdevās palaist Tor\'a procesu: + Polipo strādā caur portu: + Iestata portu nodrošinātu pārredzamu starpniekošanu... + Tilta kļūda + Lai izmantotu tilta līdzekli, jāievada vismaz viena tilta IP adrese. + No Gmail konta sūtiet e-pastu uz bridges@torproject.org ar rindu \"get bridges\" e-pasta ziņojuma korpusā. + Kļūda + Jūsu ReachableAddresses iestatījumi izraisīja izņēmuma stāvokli! + Jūsu retranslatora iestatījumi izraisīja izņēmuma situāciju! + Izejas mezgli + Pēdējā lēkuma ciparvirknes, segvārdi, valstis un adreses + Ievadiet izejas mezglus + Neiekļautie mezgli + Izslēdzamās ciparvirknes, segvārdi, valstis un adreses + Ievadīt Neiekļaujamos mezglus + Precīzie mezgli + Izmantojiet *vienīgi* šos norādītos mezglus + Tilti + Lietot tiltus + Nomaskētie tilti + Iespējot alternatīvus tīkla Tor ieejas mezglus + Iespējot, ja konfigurētie tilti ir nomaskētie tilti + Tiltu ports un IP addrese + Ievadiet tiltu adreses + Retranslatori + Retranslēšana + Iespējot Jūsu iekārtu par bezapstājas retranslatoru + Retranslatora ports + Jūsu Tor retranslatora klausīšanās ports + Ievadiet OR portu + Retranslatora segvārds + Jūsu Tor\'a retranslatora segvārds + Ievadiet brīvi izraudzītu rertranslatora segvārdu + Sasniedzamās adreses + Izpildīt kā klientprogrammu aiz ugunsmūra, kurš nodrošina ierobežojošu kārtību + Sasniedzamie porti + Porti, kuri sasniedzami otrpus ierobežojoša ugunsmūra + Ievadiet portus + Slēptu pakalpojumu viesošana + ļaut no tīkla Tor piekļūt serverim, kurš ir ierīcē. + ievadiet slēpto pakalpojumu localhost portus + Slēptu pakalpojumu porti + Jūsu slēptā pakalpojuma adresējams vārds (tiek ģenerēts automātiski) + iespējot atkļūdošanas žurnālu izvadei (jālieto adb vai aLogCat , lai skatītu) + Projekta mājas: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor licence + https://torproject.org + Trešo personu programmatūra: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Lietotne vēlas atvērt slēptu servera portu %S uz tīklu Tor. Tas ir droši, ja uzticaties lietotnei. + Atrada esošu Tor procesu... + Nav labi. Pārbaudiet žurnālu + Slēpts pakalpojums uz: + Nespēj lasīt slēpta pakalpojuma nosaukumu + Nevar startēt Tor: + Nespēja atiestatīt Tor, sāknējiet ierīci atkārtoti! + Izmantot noklusējuma Iptables + lietot iebūvēto bināro datni iptables nevis to, kura ir Orbot komplektācijā + Tor binārās datnes nebija iespējams ne instalēt, ne jaunināt. + Vienmēr paturēt ikonu rīkjoslā, kad Orbot ir savienots + Vienmēr ieslēgtie paziņojumi + Rādīt paplašinātus paziņojumus, kur norādīts IP un Tor izejas valsts + Paplašināti paziņojumi + Tilti ir iespējoti! + + Valoda + Iestatiet Orbot lokalizāciju un valodu + Izvēlēties valodu + Atstājiet noklusējuma vērtības, vai pārslēdziet pašreizējo valodu. + strādā ar Tor + Saglabāt iestatījumus + Nav interneta savienojuma; Tor ir gaidstāvē... + Joslas platums: + lejup + augšup + Neizmantot tīkla automātiskā miega režīmu + Kad nav interneta, pārslēgt Tor\'u uz miega režīmu + Jūs pārslēdzāties uz jaunu Tor\'a identitāti! + Lietot ChatSecure + Pārvaldīt Tor\'u + Iespējot šo lietotni kontrolēt pakalpojumu Tor + Vai instalēt lietotnes? + Nav tīkla savienojuma. Tor\'am iestata miega režīmu... + Labs tīkla savienojums. Aktivizē Tor\'u... + atjaunina Tor pakalpojuma iestatījumus + Tor SOCKS + Ports, uz kura Tor piedāvā savu SOCKS starpniekserveri (noklusējumvērtība: 9050 vai 0 lai atspējotu) + SOCKS Port Config + Tor TransProxy Port + Ports, uz kura Tor piedāvā savu Transparent starpniekserveri (noklusējumvērtība: 9040 vai 0 lai atspējotu) + TransProxy Port Config + Tor DNS Ports + Ports, uz kura Tor piedāvā savu DNS (noklusējumvērtība: 5400 vai 0 lai atspējotu) + DNS Port konfigurēšana + Torrc pielāgota konfigurēšana + VIENĪGI EKSPERTIEM: tieši ievadīt torrc konfigurēšanas rindas + Pielāgot Torrc + Mobile Martus - Benetech\'a cilvēktiesību dokumentācijas lietotne + Jūsu Tor publiskās IP: + Lūdzu atspējojiet šo lietotni Android->Settings->Apps , ja rodas ar Orbot saistītas problēmas: + Lietotņu konflikts + Pārredzamā starpniekservera automātiska atsvaidzināšana + Kad mainās tīkla stāvoklis, atkārtoti lietot Pārredzamā starpniekserva kārtulas + Pārredzamā starpniekservera PIESPIEDU NOŅEMŠANA + Pieskarties te, lai TŪLĪT iztīrītu visas pārredzamā starpniekservera tīkla kārtulas + Pārredzamā starpniekservera kārtulas ir iztīrītas! + SAKNES piekļuve nav iespējota + Lai iestatījumu maiņa tiktu iespējota, Jums var nākties apturēt un startēt Orbot. + kbps + mbps + KB + MB + Tilti ir atjaunināti + Lūdzu pārstartējiet Orbot, lai iespējotu izmaiņas + QR kodi + Tiltu režīms + E-pasts + Tīmeklis + Aktivizēt + 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. + Nosūtīt e-pastu + 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. + Standarta pārlūks + PIEZĪME: Uz Intel X86/ATOM ierīcēm darbosies tikai standarta Tor tilti + diff --git a/orbotservice/src/main/res/values-mk/strings.xml b/orbotservice/src/main/res/values-mk/strings.xml new file mode 100644 index 00000000..c5ca87f6 --- /dev/null +++ b/orbotservice/src/main/res/values-mk/strings.xml @@ -0,0 +1,278 @@ + + + Orbot + Orbot е слободна прокси апликација која им овозможува на другите апликации да го користат интернетот побезбедно. Orbot користи Tor за шифрирање на интернет-сообраќајот, а потоа го сокрива и го доставува преку неколку компјутери во целиот свет. Tor е слободен софтвер и отворена мрежа која се справува со вид надзор на мрежата која штети на личната слобода и приватноста, доверливи деловни активности и односи, и државната безбедност позната како анализа на сообраќајот. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + стартувај и стопирај ја Tor + torproxyservice + Орбот се стартува... + Поврзан на мрежата на Tor + Орбот е деактивиран + Стартување на клиентот на Tor... + завршено. + чекање. + ВНИМАНИЕ: Вашиот сообраќај сè уште не е анонимен! Потребно е да ги конфигурирате Вашите апликации за да го користат проксито за HTTP, 127.0.0.1:8118, или проксито за SOCKS4A или SOCKS5, 127.0.0.1:9050 + Дома + Прелистување + Поставки + Дневник + Помош + Стартувај + Стопирај + За + Преземи + Прикачи + Помош + Затвори + За + Избриши дневник + Провери + Излез + Скенирај BridgeQR + Сподели BridgeQR + - пристисни подолго за старт - + Транспарентно проксирање (бара root пристап) + Транспарентно проксирање + Автоматско торифицирање на апликациите + Целосно торифицирање + Проксирај го сообраќајот на сите апликации преку Tor + Резервна порта за прокси + ВНИМАНИЕ: Избегни ги често користените порти (80, 443, итн). *USE ONLY* ако режимите \'All\' или \'App\' не работат. + Листа на порти + Листа на порти за прокси. *USE ONLY* ако режимите \'All\' или \'App\' не работат. + Внесете порти за прокси + Барање за пристап до root + Барање за пристап до root за транспарентно проксирање + Извршните програми за Tor се успешно инсталирани! + Извршните фајлови на Tor не можат да се инсталираат. Проверете во дневникот и известете нè на tor-assistants@torproject.org + Апликациска грешка + Orbot + За Орбот + Следно + Назад + Крај + Во ред + Откажи + + Неколку детали за Орбот + Orbot е апликација со отворен код која ги содржи Tor, LibEvent и Polipo. Обезбедува локален HTTP прокси (8118) и SOCKS прокси (9050) во мрежата на Tor. Orbot, исто така, има опција кај основниот уред да го испраќа целиот интернет-сообраќај преку Tor. + Дозволата е издадена + Дозволи на Orbot + Одлично! Откривме дека овозможивте root пристап за Orbot. Внимателно ќе ја користиме оваа опција. + Иако не е задолжително, Orbot може да стане помоќна алатка доколку вашиот уред има root пристап. Со копчето подолу Orbot може да добие супер-моќ. + Ако немате root пристап или ако не разбирате за што зборуваме, осигурајте се дека користите апликации кои што работат со Orbot. + Разбирам и сакам да продолжам без администраторски привилегии + Додели root за Orbot + Конфигурација на торифицирањето + Orbot преку Tor овозможува да се рутира целиот сообраќај на сите апликации или на секоја апликација одделно. + Проксирај ги сите апликации преку Tor + Избери посебни апликации за Tor + Апликации кои го поддржуваат Orbot + Апликациите подолу се креирани да работат со Orbot. Притисни го секое копче за инсталација или може да се најдат на Google Play, на веб-локацијата GuardianProject.info или преку F-Droid.org. + ChatSecure - Безбедносен инстант клиент за разговор за Android + Поставки за прокси - Дознај како да се конфигурираат апликациите да работат со Orbot + DuckDuckGo апликација за пребарување + Подесете Twitter прокси на компјутерот \"localhost\" и порта 8118 + StoryMaker - Направи приказна и остави ја нејзината безбедност на Tor! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Поставки за прокси + Доколку 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 + Orbot е спремен! + Милиони луѓе низ целиот свет го користат Tor за различни причини.\n\nНовинари и блогери, борци за човекови права, адвокати, војници, корпорации, граѓаните на репресивните режими и обичните граѓани ... а од сега и вие! + Ве молиме конфигурирајте го Орбот пред да започнете да го користите! + + Ова ќе ја отвори страницата https://check.torproject.org во Вашиот веб-прелистувач за да видете дали Orbot е правилно конфигуриран и дали сте поврзани на Тор. + Скриени сервиси за хостирање + Општо + Стартувај го Orbot за бутирање + Автоматски стартувај го Orbot и поврзи го Tor кога твојот Android уред се стартува + + + Orbot го овозможува Tor за Android!\n\nTor помага против филтрирање на содржината, анализа на сообраќајот и надзор на мрежата кои штетат на приватноста, доверливи инфомации и лични односи.\n\nОвој волшебник помага за конфигурација на Orbot и Tor на вашиот уред. + + Внимание + Само инсталирање на Orbot нема автоматски да го анонимизира вашиот мобилен сообраќај.\n\nМорате правилно да ги конфигурирате Orbot, вашиот уредот и други апликации, за да успешно го користите Tor. + + Дозволи + Опционално може да се добие администраторски пристап за Orbot кој овозможува напредни функции, како што е транспарентно проксирање. + Доколку не сакате да го направите ова, осигурајте се дека вашите апликации работат со Orbot + Вашиот уред не е основен или не дозволува пристап до основен уред или администраторски пристап.\n\nПробајте го режимот \'Апликации\' на главниот екран. + + Апликации кои го поддржуваат Orbot + ChatSecure: Безбедносна апликација за разговор со енкрипција \'Off-the-Record\' + Најди ги сите Guardian Project апликации на Google Play + Најди ги сите Guardian Project апликации на F-Droid + Најди ги сите Guardian Project апликации на https://f-droid.org + + Транспарентно проксирање + Ова овозможува вашите апликации автоматски да се стартуваат преку мрежата Tor без конфигурација. + (Селектирајте го ова поле ако не разбирате за што зборуваме) + Ништо + Tor поврзување + Овозможи транспарентно проксирање на Tor за уреди поврзани преку Wifi и USB (бара рестартирање) + Барање за пристап до администратор на системот + Изберете апликации + Одбери апликации кои ќе се поврзуваат преку Тор + Конфигурација на јазол + Ова се напредните поставувања кои можат да ја намалат вашата анонимност + Влезни јазли + Отпечатоци од прсти, прекари, земји и адреси за првиот скок. + Внесете влезни јазли + Се за проксирање + Ништо за проксирање + Преврти го изборот + Излезен прокси на мрежата (незадолжително) + Тип на излезен прокси + Протокол за користење на прокси-сервер: HTTP, HTTPS, Socks4, Socks5 + Внесете го типот на проски + Излезен домаќин на прокси + Име на домаќин на серверот на прокси + Внесете домаќин на прокси + Излезна порта на прокси + Порта на серверот на прокси + Внесете порта на прокси + Kорисничко име на излезен прокси + Корисничко име на прокси (незадолжително) + Внесете корисничко име на прокси + Лозинка на излезен прокси + Лозинка на прокси (незадолжително) + Внесете лозинка на прокси + Статус + Поставување на целосно транспарентно проксирање... + Поставување транспарентно проксирање базирано на апликација... + Tранспарентното проксирање е ОВОЗМОЖЕНО + TransProxy е овозможен за поврзување! + ВНИМАНИЕ: Грешка при стартување на транспарентно проксирање! + Избришани правила за TransProxy + Не може да се започне Tor-процесот: + Polipo работи на порта: + Поставување на транспарентно проксирање базирано на порта... + Грешка во мостот + За да ја користите функцијата на мостот, морате да внесете барем една ИП-адреса на мост. + Испратете е-пошта од вашата gmail сметка на bridges@torproject.org со содржина \"get bridges\". + Грешка + Вашите поставки за достапните адреси предизвикаа грешка! + Вашите поставки за реле предизвикаа грешка! + Излезни јазли + Отпечатоци од прсти, прекари, земји и адреси за последниот скок. + Внесете излезни јазли + Исклучи јазли + Отпечатоци од прсти, прекари, земји и адреси кои треба да се исклучат + Внесете ги јазлите кои треба да се исклучат + Задолжителни јазли + Користете ги *само* овие наведени јазли + Мостови + Користи мостови + Скриени мостови + Овозможи алтернативни влезни јазли во мрежата Tor + Овозможи, ако мостовите се скриени мостови + ИП-адреса и порта на мостовите + Внесете адреси на мостовите + Релеа + Пренесување + Овозможи го уредот да биде реле без излез + Порта на реле + Порта за слушање на вашиот реле на Tor + Внесете OR порта + Назив на релето + Назив на вашето реле за Tor + Внесете произволно име за релето + Достапни адреси + Стартувајте го како клиент зад безбедносен ѕид со ограничени полиси + Достапни порти + Порти достапни зад рестрективен заштитен ѕид(firewall) + Внесете порти + Скриени сервиси за хостирање + Овозможи on-device серверот да се пристапи преку мрежата на Tor + Внеси ги портите за localhost за скриени сервиси + Порти на скриени сервиси + Достапно име за вашиот скриен сервис (се генерира автоматски) + Активирај го дневникот за отстранување грешки за излез (за да се прикаже мора да се користи adb или aLogCat) + Почетна страница: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Лиценца за Tor + https://torproject.org + Софтвер од друг производител: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Апликација сака да отвори скриена порта на серверот %S на мрежата на Tor. Ова е безбедно, ако и\' веруваш на апликацијата. + Пронајден постоечки Tor-процес ... + Настана грешка. Проверете во дневникот + Вклучен е скриениот сервис: + не може да се прочита името на скриениот сервис + Tor не може да се стартува: + Рестартирајте го вашиот уред, Tor не може да се ресетира! + Користи стандарден Iptables + Користи ги вградените бинарни ИП табели наместо таа што оди со Orbot + Извршните датотеки на Tor не можат да се инсталираат или надградат + Секогаш чувајте ja иконата во лентата со алатки кога Orbot е поврзан + Известувања секогаш вклучени + Прикажи проширено известување со излезната земја и ИП на Tor + Прошири известувања + Вклучени мостови! + + Јазик + Избери локални поставки и јазик за Orbot + Избери јазик + Остави го стандардниот или промени го постоечкиот јазик + Овозможено од Tor + Сочувај поставки + Нема интернет-врска; Tor е во мирување... + Проток: + долу + горе + Нема Auto-Sleep на мрежата + Стави го Тор на sleep кога интернетот не е достапен + Се префрливте на нов идентитет на Tor! + Користи ChatSecure + Управувај со Tor + Дозволи оваа апликација да го управува со сервисот на Tor + Инсталирај апликации? + Нема мрежно поврзување. Ставете го Тор на режимот на спиење... + Мрежното поврзување е добро. Го буди Tor... + ажурирање на поставките во сервисот Tor + Tor SOCKS + Порта на која Тор и\' го нуди својот SOCKS-прокси (стандардно: 9050 или 0 за да се исклучи) + Kонфигурирање на портата за SOCKS + Tor TransProxy порта + Порта на која Tor и го нуди својот транспарентен прокси (стандардно: 9040 или 0 за да се исклучи) + Kонфигурирање на портата за TransProxy + DNS-порта за Tor + Порта на која Tor го нуди DNS (стандардно: 5400 или 0 за да се исклучи) + конфигурирање на DNS-портата + Произволно конфигурирање на torrc + САМО ЗА ЕКСПЕРТИ: внесете директни команди за конфигурирање на torrc + Произволен torrc + Mobile Martus - Benetech апликација за документирање на човековите права + Вашата јавна ИП за Tor + Ве молиме исклучете ја оваа апликација во Android->Settings->Apps ако имате проблем со Orbot: + Конфликт со апликацијата + Автоматско освежување на Transproxy + Примени ги повторно правилата за TransProxy кога се менува состојбата на мрежата + ПРИСИЛНО ОТСТРАНУВАЊЕ на Transproxy + Допрете овде за да се избришат сите transproxy правила на мрежата СЕГА + Избришани транспарентни прокси правила + Немате вклучено пристап до корен + Може би ќе треба да се стопира и стартува Orbot за да бидат овозможени промените во поставките. + kbps + mbps + KB + MB + Ажурирани мостови + Ве молиме рестартирајте го Orbot за да се овозможат промените + QR-кодови + Режим на работа на мостот + Е-пошта + Веб + Активирај + Можете да ги овозможите сите апликации на вашиот уред да работат низ мрежата Tor користејќи VPN-функција на Андроид.\n\n*ВНИМАНИЕ* нова, експериментална функција и во некои случаи нема да стартува автоматски, или може да се стопира. Не треба да се користи за анонимност, и САМО да се користи за минување низ заштитни ѕидови и филтри. + Испрати е-пошта + Aдреса на мостови можете да добивате преку е-пошта, веб или со скенирање на QR код. Изберете подолу \'Е-пошта\' или \'Web\', за да побарате адреса за мостот. \n\nОткако ќе ја добиете адресата, копирајте го & и залепете го во делот \"Мостови\" во подесувањето на Orbot и рестартирајте. + Стандарден прелистувач + ЗАБЕЛЕШКА: Само стандардните мостови на Tor функционираат на уредите Intel X86/ATOM + diff --git a/orbotservice/src/main/res/values-ml/strings.xml b/orbotservice/src/main/res/values-ml/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-ml/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-mn/strings.xml b/orbotservice/src/main/res/values-mn/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-mn/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-mr-rIN/strings.xml b/orbotservice/src/main/res/values-mr-rIN/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-mr-rIN/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-ms-rMY/strings.xml b/orbotservice/src/main/res/values-ms-rMY/strings.xml new file mode 100644 index 00000000..e281414a --- /dev/null +++ b/orbotservice/src/main/res/values-ms-rMY/strings.xml @@ -0,0 +1,196 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mula dan henti Tor + torproxyservice + Orbot telah dimulakan.. + Bersambung ke rangkaian Tor + \"Orbot telah dinyah-aktifkan + Memulakan klien Tor.. + selesai. + menunggu. + 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 + Rumah + Carian + Tetapan + Log + Bantuan + Mula + Henti + Tentang + Muat turun + Muat naik + Bantuan + Tutup + Tentang + Padam Log + Semak + Keluar + - Tekan lama untuk mulakan - + Proxy Telus (Memerlukan akses Root) + Proxy Telus + Tetapan Automatik Tor pada Apps + Tor segalanya + Trafik proxy untuk semua aplikasi yang melalui Tor + Port proxy undur + AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi. + Senarai Port + Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi + Masukkan port untuk proxy + Minta Akses Root + Minta akses root untuk proxy telus + Tor berjaya dipasang! + Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants@torproject.org + Ralat Aplikasi + Orbot + Tentang Orbot + Seterusnya + Kembali + Tamat + Okay + Batal + + Maklumat Orbot + Kebenaran disahkan + Kebenaran Orbot + Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak. + Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower! + Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot. + Saya faham dan mahu teruskan tanpa Superuser + Beri akses Root pada Orbot + Konfigurasi Torification + Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual. + Proxy Semua Aplikasi Melalui Tor + Pilih Aplikasi Untuk Tor + Aplikasi Yang Dibenar Menggunakan Orbot + Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market. + Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot + DuckDuckGo Enjin Carian + Tetapkan proxy twitter kepada hos \"localhost\" dan pada port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Tetapan proxy + Orbot sudah sedia! + + Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor. + Perkhidmatan tersembunyi + Umum + Mulakan Orbot semasa Boot + Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot + + + + Amaran + + kebenaran + Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus. + Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot + + Aplikasi yang membenarkan Orbot + Cari semua projek Guardian di Google play + + Proxy Telus + Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi + (Tanda kotak ini jika anda belen) + Tiada + Tor Tethering + Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart) + Minta Akses Superuser + Pilih Aplikasi + Pilih Aplikasi untuk dihalakan melalui Tor + Konfigurasi Nod + Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda + Nod Kemasukan + Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama + Masukkan Nod Kemasukan + Laluan keluar jaringan proxy (tambahan) + Jenis Proxy + Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5 + Masukkan Jenis Proxy + Hos Proxy + Nama hos pelayan proxy + Masukkan Hos Proxy + Port Proxy + Port pelayan proxy + Masukkan port Proxy + Laluan keluar kata nama proxy + Kata nama proxy (tambahan) + Masukkan kata nama proxy + Laluan keluar kata laluan proxy + Kata laluan proxy (tambahan) + Masukkan kata laluan proxy + Status + Tetapkan proxy telus secara keseluruhan + Tetapkan proxy telus berdasarkan aplikasi + Proxy telus dibolehkan + TransProxy dibolehkan untuk Tethering! + AMARAN: ralat semasa memulakan proxy telus! + Peraturan TransProxy dipadam + Tidak boleh memulakan proses Tor: + Menetap proxy telus berdasarkan port.. + Ralat jambatan + Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan. + Hantar e-mel kepada bridges@torproject.org dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail. + Ralat + Tetapan ReachableAddresses anda menyebabkan pengecualian! + Tetapan relay anda menyebabkan pengecualian! + Keluar Nod + Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir + Masukkan Nod Keluar + Keluarkan Nod + Cap jari, nama samaran, negara dan alamat untuk dikeluarkan + Masukkan Nod Keluar + Nod Ketat + Guna *hanya* nod-nod ini + Jambatan + Guna Jambatan + Jambatan Keliru + Membolehkan nod pintu masuk ganti ke Rangkaian Tor + Benarkan jika konfigurasi jambatan adalah jambatan keliru + Alamat IP dan pelabuhan jambatan + Masukkan Alamat Jambatan + Relays + Relaying + Membolehkan peranti anda untuk menjadi geganti bukan keluar + Relay Port + Mendapatkan port untuk tetapan relay Tor anda + Masukkan port OR + Nama samaran relay + Nama samaran ini untuk relay Tor anda + Masukkan nama samaran gantian untuk relay + Alamat yang dapat dicapai + Jalan sebagai klien dibelakang firewall dengan peraturan ketat + Port yang dapat dicapai + Port yang dapat dicapai dibelakang firewall dengan kawalan ketat + Masukkan port + Benarkan Servis Tersembunyi + Jalankan pelayan boleh diakses melalui rangkaian Tor + Masuk port localhost untuk servis tersembunyi + Port servis tersembunyi + Nama beralamat untuk servis tersembunyi anda (dijana secara automatik) + benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat) + Rumah Projek(s): + Lesen Tor + https://torproject.org + 3rd-Party-Software: + Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu. + Proses Tor sedia ada ditemui.. + Sesuatu yang buruk berlaku. Semak log. + port tersembunyi pada: + tidak dapat membaca nama servis tersembunyi + Tidak dapat memulakan Tor: + Guna default Iptables + Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot + Tor binari tidak boleh dipasang atau dinaiktaraf + Sentiasa biar ikon pada toolbar apabila Orbot bersambung + Sentiasa On Notifikasi + Jambatan dibenarkan! + + Pilihan tempatan dan bahasa untuk Orbot + Pilih Bahasa + Biar default atau ubah ke bahasa sekarang + Simpan Tetapan + diff --git a/orbotservice/src/main/res/values-ms/strings.xml b/orbotservice/src/main/res/values-ms/strings.xml new file mode 100644 index 00000000..c327e579 --- /dev/null +++ b/orbotservice/src/main/res/values-ms/strings.xml @@ -0,0 +1,200 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + mula dan henti Tor + torproxyservice + Orbot telah dimulakan.. + Bersambung ke rangkaian Tor + \"Orbot telah dinyah-aktifkan + Orbot sedang ditutup + Memulakan klien Tor.. + selesai. + menunggu. + 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 + Rumah + Carian + Tetapan + Log + Bantuan + Apps + Mula + Henti + Tentang + Bantuan + Tutup + Tentang + Padam Log + Semak + Keluar + - Tekan lama untuk mulakan - + Proxy Telus (Memerlukan akses Root) + Proxy Telus + Tetapan Automatik Tor pada Apps + Tor segalanya + Trafik proxy untuk semua aplikasi yang melalui Tor + Port proxy undur + AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi. + Senarai Port + Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi + Masukkan port untuk proxy + Minta Akses Root + Minta akses root untuk proxy telus + Tor berjaya dipasang! + Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants@torproject.org + Ralat Aplikasi + Orbot + Tentang Orbot + Seterusnya + Kembali + Tamat + Okay + Batal + + Maklumat Orbot + 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. + Kebenaran disahkan + Kebenaran Orbot + Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak. + Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower! + Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot. + Saya faham dan mahu teruskan tanpa Superuser + Beri akses Root pada Orbot + Konfigurasi Torification + Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual. + Proxy Semua Aplikasi Melalui Tor + Pilih Aplikasi Untuk Tor + Aplikasi Yang Dibenar Menggunakan Orbot + Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market. + Gibberbot - Klien mesej ringkas selamat untuk Android + Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot + Tetapan proxy + 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 ⏎ + Orbot sudah sedia! + 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! + + 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@guardianproject.info untuk mengetahui lebih lanjut. + Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor. + Perkhidmatan tersembunyi + Umum + Mulakan Orbot semasa Boot + Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot + + + 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. + + Amaran + 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. + + kebenaran + Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus. + Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot + 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 + + Aplikasi yang membenarkan Orbot + Gibberbot: sembang app selamat dengan Penyulitan Off-the-Rekod + Orweb: Privasi ditambah penyemak imbas yang bekerja melalui Tor + + Proxy Telus + Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi + (Tanda kotak ini jika anda belen) + Tiada + Tor Tethering + Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart) + Minta Akses Superuser + Pilih Aplikasi + Pilih Aplikasi untuk dihalakan melalui Tor + Konfigurasi Nod + Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda + Nod Kemasukan + Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama + Masukkan Nod Kemasukan + Jenis Proxy + Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5 + Masukkan Jenis Proxy + Hos Proxy + Nama hos pelayan proxy + Masukkan Hos Proxy + Port Proxy + Port pelayan proxy + Masukkan port Proxy + Status + Tetapkan proxy telus secara keseluruhan + Tetapkan proxy telus berdasarkan aplikasi + Proxy telus dibolehkan + TransProxy dibolehkan untuk Tethering! + AMARAN: ralat semasa memulakan proxy telus! + Peraturan TransProxy dipadam + Tidak boleh memulakan proses Tor: + Privoxy sedang berjalan pada port: + Menetap proxy telus berdasarkan port.. + Ralat jambatan + Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan. + Hantar e-mel kepada bridges@torproject.org dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail. + Ralat + Tetapan ReachableAddresses anda menyebabkan pengecualian! + Tetapan relay anda menyebabkan pengecualian! + Keluar Nod + Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir + Masukkan Nod Keluar + Keluarkan Nod + Cap jari, nama samaran, negara dan alamat untuk dikeluarkan + Masukkan Nod Keluar + Nod Ketat + Guna *hanya* nod-nod ini + Jambatan + Guna Jambatan + Jambatan Keliru + Membolehkan nod pintu masuk ganti ke Rangkaian Tor + Benarkan jika konfigurasi jambatan adalah jambatan keliru + Alamat IP dan pelabuhan jambatan + Masukkan Alamat Jambatan + Relays + Relaying + Membolehkan peranti anda untuk menjadi geganti bukan keluar + Relay Port + Mendapatkan port untuk tetapan relay Tor anda + Masukkan port OR + Nama samaran relay + Nama samaran ini untuk relay Tor anda + Masukkan nama samaran gantian untuk relay + Alamat yang dapat dicapai + Jalan sebagai klien dibelakang firewall dengan peraturan ketat + Port yang dapat dicapai + Port yang dapat dicapai dibelakang firewall dengan kawalan ketat + Masukkan port + Benarkan Servis Tersembunyi + Jalankan pelayan boleh diakses melalui rangkaian Tor + Masuk port localhost untuk servis tersembunyi + Port servis tersembunyi + Nama beralamat untuk servis tersembunyi anda (dijana secara automatik) + benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat) + Rumah Projek(s): + https://www.torproject.org/docs/android⏎ https://guardianproject.info/apps/orbot/ + Lesen Tor + https://torproject.org + 3rd-Party-Software: + Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu. + Proses Tor sedia ada ditemui.. + Sesuatu yang buruk berlaku. Semak log. + port tersembunyi pada: + tidak dapat membaca nama servis tersembunyi + Tidak dapat memulakan Tor: + Guna default Iptables + Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot + Tor binari tidak boleh dipasang atau dinaiktaraf + Sentiasa biar ikon pada toolbar apabila Orbot bersambung + Sentiasa On Notifikasi + Jambatan dibenarkan! + + Tetapan Tempatan + Pilihan tempatan dan bahasa untuk Orbot + Pilih Bahasa + Biar default atau ubah ke bahasa sekarang + Dijana oleh Projek Tor + Simpan Tetapan + Apps + diff --git a/orbotservice/src/main/res/values-my/strings.xml b/orbotservice/src/main/res/values-my/strings.xml new file mode 100644 index 00000000..07ab4759 --- /dev/null +++ b/orbotservice/src/main/res/values-my/strings.xml @@ -0,0 +1,30 @@ + + + ပင်မ စာမျက်နှာ + ဖွင့်ကြည့်ရန် + ချိန်ညှိချက်များ + အကူအညီ + အကြောင်း + အကူအညီ + ပိတ်ရန် + အကြောင်း + ထွက်ရန် + နောက်သို့ + ဖျက်သိမ်းရန် + + ပရောက်ဇီ ချိန်ညှိချက်များ + + ယေဘုယျ + + + + သတိပေးချက် + + + + ဘာမှမရှိ + အနေအထား + ချို့ယွင်းချက် + + ချိန်ညှိချက်များကို သိမ်းဆည်းရန် + diff --git a/orbotservice/src/main/res/values-nb/strings.xml b/orbotservice/src/main/res/values-nb/strings.xml new file mode 100644 index 00000000..6fe4aebd --- /dev/null +++ b/orbotservice/src/main/res/values-nb/strings.xml @@ -0,0 +1,258 @@ + + + Orbot + 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. + https://torproject.org + https://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + start, og stopp Tor + torproxyservice + Orbot starter... + Koblet til Tor-nettverket + Orbot er deaktivert + Starter Tor klient... + fullført. + venter. + 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 + Hjem + Surfe + Innstillinger + Logg + Hjelp + VPN + Start + Stopp + Om + Nedlast + Last opp + Hjelp + Steng + Om + Tøm logg + Kontroller + Avslutt + - langt trykk for å starte - + Transparent Proxying (Krever Root) + Transparent Proxying + Automatisk Torifisering av applikasjoner + Tor alt + Proxy trafikk for alle applikasjoner via Tor + Tilbakestill proxyport + ADVARSEL: Omgår vanlige porter (80, 443, osv). *BRUKES KUN* hvis \'alle\', eller \'Applikasjon\'-modus ikke virker. + Port Liste + Liste over porter som skal gå gjennom proxy. *BRUKES KUN* hvis \'Alle\', eller \'Applikasjon\'-modus ikke virker. + Angi porter som skal gå gjennom proxy + Be om Root tilgang + Be om root-tilgang for transparent proxying + Tor binære filer vellykket installert! + Tor-binære filer kunne ikke installeres. Vennligst sjekk loggen og varsle tor-assistants@torproject.org + Applikasjonsfeil + Orbot + Om Orbot + Neste + Tilbake + Ferdig + Ok + Avbryt + + Noen Orbot detaljer + Tillatelse gitt + Orbot tillatelser + Utmerket! Vi har oppdaget at du har root rettigheter aktivert for Orbot. Vi vil bruke denne makten med omhu. + 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! + 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. + Jeg forstår, og ønsker å fortsette uten superbruker + Gi Orbot root-tilgang + Konfigurer Torification + Orbot gir deg muligheten til å rute all applikasjonstrafikk gjennom Tor, ELLER å velge applikasjonene individuelt. + Bruk proxy for alle applikasjoner gjennom Tor + Velg individuelle applikasjoner som skal brukes med Tor + Orbot aktiverte applikasjoner + 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. + ChatSecure - Sikret lynmeldingsklient for Android + Proxy-innstillinger - Lær hvordan du konfigurerer applikasjoner til å fungere med Orbot + DuckDuckGo søkemotor applikasjon + Sett Twitters proxy til \"localhost\", og port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxyinnstillinger + Orbot er klar! + 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å! + Vennligst konfigurere Orbot før du bruker det! + + 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. + Skjult Service Hosting + Generelt + Start Orbot ved oppstart + Start Orbot automatisk, og koble til Tor når din Android-enhet starter opp + + + 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. + + Advarsel + Ganske enkelt å installere Orbot vil ikke automatisk anonymmobiltrafikk .\n\nDu må konfigurere Orbot, enheten og andre applikasjoner for å kunne bruke Tor. + + Tillatelser + Du kan eventuelt gi Orbot \'Superbruker\' adgang til å aktivere avanserte funksjoner, for eksempel Transparent proxy. + Hvis du ikke ønsker å gjøre dette, må du sørge for å bruke applikasjoner som er laget for å fungere med Orbot. + Enheten ser ikke ut til å være forankret eller gi root eller \"superbruker\" tilgang.\n\nVennligst prøve \"apps\" modus på hovedskjermen i stedet. + + Orbot aktiverte applikasjoner + ChatSecure: Sikret sludreprogram med OTR-kryptering + Finn alle Guardian Prosjekt sine applikasjoner på Google Play + Finn alle Guardian Project applikasjoner på F-Droid + Finn alle Guardian Project applikasjoner på https://f-droid.org + + Transparent Proxying + Dette tillater dine applikasjoner å kjøre automatisk gjennom Tor-nettverket uten noen konfigurasjon. + (Marker denne boksen hvis du ikke har noen anelse om hva vi snakker om) + Ingen + Tor-deling + Aktiver Tor Transparent proxyer for WiFi, og USB delte enheter (krever omstart) + Be om Superbruker tilgang + Velg applikasjoner + Velg applikasjoner som skal rutes gjennom Tor + Node-konfigurasjon + Dette er avanserte innstillinger som kan redusere din anonymitet + Inngangsnoder + Fingeravtrykk, kallenavn, land, og adresser til det første hopp + Skriv inn inngangsnoder + Mellomtjen alt + Mellomtjen ingenting + Utgående nettverksproxy (Valgfritt) + Utgående proxytype + Protokoll for proxy-server: HTTP, HTTPS, SOCKS4, SOCKS5 + Skriv inn proxytype + Utgående proxyvert + Proxyserver vertsnavn + Skriv inn proxyvert + Utgående proxyport + Proxyserver port + Skriv inn proxyport + Utgående Proxy Brukernavn + Proxy Brukernavn (valgfritt) + Skriv inn Proxy Brukernavn + Utgående Proxy Passord + Proxy Passord (valgfritt) + Skriv inn Proxy Passord + Status + Konfigurerer full transparent proxying... + Konfigurerer applikasjonsbasert transparent proxying... + Transparent proxying AKTIVERT + TransProxy aktivert for nettdeling! + ADVARSEL: Feil under oppstart av transparent proxying! + TransProxy regler fjernet + Kunne ikke starte Tor prosessen: + Polipo kjører på port: + Konfigurerer portbasert transparent proxying... + Brofeil + For å kunne bruke bro-funksjonen, må du oppgi minst én bro IP-adresse. + Send en epost til bridges@torproject.org med teksten \"get bridges\" alene som eneste tekst i selve eposten fra en Gmail-konto. + Feil + Dine \"adresser som kan nås\"-innstillinger forårsaket et unntak! + Dine relé-innstillinger forårsaket et unntak! + Avslutt noder + Fingeravtrykk, kallenavn, land og adresser for siste hopp + Skriv inn utgående noder + Ekskluder noder + Fineravtrykk, kallenavn, land og adresser som skal ekskluderes + Skriv inn ekskluderte noder + Strict noder + Bruk *bare* disse angitte nodene + Broer + Bruk broer + Maskerte broer + Aktiver alternative inngangsnoder til Tor-nettverket + Aktiver hvis de konfigurerte broene er maskerte broer + IP-adresser og broporter + Skriv inn broadresser + Reléer + Videresending + Aktiver enheten din som et relé uten utgående trafikk + Relé-port + Porten Tor-reléet ditt lytter på + Skriv inn OR-port + Reléets kallenavn + Kallenavnet på ditt Tor-relé + Skriv inn et egendefinert kallenavn på reléet + Antreffbare adresser + Kjør som en klient bak en brannmur med restriktive regler + Antreffbare porter + Antreffbare porter bak en restriktiv brannmur + Skriv inn porter + Skjult Service Hosting + Tillat enhetsserveren å være tilgjengelig via Tor-nettverket + Skriv inn localhost porter for skjulte tjenester + Skjulte tjenesteporter + Det adresserbare navnet på din skjulte tjeneste (generert automatisk) + aktiver feilsøkingslogg for output (må bruke adb eller aLogCat for å vise) + Prosjektets nettside(r): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor-lisensen + https://torproject.org + Tredjepartsprogramvare: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + En applikasjon vil åpne den skjulte tjenesteporten %S til Tor-nettverket. Dette er trygt hvis du stoler på applikasjonen. + fant eksisterende Tor-prosess... + Noe alvorlig skjedde. Sjekk loggen. + skjult tjeneste på: + klarte ikke å lese skjult tjenestenavn + Klarte ikke å starte Tor: + Gjør en omstart av din enhet, kan ikke tilbakestille Tor! + Bruk standard Iptables + bruk de innebygde binære-iptables istedenfor de som kommer med Orbot + Tor-binærfilene var ikke i stand til å bli installert, eller oppgradert. + Alltid behold ikonet i verktøyslinjen når Orbot er tilkoblet + Alltid-På Varslinger + Utvidede varsler + Broer slått på! + + Språk + Velg nasjonale innstillinger, og språk for Orbot + Velg språk + Bruk standard, eller endre det gjeldende språket + Levert av Tor + Lagre Inntillinger + Ingen Internett-tilkobling; Tor er i ventemodus... + Båndbredde: + ned + opp + Inget automatisk hvilemodus for nettverk + Legg Tor i hvilemodus når nettilkobling til internett ikke er tilgjengelig + Du har byttet til en ny Tor-identitet! + Nettleser + Bruk ChatSecure + Håndter Tor + La dette programmet kontrollere Tor-tjenesten + Det ser ikke ut til at du har Orfox installert. Ønsker du hjelp med dette, eller skal vi bare åpne nettleseren? + Installere programmer? + Ingen nettverkstilkobling. Putting Tor å sove ... + Nettverkstilkobling er bra. Våkne Tor opp ... + Oppdaterer innstillinger i Tor service + Port som Tor tilbyr er SOCKS proxy på (standard: 9050 eller 0 for å slå av) + SOCKS Port Konfigurasjon + Tor TransProxy Port + TransProxy Port Konfigurasjon + Tor DNS Port + DNS Port Configurer + Din Tor offentlige IP: + VPN + kbps + mbps + KB + MB + Broer oppdatert + Gjør omstart av Orbot før endringer trer i kraft + QR-koder + E-post + Vev + Aktiver + Send e-post + Installer Orfox + Forvalgt nettleser + Merk: Bare vanlige Tor-broer fungerer på Intel X86/Atom-enheter + diff --git a/orbotservice/src/main/res/values-nl/strings.xml b/orbotservice/src/main/res/values-nl/strings.xml new file mode 100644 index 00000000..bbd3c17e --- /dev/null +++ b/orbotservice/src/main/res/values-nl/strings.xml @@ -0,0 +1,292 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + start en stop Tor + torproxyservice + Orbot is bezig met starten… + Verbonden met het Tor-netwerk + Orbot is uitgeschakeld + TorService wordt afgesloten + Bezig met Tor client starten… + klaar. + bezig met wachten. + 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 + Thuis + Bladeren + Instellingen + Logboek + Hulp + VPN + Start + Stop + Over + Apps ophalen... + Download + Upload + Hulp + Afsluiten + Over + Logboek wissen + Controleren + Sluiten + BridgeQR scannen + BridgeQR delen + - lang indrukken om te starten - + Transparant proxyen (vereist root) + Transparant proxyen + Automatisch Torificeren van apps + Tor alles + Proxy verkeer van alle apps door Tor + Poort proxy fallback + WAARSCHUWING: omzeilt veel voorkomende poorten (80, 443, etc). *GEBRUIK ENKEL* indien de \'Alles\' of \'Apps\'-modus niet werkt. + Poortlijst + Lijst van poorten om te proxyen. *GEBRUIK ENKEL* indien \'Alles\' of \'Apps\'-modus niet werkt + Voer poorten in voor proxy + Vraag root-toegang aan + Vraag root-toegang aan voor transparant proxyen + Binaire bestanden van Tor succesvol geïnstalleerd! + De binaire bestanden konden niet worden geïnstalleerd. Gelieve de log te raadplegen en tor-assistants@torproject.org op de hoogte te stellen + Toepassingsfout + Welkom bij Orbot + Over Orbot + Volgende + Vorige + Einde + OK + Annuleren + + Enkele Orbot-gegevens + 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. + Rechten toegewezen + Orbot-rechten + Uitstekend! We hebben gedetecteerd dat je root-rechten hebt aangezet voor Orbot. We gebruiken deze kracht met verstand. + 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! + 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. + Ik begrijp dit en wil verdergaan zonder Superuser + Root toestaan voor Orbot + Torificatie instellen + Orbot geeft je de mogelijkheid om al het verkeer via Tor te laten gaan OF om individueel je applicaties te kiezen. + Proxy alle apps door Tor + Selecteer individuele apps voor Tor + Orbot-geschikte apps + 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. + ChatSecure - Beveiligde instant messaging-cliënt voor Android + Proxy-instellingen - Leer hoe je apps te configureren voor Orbot + DuckDuckGo zoekmachine-app + Stel Twitter-proxy in als host \"localhost\" en poort 8118 + StoryMaker - Maak een verhaal en laat de veiligheid aan Tor over! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy-instellingen + 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 + Orbot is klaar! + 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! + Je moet Orbot eerst configureren vooraleer je het kan gebruiken! + + 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@guardianproject.info om meer te weten te komen. + Dit opent je standaardbrowser naar https://check.torproject.org om te controleren of Orbot succesvol is geconfigureerd om te verbinden met het Tor-netwerk. + Verborgen diensten hosten + Algemeen + Start Orbot bij opstarten + Start Orbot en verbind automatisch met Tor wanneer je Android-toestel opstart + + + 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. + + Waarschuwing + 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. + + Rechten + Je kan optioneel Orbot \'Superuser\'-toegang geven om geavanceerde functies beschikbaar te stellen, zoals transparant proxyen. + Als je dit niet wil doen, let er dan op dat je apps gebruikt die geschikt zijn voor Orbot + Je toestel is niet geroot of biedt geen root of \'Superuser\'-toegang.\n\nProbeer de \'Apps\'-modus op het hoofdscherm. + + Orbot-geschikte apps + ChatSecure: beveiligde chat-applicatie met Off-the-Record-versleuteling + Orfox: Browser met pricavy functies die werkt met Tor + Vind alle Guardian Project-applicaties op Google Play + Vind alle Guardian Project-applicaties op F-Droid + Vind alle Guardian Project-applicaties op https://f-droid.org + + Transparant proxyen + Dit maakt het mogelijk voor jouw applicaties om automatisch via het Tor-netwerk te draaien zonder enige configuratie. + (Vink dit aan als je geen idee hebt waarover we het hebben) + Geen + Tor tetheren + Schakel Tor transparante proxy voor WiFi en USB-getheterde toestellen in (vereist herstart) + Vraag Superuser-toegang aan + Kies applicaties + Kies applicaties om via Tor te draaien + Node-configuratie + Dit zijn geavanceerde instellingen die je anonimiteit kunnen verminderen + Toegangsnodes + Vingerafdrukken, nicks, landen en adressen voor de eerste hop + Voer toegangsnodes in + Sta starten op de achtergrond toe + Sta elke app toe om Orbot de Tor verbinding en diensten te laten starten + Proxy alles + Proxy niets + Selectie omkeren + Uitgaande netwerk-proxy (facultatief) + Proxy-type + Protocol om te gebruiken voor proxyserver: HTTP, HTTPS, SOCKS4, SOCKS5 + Voer proxy-type in + Proxyhost + Proxyserverhostnaam + Voer proxyhost in + Proxypoort + Proxyserverpoort + Voer proxy poort in + Uitgaande proxygebruikersnaam + Proxygebruikersnaam (facultatief) + Voer proxygebruikersnaam in + Uitgaande proxywachtwoord + Proxywachtwoord (facultatief) + Voer proxywachtwoord in + Status + Bezig met opzetten van volledig transparante proxy… + Bezig met opzetten van per-app transparante proxy… + Transparante proxy INGESCHAKELD + Transparante proxy ingeschakeld voor tetheren! + WAARSCHUWING: fout tijdens starten van transparante proxy! + TransProxy-regels gewist + Kon Tor-proces niet starten: + Polipo wordt uitgevoerd op poort: + Bezig met opzetten van per-poort transparante proxy… + Bridge-fout + Om de bridge-functie te gebruiken moet je minstens één bridge IP-adres invoeren. + Stuur een e-mail met een GMail-account naar bridges@torproject.org met enkel de regel \"get bridges\" in de body van de e-mail. + Fout + Je ReachableAddresses-instellingen veroorzaakten een fout! + Je relay-instellingen veroorzaakten een fout! + Exitnodes + Vingerafdrukken, nicks, landen en adressen voor de laatste hop + Voer exitnode in + Uitgesloten nodes + Vingerafdrukken, nicks, landen en adressen om uit te sluiten + Voer uitgesloten nodes in + Strikte nodes + Gebruik *enkel* deze opgegeven nodes + Bridges + Gebruik bridges + Versluierde bridges + Gebruik alternatieve toegangsnodes naar het Tor-etwerk + Schakel in als de geconfigureerde bridges versluierde bridges zijn + IP-adres en poort van bridges + Voer bridge-adres in + Relays + Relayen + Stel je toestel in staat om een non-exit relay te zijn + Relay-poort + Luisterpoort van jouw Tor-relay + Voer OR-poort in + Relay-bijnaam + De bijnaam voor jouw Tor-relay + Voer een eigen relay-bijnaam in + Bereikbare adressen + Draai als een cliënt achter een firewall met beperkend beleid + Bereikbare poorten + Poorten bereikbaar achter een beperkende firewall + Voer poorten in + Verborgen diensten hosten + maak server-op-toestel toegankelijk via het Tor-netwerk + voer localhost-poorten in voor verborgen diensten + Verborgen dienst-poort + de adresseerbare naam voor je verborgen dienst (automatisch gegenereerd) + schakel debug log naar uitvoer in (adb of aLogCat is nodig om dit te bekijken) + Project homepagina(\'s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + De Tor-licentie + https://torproject.org + Software van 3e partijen: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Een applicatie wil verborgen dienst-poort %S openen naar het Tor-netwerk. Dit is veilig als je de applicatie vertrouwt. + bestaand Tor-proces gevonden… + Er is een fout opgetreden. Controleer de log + verborgen dienst op: + Kan verborgen dienst-naam niet lezen + Kan Tor niet starten: + Herstart je toestel, kan Tor niet opnieuw instellen! + Gebruik standaard iptables + gebruik de ingebouwde iptables-binary in plaats van de in Orbot geïntegreerde + De Tor-binaries konden niet worden geïnstalleerd of bijgewerkt. + Houd icoon in taakbalk zolang Orbot verbonden is + Meldingen altijd aan + Toon uitgebreide melding met Tor-exitland en IP + Uitgebreide meldingen + Bridges ingeschakeld! + + Taal + Kies de landsinstellingen en taal voor Orbot + Kies taal + Laat standaard of schakel over naar huidige taal + aangedreven door Tor + Sla instellingen op + Geen internetverbinding; Tor is op stand-by… + Bandbreedte: + omlaag + omhoog + Geen netwerk automatisch slapen + Laat Tor slapen als er geen internetverbinding beschikbaar is + Je bent naar een nieuwe Tor identiteit gewisseld! + Browser + Gebruik ChatSecure + Tor beheren + Deze applicatie toestaan om de Tor-dienst te bedienen + Orfox lijkt niet geïnstalleerd te zijn, Wil je daar hulp bij, of wil je gewoon de browser openen? + Applicaties installeren? + Geen internetverbinding. Tor wordt te slapen gelegd… + Netwerkverbinding is in orde. Tor wordt wakker gemaakt… + instellingen in Tor-dienst worden bijgewerkt + Tor SOCKS + Poort waarop Tor de SOCKS-proxy aanbiedt (standaard: 9050 of 0 om uit te schakelen) + SOCKS-poortconfiguratie + Tor TransProxy-poort + Poort waarop Tor de transparante proxy aanbiedt (standaard: 9040 of 0 om uit te schakelen) + TransProxy-poortconfiguratie + Tor DNS-poort + Poort waarop Tor de DNS aanbiedt (standaard: 5400 of 0 om uit te schakelen) + DNS-poortconfiguratie + Torrc aangepaste configuratie + ENKEL VOOR GEVORDERDEN: voer rechtstreeks torrc-configuratieregels in + Aangepaste Torrc + Mobile Martus - Benetech Human Rights Documentation App + Je Tor publieke IP\'s: + Schakel deze applicatie uit in Android->Instellingen->Applicaties als je problemen ondervindt met Orbot: + App-conflict + Transproxy automatisch verversen + Transproxy-regels opnieuw toepassen wanneer de status van het netwerk verandert + Transproxy VERWIJDEREN DWINGEN + Tik hier om alle transproxy-netwerkregels NU te spoelen + Transparante proxy-regels gespoeld! + Je hebt ROOT-toegang niet ingeschakeld + Het kan nodig zijn Orbot te stoppen en opnieuw te starten opdat wijzigingen in de instellingen worden ingeschakeld. + VPN + kbps + mbps + KB + MB + Bridges bijgewerkt + Herstart Orbot om de wijzigingen in te schakelen + QR-codes + Bridge-modus + E-mail + Web + Activeren + Apps VPN Modus + 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. + E-mail versturen + 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. + Orfox installeren + Standaardbrowser + LET OP: enkel standaard Tor-bridges werken op Intel x86/Atom-toestellen + Wereld + diff --git a/orbotservice/src/main/res/values-pa/strings.xml b/orbotservice/src/main/res/values-pa/strings.xml new file mode 100644 index 00000000..2756370d --- /dev/null +++ b/orbotservice/src/main/res/values-pa/strings.xml @@ -0,0 +1,19 @@ + + + ਚਰਨਾ + ਪਰਿਸਥਿਤੀ + ਸਹਾਇਤਾ + ਸਹਾਇਤਾ + ਰੱਦ ਕਰੋ + + ਪਰਾਕਸੀ ਸੈਟਿੰਗ + + + + + + + + ਖਾਲੀ + + diff --git a/orbotservice/src/main/res/values-pl/strings.xml b/orbotservice/src/main/res/values-pl/strings.xml new file mode 100644 index 00000000..e550da5c --- /dev/null +++ b/orbotservice/src/main/res/values-pl/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + włącz i wyłącz Tor + torproxyservice + Orbot startuje... + Podłączony do sieci Tor + Orbot wyłączony + TorService wyłącza się + Uruchamianie klienta sieci Tor... + gotowe. + czekaj. + 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 + Start + Przeglądaj + Ustawienia + Logi + Pomoc + VPN + Start + Stop + O programie + Zdobądź aplikacje + Pobieranie (prędkość/suma) + Wysyłanie (prędkość/suma) + Pomoc + Zamknij + O programie + Czyść dziennik + Sprawdź + Wyjście + Skanuj BridgeQR + Podziel się BridgeQR + - wciśnij na dłużej, by uruchomić - + Przekierowanie przezroczyste (Wymaga uprawnień administratora) + Przekierowanie przezroczyste + Automatyczne toryfikowanie aplikacji + Przepuść wszystko przez Tora + Przekierowanie ruchu wszystkich aplikacji przez Tora + Zapasowy Port Proxy + UWAGA: Unika powszechnych portów (80, 443, etc). *UŻYWAĆ TYLKO* gdy \'All\' lub tryb \'App\' nie działa. + Lista Portów + Lista portów, które przechwytywać. *UŻYWAĆ TYLKO* gdy \'All\' lub tryb \'App\' nie działa. + Wpisz porty do przechwytywania + Żądaj dostępu administratora + Żądaj dostępu administratora dla przezroczystego przekierowania + Binarki Tora pomyślnie zainstalowane! + Nie można zainstalować plików binarnych Tora. Zajrzyj do dziennika i powiadom tor-assistants@torproject.org + Błąd Aplikacji + Witamy w Orbocie + O Orbocie + Dalej + wstecz + Koniec + OK + Anuluj + + Niektóre szczegóły o Orbocie + 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. + Dostęp zezwolony + Prawa dostepu Orbota + Doskonale! Odkryliśmy, że masz uprawnienia administratora włączone dla Orbota. Będziemy mądrze korzystać z tej władzy. + 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. + Jeśli nie masz uprawnień administratora lub nie masz pojęcia, o czym mówimy, używaj aplikacji skonfigurowanych do pracy z Orbotem. + Rozumiem i chcę kontynuować bez uprawnień administratora + Nadaj uprawnienia administratora Orbotowi + Skonfiguruj Toryfikację + Orbot daje Ci możliwość przekierowania całego ruchu aplikacji przez Tora albo wybrania aplikacji pojedynczo. + Przekierowuj wszystkie aplikacje przez Tora + Wybierz poszczególne aplikacje dla Tora + Aplikacje skonfigurowane dla Orbota + 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ć. + ChatSecure - Bezpieczny komunikator pod Androida + Ustawienia Proxy - Dowiedz się, jak konfigurować aplikacje do współpracy z Orbotem + Aplikacja Duckduckgo Search Engine + Twitter obsługuje proxy http \"localhost:8118\" + StoryMaker - Napisz artukuł, historię, a bezpieczeństwo pozostaw Torowi. + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Ustawienia Proxy + 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 + Orbot jest gotowy! + 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! + Proszę skonfiguruj Orbot zanim zaczniesz go uzywać! + + 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@guardianproject.info aby dowiedzieć się więcej. + 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. + Usługi ukryte + Ogólne + Uruchamiaj Orbota przy starcie + Automatycznie uruchamiaj Orbota i łącz się z Torem, gdy Twoje urządzenie z Androidem się uruchomi + + + 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. + + Ostrzeżenie + 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. + + Uprawnienia + Możesz opcjonalnie przekazać darowiznę Orbotowi i otrzymać dostęp \'Superużytkownika\' aby włączyć zaawansowane funkcje, jak np. Transparentne Proxy. + Jeśli nie chcesz tego robić, upewnij się by używać aplikacji stworzonych do pracy z Orbotem + 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. + + Orbot-Włączone Aplikacje + ChatSecure: Bezpieczny komunikator z szyfrowaniem Off-the-Record + Orfox: Przeglądarka, która działa przez Tora + Znajdź wszystkie aplikacje Guardian Project na Google Play + Zobacz wszystkie aplikacje Guardian Project na F-Droid + Zobacz wszystkie aplikacje Guardian Project na https://f-droid.org + + Transparentne Proxy + To pozwala Twojej aplikacji na automatyczne połączenie przez Sieć Tor bez żadnej konfiguracji. + (Sprawdź tutaj, jeśli nie masz pojęcia o czym mówimy) + Brak + Przywiązywanie Tora + Włącz Transparentne Proxy Tora dla Wifi i USB (wymaga restartu) + Żądanie dostępu Superużytkownika + Wybierz aplikacje + Wybierz aplikacje do przejścia przez Tor + Konfiguracja węzła + Są to zaawansowane ustawienia, które mogą zmniejszyć Twoją anonimowość + Węzły wejściowe + Odciski palców, nicki, państwa i adresy na pierwszy raz + Wpisz Węzły Wejściowe + Pozwól na start z tle + Pozwól każdej aplikacji powiedzieć, aby Orbot uruchomił Tor i inne związane z nim usługi + Przepuszczaj wszystko przez proxy + Nie przepuszczaj niczego przez proxy + Odwróć zaznaczone + Wychodzący serwer sieciowy proxy + Wychodzące Typy Proxy + Protokół używany dla serwera proxy: HTTP, HTTPS, Socks4, Socks5 + Wpis Typ Proxy + Wychodzący Proxy Host + Nazwa hosta serwera proxy + Wpisz Hosta Proxy + Wychodzące Porty Proxy + Port serwera Proxy + Wpisz port Proxy + Nazwa użytkownika Wychodzącego Proxy + Nazwa użytkownika proxy (opcjonalna) + Wpisz nazwę użytkownika Proxy + Hasło Wychodzącego Proxy + Hasło Proxy (opcjonalne) + Wpisz hasło Proxy + Status + Ustawianie w pełni transparentnego proxy... + Ustawianie bazującego na aplikacji transparentnego proxy + Transparentne proxy WŁĄCZONE + TransProxy podłączone do modemu! + OSTRZEŻENIE: błąd w uruchamianiu transparentnego proxy! + TransProxy działa czysto + Nie można było zainicjować procesu Tora: + Polipo działa na porcie: + Ustawianie bazującego na porcie transparentnego proxy + Błąd mostka + Aby użyć funkcji mostka, musisz wpisać przynajmniej jeden adres IP mostka. + Wyślij e-mail do bridges@torproject.org pisząc w treści \"get bridges\" z konta gmail. + Błąd + Twoje ustawienia dostępnych adresów spowodowały wyjątek! + Ustawienia Twojego przekaźnika spowodowały wyjątek! + Węzły Wyjściowe + Odciski palców, nicki, państwa i adresy na ostatni skok + Wpisz węzły wyjściowe. + Wyklucz węzły + Odciski palców, nicki, państwa i adresy do wykluczenia. + Wpisz wykluczone węzły. + Ścisłe węzły + Użyj *tylko* tych określonych węzłów + Mostki + Użyj mostków + UUtajnione Mostki + Umożliw alternatywne wejściowe węzły do Sieci Tor + Włącz, jeśli skonfigurowane mostki są ukrytymi mostkami + Adres IP i port mostków + Wpisz adresy mostków + Przekaźniki + Przekazywanie + Pozwól swojemu urządzeniu zostać bezwyjściowym przekaźnikiem + Port Przekaźników + Nasłuchiwanie portu Twojego przekaźnika + Wpisz port OR + Nick przekaźnika + Nick Twojego przekaźnika Tora + Wpisz standardową nazwę przekaźnika + Osiągalne adresy: + Włącz jako klienta za firewallem z restrykcyjną polityką + Osiągalne porty + Porty dostępne za ograniczającym firewallem + Wpisz porty + Włącz Ukryte Serwisy + włącz serwisy dostępne przez Sieć Tor + wpisz porty localhosta dla ukrytych serwisów + Porty Ukrytych Serwisów + adresowana nazwa dla Twojego ukrytego serwisu (generowana automatycznie) + włącz zdebugowany log do wydajności (musisz używać adb lub aLogCat, by go zobaczyć) + Strony domowe projektu: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Licencja Tora + https://torproject.org + Oprogramowanie 3rd-Party + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Aplikacja chce otworzyć port ukrytego serwera %S do Sieci Tor. Jest to bezpieczne, jeśli ufasz aplikacji. + znaleziono istniejący proces Tora... + Coś nie poszło nie tak. Sprawdź logi + ukryty serwis: + uniemożliw czytanie nazw ukrytych serwisów + Nie można wystartować aplikacji Tor: + Zrestartuj swoje urządzenie, nie można zrestartować Tora! + Użyj domyślnie Iptables + użyj wbudowanych plików binarnych iptables zamiast tych w pakiecie z Orbotem + Pliki binarne Tora nie zostały zainstalowane lub uaktualnione. + Zawsze trzymaj ikonę w pasku powiadomień gdy Orbot jest połączony + Powiadomienia zawsze aktywne + Pokaż rozszerzone powiadomienie z krajem Tor exit node oraz jego IP + Rozszerzone Powiadomienia + Mostki włączone! + + Język + Wybierz ustawienia regionalne i język dla Orbota + Wybierz język + Zostaw domyślny albo zmień język + napędzane oprogramowaniem Projektu Tor + Zapisz ustawienia + Brak połączenia internetowego; Tor jest w trybie oczekiwania... + Przepustowość: + pobieranie + wysyłanie + Brak Auto-Uśpienia Sieci + Ustaw Tor\'a w tryb uśpienia kiedy połączenie internetowe będzie niedostępne + Nowa tożsamość Tor\'a została zmieniona! + Przeglądarka + Użyj ChatSecure + Administruj Tor\'em + Pozwól tej aplikacji kontrolować serwis Tor + Wygląda na to, że nie masz zainstalowanej Orfoxa. Chcesz abyśmy Ci pomogli, czy chcesz abyśmy otworzyli to w przeglądarce? + Zainstalować aplikacje? + Brak połączenia internetowego. Tor będzie w trybie snu... + Połączenie internetowe jest dobre. Trwa budzenie Tora... + aktualizowanie ustawień w serwisie Tor + Tor SOCKS + Port który oferuje SOCKS proxy (domyślnie: 9050 lub 0, aby wyłączyć) + Konfiguracja portu SOCKS + Tor TransProxy Port + Port który oferuje Transparent Proxy (domyślnie: 9040 lub 0, aby wyłączyć) + Konfiguracja portu TransProxy + Tor DNS Port + Port na którym Tor oferuje swój DNS (domyślnie: 5400 lub 0, aby wyłączyć) + Konfiguracja portu DNS + Konfiguracja Torrc klienta + TYLKO DLA EKSPERTÓW: wpisz linijki konfiguracyjne torrc + Torrc klienta + Mobile Martus - Benetech Dokumentacja Aplikacji Praw Człowieka + Twoje publiczne Tor IP: + Proszę wyłącz tą aplikację w Android->Ustawienia->Aplikacje jesli masz problemy z Orbot: + Konflikt aplikacji + Transproxy Auto-Odśwież + Zaztosuj ustawienia Transproxy kiedy stan sieci zmieni się + Transproxy WYMUŚ USUNIĘCIE + Dotknij tutaj, aby wyczyścić wszystkie zasady sieciowe transproxy TERAZ + Ustawienia Transproxy zostały wyczyszczone! + Nie masz praw użytkownika root. + Możesz zatrzymać i uruchomić ponownie Orbota, aby zmiany ustawień weszły w życie. + VPN + kbps + mbps + KB + MB + Zaktualizowane Bridges + Proszę zrestartować Orbot, aby zmiany mogły wejść w życie + Kody QR + 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. + Tryb Bridge + Email + Web + Aktywuj + Tryb VPN Aplikacji + 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. + Wyślij Email + 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. + Zainstaluj Orfox + Standardowa przeglądarka + UWAGA: Tylko standardowe bridges działają na urządzeniach z Intel X86/ATOM. + Świat + diff --git a/orbotservice/src/main/res/values-ps/strings.xml b/orbotservice/src/main/res/values-ps/strings.xml new file mode 100644 index 00000000..844f834c --- /dev/null +++ b/orbotservice/src/main/res/values-ps/strings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-pt-rBR/strings.xml b/orbotservice/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 00000000..b23e3043 --- /dev/null +++ b/orbotservice/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,285 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + iniciar e parar o Tor + torproxyservice + Orbot está iniciando... + Conectado à rede Tor + Orbot está desativado + TorService está desligando + Iniciando cliente Tor... + completo. + esperando. + 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 + Início + Procurar + Configurações + Log + Ajuda + VPN + Iniciar + Parar + Sobre + Obter aplicativos... + Download + Upload + Ajuda + Fechar + Sobre + Limpar Log + Checar + Sair + Escanear BridgeQR + Compartilhar BridgeQR + - clique longo para iniciar - + Proxying Transparente (Requer Root) + Proxying Transparente + Automaticamente Torificar Apps + Tor Tudo + Tráfego proxy para todos apps através do Tor + Porta do Proxy Reserva + AVISO: Evite as portas comuns (80,443, etc). *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou. + Lista de Portas + Lista de portas para proxy. *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou + Insira as portas para proxy + Requer Acesso Root + Requer acesso root para proxy transparente + Binário do Tor instalados com sucesso! + Os arquivos binários do Tor estão inaptos à serem instalados. Por favor, cheque o log e notifique tor-assistants@torproject.org + Erro de Aplicação + Orbot + Sobre Orbot + Próximo + Voltar + Terminar + Okay + Cancelar + + Alguns detalhes do Orbot + 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. + Permissão Concedida + Permissões do Orbot + Excelente! Detectamos que você habilitou permissões de root para Orbot. Nós usaremos este poder com sabedoria. + 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! + 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. + Eu entendo e gostaria de continuar sem o Superusuário + Conceder acesso Root ao Orbot + Configurar Torificação + 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. + Usar Proxy para Todas Apps Através do Tor + Selecionar Apps Individuais para o Tor + Apps habilitadas para Orbot + 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. + ChatSecure - cliente de mensagem instantânea segura para Android + Configurações de Proxy - Aprenda como configurar apps para trabalhar com Orbot + Ferramenta de Busca DuckDuckGo + Define o proxy do Twitter para \"localhost\" e a porta 8118 + StoryMaker - Faça uma história e deixe-a para o tor por segurança! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Configurações de Proxy + 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 + Orbot está pronto! + 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! + Por favor, configure o Orbot antes de começar a usá-lo! + + 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@guardianproject.info para saber mais. + 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. + Serviços Ocultos + Geral + Iniciar Orbot no Boot + Automaticamente iniciar o Orbot e conectar o Tor quando seu Android bootar. + + + 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. + + Aviso + 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. + + Permissões + Você pode opcionalmente garantir ao Orbot acesso de \'Superusuário\' para habilitar recursos avançados, como um proxy transparente. + Se você não quiser fazer isto, tenha certeza de usar apps feitas para trabalhar com o Orbot. + 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. + + Apps Orbot Habilitadas + ChatSecure: app de chat seguro com criptografia Off-the-Record + Orfox: navegador de privacidade aprimorada que funciona através do Tor + Encontre todos os aplicativos da Guardian Project no Google Play + Encontre todos os aplicativos da Guardian Project no F-Droid + Encontre todos os aplicativos da Guardian Project no https://f-droid.org + + Proxy Transparente + Isto permite à suas apps automaticamente rodarem através da rede Tor sem nenhuma configuração. + (Selecione esta caixa se você não souber do que estamos falando) + Nenhum + Tor Tethering + Habilitar Proxy Transparente para Tor Dispositivos de Toque Wifi e Usb (requer reinicialização) + Acesso Superusuário Requerido + Selecionar Apps + Escolha as Apps para Rotearem Através do Tor + Configuração de Nó + Aqui estão as configurações avançadas que podem reduzir seu anonimato. + Nós de Entrada + Impressões digitais, apelidos, países e endereços para a primeira etapa + Insira os Nós de Entrada + Permitir estrelas em segundo plano + Todo o Proxy + Nenhum Proxy + Inverter Sele + Proxy de saída da rede (Opcional) + Tipo de Proxy + Protocolo para usar no servidor proxy: HTTP, HTTPS, Socks4, Socks5 + Insira o Tipo de Proxy + Proxy Host + Endereço do servidor Proxy + Insira o Host do Proxy + Porta do Proxy + Porta do servidor Proxy + Insira a porta do Proxy + Nome de usuário do Proxy de saída + Nome de usuário do Proxy (Opcional) + Digite o nome de usuário do Proxy + Senha do Proxy de saída + Senha do Proxy (Opcional) + Digite a senha do Proxy + Status + Configurando proxy com total transparência... + Configurando apps baseadas em transparência de proxy... + Proxy Transparente HABILITADO + TransProxy habilitado para Toque! + AVISO: erro ao iniciar o proxy transparente! + Regras TransProxy limpas + Não foi possível iniciar o processo Tor: + Polipo está rodando na porta: + Configurando proxy transparente baseado em porta... + Erro na Ponte + Como condição para usar o recurso de ponte, você deve inserir pelo menos um endereço IP de ponte. + Envie um email para bridges@torproject.org com a linha \"get bridges\" sozinha no corpo do e-mail, a partir de uma conta do gmail + Erro + Suas configurações de Endereços Acessíveis causou uma exceção! + Suas configurações de retransmissão causaram uma exceção! + Nós de Saída + Impressões digitais, apelidos, países e endereços para a última etapa. + Insira os Nós de Saída + Nós Excluídos + Impressões digitais, apelidos, países e endereços para excluir + Insira Nós Excluídos + Nós Estritos + Use *somente* estes nós específicos + Pontes + Usar pontes + Pontes Ofuscadas + Habilitar nós de entrada alternativos dentro da rede Tor + Habilitar se pontes configuradas forem pontes ofuscadas + Endereço IP e porta das pontes + Insira os Endereços das Pontes + Retransmissores + Retransmitindo + Habilitar seu dispositivo para não ser um retransmissor de saída + Porta Retransmissora + Ouvindo porta do seu retransmissor Tor + Insira porta OR + Apelido do Retransmissor + O apelido para seu retransmissor Tor + Insira um apelido de retransmissor customizado + Endereços Atingíveis + Rodar como um cliente atrás de um firewall com políticas restritivas. + Portas Atingíveis + Portas atingíveis atrás de um firewall restritivo + Insira as portas + Habilitar Serviços Ocultos + rodar servidores acessíveis via rede Tor + insira as portas local para serviços ocultos + Portas de Serviço Oculto + o nome enderessável para seu serviço oculto (gerado automaticamente) + habilitar debug log para saída (deve usar adb ou aLogCat para ver) + Home(s) do Projeto: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + A Licença Tor + https://torproject.org + Software de Terceiros + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Uma app quer abrir a porta %S oculta do servidor para a rede Tor. Isto é seguro se você confia na app. + procurando processos Tor existentes... + Algo ruim aconteceu. Cheque o lo + serviço oculto em: + habilitar ler o nome do serviço oculto + Habilitar iniciar o Tor: + Reinicie seu dispositivo, incapaz de resetar Tor! + Usar tabelas de IP padrão: + usar as tabelas ip binárias embutidas ao invés das tabelas do pacote Orbot + Os binários Tor não estão disponíveis para serem instalados ou atualizados. + Sempre manter o ícone na barra de tarefas quando o Orbot está conectado + Notificações Sempre Ligadas + Mostrar notificação expandida com Tor país de saída e IP + Notificações Expandidas + Pontes habilitadas! + + Idioma + Escolha o local e idioma para o Orbot + Escolha o Idioma + Deixe o padrão ou troque o idioma atual + distribuído por Tor + Salvar Configurações + Sem conexão na internet; Tor está na espera... + Largura de banda: + down + up + Modo de espera automático + Colocar o Tor em modo de espera quando não houver acesso Internet disponível + Você trocou para uma nova identidade Tor! + Navegador + Usar ChatSecure + Gerenciar Tor + Habilitar este app a controlar o serviço Tor + Parece que você não tem o Orweb instalado. Quer ajuda com isso ou devemos apenas abrir o navegador? + Instalar apps? + Sem conectividade na rede. Colocando o Tor para dormir... + Conectividade da rede está boa. Acordando Tor + atualizando configurações no serviço Tor + Tor SOCKS + Porta que Tor oferece seu proxy SOCKS (padrão: 9050 ou 0 para desativar) + Config da Porta SOCKS + Porta TransProxy Tor + Porta que Tor oferece seu Proxy Transparente no (padrão: 9040 ou 0 para desativar) + Config da Porta TransProxy + Porta DNS Tor + Porta que Tor oferece seu DNS no (padrão: 5400 ou 0 para desativar) + Config da Porta DNS + Config Personalizada do Torrc + Torrc Personalizado + Seus IPs Públicos do Tor: + Conflito de aplicattivo + Transproxy FORÇAR REMOÇÃO + Você não tem acesso root ativado + Você pode precisar parar e iniciar Orbot para as configurações de mudar para ser ativado. + VPN + kbps + mbps + KB + MB + Pontes Atualizadas + Por favor reinicie Orbot para habilitar as mundanças + QR Codes + 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. + Modo Ponte + Email + Web + Atvar + Modo Apps VPN + 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. + Enviar Email + 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. + Instalar Orfox + Navegador Padrão + NOTA: Apenas pontes Tor padrão funcionam em dispositivos Atom/Intel X86 + Mundo + diff --git a/orbotservice/src/main/res/values-pt-rPT/strings.xml b/orbotservice/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 00000000..20ba24b2 --- /dev/null +++ b/orbotservice/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,14 @@ + + + Orbot + Orbot + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-pt/strings.xml b/orbotservice/src/main/res/values-pt/strings.xml new file mode 100644 index 00000000..69f7a770 --- /dev/null +++ b/orbotservice/src/main/res/values-pt/strings.xml @@ -0,0 +1,181 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + iniciar e parar Tor + serviço proxy Tor + O Orbot está a iniciar... + Conetado à rede Tor + O Orbot está desativado + A iniciar o cliente Tor... + completo. + a aguardar. + 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 + Início + Explorar + Configurações + Registo + Ajuda + Iniciar + Parar + Sobre + Transferir + Enviar + Ajuda + Fechar + Sobre + Limpar Registo + Verificar + Sair + Digitalizar BridgeQR + Compartilhar BridgeQR + - pressionar longo para iniciar - + Proxy Transparente (requer \'Root\') + Proxy Transparente + Tor em Tudo + Passar todo o tráfego das apps via Tor + AVISO: Rodear as portas comuns (80, 443, etc...). *USAR APENAS* se o modo \'Todas\' ou \'App\' não funcionar. + Lista de Portas + Lista de portas para o proxy. *USAR APENAS* se o modo \'Todas\' ou \'App\' não funcionar. + Insira as portas para o proxy + Solicitar Acesso \'Root\' + Solicitar acesso \'root\' para o proxy transparente + Binários do Tor instalados com sucesso! + Não foi possível instalar os ficheiros binário do Tor. Por favor, verifique o registo de eventos e notifique tor-assistants@torproject.org + Erro de Aplicação + Orbot + Sobre o Orbot + Seguinte + Voltar + Terminar + OK + Cancelar + + Alguns Detalhes do Orbot + Autorização Concedida + Autorizações do Orbot + Eu compreendo e gostaria de continuar sem a Superuser + Conceder \'Root\' para o Orbot + Configurar Acesso do Tor + Passar Todas as Aplicações Via Tor + Selecione Individualmente as Apps para o Tor + Orbot - Apps ativadas + ChatSecure - Cliente de mensagens instantâneas seguras para Android + Configurações do Proxy - Aprenda a configurar as apps para funcionarem com o Orbot + App de Mecanismo de Procura DuckDuckGo + Defina o proxy do Twitter para hospedeiro \"localhost\" e porta 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Definições Proxy + O Orbot está pronto! + + Serviço de Hospedagem Ocultado + Geral + Iniciar o Orbot no Arranque + Iniciar automaticamente o Orbot e conetar o Tor quando o seu dispositivo Android inicia + + + + Aviso + + Autorizações + Opcionalmente, pode conceder acesso de Administrador\' ao Orbot para ativar as funções avançadas, tais como, Proxy Transparente. + Se não quer isto, por favor, certifique-se que usa as apps criadas para funcionarem com a Orbot + + Orbot - Apps Ativadas + Encontre todas as apps do Projeto Guardian na Play Store da Google + + Proxy Transparente + (Selecione esta caixa se não souber do que estamos a falar) + Nenhum + \"Tethering\" Tor + Ativar o Proxy Transparente Tor para a rede Sem Fios e Dispositivos USB \"Tethered\" (necessário reiniciar) + Solicitar Acesso de Administrador + Selecionar Apps + Escolher Apps para Encaminhar Via Tor + Tudo com o Proxy + Nenhum Proxy + Inverter Seleção + Proxy de Rede de Saída (Opcional) + Tipo de Proxy de Saída + Protocolo para usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5 + Inserir Tipo de Proxy + Anfitrião Proxy de Saída + Nome do Hospedeiro do Servidor Proxy + Inserir Hospedeiro Proxy + Porta Proxy de Saída + Porta do Servidor Proxy + Inserir Porta do Proxy + Nome do Utilizador do Proxy de Saída + Nome do Utilizador do Proxy (Opcional) + Inserir Nome de Utilizador do Proxy + Senha do Proxy de Saída + Senha do Proxy (Opcional) + Inserir Senha do Proxy + Estado + Não foi possível iniciar o processo Tor: + Erro + Pontes + Usar Pontes + Endereço de IP e porta das pontes + Inserir OU porta + Portas alcançáveis + Portas alcançáveis por detrás de uma Firewal restritiva + Insira as portas + Hospedeiro de Serviço Ocultado + Portas de Serviço Ocultadas + Projeto Home(s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + A Licença do Tor + https://torproject.org + Programas de Terceiros: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Uma app pretende abrir a porta %S do servidor ocultado para a rede Tor. Isto é seguro, se confiar na app. + encontrado o processo Tor existente... + Aconteceu algo de mau. Verifique o registo de eventos. + serviço ocultado em: + não é possível ler o nome do serviço ocultado + Não é possível iniciar o Tor: + Reinicie o seu dispositivo, não é possível reiniciar Tor! + Usar Tabelas de IP Predefinidas + Notificações Sempre Ativadas + Notificações Estendidas + Pontes ativadas! + + Idioma + Escolha o local e o idioma para o Orbot + Escolher Idioma + Deixe a predefinição ou mude o idioma atual + Guardar Definições + Largura de banda: + para baixo + para cima + Mudou para uma nova identidade do Tor! + Usar ChatSecure + Gerir Tor + Ative esta app para controlar o serviço Tor + Instalar apps? + Nenhuma conetividade de rede. A hibernar Tor… + A conetividade de rede é boa. A iniciar Tor… + a atualizar as definições no serviço Tor + SOCKS Tor + Porta DNS Tor + Os seus IPs Públicos Tor: + Conflito de App + kbps + mbps + KB + MB + Pontes Atualizadas + Códigos QR + Correio Eletrónico + Web + Ativar + Enviar Mensagem + Navegador Padrão + diff --git a/orbotservice/src/main/res/values-ro-rRO/strings.xml b/orbotservice/src/main/res/values-ro-rRO/strings.xml new file mode 100644 index 00000000..f0ae485d --- /dev/null +++ b/orbotservice/src/main/res/values-ro-rRO/strings.xml @@ -0,0 +1,30 @@ + + + Pagina de start + Răsfoieşte + Setări + Asistenţă + Despre + Asistenţă + Închide + Despre + Ieşire + Înapoi + Revocare + + Setări proxy + + General + + + + Avertizare + + + + Nimic + Stare + Eroare + + Salvează setările + diff --git a/orbotservice/src/main/res/values-ro/strings.xml b/orbotservice/src/main/res/values-ro/strings.xml new file mode 100644 index 00000000..01166b4f --- /dev/null +++ b/orbotservice/src/main/res/values-ro/strings.xml @@ -0,0 +1,231 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + pornește și oprește Tor + serviciu proxy tor + Orbot porneste... + Conectat la reteaua Tor + Orbot este dezactivat + Porneste clientul Tor... + terminat. + asteptare. + 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 + Pagina de start + Răsfoieşte + Setări + log + Asistenţă + Start + Stop + Despre + Descarca + Incarca + Asistenţă + Închide + Despre + Goleste log-ul + Verifica + Ieşire + - apasa lung pentru pornire - + Proxy transparent (necesita root) + Proxy transparent + Aplicare automata a Tor la aplicatii + Tor tot + Toate aplicatile folosesc Tor pentru trafic + Port proxy de rezerva + ATENTIE: Ocoleste porturile comune (80, 443, etc.). *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza + Lista porturi + Lista porturi pentru proxy. *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza + Introdu porturile pentru proxy + Necesita acces root + Necesita acces root pentru proxy transparent + Fisierele binare Tor instalate cu succes! + Fisierele binare Tor nu au putut fi instalate. Verificati log-ul si raportati bug-ul la tor-assistants@torproject.org + Eroare de aplicatie + Orbot + Despre Orbot + Urmatorul + Înapoi + Termina + Ok + Revocare + + Detalii Orbot + Permisiune acordata + Permisiuni Orbot + Excelent! Am detectat ca ai permis acces root pentru Orbot. Vom folosi aceasta putere cu raspundere. + 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! + Daca nu ai acces root, sau nu ai habar despre ce vorbim, asigura-te ca folosesti aplicatii facute sa functioneze cu Orbot. + Inteleg si as vrea sa continui fara Superuser + Aproba root pentru Orbot + Configureaza Tor + Orbot ofera posibilitatea sa trimita tot traficul prin Tor SAU sa alegi aplicatii individuale. + Toate aplicatiile folosesc Tor + Alege aplicatii individuale pentru Tor + Aplicatii compatibile Orbot + 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. + ChatSecure - Mesagerie instantanee securizată pentru Android + Setari pentru proxy - Invata cum sa configurezi aplicatii sa fie compatibile cu Orbot + Motor de cautare DuckDuckGo + Seteaza proxy-ul Twitter \"localhost\" su portul 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Setări proxy + Orbot este pregatit! + Configurați Orbot înainte de a începe să-l utilizați! + + Vom deschide pagina https://check.torproject.org pentru a verifica daca Orbot este configurat corespunzator si daca este conectat la Tor. + Serviciu de gazduire ascuns + General + Porneste Orbot la boot-are + Porneste Orbot automat si conecteaza-te la Tor cand porneste dispozitivul + + + + Atentie + + Permisiuni + Optional, ii poti oferi lui Orbot acces \"Superuser\" pentru a activa optiuni avansate, cum ar fi proxy transparent. + Daca nu vrei sa faci asta, asigura-te ca folosesti aplicatii compatibile cu Orbot. + + Aplicatii cu Orbot activat + ChatSecure: Aplicație sigură de chat cu codare Off-the-Record + Gaseste toate aplicatile Guardian Project pe Google Play + + Proxy transparent + Asta va permite aplicatilor tale sa foloseasca Tor automat fara nici o configurare. + (Bifeaza asta daca nu ai idee despre ce vorbim) + Nimic + Partajarea conexiunii Tor + Activeaza proxy transparent pentru conexiuni partajate prin WiFi si USB (necesita restart) + Cere acces Superuser + Selecteaza aplicatii + Alege aplicatii care sa foloseasca Tor + Configurare nod + Setari avansate care ar putea sa iti reduca anonimitatea + Noduri de intrare + Amprente, nick name-uri si adrese pentru primul hop + Introdu noduri de intrare + Proxy de retea pentru iesire (optional) + Tipul proxy-ului de iesire + Tipul protocolului pentru proxy: HTTP, HTTPS, Socks4, Socks5 + Introdu tipul proxy-ului + Host-ul proxy-ului de iesire + Hostname-ul server-ului proxy + Introdu host-ul proxy-ului + Port-ul proxy-ului de iesire + Port-ul serverului proxy + Introdu port-ul proxy + Username-ul proxy-ului de iesire + Username-ul proxy-ului (optional) + Introdu username-ul proxy-ului + Parola pentru proxy-ul de iesire + Parola pentru proxy (optional) + Introdu parola pentru proxy + Status + Configurez proxy transparent complet... + Configurez un proxy transparent bazat pe aplicatie... + Proxy transparent ACTIVAT + TransProxy activat pentru partajare! + ATENTIE: eroare la pornirea proxy-ului transparent! + Reguli TransProxy golite + Nu am putut porni procesul Tor: + Configurez proxy transparent bazat pe port... + Eroare de punte + Pentru a putea folosi optiunea de punte, trebuie introdusa cel putin o adresa IP pentru punte. + Trimite un e-mail la bridges@torproject.org cu linia \"get bridges\" in continutul mail-ului de pe un cont de GMail. + Eroare + Setarile tale pentru adrese accesibile au cauzat o exceptie! + Setarile tale de relay au cauzat o exceptie! + Noduri de iesire + Amprente, nick name-uri, tari si adrese pentru ultimul hop + Introdu noduri de iesire + Noduri de exclus + Amprente, nick name-uri, tari si adrese de exclus + Introdu noduri de exclus + Noduri stricte + Foloseste *doar* nodurile specificate + Punti + Foloseste punti + Punti mascate + Activeaza noduri de intrare alternative in reteaua Tor + Activeaza daca puntile configurate sunt punti mascate + Adresa IP si port pentru punti + Introdu adresa pentru punte + Comutatoare + Comutare + Activeaza dispozitivul sa fie un comutator fara iesire + Port de retransmitere + Port pentru comutatorul tau Tor + Introdu portul OR + Nick name-ul comutatorului + Nick name-ul pentru comutatorul tau Tor + Introdu un nick name pentru comutator + Adresa accesibila + Ruleaza ca si client in spatele firewall-ului cu politici restrictive + Porturi accesibile + Porturi accesibile in spatele unui firewall restrictiv + Introdu porturi + Serviciu de gazduire ascuns + permite serverului de pe dispozitiv sa fie accesibil in reteaua Tor + introdu porturile localhost-ului pentru servicile ascunse + Porturi de serviciu ascunse + numele serviciului tau ascuns (generat automat) + activeaza exportul log-ului (trebuie folosit adb sau LogCat pentru vizualizare) + Casa(le) proiectului: + Licenta Tor + https://torproject.org + Aplicatii tertiare: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + O aplicatie vrea sa deschida portul ascuns %S spre reteaua Tor. Este sigur daca ai incredere in aplicatie. + gasit proces Tor existent... + Ceva rau s-a intamplat. Verifica log-ul + serviciu ascuns pe: + nu am putut citi numele serviciului ascuns + Nu am reusit sa pornesc Tor: + Foloseste Iptables implicite + foloseste fisierele binare iptables incorporate in locul celor din Orbot + Fisierele binare Tor nu au putut fi instalate sau actualizate. + Arata tot timpul icoana in bara cand Orbot este conectat + Notificari active tot timpul + Punti activate! + + Limbă + Alege localele si limba pentru Orbot + Alege limba + Lasa implicit sau schimba limba curenta + Salvează setarile + Nu este conexiune la internet; Tor este în așteptare... + Lățime de bandă: + jos + sus + Fără adormirea automată a rețelei + Pune Tor să doarmă dacă nu este internet disponibil + Ați comutat la o nouă identitate Tor! + Utilizați ChatSecure + Administrare Tor + Activați această aplicație pentru a controla serviciile Tor + Se instalează aplicația? + Nu este conexiune la rețea. Se pune Tor în adormire... + Conexiunea la rețea este bună. Se trezește Tor... + se actualizează configurările în serviciul Tor + Tor SOCKS + Nu aveți activat accesul ca ROOT + kbps + mbps + KiO + MiO + Coduri QR + Mod punte + Email + Web + Activează + Trimite email + Navigator standard + diff --git a/orbotservice/src/main/res/values-rs-rAR/strings.xml b/orbotservice/src/main/res/values-rs-rAR/strings.xml new file mode 100644 index 00000000..132b67e8 --- /dev/null +++ b/orbotservice/src/main/res/values-rs-rAR/strings.xml @@ -0,0 +1,58 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + reiniciar Tor + torproxyservice + Orbot está iniciándose… + Conectado a la red Tor + \"Orbot está Desactivado + Orbot se está apagando + Completar + 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 + Inicio + Navegar + Configuración + Registro + Ayuda + Apps + Iniciar + Detener + Acerca de + Asistente + Ayuda + Cerrar + Acerca de + Borrar Registros + Chequear + Salir + Proxying Transparente (Requiere Root) + Proxying Transparente + Torificación Automática de Aplicaciones + Torear Todo + Siguiente + Atrás + Finalizar + Cancelar + + Orbot está listo! + + General + + + + + + + + + + + + + potenciado por The Tor Project + diff --git a/orbotservice/src/main/res/values-ru/strings.xml b/orbotservice/src/main/res/values-ru/strings.xml new file mode 100644 index 00000000..94029fb0 --- /dev/null +++ b/orbotservice/src/main/res/values-ru/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + Orbot - это свободная программа для прокси-соединений, она позволяет другим приложениям более безопасно использовать интернет-соединение. Orbot использует Tor для шифрования интернет-трафика, который затем скрывается в ходе пересылки через несколько компьютеров в разных частях планеты. Tor является свободным программным приложением, а также открытой сетью, помогающей защититься от слежки в сетях, угрожающей личной свободе и частной жизни, конфиденциальным бизнес-деятельности и контактам, а также государственной программе безопасности, известной как анализ трафика. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Запуск и остановка Tor + torproxyservice + Запуск Orbot... + Подключён к сети Tor + Orbot отключён + Служба Tor выключается + Запускается клиент Tor... + завершено. + ожидание. + ПРЕДУПРЕЖДЕНИЕ: ваш трафик ещё не анонимен! Пожалуйста, настройте свои приложения на использование HTTP-прокси 127.0.0.1:8118 или же SOCKS4A или SOCKS5-прокси 127.0.0.1:9050 + Домашняя страница + Просмотр + Настройки + Журнал + Справка + VPN + Запустить + Остановить + О программе + Получить приложения... + Загрузка + Отправка + Справка + Закрыть + О программе + Очистить журнал + Проверка + Выход + Сканировать QR-код моста + Опубликовать QR-код моста + - долгое нажатие для запуска - + Прозрачный прокси (требуется root-доступ) + Прозрачный прокси + Автоматическая Tor-ификация приложений + Направлять всё через Tor + Направлять трафик всех приложений через Tor + Резервный порт прокси + ПРЕДУПРЕЖДЕНИЕ: обходит общие порты (80, 443, и т.д.). *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. + Список портов + Список портов для проксификации. *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. + Введите порты для проксификации + Запросить root-доступ + Запросить root-доступ для прозрачной проксификации + Программа Tor успешно установлена! + Не удалось установить программу Tor. Пожалуйста, проверьте системный журнал и сообщите нам: tor-assistants@torproject.org + Ошибка приложения + Orbot + Об Orbot + Вперёд + Назад + Завершить + OK + Отмена + + Некоторые сведения о программе Orbot + Orbot — это приложение с открытым исходным кодом, которое содержит Tor, LibEvent и Privoxy. Оно предоставляет локальный HTTP-прокси (8118) и SOCKS-прокси (9050) в сеть Tor. Orbot также позволяет на устройствах с правами root пересылать весь интернет-трафик через Tor. + Разрешение получено + Разрешения Orbot + Отлично! Мы определили, что вы предоставили root-права для Orbot. Мы будем использовать эту возможность с умом. + Хотя это и не требуется, Orbot может быть более мощным инструментом, если ваше устройство имеет права root. Нажмите на кнопку ниже и предоставьте Orbot супервозможности! + Если у вас нет root-прав или вы не имеете представления о чём мы говорим, просто убедитесь, что используете приложения, разработанные для Orbot. + Я понимаю и хочу продолжить без прав суперпользователя + Дать root-права Orbot + Настроить Tor-ификацию + Программа Orbot даёт вам возможность направлять трафик всех приложений через Tor ИЛИ выбрать приложения для перенаправления самостоятельно. + Направлять все приложения через Tor + Направлять выбранные приложения через Tor + Orbot-задействованные приложения + Мы советуем вам скачать и использовать приложения, которые умеют работать напрямую через Orbot. Нажмите на кнопки ниже, чтобы запустить процесс установки. + ChatSecure - защищённый обмен сообщениями в Android + Настройки прокси: узнайте, как настроить приложения для работы с Orbot + Приложение поисковой системы DuckDuckGo + Twitter поддерживает http-прокси \"localhost:8118\" + StoryMaker - напишите рассказ и оставьте его Tor для обеспечения безопасности! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Настройки прокси + Если используемое вами приложение для 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 + Orbot готов к использованию! + Миллионы людей во всём мире используют Tor по различным причинам. Журналисты и блоггеры, правозащитники, сотрудники правоохранительных органов, солдаты, корпорации, граждане стран с репрессивным режимом и просто обычные граждане..., а теперь готовы и вы! + Пожалуйста, настройте Orbot прежде чем приступить к использованию! + + Вы успешно подключились к сети Tor, но это НЕ значит, что ваше устройство безопасно. Вы можете воспользоваться функцией \'Проверка\' из меню, чтобы протестировать ваш браузер.\n\nПосетите наш сайт https://guardianproject.info/apps/orbot или отправьте письмо на адрес help@guardianproject.info, чтобы узнать больше. + Это приведёт к запуску браузера, выбранного на вашем устройстве по умолчанию, и подключению к сайту https://check.torproject.org с целью проверки правильности работы Orbot и определения, подключены ли вы к сети Tor. + Скрытые службы + Общие + Запускать Orbot при загрузке + Автоматически запускать Orbot и подключаться к сети Tor при загрузке вашего Android-устройства + + + Orbot позволяет использовать Tor на Android!\n\nTor позволяет вам защититься от фильтрации содержимого, анализа трафика и наблюдения за сетью, которые ставят под угрозу приватность, конфиденциальную информацию и личные отношения.\n\nЭтот мастер поможет вам настроить Orbot и Tor на вашем устройстве. + + Предупреждение + Сама по себе установка Orbot не сделает автоматически ваш мобильный трафик анонимным.\n\nВы должны правильно настроить Orbot, ваше устройство и другие приложения, что бы успешно использовать Tor. + + Разрешения + Вы так же можете по желанию дать Orbot права \'Суперпользователя\' для доступа к дополнительным возможностям типа прозрачной проксификации. + Если вы не хотите делать это, пожалуйста, удостоверьтесь, что используете приложения, созданные для работы с Orbot. + Похоже, ваше устройство не имеет root-прав и не предоставляет доступ \'Суперпользователя\'.\n\nЧтобы использовать Tor, вам надо использовать приложения, построенные для работы с Orbot или те, которые поддерживают использование HTTP или SOCKS-прокси. + + Приложения, работающие с Orbot: + ChatSecure: приложение для безопасной переписки с конфиденциальным шифрованием + Orfox: конфиденциальный браузер, работающий через Tor + Найти все приложения Guardian Project на Google Play + Найти все приложения Guardian Project на F-Droid + Найти все приложения Guardian Project на сайте https://f-droid.org + + Прозрачное проксирование + Это позволяет вашим приложениям автоматически работать по сети Tor без какого-либо конфигурирования. + (Отметьте данный пункт, если вы не знаете о чём идёт речь) + Нет + Тетеринг Tor + Включить прозрачную проксификацию Tor для устройств с тетерингом по Wi-Fi и USB (требуется перезапуск) + Запросить доступ Суперпользователя + Выбранные приложения + Выбрать приложения для направления через Tor + Конфигурация узла + Это дополнительные настройки, которые могут снизить вашу анонимность + Входные узлы + Отпечатки, псевдонимы, страны и адреса для первого прыжка + Введите входные узлы + Разрешить фоновую загрузку + Позволить любому приложению требовать от Orbot запускать Tor и относящиеся к нему сервисы + Проксировать всё + Не проксировать + Инвертировать выделенное + Исходящий сетевой прокси (необязательно) + Тип прокси + Протокол для использования прокси-сервером: HTTP, HTTPS, Socks4, Socks5 + Введите тип прокси + Хост прокси + Имя хоста прокси-сервера + Введите хост прокси + Порт прокси + Порт прокси-сервера + Введите порт прокси + Имя пользователя прокси + Имя пользователя прокси-сервера (необязательно) + Введите имя пользователя прокси + Пароль пользователя прокси + Пароль пользователя прокси-сервера (необязательно) + Введите пароль пользователя прокси + Статус + Установка общей прозрачной проксификации... + Установка основанной на приложениях прозрачной проксификации... + Прозрачная проксификация ВКЛЮЧЕНА + Прозрачный прокси поддерживает тетеринг! + ВНИМАНИЕ: ошибка запуска прозрачной проксификации! + Правила прозрачного прокси удалены + Невозможно запустить Tor: + Polipo работает на порту: + Установка основанной на портах прозрачной проксификации... + Ошибка моста + Для использования необходимо задать IP-адрес как минимум одного моста. + Отправьте письмо на адрес bridges@torproject.org со строкой \"get bridges\" в теле сообщения из учётной записи GMail. + Ошибка + Ваши настройки доступных адресов вызвали исключение! + Настройки вашего ретранслятора вызвали исключение! + Выходные узлы + Отпечатки, псевдонимы, страны и адреса для последнего прыжка + Введите выходные узлы + Исключённые узлы + Отпечатки, псевдонимы, страны и адреса на исключение + Введите исключённые узлы + Точные узлы + Использовать *только* эти заданные узлы + Мосты + Использовать мосты + Обфусцированные мосты + Включить альтернативные входные узлы в сеть Tor + Заданные мосты обфусцированы + IP-адреса и порты мостов + Введите адреса мостов + Ретрансляторы + Ретрансляция + Разрешить вашему устройству быть невыходным ретранслятором + Порт ретранслятора + Слушающий порт для вашего ретранслятора Tor + Введите порт OR + Имя ретранслятора + Имя для вашего ретранслятора Tor + Введите пользовательское имя ретранслятора + Доступные адреса + Запускать как клиент за межсетевым экраном с ограничивающими политиками + Доступные порты + Порты, доступные из-за ограничительного сетевого экрана + Введите порты + Включить скрытые службы + Запустить сервера, доступные через сеть Tor + Введите локальные порты для скрытых служб + Порты скрытой службы + Адресуемое имя для вашей скрытой службы (создаётся автоматически) + Включить вывод журнала отладки (требует использовать adb или aLogCat для просмотра) + Домашняя страница проекта: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Лицензия Tor + https://torproject.org + Программы сторонних разработчиков: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Приложение хочет открыть скрытый порт сервера %S сети Tor. Это безопасно, если вы доверяете данному приложению. + найден существующий процесс Tor... + Произошла какая-то ошибка. Проверьте журнал. + скрытая служба на: + невозможно прочитать имя скрытой службы + Невозможно запустить Tor: + Перезагрузите устройство, невозможно переустановить Tor! + Использовать Iptables по умолчанию + Использовать встроенный файл iptables вместо поставляемого с Orbot + Исполняемые файлы Tor не смогли установиться или обновится. + Всегда отображать иконку в панели задач когда Orbot подключен + Постоянное уведомление о работе + Показать расширенное уведомление Tor со страной выхода и IP + Расширенные уведомления + Мосты включены! + + Язык + Выбрать язык интерфейса для Orbot + Выбрать язык + Оставить по умолчанию или переключить текущий язык + основано на Tor + Сохранить настройки + Отсутствует подключение к интернету, Tor находится в режиме ожидания… + Канал: + к нам + от нас + Автозасыпание без сети + Переводить Tor в спящий режим при отсутствии интернета + Вы переключились на новый идентификатор Tor! + Проверить браузер + Использовать ChatSecure + Управление Tor + Разрешить приложению управлять сервисом Tor + Не похоже, что у вас установлен Orfox. Хотите справку на эту тему или просто открыть браузер? + Установить приложения? + Нет подключения к сети. Tor входит в режим сна... + Подключение к сети установлено. Tor просыпается... + обновление настроек в сервисе Tor + Tor SOCKS + Порт, на котором Tor предоставляет свой SOCKS-прокси (по умолчанию: 9050, 0 - для отключения) + Настройка порта SOCKS + Порт прозрачного прокси Tor + Порт, на котором Tor предоставляет свой прозрачный прокси (по умолчанию: 9040, 0 - для отключения) + Настройка порта прозрачного прокси + Порт DNS Tor + Порт, на котором Tor предоставляет свой DNS (по умолчанию: 5400, 0 - для отключения) + Настройка порта DNS + Пользовательские настройки Torrc + ТОЛЬКО ДЛЯ ЭКСПЕРТОВ: внесите настройки напрямую в строки файла конфигурации torrc + Пользовательские Torrc + Mobile Martus - приложение Benetech документация по правам человека + Ваши публичные IP-адреса Tor: + Пожалуйста, отключите эту программу в Android->Настройки->Приложения, если у вас возникли проблемы с Orbot: + Конфликт приложений + Автообновление прозрачного прокси + Повторно применить правила прозрачного прокси при изменении состояния сети + ПРИНУДИТЕЛЬНОЕ УДАЛЕНИЕ прозрачного прокси + Нажмите здесь, чтобы НЕМЕДЛЕННО очистить все сетевые правила прозрачного прокси + Правила прозрачного прокси удалены! + У вас не включён root-доступ + Возможно, потребуется остановить и запустить Orbot заново для подключения изменений настроек. + VPN + кбит/с + мбит/с + КБ + МБ + Мосты обновлены + Пожалуйста, перезапустите Orbot для вступления изменения в силу + QR-коды + Если ваша сеть мобильной связи активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из типов мостов выше, чтобы включить эту функцию. + Режим моста + Эл. почта + Сайт + Активация + VPN-режим приложений + Вы можете включить функцию перенаправления всех приложений на вашем устройстве через сеть Tor, используя функцию VPN в Android.\n\n* ПРЕДУПРЕЖДЕНИЕ * Это новая экспериментальная функция и в некоторых случаях может остановиться или не запуститься автоматически. Она не должна быть использована для анонимности, а ТОЛЬКО для прохождения фильтров и межсетевых экранов. + Отправить письмо + Вы можете получить адрес моста по электронной почте, с сайта или путём сканирования QR-кода. Выберите \"Эл. почта\" или \"Сайт\" ниже, чтобы запросить адрес моста.\n\nПолученный адрес скопируйте и вставьте его в разделе настроек Orbot \"Мосты\", после чего перезапустите приложение. + Установить Orfox + Стандартный браузер + ПРИМЕЧАНИЕ: только стандартные мосты Tor работают на устройствах Intel X86/Atom + Мир + diff --git a/orbotservice/src/main/res/values-si-rLK/strings.xml b/orbotservice/src/main/res/values-si-rLK/strings.xml new file mode 100644 index 00000000..e4dc474e --- /dev/null +++ b/orbotservice/src/main/res/values-si-rLK/strings.xml @@ -0,0 +1,190 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Tor ආරම්භ කිරීම හා නැවතීම + Tor නියුතු සේවා + Orbot ආරම්භ කරමින්… + Tor ජාලයට සබැදියි + Orbot ක්‍රියාවිරහිත කර ඇත + Tor දායකයා ආරම්භ කරමින්... + සම්පුර්ණයි. + රැදී සිටියි. + අවවාදයයි: ඔබේ ගනුදෙනු තවම නිර්නාමික නොමැත. කරුණාකර ඔබේ යෙදුම් සදහා HTTP proxy 127.0.0.1:8118 හෝ SOCKS4A හෝ SOCKS5 proxy 127.0.0.1:9050 භාවිතා වන පරිදි වින්‍යාස කරගන්න. + මුල්පිටුව + පිරික්සන්න + සිටවුම් + ලොගය + උදව් + අරඹන්න + නවත්වන්න + පිළිබද + භාගත කරන්න + උඩුගත කරන්න + උදව් + වසන්න + පිළිබද + ලොගය හිස් කරන්න + පරීක්ෂා කරන්න + ඉවත් වන්න + - ආරම්භ කිරීමට ටික වෙලාවක් තදකරන්න - + පාරදෘශ්‍ය නියුතුසේවා (මුලය අවශ්‍ය වේ) + පාරදෘශ්‍ය නියුතුසේවා + යොමුන් ස්වයංක්‍රීයව ටොර්කරණය + Tor සියල්ල + Tor තුල සියළු යොමුවලට පවතින නියුතුසේවා තදබදය + පෝට නියුතුසේවා පසුබැසීම + අවවාදයයි: මගහැරිය යුතු පොදු පෝට (80, 443, යනාදිය). *භාවිතාව හුදෙක්* \'සියළු\' සෝ \'යොමු\' ප්‍රකාර වැඩ නොකරන්නේ නම් පමණි. + පෝට ලැයිස්තුව + නියුතුසේවා සදහා පෝට ලැයිස්තුව. *භාවිතාව හුදෙක්* \'සියළු\' සෝ \'යොමු\' ප්‍රකාර වැඩ නොකරන්නේ නම් පමණි. + පෝට නියුතුසේවාවට එක් කරන්න + මුල ප්‍රවේශය ඉල්ලන්න + පාරදෘශ්‍ය නියුතුසේවා සදහා මුල ප්‍රවේශය ඉල්ලන්න + Tor ද්විමයන් සාර්ථකව ස්ථාපනය කරන ලදී! + Tor ද්විමය ගොනුවන් ස්ථාපනය කිරීමට නොහැකි විය. කරුණාකර ලොගය පරික්ෂාකර tor-assistants@torproject.org ට දැනුම් දෙන්න + යෙදුම් දෝෂ + Orbot + Orbot පිලිබදව + ඊලග + පසුපසට + අවසානයි + එකගයි + අවලංගු කරන්න + + Orbot පිළිබද ඇතැම් විස්තර + අනුමැතිය ලැබී ඇත. + Orbot අනුමැතියන් + අනර්ඝයි! ඔබ මුල Orbot සදහා මුල අනුමැතියන් සබල කර ඇති බව අපට අනාවරණය විය. අප මෙම බලය නැණවත් ලෙස භාවිතා කිරීමට පොරොන්දු වෙමු. + අත්‍යවශ්‍ය නොවුවත් Orbot හට මුල ප්‍රවේශය ලබාදීමෙන් එය බලගතු මෙවලමක් බවට පත්වේ. පහල බොත්තම භාවිතයෙන් Orbot හට සුපිරිබලය ලබාදෙන්න! + ඔබට මුල ප්‍රවේශය සම්බන්ධව කිසිදු අවබෝධයක් නොමැති නම්, Orbot වල වඩා කරන යොමුන් පමණක් භාවිතා කරන්න. + මා හට වැටහෙයි. සුපිරි පරිශිලකයා නොමැතිව දිගටම කරගෙන යාමට කැමැත්තෙමි. + Orbot හට මුලය ප්‍රදානය කරන්න + ටොර්කරණය වින්‍යාස කරන්න + Orbot ඔබට සියළු යොමුවල ගනුදෙනු Tor තුලින් යැවීමට හෝ ඔබේ යොමු තනි තනිව තෝරාගැනීමට අවකාශ ලබාදේ. + සියළු යොමුවලට පවතින නියුතුසේවා Tor තුලින් යවන්න + තනි යොමුන් Tor සදහා තෝරාගන්න + Orbot සබල කල යොමු + පහත යොමු සාදා ඇත්තේ Orbot සමග වැඩ කිරීමට ය. ස්ථාපනය කිරීම සදහා එක් එක් බොත්තම මත ක්ලික් කරන්න. නැතහොත් ඔබට මෙම යොමු Google Play, GuardianProject.info වෙබ්අඩවියෙන් හෝ F-Droid.org වලින් සොයා ගත හැක. + නියුතු සේවා සිටුවම් - Orbot සමග ක්‍රියාකිරීමට අනෙක් යොමු වින්‍යාස කරන ආකාරය හදාරන්න + DuckDuckGo සෙවුම් යන්ත්‍ර යෙදුම + Twitter නියුතුසේවාව \"localhost\" සත්කාරකයට හා පෝටය 8118 ට පිහිටුවන්න + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + නියුතු සේවා සිටුවම් + Orbot සුදානම්! + + මෙමගින් ඔබේ වෙබ් බ්‍රව්සරය https://check.torproject.org ට විවෘත වේ. එවිට ඔබට Orbot නිසි ලෙස වින්‍යාස වී ඇතිදැයි හා ඔබ Tor ජාලයට සම්බන්ධ වී ඇතිදැයි දැකගත හැක. + සැගවුණු සේවා සත්කාර කරමින් + පොදු + Orbot ඇරඹුම් ධාවකයේ අරඹන්න + Orbot ස්වයංක්‍රියව ආරම්භ කර, ඔබේ Android උපකරණය පටන්ගත් විට Tor වලට සම්බන්ධ කරගන්න. + + + + අවවාදයයි + + අනුමැතිය + ඔබට අවශ්‍ය නම් Orbot සුපිරි පරිශීලකයාට පාරදෘශ්‍ය නියුතු සේවා වැනි ප්‍රගමන විශේෂාංග සබල කිරීමට අවසර ලබාදිය හැක. + ඔබට මෙය සිදු කිරීමට අවශ්‍යතාවක් නොමැති නම්, Orbot වල වැඩා කරන යොමුන් පමණක් භාවිතා කරන්න. + + Orbot සබල කල යොමු + Google Play තුලින් Guardian Project apps තෝරාගන්න + + පාරදෘශ්‍ය නියුතුසේවා + මෙමගින් ඔබේ යොමුන්ට කිසිදු වින්‍යසකරණයක් නොමැතිව Tor ජාලය හරහා ස්වයංක්‍රියව ක්‍රියාත්මක විය හැක. + (ඔබට අප සදහන් කල කරුණු පිළිබද අවබෝධයක් නොමැති නම් මෙම කොටුව සලකුණු කරන්න) + කිසිවක් නොමැත + Tor Tethering + Wifi හා USB Tethered උපාංග සදහා Tor පාරදෘශ්‍ය නියුතු සේවාව සබල කරන්න (නැවත ආරම්භ කිරීමක් අවශ්‍යවේ) + සුපිරි පරිශීලකයාගේ ප්‍රවේශය ඉල්ලන්න + යොමුන් තෝරාගන්න + Tor හරහා යැවීමට යොමුන් තෝරාගන්න + නොඩු වින්‍යාසකරණය + මේවා ඔබේ නිර්නාමිකතාව අඩු කරන ප්‍රගමන සිටුවම් ය. + ඇතුළු විමේ නොඩු + පළමු hop සදහා අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන් + ඇතුළු විමේ නොඩුවලට පිවිසෙන්න + Outbound ජාල නියුතු + Outbound නියුතු වර්ගයකි + නියුතු සේවාදායකයන් සදහා ප්‍රොටෝකෝල: HTTP, HTTPS, Socks4, Socks5 + නියුතු සේවා වර්ගය ඇතුලත් කරන්න + Outbound නියුතු සත්කාරයකි + නියුතු සේවාදායකගේ සත්කාරක නාමය + නියුතුසේවා සත්කාරය ඇතුලු කරන්න + Outbound නියුතු පොර්ටයකි + නියුතු සේවාදායක පෝටය + නියුතු සේවා පෝටය ඇතුළු කරන්න + තත්වය + සම්පුර්ණ පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම... + යොමු පදනම් කරගෙන ක්‍රියාත්මක වන පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම... + පාරදෘශ්‍ය නියුතුසේවා සබල කර ඇත + TransProxy Tethering සදහා සබල කර ඇත! + අවවාදයයි: පාරදෘශ්‍ය නියුතුසේවාවෙන් දෝෂයක් හටගෙන ඇත! + TransProxy කොන්දේසි ඉවත් කර ඇත + Tor ක්‍රියාවලින් ආරම්භ කිරීමට නොහැකි විය: + පෝට පදනම් කරගෙන ක්‍රියාත්මක වන පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම... + සේතු දෝෂයකි + සේතු විශේෂාංග භාවිතාය සදහා ඔබ අඩු තරමින් එක් සේතු IP ලිපිනයක් හෝ ඇතුලත් කල යුතුය. + \"get bridges\" නම් පේලිය විද්‍යුත් ලිපියේ දේහයේ ඇතුලත් කර gmail ගිණුමකින් bridges@torproject.org ලිපිනයට යවන්න. + දෝෂයකි + ඔබේ සේන්දුවන ලිපිනයෙහි සිටුවම්වල ව්‍යතිරේකයක් හටගෙන ඇත! + ඔබේ ප්‍රතියෝජක සිටුවම්වල ව්‍යතිරේකයක් හටගෙන ඇත! + පිටවුම් නෝඩු + පළමු hop සදහා අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන් + පිටවුම් නොඩුවලට පිවිසෙන්න + අත්හරින නොඩු + අත්හරින අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන් + අත්හරින නොඩුඩුවලට පිවිසෙන්න + දැඩි නොඩු + ඉහත සදහන් නොඩු *පමණක්* භාවිතා කරන්න + සේතු + සේතු භාවිතා කරන්න + සේතු අදුරු කරන්න + Tor ජාලයට විකල්ප ඇතුළු විමේ නොඩු සබල කරන්න + වින්‍යාස කර ඇති සේතු අදුරු කල සේතු නම් ඒවා සබල කරන්න + IP ලිපිනය හා සේතුවල පෝට + සේතු ලිපිනයන් ඇතුළු කරන්න + ප්‍රතියෝජකය + ප්‍රතියෝජනය + ඔබේ උපාංගය නික්ම-නොයන ප්‍රතියෝජකයක් බවට සබල කරන්න + ප්‍රතියෝජක පෝටය + Tor ප්‍රතියෝජකයට සවන්දෙන පෝටය + OR පෝටය ඇතුළු කරන්න + ප්‍රතියෝජක අපනාමය + ඔබේ Tor ප්‍රතියෝජකයේ අපනාමය + ව්‍යාවහාරික ප්‍රතියෝජක අපනාමය ඇතුළු කරන්න + සේන්දු වියහැකි ලිපිනය + සේවාදායකයෙකු ලෙස firewall පිටුපස සිට සිමාකාරී පිළිවෙත් සමග ක්‍රියාකරන්න + සේන්දු වියහැකි පෝටයන් + සිමාකාරී firewall පිටුපස සේන්දුවිය හැකි පෝටයන් + පෝටයන් ඇතුළු කරන්න + සැගවුණු සේවා සත්කාර කරමින් + උපාංග මත දිවෙන සේවාදායකයාට Tor ජාලයට ප්‍රවේශවීමට ඉඩදෙන්න + සැගවුණු සේවා සදහා ඇති localhost පෝටයන් ඇතුළු කරන්න + සැගවුණු සේවා පෝටයන් + ඔබේ සැගවුණු සේවා සදහා අමතන නාමය (ස්වයංක්‍රියව ජනනය වූ) + නිදොස් කිරීමේ ලොගය ප්‍රතිදානය සදහා සබල කරන්න (නැරඹීම සදහා adb or aLogCat භාවිතා කරන්න) + ව්‍යාපෘති නිවහන(න්): + Tor බලපත්‍රය + https://torproject.org + 3 වන පාර්ශව මෘදුකාංග + යොමුවකට සැගවුණු සේවාදායක %S පෝටය Tor ජාලයට විවෘත කිරීමට උවමනාය. මෙය සුරක්ෂිතවන්නේ ඔබ මෙම යොමුව විශ්වාස කරනවා නම් පමණි. + පවතින Tor ක්‍රියාවලි හමුවිය... + යම් නොමනා දෙයක් සිදුවිය. ලොගය පරික්ෂා කර බලන්න + සැගවුණු සේවා පිහිටන්නේ: + සැගවුණු සේවා නාමය කියවීමට නොහැකිය + Tor ආරම්භ කිරීමට නොහැකිය: + පෙරනිමි IP වගුව භාවිතා කරන්න + Orbot හී ද්විමය ip වගු වෙනුවට උපාංගයේ පිහිටි ද්විමය ip වගු භාවිතා කරන්න + Tor දිවිමයන් ස්ථාපනයට හෝ උත්ශ්‍රේණි කිරීමට නොහැකි විය. + Orbot සම්බන්ධ වී ඇති සැමවිටම විට මෙවලම් තීරුවේ නිරූපකය තබාගන්න + නිවේදන ලැබීමට සලස්වන්න + සේතු සබල කර ඇත! + + Orbot සදහා පෙදෙසිය සහ භාෂාව තෝරන්න + භාෂාව තෝරන්න + සම්මතය අතහැර වර්තමාන භාෂාවට මාරුවෙන්න + සිටුවම් සුරැකින්න + diff --git a/orbotservice/src/main/res/values-sk-rSK/strings.xml b/orbotservice/src/main/res/values-sk-rSK/strings.xml new file mode 100644 index 00000000..b7578c49 --- /dev/null +++ b/orbotservice/src/main/res/values-sk-rSK/strings.xml @@ -0,0 +1,15 @@ + + + Pomocník + Pomocník + + Nastavenia proxy + + + + + + + + + diff --git a/orbotservice/src/main/res/values-sk/strings.xml b/orbotservice/src/main/res/values-sk/strings.xml new file mode 100644 index 00000000..2f648ef5 --- /dev/null +++ b/orbotservice/src/main/res/values-sk/strings.xml @@ -0,0 +1,45 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + štart a stop Tor + torproxyservice + Orbot štartuje… + Pripojený do Tor siete + Orbot je deaktivovaný + Štartujem Tor klienta... + hotovo. + čakám. + 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 + Domov + Prehliadať + Nastavenia + Pomocník + O aplikácií + Pomocník + Zatvoriť + O aplikácií + Skontrolovať + Ukončiť + Späť + Zrušiť + + Nastavenie proxy + + Všeobecné + + + + Varovanie + + + + Žiadny + Stav + Chyba + + Uložiť nastavenie + diff --git a/orbotservice/src/main/res/values-sl/strings.xml b/orbotservice/src/main/res/values-sl/strings.xml new file mode 100644 index 00000000..1b8a4c6b --- /dev/null +++ b/orbotservice/src/main/res/values-sl/strings.xml @@ -0,0 +1,79 @@ + + + Orbot + http://orbot/ + http://check.torproject.org/?lang=sl + https://check.torproject.org/?lang=sl + https://check.torproject.org/?TorButton=true + začni in ustavi Tor + torproxyservice + Orbot se zaganja... + Povezan v omrežje Tor + Orbot ni aktiviran + Zagon Tor klijenta... + končano. + čakam. + 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 + Glavni meni + Brskaj + Nastavitve + Dnevnik + Pomoč + Začni + Ustavi + O programu + Prenesi + Naloži + Pomoč + Zapri + O programu + Počisti dnevnik + Preveri + Izhod + - dolg pritisk za začetek - + Transparentno delovanje prek posredniškega strežnika (potrebuje root) + Transparentno delovanje prek posredniškega strežnika + Samodejno preusmerjanje aplikacij preko Tor + Tor karkoli + Posredovanje prometa za vse aplikacije preko Tor + Nadomestna posredniška vrata + OPOZORILO: Obide skupne porte (80, 443, itd.) * UPORABI LE * v primeru če \"Vsi\" ali \"App\" način ne deluje. + Seznam vrat + Seznam portov za posredniški strežnik. * UPORABI LE * v primeru če \"Vsi\" ali \"App\" način ne deluje + Vnesi vrata za posredniški strežnik + Zahtevaj korenski dostop + Zahtevaj korenski dostop za transparentno posredovanje + Tor binarne datoteke so uspešno nameščene! + Ni bilo možno namestiti Tor binarnih datotek. Prosimo preverite log in obvestite tor-assistants@torproject.org + Napaka v programu + Orbot + O programu Orbot + Naprej + Nazaj + Zaključi + Potrdi + Prekini + + Nekaj podrobnosti o Orbot-u + Dovoljenje dodeljeno + Orbot dovoljenja + Odlično! Ugotovili smo, da imate omogočeno root dovoljenje za Orbot. To moč bomo modro uporabili. + Čeprav to ni potrebno, lahko Orbot postane bolj zmogljivo orodje, če ima vaša naprava korenski dostop. Uporabite spodnji gumb za odobritev Orbot velesile! + Če nimate korenski dostop ali nimate pojma o čem je beseda, se le prepričajte, da uporabljate aplikacije, narejene za delo z Orbot. + Razumem in želim nadaljevati kot Superuporabnik. + Dodeli Root za Orbot + Nastavitve posredniškega (proxy) strežnika + + Splošno + + + + Opozorilo + + Dovoljenja + + + Stanje + + Shrani nastavitve + diff --git a/orbotservice/src/main/res/values-sn/strings.xml b/orbotservice/src/main/res/values-sn/strings.xml new file mode 100644 index 00000000..ad1cd1de --- /dev/null +++ b/orbotservice/src/main/res/values-sn/strings.xml @@ -0,0 +1,22 @@ + + + Orbot + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Zvamada + Maererano + Maererano + Buda + Maererano Orbot + + Proxy Zvamada + + + + + + + + + diff --git a/orbotservice/src/main/res/values-sq/strings.xml b/orbotservice/src/main/res/values-sq/strings.xml new file mode 100644 index 00000000..5a7c9897 --- /dev/null +++ b/orbotservice/src/main/res/values-sq/strings.xml @@ -0,0 +1,30 @@ + + + Shpi + Lundro + Zgjedhjet + Ndihmë + Informacione + Ndihmë + Mbylle + Informacione + Dil + Mbrapa + Anullo + + Konfigurimi i Proxy + + Të Përgjithshme + + + + Warning + + + + Asnjë + Gjëndja + Gabim + + Shpëto Konfigurmin + diff --git a/orbotservice/src/main/res/values-sr/strings.xml b/orbotservice/src/main/res/values-sr/strings.xml new file mode 100644 index 00000000..b3cc7ed5 --- /dev/null +++ b/orbotservice/src/main/res/values-sr/strings.xml @@ -0,0 +1,200 @@ + + + Орбот + Орбот је бесплатна прокси апликација која даје моћ другим апликацијама да безбедније користе интернет. Орбот користи Тор за шифровање вашег интернет саобраћаја и онда га скрива слањем кроз низ рачунара широм света. Тор је слободан софтвер и отворена мрежа која помаже да се одбраните од разних облика надзора мрежа који угрожавају личну слободу и приватност, поверљиве пословне активности и личне односе и државне безбедности познате као анализа саобраћаја. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + покрени и заустави Tor + Тор прокси услуга + Орбот се покреће... + Повезан са Тор мрежом + Орбот је деактивиран + Покреће се Тор клијент... + завршено. + чекам. + УПОЗОРЕЊЕ: Ваш промет још није анониман! Молимо вас да подесите Ваше апликације да користе HTTP прокси 127.0.0.1:8118 или SOCKS4A или SOCKS5 прокси 127.0.0.1:9050 + Почетна + Разгледање + Подешавања + Логови + Помоћ + ВПН + Крени + Заустави + О нама + Преузимање + Отпремање + Помоћ + Затвори + О нама + Очисти логове + Провери + Излаз + - задржите дужи притисак за почетак - + Транспарентно проксирање (захтева root приступ) + Транспарентно слање кроз прокси + Аутоматско торифицирање апликација + Торофикуј све + Проследи промет од свих апликација кроз Тор + Резерван порт проксија + УПОЗОРЕЊЕ: Заобилажење честих портова (80, 443 итд). КОРИСТИТЕ САМО ако подешавања на \"Све\" или \"Апликација\" не раде. + Листа портова + Листа портова за прокси. Користити САМО ако опције \"Све\" или \"Апликације\" не раде. + Упишите портове за прослеђивање на прокси + Затражи root приступ + Затражи root приступ за транспарентно проксирање + Тор бинари успешно инсталирани! + Бинарне Тор датотеке нису успешно инсталиране. Молимо прегледајте логове и обавестите нас на tor-assistants@torproject.org + Грешка у апликацији + Орбот + Информације о Орботу + Следеће + Назад + Заврши + У реду + Откажи + + Детаљи о Орботу + 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. + Дозвола одобрена + Орбот дозволе + Одлично! Детектовали смо да имате root дозволе за Орбот. Мудро ћемо искрористити ову моћ. + Иако није захтевано, Орбот постаје много јачи алат ако Ваш уређај има root приступ. Користите дугме испод да бисте омогућили Орботу супер моћи. + Ако немате root приступ или немате појма о чему причамо, само се побрините да користите апликације које су направљене да функционишу са Орботом. + Разумем и желео бих да наставим без root приступа + Дозволи root за Орбот + Подеси торификацију + Орбот Вам даје опцију да проследите сав промет од стране свих апликација или да изаберете посебно апликације које желите да проследите кроз Тор мрежу. + Пошаљи промет од свих апликација кроз Тор + Означи посебно апликације чији ће се промет проследити кроз Тор + Орбот-омогућене Апликације + Апликације наведене испод су развијене да би радиле са Орботом. Кликните свако дугме које желите сада да инсталирате, а у супротном их можете пронаћи и у Google Play продавници, на GuardianProject.info веб страници или преко F-Droid.org. + Прокси поставке - Научите како да подесите апликације да раде са Орботом + DuckDuckGo апликација за претраживање интернета + Подесите Твитер да користи порт 8118 на локалном хосту. + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Прокси подешавања + Орбот је спреман! + + Ово ће отворити Ваш веб претраживач и посетити страницу https://check.torproject.org да би проверили да ли је Орбот правилно подешен и да ли сте спојени са Тор мрежом. + Хостинг на скривеном сервису + Опште + Покрени Орбот при покретању уређаја + Аутоматски покрените Орбот и конектујте се са Тор мрежом када се упали Ваш Андроид уређај. + + + + Упозорење + + Дозволе + Можете опционално дозволити Орботу приступ као \"Супер корисник\" да би омогућили напредне функције као што је транспарентно слање кроз прокси. + Ако не желите ово да урадите, молимо Вас да се уверите да користите апликације које су подешене да раде са Орботом. + + Апликације са омогућеним Орботом. + Пронађите све Guardian Project апликације на Google Play сервису + + Транспарентно слање кроз прокси + Ово омогућава Вашим апликацијама да аутоматски преусмеравају промет кроз Тор мрежу без икакве конфигурације. + (Означите овај квадратић ако немате појма о чему причамо) + Ниједан + Привезивање тора + Омогућава Торово транспарентно слање кроз прокси за бежичне и УСБ повезивајуће уређаје (захтева рестартовање) + Затражи приступ као \'Superuser\' + Изаберите апликације + Изаберите апликације чији промет ћете проследити кроз Тор + Конфигурација чворова + Ово су напредне поставке које могу да смање Вашу анонимност + Почетни чворови + Отисци прстију, надимци, државе и адресе првог скока + Унесите почетне чворове + Мрежни прокси за одлазећи промет (Необавезно) + Тип проксија за одлазећи промет + Протокол који ће се користити за прокси сервер: HTTP, HTTPS, Socks4, Socks5 + Унесите тип проксија + Хост проксија за одлазећи промет + Име хоста за прокси сервер + Унесите хост од проксија + Порт проксија за одлазећи промет + Порт прокси сервера + Унесите порт проксија + Корисничко име на проксију за одлазећи промет + Име проксија (Необавезно) + Унесите корисничко име Проксија + Шифра на проксију за одлазећи промет + Шифра проксија (необавезно) + Унесите шифру проксија + Статус + Постављање потпуно трапспарентног слања кроз прокси + Подешавање трапспарентног проксија од стране апликације + Транспарентно слање кроз прокси је ОМОГУЋЕНО + TransProxy је омогућен за привезивање + УПОЗОРЕЊЕ: грешка при стартовању транспарентног слања кроз прокси! + TransProxy правила очишћена + Није могуће покренути Тор процес: + Подешавање транспарентног проксирања од стране порта... + Грешка у мосту + Да бисте користили bridge могућност, морате унети бар једну bridge IP адресу. + Пошаљите мејл на bridges@torproject.org са речима \"get bridges\" у тексту поруке мејла са gmail корисничког рачуна. + Грешка + Ваше ReachableAddresses поставке су изазвале изузетак! + Ваше поставке релеја су изазвале изузетак! + Излазни чворови + Отисци, надимци, државе и адресе задњег скока + Унесите излазне чворове + Одстраните чворове + Отисци, надимци, државе и адресе за одстрањење + Унесите чворове за одстрањење + Стриктни чворови + Користи САМО ове наведене чворове + Мостови + Користи bridge + Мостови са bridges + Омогући алтернативне чворове за улаз у Тор мрежу + Омогућити ако су конфигурисани мостови мостови са баговима + IP адреса и порт bridge-а + Унесите bridge адресу + Релеји + Релејирање + Омогућите вашем уређају да буде релеј без излаза + Порт за релеј + Порт за слушање за твој Тор релеј + Укуцајте ИЛИ порт + Надимак релеја + Надимак вашег Тор релеја + Унесите по избору надимак за релеј + Доступне адресе + Покрените као клијента иза firewall-а који је рестриктивно подешен + Доступни портови + Портови доступни иза рестриктивног firewall-а + Унесите портове + Хостинг на скривеном сервису + дозволите серверу на уређају да буде доступан преко Тор мреже + унесите localhost портове за скривене сервисе + Портови на скривеном сервису + адресабилно име за Ваш скривени сервис (генерише се аутоматско) + омогућите debug логовоање (мора се користити adb или aLogCat да би се прегледали) + Почетна за пројекте: + Тор лиценца + https://torproject.org + Софтвер од стране неслужбених издавача: + Апликација жели да отвори сакривен порт %S на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији. + нађен покренути Тор процес... + Нешто лоше се догодило. Прегледајте логове + сакривен сервис на: + нисам у могућности да прочитам име сакривеног сервиса + Тор није у могућности да се покрене: + Користити уобичајене Иптабеле + користи уграђене ИПтабеле уместо оних које долазе са Орботом + Тор бинари нису у могућности да се инсталирају или надограде. + Увек прикажи икону у тулбару када је Орбот конектован + Стално укључене нотификације + Мостови омогућени! + + Изаберите локална и језичка подешавања за Орбот + Изаберите језик + Користи подразумевајући или пребаци на тренутни језик + Сачувај подешавања + ВПН + diff --git a/orbotservice/src/main/res/values-sv/strings.xml b/orbotservice/src/main/res/values-sv/strings.xml new file mode 100644 index 00000000..5654a28f --- /dev/null +++ b/orbotservice/src/main/res/values-sv/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + start and stop Tor + torproxyservice + Orbot startar... + Uppkopplad till Tor nätverket + Orbot är inaktiverad + TorService avslutas + Startar Tor klient... + färdig. + väntar. + 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 + Hem + Bläddra + Inställningar + Logg + Hjälp + VPN + Start + Stopp + Om + Skaffa appar... + Ladda Ner + Ladda Upp + Hjälp + Stäng + Om + Rensa logg + Kontrollera + Avsluta + Skanna BridgeQR + Dela BridgeQR + - tryck länge för att starta - + Transparent proxy (kräver root) + Transparent proxy + Automatisk torifiering av appar + Tor:a Allt + Proxy trafik för alla appar genom Tor + Port Proxy Fallback + VARNING: Kringgår vanliga portar (80, 443, etc). *ANVÄND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar. + Port-lista + Lista över portar att köra genom proxy. *ANVÄND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar + Skriv in portar till proxy + Begär root-åtkomst + Begär root-åtkomst för transparent proxy + Tor-filerna installerades utan problem! + De körbara Tor-filerna kunde inte installeras. Kontrollera loggen och underrätta tor-assistants@torproject.org + Applikationsfel + Orbot + Om Orbot + Nästa + Tillbaka + Slutför + Okej + Avbryt + + Orbot-information + 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. + Tillstånd givet + Orbot rättigheter + Utmärkt! Vi har upptäckt att du har root tillstånd aktiverat för Orbot. Vi kommer använda denna makt ansvarsfullt. + 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! + 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. + Jag förstår och vill fortsätta utan Superuser. + Ge Orbot root tillgång + Konfigurera torifikation + Orbot ger dig möjligheten att skicka all applikationstrafik genom Tor ELLER att själv välja applikationer individuellt. + Proxy alla appar genom Tor + Välj enskilda appar för Tor + Orbot-anpassade appar + 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. + ChatSecure - Säker chattklient för Android + Proxy-inställningar - Lär dig hur du konfigurerar appar att fungera med Orbot + DuckDuckGo Sökmotor App + Ställ in Twitter proxy till värd \"localhost\" och port 8118 + StoryMaker - Skapa en story och ge den till Tor för säkerhet! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy-inställningar + 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 + Orbot är redo! + 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å! + Vänligen konfigurera Orbot innan du kan använda den! + + 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@guardianproject.info för mer information. + 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. + Gömd Service Hosting + Allmänt + Starta Orbot vid Uppstart + Starta Orbot automatiskt och anslut till Tor när din Android enhet startar upp + + + 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. + + Varning + 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. + + Rättigheter + Du kan alternativt ge Orbot \'Superuser\' tillgång för att aktivera avancerade inställningar, som till exempel Transparent Proxy. + Om du inte vill göra detta, se till att bara använda appar som anpassats till Orbot. + 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. + + Orbot-Anpassade Appar + ChatSecure: Säkert chatt app med Off-the-Record kryptering + Orfox: Integritetsförbättrad webbläsare som går genom Tor + Hitta alla Guardian Project appar på Google Play + Hitta alla Guardian Project-appar i F-Droid + Hitta alla Guardian Project-appar på https://f-droid.org + + Transparent Proxy + Detta tillåter dina appar att automatiskt köra genom Tor nätverket utan någon konfiguration. + (Markera denna om du inte har någon aning om vad vi pratar om) + Ingen + Tor Tethering + Aktivera Tor Transparent Proxy för Wifi och USB Thetered Enheter (omstart krävs) + Begär Superuser Tillgång + Välj Appar + Välj Appar att Leda Genom Tor + Nod Konfiguration + Det här är avancerade inställningar som kan minska din anonymitet + Ingångsnoder + Fingeravtryck, nicks, länder, och adresser för första hoppet + Skriv in Ingångs Noder + Tillåt start i bakgrunden + Låt alla appar säga åt Orbot att starta Tor och relaterade tjänster + Allt genom proxy + Inget genom proxy + Invertera val + Utgående nätverksproxy (Valfri) + Proxy-typ + Protokoll att använda för proxyserver: HTTP, HTTPS, Socks4, Socks5 + Skriv in Proxy Typ + Proxy-värd + Proxyserverns värdnamn + Skriv in Proxy Värd + Utgående Proxy Port + Proxyserverns port + Skriv in Proxy port + Utgående proxy användarnamn + Proxyanvändarnamn (Valfri) + Ange proxyanvändarnamn + Utgående proxy lösenord + Proxylösenord (Valfri) + Ange proxylösenord + Status + Ställer in full transparent proxyfiering... + Ställer in app-baserad transparent proxyfiering... + Transparent proxy AKTIVERAD + TransProxy aktiverad för Tethering! + VARNING: kunde ej starta transparent proxy! + TransProxy regler rensade + Kunde inte starta Tor-process: + Polipo körs på port: + Ställer in port-baserad transparent proxyfiering... + Bro Error + För att använda bro funktionen måste du skriva in minst en bro IP adress. + Skicka ett email till bridges@torproject.org med linjen \"get bridges\" ensamt som meddelande från ett gmail konto. + Fel + Din NåbaraAdresser inställning orsakade ett undantag! + Din relä inställning orsakade ett undantag! + Utgångsnoder + Fingeravtryck, nicks, länder, och adresser för sista hoppet + Skriv in Exit Noder + Exkludera Noder + Fingeravtryck, nicks, länder och adresser att exkludera + Skriv in Exkluderade Noder + Strikta Noder + Använd *enbart* dessa specificerade noder + Broar + Använd Broar + Förvillande Broar + Aktivera alternativa ingångsnoder till Tor nätverket + Aktivera om konfigurerade broar är förvillande broar + IP adress och port för broar + Skriv in Bro Adresser + Reläer + Överföring + Aktivera din enhet till att vara ett icke-utgångsrelä + Relä Port + Lyssningsport för din Tor relä + Allmänt + Relä namn + Namnet för din Tor relä + Skriv in ett anpassat relä namn + Nåbara Adresser + Kör som klient bakom en brandvägg med restriktiva policys + Nåbara portar + Portar nåbara bakom en restriktiv brandvägg + Skriv in portar + Gömd Tjänstehosting + Tillåt server på enheten att vara tillgänglig via Tor nätverket + Skriv in localhost portar för gömda tjänster + Gömda Tjänsteportar + det adresserade namnet för din gömda tjänst (genereras automatiskt) + Aktivera debug loggen för output (måste använda adb eller aLogCat för att se) + Projektets hemsidor: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor-licensen + https://torproject.org + Tredjepartsprogramvara: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + En app vill öppna gömd tjänsteport %S till Tor nätverket. Detta är säkert om du litar på appen. + hittade existerande Tor process... + Något dåligt hände. Kolla loggen. + gömd tjänst på: + kan inte läsa gömda tjänstens namn + Kan inte starta Tor: + Starta om din enhet, kunde inte återställa Tor! + Använd standard Iptables + Använd den inbyggda iptables binären istället för den som kommer med Orbot + Tor binärerna kunde inte installeras eller uppgraderas. + Behåll alltid ikonen i verktygsfältet när Orbot är ansluten + Alltid-På Notifikationer + Visa utökad notis med Tors utgångsland och IP + Utökade notiser + Broar aktiverade! + + Språk + Välj plats och språk för Orbot + Välj språk + Lämna standard eller byt nuvarande språk + drivs av Tor + Spara Inställningar + Ingen internetanslutning; Tor är i standby-läge... + Bandbredd: + nere + uppe + Ingen auto-sömn för nätverket + Låt Tor sova när inget internet finns tillgängligt + Du har bytt till en ny Tor identitet! + Webbläsare + Använd ChatSecure + Hantera Tor + Låt denna app kontrollera Tor-servicen + Det verkar inte som att du har Orfox installerad. Vill du ha hjälp med det, eller ska vi bara öppna webbläsaren? + Installera appar? + Ingen nätverksanslutning. Försätter Tor i dvala... + Nätverksanslutningen fungerar. Väcker Tor... + uppdaterar inställningar i Tor-tjänsten + Tor-SOCKS + Port som Tor erbjuder sin SOCKS-proxy på (standard: 9050 eller 0 för att inaktivera) + SOCKS-port-inställningar + Tor TransProxy-port + Port som Tor erbjuder sin transparenta proxy på (standard: 9040 eller 0 för att inaktivera) + TransProxy-port-inställningar + Tor DNS-port + Port som Tor erbjuder sin DNS på (standard: 5400 eller 0 för att inaktivera) + DNS-port-inställningar + Torrc anpassad konfiguration + ENDAST EXPERTER: ange torrc konfiguration direkt + Anpassad Torrc + Mobile Martus - Benetech Human Rights Documentation App + Ditt publika IP via Tor: + Vänligen inaktivera den här appen i Android->Inställningar->Appar om du har problem med Orbot: + Appkonflikt + Transproxy auto-uppdatering + Sätt Transproxy regler igen när nätverksstatus ändras + Transproxy TVINGA BORTTAGNING + Klicka här för att rensa alla transproxy nätverksregler NU + Regler för transparent proxy rensade! + Du har inte root-åtkomst aktiverad + Du kan behöva stänga av och starta Orbot för att ändringar i inställningar ska slå igenom. + VPN + kb/s + mb/s + KB + MB + Bryggor uppdaterade + Vänligen starta om Orbot för att aktivera ändringarna + QR-koder + 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. + Bryggläge + E-post + Webb + Aktivera + Appars VPN-läge + 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. + Skicka e-post + 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. + Installera Orfox + Standard-webbläsare + NOTERA: Endast vanliga Tor-bryggor fungerar på Intel X86/ATOM-enheter + Världen + diff --git a/orbotservice/src/main/res/values-ta/strings.xml b/orbotservice/src/main/res/values-ta/strings.xml new file mode 100644 index 00000000..5a24f449 --- /dev/null +++ b/orbotservice/src/main/res/values-ta/strings.xml @@ -0,0 +1,68 @@ + + + ஆர்பாட் + ஆர்பாட், இன்னும பாதுகாப்பான முறையில் இணைய பயன்படுத்த மற்ற பயன்பாடுகள் பலப்படுத்துகிறார் என்று ஒரு இலவச ப்ராக்ஸி பயன்பாடு ஆகும். ஆர்பாட் உங்கள் இணைய போக்குவரத்து குறியாக்க தோர் பயன்படுத்துகிறது மற்றும் அதன் பின்னர் உலகம் முழுவதும் கணினிகள் ஒரு தொடர் மூலம் எதிர்க்கிறது அதை மறுத்தவர். தோர் இலவச மென்பொருள் மற்றும் நீங்கள் போக்குவரத்து பகுப்பாய்வு என்ற தனிப்பட்ட சுதந்திரம் மற்றும் தனியுரிமை, ரகசிய வணிக நடவடிக்கைகள் மற்றும் உறவுகள், மற்றும் மாநில பாதுகாப்பை அச்சுறுத்தும் நெட்வொர்க் கண்காணிப்பு வடிவ எதிராக பாதுகாக்க உதவுகிறது என்று ஒரு திறந்த நெட்வொர்க் ஆகும். + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + தோர் துவக்க மற்றும் நிறுத்த + torproxyservice + ஆர்பாட் துவங்குகிறது... + தோர் நெட்வொர்க் இணைக்கப்பட்ட + ஆர்பாட் நிறுத்தப்பட்டது + தோர் துவங்கப்படுகிறது... + முடிந்தது. + காத்திருக்கிறது + எச்சரிக்கை: உங்கள் போக்குவரத்து இன்னும் அநாமதேய அல்ல! HTTP பதிலாள் 127.0.0.1:8118 அல்லது SOCKS4A அல்லது SOCKS5 ப்ராக்ஸி 127.0.0.1:9050 பயன்படுத்த உங்கள் பயன்பாடுகள் கட்டமைக்க கொள்ளவும் + ஹோம் + உலவிடு + அமைப்புகள் + பதிவுகள் + உதவி + துவங்கு + நிறுத்து + ஆர்பாட் பற்றி + பதிவிறக்கு + பதிவேற்று + உதவி + மூடு + ஆர்பாட் பற்றி + பதிவுகளை நீக்கு + சரி பார்த்தல் + வெளியேறு + ஸ்கேன் BridgeQR + BridgeQR பகிர்ந்திடு + - தொடங்க தொடர்ந்து அழுத்துக - + எச்சரிக்கை: பொதுவான துறைகளை (80, 443, போன்றவை) circumvents. * பயன்படுத்த மட்டுமே * \'அனைத்து\' அல்லது \'ஆப்\' முறையில் வேலை இல்லை என்றால். + ஆர்பாட் + ஆர்பாட் பற்றி + அடுத்து + பின் செல் + முடித்திடு + சரி + ரத்து செய் + + ஆர்பாட் பற்றிய தகவல் + Orbot தோர், LibEvent மற்றும் Polipo கொண்டுள்ளது என்று ஒரு திறந்த மூல பயன்பாடு ஆகும். இது ஒரு local HTTP பதிலாள் (8118) மற்றும் தோர் நெட்வொர்க் ஒரு SOCKS ப்ராக்ஸி (9050) வழங்குகிறது. Orbot மேலும் தோர் மூலம் அனைத்து இணைய போக்குவரத்து அனுப்பும் திறனை, ROOTED சாதனத்தில் கொண்டிருக்கிறது. + அனுமதி வழங்கப்பட்டது + டக் டக் கோ தேடுபொறி செயலி + பதிலாள் அமைப்புகள் + ஆர்பாட் தயாராக உள்ளது! + தயவு செய்து, ஆர்பாடை கட்மைத்த பின் பயன்படுத்தவும் + + + + + எச்சரிக்கை + + அனுமதிகள் + + ஆர்பாடுடன் செயல்படும் செயலிகள் + + செயலிகளை தேர்ந்தெடு + பதிலாள் கடவுச்சொல் (கட்டாயமற்ற) + பதிலாள் கடவுச்சொல்லை உள்ளிடவும் + நிலை + + diff --git a/orbotservice/src/main/res/values-th/strings.xml b/orbotservice/src/main/res/values-th/strings.xml new file mode 100644 index 00000000..81d5f0f1 --- /dev/null +++ b/orbotservice/src/main/res/values-th/strings.xml @@ -0,0 +1,169 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + เริ่มและหยุด Tor + torproxyservice + เชื่อมต่อกับเครือข่าย Tor + เสร็จ + กำลังรอ + คำเตือน: ข้อมูลจราจรของคุณยังไม่เป็นนิรนาม! กรุณาตั้งค่าโปรแกรมของคุณให้ใช้ HTTP พร็อกซีที่ 127.0.0.1:8118 หรือใช้ SOCKS4A หรือ SOCKS5 พร็อกซีที่ 127.0.0.1:9050 + หน้าหลัก + เลือก + ตั้งค่า + ปูม + ช่วยเหลือ + เริ่ม + หยุด + เกี่ยวกับ + ช่วยเหลือ + ปิด + เกี่ยวกับ + ล้างปูม + ตรวจสอบ + ออก + - แตะค้างเพื่อเริ่ม - + พร็อกซีล่องหน (ต้องการสิทธิ์ Root) + พร็อกซีล่องหน + ให้โปรแกรมใช้งาน Tor โดยอัตโนมัติ + ใช้ Tor กับทุกอย่าง + ให้การจราจรของทุกโปรแกรมผ่านพร็อกซีของ Tor + คำเตือน: หลีกเลี่ยงพอร์ตทั่วไป (เช่น 80, 443) *ใช้ก็ต่อเมื่อ* โหมด \'ทั้งหมด\' หรือ \'โปรแกรม\' ใช้งานไม่ได้ + รายการพอร์ต + รายการพอร์ตที่ผ่านพร็อกซี *ใช้ก็ต่อเมื่อ* โหลด \'ทั้งหมด\' หรือ \'โปรแกรม\' ใช้งานไม่ได้ + ระบุพอร์ตที่จะให้ผ่านพร็อกซี + ต้องการสิทธิ์ root + ต้องการสิทธิ์ root เพื่อใช้งานพร็อกซีล่องหน + ติดตั้งไบนารีของ Tor สำเร็จแล้ว + ไม่สามารถติดตั้งไบนารีของ Tor ได้ โปรดตรวจสอบปูมและแจ้งปัญหาที่ tor-assistants@torproject.org + โปรแกรมทำงานผิดพลาด + Orbot + เกี่ยวกับ Orbot + ต่อไป + ถอยหลัง + เสร็จ + ตกลง + ยกเลิก + + รายละเอียดเกี่ยวกับ Orbot + ให้สิทธิ์แล้ว + สิทธิ์ของ Orbot + ยอดเยี่ยม! เราพบว่าคุณให้สิทธิ์ root กับ Orbot เราจะใช้สิทธิ์นี้อย่างชาญฉลาด + ถึงจะไม่ใช่เรื่องจำเป็น แต่ถ้าหาก Orbot จะทำงานได้อย่างมีประสิทธิภาพมากขึ้นถ้าได้รับสิทธิ์ root ใช้ปุ่มด้านล่างเพื่อมอบพลังนี้ให้ Orbot! + ถ้าคุณไม่มีสิทธิ์ root หรือไม่เข้าใจว่าเรากำลังพูดถึงอะไรอยู่ ให้ใช้เฉพาะโปรแกรมที่สร้างมาเพื่อใช้กับ Orbot เท่านั้น + ฉันเข้าใจและต้องการทำต่อโดยไม่ใช้สิทธิ์ Superuser + ให้สิทธิ์ root แก่ Orbot + ตั้งค่าการใช้งานผ่าน Tor + Orbot มีตัวเลือกให้คุณส่งข้อมูลการจราจรของทุกโปรแกรมผ่าน Tor หรือเลือกใช้งานเฉพาะโปรแกรมก็ได้ + ให้ทุกโปรแกรมผ่านพร็อกซีของ Tor + เลือกโปรแกรมที่จะให้ใช้ Tor + โปรแกรมที่ใช้ได้กับ Orbot + การตั้งค่าพร็อกซี - เรียนรู้การตั้งค่าโปรแกรมให้ทำงานกับ Orbot ได้ + ตั้งค่าพร็อกซี + Orbot พร้อมใช้งานแล้ว! + + จะใช้เว็บเบราว์เซอร์ของคุณเปิดหน้า https://check.torproject.org เพื่อตรวจสอบว่าการตั้งค่าของ Orbot ถูกต้องหรือไม่ และคุณได้เชื่อมต่อกับ Tor หรือไม่ + ทั่วไป + เริ่ม Orbot เมื่อเปิดระบบ + เริ่ม Orbot โดยอัตโนมัติและให้เชื่อมต่อกับ Tor เมื่ออุปกรณ์แอนดรอยด์ของคุณเริ่มทำงาน + + + + คำเตือน + + สิทธิ์ + คุณสามารถเลือกให้สิทธิ์ Superuser แก่ Orbot เพื่อเปิดใช้งานคุณสมบัติขั้นสูง เช่น พร็อกซีล่องหนได้ + ถ้าคุณไม่ต้องการ โปรดแน่ใจว่าคุณใช้โปรแกรมที่สร้างมาเพื่อใช้กับ Orbot + + โปรแกรมที่ใช้ได้กับ Orbot + + พร็อกซีล่อง + จะอนุญาตให้โปรแกรมของคุณทำงานผ่านเครือข่าย Tor อัตโนมัติโดยไม่ต้องตั้งค่าใดๆ + (ติ๊กตัวเลือกนี้ถ้าคุณไม่เข้าใจเรื่องที่เรากำลังอธิบาย) + ไม่มี + การเชื่อมต่อพ่วงผ่าน Tor + เปิดใช้งานพร็อกซีล่องหนของ Tor ให้อุปกรณ์อื่นที่เชื่อมผ่าน Wifi และ USB (ต้องเริ่มใหม่) + ร้องขอการเข้าถึงสิทธิ์ Superuser + เลือกโปรแกรม + เลือกโปรแกรมที่จะให้เชื่อมต่อผ่าน Tor + การตั้งค่าโหนด + การตั้งค่าขั้นสูงเหล่านี้ทำให้ความเป็นนิรนามของคุณลดลงได้ + โหนดทางเข้า + ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ของฮอพแรก + ระบุโหนดทางเข้า + โพรโทคอลที่ใช้สำหรับเซิร์ฟเวอร์พร็อกซี: HTTP, HTTPS, Socks4, Socks5 + ระบุชนิดของพร็อกซี + ระบุเครื่องพร็อกซี + ระบุพอร์ตของพร็อกซี + สถานะ + กำลังติดตั้งพร็อกซีล่องหนแบบเต็ม… + กำลังติดตั้งพร็อกซีล่องหนแบบระบุโปรแกรม… + พร็อกซีล่องหนถูกเปิดใช้งาน + พร็อกซีล่องหนถูกเปิดใช้สำหรับการเชื่อมต่อพ่วง! + คำเตือน: เกิดข้อผิดพลาดขณะที่พร็อกซีล่องหนเริ่มทำงาน + กฎของพร็อกซีล่องหนถูกล้าง + ไม่สามารถเริ่มโพรเซสของ Tor + กำลังติดตั้งพร็อกซีล่องหนแบบระบุพอร์ต… + สะพานขัดข้อง + ในการใช้งานคุณสมบัติสะพาน คุณต้องระบุที่อยู่ไอพีของสะพานอย่างน้อย 1 ไอพี + ส่งอีเมลไปที่ bridges@torproject.org โดยระบุแค่ \"get bridges\" ในเนื้อความอีเมล แล้วส่งโดยใช้บัญชีผู้ใช้ gmail + ผิดพลาด + การตั้งค่า ReachableAddresses ของคุณทำให้เกิดข้อผิดพลาด + การตั้งค่ารีเลย์ของคุณทำให้เกิดข้อผิดพลาด + โหนดทางออก + ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ของฮอพสุดท้าย + ระบุโหนดทางออก + โหนดยกเว้น + ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ที่ละเว้น + ระบุโหนดยกเว้น + โหนดเข้มงวด + ใช้ *เฉพาะ* โหนดที่ระบุเหล่านี้เท่านั้น + สะพาน + ใช้งานสะพาน + สะพานที่ถูกอำพราง + เปิดใช้งานโหนดทางเข้าอื่นเข้าสู่เครือข่าย Tor + เปิดใช้งานถ้าสะพานที่ถูกตั้งค่าเป็นสะพานอำพราง + ที่อยู่ไอพีและพอร์ตของสะพาน + ระบุที่อยู่ของสะพาน + รีเลย์ + การรีเลย์ + ทำให้อุปกรณ์ของคุณทำงานเป็นรีเลย์แบบไม่ใช่ทางออก + พอร์ตรีเลย์ + พอร์ตที่ให้รีเลย์ของ Tor ทำงาน + ระบุพอร์ตของ OR + ชื่อเล่นของรีเลย์ + ชื่อเล่นสำหรับรีเลย์ของ Tor ของคุณ + ระบุชื่อเล่นของรีเลย์โดยกำหนดเอง + ที่อยู่ซึ่งเข้าถึงได้ + ทำงานเป็นเครื่องลูกข่ายหลังไฟร์วอลล์ด้วยนโยบายแบบเข้มงวด + พอร์ตที่เข้าถึงได้ + พอร์ตที่เข้าถึงได้หลังไฟร์วอลล์แบบเข้มงวด + ระบุพอร์ต + ระบุพอร์ตของ localhost สำหรับให้บริการไม่เปิดเผยทำงาน + พอร์ตของบริการไม่เปิดเผย + ชื่อที่ใช้ระบุสำหรับบริการไม่เปิดเผยของคุณ (สร้างโดยอัตโนมัติ) + เปิดให้ปูมดีบั๊กแสดงผล (ต้องใช้ adb หรือ aLogCat เพื่อดู) + ที่อยู่โครงการ: + สัญญาอนุญาตของ Tor + https://torproject.org + ซอฟต์แวร์โดยผู้ผลิตอื่น: + โปรแกรมต้องการเปิดพอร์ต %S ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น + เกิดอะไรไม่ดีสักอย่าง ให้ตรวจดูจากปูม + บริการไม่เปิดเผยอยู่บน: + ไม่สามารถอ่านชื่อของบริการไม่เปิดเผย + ไม่สามารถเริ่ม Tor + ใช้ Iptables ปริยาย + ใช้ไบนารีของ iptables ที่มีอยู่แล้วแทนตัวที่แถมมากับ Orbot + ไม่สามารถติดตั้งหรือปรับรุ่นไบนารีของ Tor + แสดงไอคอนในทูลบาร์เสมอเมื่อ Orbot เชื่อมต่ออยู่ + การแจ้งเตือนแบบตลอดเวลา + เปิดใช้งานสะพานแล้ว! + + เลือกโลแคลและภาษาสำหรับ Orbot + เลือกภาษา + ใช้ค่าปริยายหรือเลือกภาษาปัจจุบัน + บันทึกการตั้งค่า + diff --git a/orbotservice/src/main/res/values-tl/strings.xml b/orbotservice/src/main/res/values-tl/strings.xml new file mode 100644 index 00000000..25b99db0 --- /dev/null +++ b/orbotservice/src/main/res/values-tl/strings.xml @@ -0,0 +1,249 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + simulan at ihinto ang Tor + torproxyservice + Nagsisimula na ang Orbot… + Konektado sa Tor network + Naka-deactivate ang Orbot + Binubuksan ang Tor client… + kumpleto na. + nag-hihintay + 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 + Tahanan + Mag-browse + Settings + Tala + Tulong + VPN + Simulan + Ihinto + Tungkol + Download + Upload + Tulong + Isara + Tungkol + Linisin ang tala + Tiyakin + Labasan + Ipamahagi ang BridgeQR + - pindutin ng matagal para mag umpisa - + Nanganganinag na pag Po-proxy (Kailangan ang Root) + Nanganganinag na pag Po-proxy + Kusang pag Torifying ng mga Apps + Tor lahat + I-proxy ang traffic ng lahat ng apps gamit ang Tor + Port Proxy Fallback + BABALA: Dayain ang mga karaniwang ports (80, 443, etc). *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana. + Lisatahan ng Port + Lisatahan ng mga ports sa proxy. *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana. + Ipasok ang ports sa proxy + Humiling ng daanan sa Root + Humiling ng daanan sa Root para sa nanganganinag na pag Po-proxy + Ang Tor binaries ay matagumpay na i-install. + Ang Tor binary files ay hindi na install. Paki tignan ang tala at magbigay alam sa tor-assistants@torproject.org + May mali sa Application + Orbot + Tungkol sa Orbot + Susunod + Balik + Wakas + Okay + Kanselahin + + Ilang detalye sa Orbot + 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. + Napahintulotan na + Pahintulot ng Orbot + Mahusay! Natuklasan namin na mayroon pahintulot ang Orbot para sa root. Gagamitin namin ito ng mabuti. + 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! + 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. + Nauunawaan ko at mag-papatuloy ng walang Superuser + Pahintulutan ang Orbot para sa Root + Kompigurahin ang Torification + Binibigyan ka ng Orbot ng pagpipilian na i-route lahat ng application traffic gamit ang Tor o piliin ang application isa-isa. + I-proxy lahat ng Apps gamit ang Tor + Pumili ng isa-isang apps para sa Tor + Orbot-enabled Apps + 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. + ChatSecure - Isang Secure instant messaging client para sa Android + Proxy Settings - Alamin paano magkompigura ng apps para gumana sa Orbot + DuckDuckGo Search Engine app + I-set ang Twitter proxy sa host \"localhost\" at port 8118 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy Settings + 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 + Handa na ang Orbot! + + Bubuksan nito ang iyong browser sa https://check.torproject.org para matignan kung ang Orbot ay na-kompigura at konektado ka sa Tor. + Tagong Service Hosting + Pangkalahatan + Umpisahan ang Orboot sa Boot + Kusang umpisahan ang Orbot at kumonekta sa Tor sa pag bukas ng iyong Android Device + + + 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. + + Babala + 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. + + Mga Pahintulot + Maari mong piliin bigyan ng pahintulot ang Orbot ng \'Superuser\' access para ma-enable ang mga advanced features tulad ng Transparent Proxying. + Kapag ayaw mo itong gawin, siguraduhing gumamit ng apps na ginawa upang gumana kasama ang Orbot. + 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. + + Orbot-Enabled Apps + ChatSecure: Isang secure chat app na may Off-the-Record Encryption + Orfox: Privacy-enhanced browser na gumagana sa pamamagitan ng Tor. + Hanapin ang lahat ng Guardian Project apps sa Google Play + Hanapin ang lahat ng Guardian Project apps sa F-Droid + Hanapin ang lahat ng Guardian Project apps sa https://f-droid.org + + Transparent Proxying + Ito ay bibigyan ng pahintulot ang iyong mga apps na kusang mag-run sa Tor network kahit walang pag-kompigura na ginawa. + (Lagyan ng check ang box na ito kung wala kang alam sa sinasabi namin) + Wala + Tor Tethering + I-enable ang Tor Transparent Proxying para sa Wifi at USB Tethered Devices (kailangan mag restart) + Humiling ng Superuser Access + Pumili ng Apps + Pumili ng Apps para i-route sa Tor + Pagkompigura ng Node + Ang mga ito ay advanced settings na maaring bawasan ang iyong anonymity + Entrance Nodes + Fingerprints, nicks, mga bansa at mga address para sa unang lukso + Pumasok sa Entrance Nodes + Pahintulutan na magsimula sa background + Hayaan ang kahit anong app na sabihin kay Orbot na magsimula ng Tor at anumang malapit na serbisyo. + Proxy All + Proxy None + Baliktarin ang napili + Outbound Network Proxy (Optional) + Outbound Proxy Type + Mga protocol na gagamitin para sa proxy server: HTTP, HTTPS, Socks4, Socks5 + Ilagay ang Proxy Type + Outbound Proxy Host + Proxy Server hostname + Ilagay ang Proxy Host + Outbound Proxy + Proxy Server Port + Ilagay ang Proxy port + Outbound Proxy Username + Proxy Username (Optional) + Ilagay ang Proxy Username + Outbound Proxy Password + Proxy Password (Optional) + Ilagay ang Proxy Password + Katayuan + Isinasaayos ang kabuuang transparent proxying... + Isinasaayos ang app-based transparent proxying... + Na i-enable na ang Transparent proxying + Na i-enable na ang TransProxy para sa Thethering! + BABALA: error sa pag start ng transparent proxying! + Nalinis na ang mga batas ng TransProxy + Hindi ma umpisahan ang proseso ng Tor: + Ang Polipo ay gumagana ngayon sa port: + Isinasaayos ang port-based transpaprent proxying... + Error sa Bridge + Para magamit ang feature ng bridge, kailangan mong mag lagay ng kahit isang bridge IP address. + Magpadala ng email sa bridges@torproject.org na mayroong linyang \"get bridges\" at wala ng iba pang kasama sa katawa ng email gamit ang isang gmail account. + Error + Ang iyong ReachableAddresses settings ay nag sanhi ng exception! + Ang iyong relay settings ay nag sanhi ng exception! + Exit Nodes + Fingerprints, nicks, mga bansa at address para sa huling talon + Enter Exit Nodes + Hindi kasama ang Nodes + Fingerprints, nicks, mga bansa at mga address na hindi isasama + Enter Exclude Nodes + Strict Nodes + Gumamit ng *only* sa mga ispesipikong nodes + Bridges + Gumamit ng Bridges + Obfuscated Bridges + I-enable ang kahaliling entrance nodes sa Tor Network + I-enable kung ang naisaayos na bridges ay obfuscated bridges + IP address at port ng bridges + Ilagay ang Bridge Addresses + Relays + Relaying + I-enable ang iyong device na non-exit relay + Relay Port + Pinapakinggan ang port para sa iyong Tor relay + I-lagay ang OR port + Relay nickname + Ang nickname para sa iyong Tor relay + I-lagay ang pasadyang relay nickname + Reachable Addresses + Patakbuhin bilang kliente sa likod ng firewall na may istriktong polisiya + Reachable Ports + Ports reachable sa likod ng istriktong firewall + I-lagay ang ports + Nakatagong Service Hosting + pahintulutan sa on-device server na maging malalapitan sa pamamagitan ng Tor network + I-lagay ang localhost ports para sa nakatagong serbisyo + Tagong Service Ports + ang addressable na pangalan sa iyong tagong serbisyo (awtomatikong nabuo) + paganahiin ang debug log para sa output (kailangang gamitin ang adb o aLogCat para makita) + Project Home(s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + + Ang Tor License + https://torproject.org + 3rd-Party-Software: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + May app na gustong buksan ang nakatagong server port %S sa Tor network. Ito ay ligtas kung pinagkakatiwalaan ang app. + nakakita ng umiiral na Tor process... + May nangyaring masama. Tingnan ang log + nakatagong serbisyo sa: + hindi mabasa ang pangalan ng tagong serbisyo + Hindi masimulan ang Tor: + I-reboot ang iyong device, hindi ma-reset ang Tor! + Gumamit ng Default na Iptables + gamitin ang built-in iptables binary kaysa sa isang nabigkis kasama ng Orbot + Ang Tor binaries ay hindi ma-install o ma-upgrade. + Palaging panatilihin ang icon sa toolbar kapag ang Orbot ay naka-connect + Palaging i-On ang Notifications + Ipakita ang pinalaking notification kasama ng Tor exit country at IP + Pinalawak na Notifications + Bridges enabled! + + Wika + Pumili ng locale at wika para sa Orbot + Pumili ng Wika + Iwanang default o palitan ang kasalukuyang wika + powered by Tor + I-Save ang Settings + Walang connection sa internet; Ang Tor ay naka-standby mode... + Bandwidth: + baba + taas + Walang Auto-Sleep sa Network + Ilagay ang Tor sa sleep kapag walang internet na pwede + Ikaw ay nagpalit ng bagong pagkakakilanlan sa Tor! + Browser + Gamitin ang ChatSecure + Manage Tor + VPN + kbps + mbps + KB + MB + Email + Web + Activate + Apps VPN Mode + Send Email + I-install ang Orfox + Standard Browser + Mundo + diff --git a/orbotservice/src/main/res/values-tr/strings.xml b/orbotservice/src/main/res/values-tr/strings.xml new file mode 100644 index 00000000..ac750255 --- /dev/null +++ b/orbotservice/src/main/res/values-tr/strings.xml @@ -0,0 +1,282 @@ + + + Orbot + 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. + http://orbot/ + https://check.torproject.org/?lang=tr + https://check.torproject.org/?lang=tr + https://check.torproject.org/?TorButton=true + Tor\'u başlat ve durdur + torproxyservice + Orbot başlatılıyor... + Tor ağına bağlandı + Orbot devre dışı bırakıldı + Tor hizmeti kapatılıyor + Tor kullanımı başlatılıyor... + tamamlandı. + bekliyor. + 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. + Başlangıç + Göz At + Ayarlar + Günlük + Yardım + VPN + Başlat + Durdur + Hakkında + Uygulamaları alın... + İndir + Yükle + Yardım + Kapat + Hakkında + Günlüğü Temizle + Kontrol Et + Çıkış + QR kodu tarama + QR kodu paylaş + - başlatmak için uzun basın - + Şeffaf Vekillendirme (Yeniden Başlatma Gerektirir) + Şeffaf Vekillendirme + Uygulamalar için Otomatik Tor Uyarlaması + Herşeyi Tor ile Uyarla + Tor\'a uyarlanmış uygulamaların vekil sunucu bağlantıları + Vekil Sunucu Yanıtsız Kalma Bildirim Portu + UYARI: Genel portlardan (80,443, v.b.) kaçınınız. SADECE \'Hepsi\' veya \'Uygulama\' modu çalışmadığında kullanınız. + Port Listesi + Vekil sunucu port listesi. *SADECE* \'Hepsi\' veya \'Uygulama\' modu çalışmadığında kullanınız. + Vekil sunucu portlarını giriniz + Yönetici Erişimi Talebi + Şeffaf Vekillendirme için Yönetici Erişimi Talebi + Tor binarileri başarıyla yüklendi! + Tor binary dosyaları yüklenemedi. Lütfen günlüğü kontrol ediniz ve tor-assistants@torproject.org adresini kullanarak bilgilendirme yapınız. + Uygulama Hatası + Orbot + Orbot Hakkında + İleri + Geri + Bitir + Tamam + İptal + + + Bazı Orbot detayları + 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. + İzin Verildi + Orbot İzinleri + Mükemmel! Root izinlerinizin Orbot için aktif olduğunu saptadık. Bu gücü akıllıca kullanacağız. + 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! + 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. + Anlıyorum ve Superuser olmadan devam etmek istiyorum + Orbot\'a root erişimi ver + Tor Bildirimlerini Ayarla + Orbot, tüm uygulamaların veya seçtiğiniz uygulamaların trafiğini Tor üzerinden yönlendirme seçeneği sunar. + Tüm Uygulamaları Tor Üzerinden Vekillendir + Tor için ayrı ayrı uygulamalar seç. + Orbot\'un Etkin Olduğu Eklentiler + 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. + ChatSecure - Android için güvenli anında mesajlaşma istemcisi + Vekil Ayarları - Uygulamaların, Orbot ile birlikte çalışmalarını nasıl ayarlayacağınızı öğrenin. + DuckDuckGo Arama Motoru uygulaması + Twitter proxy sunucusunu \"localhost\" ve bağlantı noktası 8118 olarak ayarlayın + StoryMaker - Bir öykü yarat ve güvenliği tor\'a bırak! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proxy Ayarları + Orbot hazır! + Lütfen kullanmadan önce Orbot\'u yapılandırın! + + 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. + Gizlenmiş servis sunucusu + Genel + Orbot\'u Telefonla Birlikte Başlat + Android cihaz açıldığında otomatik olarak Orbot\'u başlat ve Tor\'a bağlan. + + + + Uyarı + + İzinler + İsterseniz Orbot\'a \'Superuser\' erişimi vererek saydam proxy gibi gelişmiş ayarları aktif hale getirebilirsiniz. + Bunu yapmak istemiyorsanız, lütfen Orbot ile çalışmak üzere yapılmış uygulamalar kullandığınızdan emin olun + + Orbot\'un aktif olduğu eklentiler + ChatSecure: Güvenli Kayıt-dışı Şifreleme yapabilen sohbet uygulaması + Orfox: Gizliliği geliştirilmiş bir tarayıcı Tor üzerinden çalışır + Google Play\'deki tüm Guardian Projesi uygulamalarına bakın + Tüm Guardian Project uygulamalarını F-Droid vasıtasıyla bulun + Tüm Guardian Project uygulamalarına bu adresten erişin https://f-droid.org + + Şeffaf Vekillendirme + Bu, uygulamalarınızı Tor üzerinden, herhangi bir ayar yapmadan çalıştırmanıza olanak sağlar. + (Neden bahsettiğimiz hakkında bir fikriniz yoksa bu kutucuğu işaretleyin) + Hiçbiri + Tor Tethering + Kablosuz ağlar için Tor açık proxy ve USB Tethering\'e izin ver (yeniden başlatmayı gerektirir) + Superuser Erişimi Talebi + Uygulamaları Seç + Tor Üzerinden Yönlendirilecek Uygulamaları Seç + Düğüm Ayarları + Bu ayarlar bağlantınızın anonimliğini azaltabilecek gelişmiş ayarlardır. + Giriş Noktaları + İlk düğüm için parmak izleri, rumuzlar, ülkeler, adresler + Giriş Düğümlerini Girin + Arka planda çalışmaya izin ver + Herhangi bir uygulamanın Orbot aracılığıyla Tor ve ilgili hizmetleri başlatması için izin ver + Tüm bağlantılar için Vekil Sunucu kullan + Vekil Sunucu kullanma + Ters seçim + Giden Ağ Sunucusu (tercihe bağlı) + Giden proxy tipi + Proxy sunucusunu kullanmak için protokoller: HTTP, HTTPS, Socks4, Socks5 + Proxy tipini girin + Giden proxy sunucusu + Vekil Sunucusu adı + Vekil Host\'u girin + Giden vekil bağlantı noktası + Vekil Sunucusu bağlantı noktası + Vekil bağlantı noktasını girin + Giden Vekil Kullanıcı Adı + Vekil Kullanıcı Adı (tercihe bağlı) + Vekil Kullanıcı Adı girin + Giden Vekil Parolası + Vekil parolası (tercihe bağlı) + Vekil Parolası girin + Durum + Tamamen saydam vekil kuruluyor... + Uygulamaya özel saydam proxy kuruluyor... + Saydam vekil AKTİF + TransProxy Tethering\'e açıldı! + UYARI: şeffaf proxy başlatılırken hata oluştu + TransProxy kuralları temizlendi + Tor işlemi başlatılamadı + Polipo bu port üzerinde çalışıyor: + Port tabanlı şeffaf vekillendirme ayarlanıyor... + Köprü hatası + Köprü özelliğini kullanmak adına, en az bir tane köprü IP adresi girmelisiniz. + Gmail hesabınızdan bridges@torproject.org adresine içinde sadece \"get bridges\" yazılı bir eposta gönderin. + Hata + ErişilebilirAdresleriniz ayarlarınız bir istisnaya yol açtı! + Tor aktarıcı ayarlarınız bir istisnaya yol açtı! + Çıkış Düğümleri + Son düğüm için parmak izleri, rumuzlar, ülkeler, adresler + Çıkış bağlantılarını girin + Şu bağlantıları dahil etmeyin + Dahil edilmeyecek parmak izleri, takma adlar, ülkeler ve adresler + Giriş bağlantılarını girin + Değişmeyen bağlantılar + *Sadece* bu bağlantıları kullan + Köprüler + Köprü kullan + Gizlenmiş köprüler + Tor ağına başka giriş bağlantılarına izin ver + Yapılandırılan köprüler gizlenmiş ise izin ver + Köprülerin IP adresleri ve bağlantı noktaları + Köprü Adresleri Gir + Aktarıcılar + Aktarmak + Cihazınızı çıkış yapmayan aktarıcı olması için aktif edin + Aktarıcı Portu + Tor aktarıcınız için dinleme port\'u + OR port\'u gir + Aktarıcı rumuzu + Tor aktarıcınız için rumuz + Özel aktarıcı rumuzu girin + Ulaşılabilir adresler + Bir güvenlik duvarı arkasındaki sınırlı kullanıcı olarak bağlan + Ulaşılabilir bağlantı noktaları + Sınırlayıcı güvenlik duvarı ardındaki ulaşılabilir bağlantı noktaları + Bağlantı noktaları gir + Gizlenmiş Servis Sunucusu + cihazdaki sunucunun Tor ağından ulaşılmasına izin ver + gizlenmiş servis sunucuları için localhost bağlantı noktası gir + Gizlenmiş Servis Bağlantı Noktaları + Gizlenmiş servisiniz için adreslenebilir ad (otomatik olarak verilmiştir) + hata giderme kaydını tut (görüntülemek için adb veya aLogCat gerekir) + Proje adres(ler)i: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor Lisansı + https://torproject.org + Üçüncü Parti Yazılım: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + Bir uygulama Tor ağında gizlenmiş sunucu bağlantı noktası %S açmak istiyor. Eğer uygulamaya güveniyorsanız bu güvenlidir. + varolan bir Tor işlemi bulundu... + Kötü bir şey oldu. Kayıtlara bakınız + gizlenmiş servis: + gizli hizmet adı okunamıyor + Tor başlatılamadı: + Cihazınızı yeniden başlatın, Tor\'u sıfırlamak mümkün değil! + Varsayılan Ip tablolarını kullan + Orbot ile birlikte gelenler yerine kurulu iptables binary kullan + Tor binary kurulumu veya yükseltilmesi mümkün değil. + Orbot bağlı olduğu sürece simgeyi araç çubuğunda tut + Bildirimler her zaman açık + Tor çıkış ülkesi ve IP için genişletilmiş bildirim göster + Genişletilmiş Bildirimler + Köprüler etkinleştirildi! + + Dil + Orbot için yerel ayarları ve dili seç + Dili seçin + Varsayılanda bırak veya geçerli dile geç + Tor tarafından desteklenmektedir + Ayarları kaydet + İnternet bağlantısı yok; Tor bekleme modunda... + Bant genişliği: + aşağı + yukarı + Bağlantı yokken Otomatik Uykuya Geç + İnternet olmadığında Tor\'u uykuya al + Yeni bir Tor kimliğine geçiş yaptınız! + Tarayıcı + ChatSecure Kullan + Tor\'u Yönet + Tor servisini kontrol etmek için bu uygulamayı etkinleştir + Orfox yüklü gibi görünmüyor. Bu konuyla alakalı yardım istiyor musun, ya da sadece tarayıcı mı açılsın? + Uygulamalar kurulsun mu? + Hiçbir ağ bağlantısı yok. Tor uyku moduna alınıyor... + Ağ bağlantısı iyi. Tor uyandırılıyor... + Tor hizmet ayarları güncellemesi + SOCKS için Tor kullan + SOCKS Port Yapılandırma + Tor TransProxy Port + Tor Şeffaf Vekil Proxy Port\'u için (varsayılan olarak: 9040 veya devre dışı bırakmak için 0) değerlerini öneriyor + TransProxy Port Yapılandırma + Tor DNS Port + DNS Port Yapılandırma + Torrc Özel Yapılandırma + SADECE UZMANLAR: Doğrudan torrc yapılandırma satırları girin + Torrc yapılandırma + Mobil Martus - Benetech İnsan Hakları Belgeleri Uygulaması + Umumi Tor IP adresiniz: + Uygulama çatışması + TransProxy Otomatik Yenileme + Ağ durumu değiştiğinde TransProxy kurallarını yeniden uygula + TransProxy Kurallarını KALDIR + Tüm TransProxy ağ kurallarını temizlemek için buraya dokunun + Şeffaf vekil kuralları silindi! + ROOT erişim izniniz yok + Ayarların etkin olması için Orbot\'u durdurup yeniden başlatmak gerekebilir. + VPN + kbps + mbps + KB + MB + Köprüler Güncellendi + Değişiklikleri etkinleştirmek için lütfen Orbot\'u yeniden başlatın + QR Kodları + Köprü Modu + Eposta + Web + Etkinleştirin + Uygulamalar için VPN Modu + Eposta Gönder + Orfox yükle + Standart Tarayıcı + NOT: Sadece standart Tor köprüleri Intel X86/ATOM cihazlarda çalışır + Dünya + diff --git a/orbotservice/src/main/res/values-uk/strings.xml b/orbotservice/src/main/res/values-uk/strings.xml new file mode 100644 index 00000000..9672e2c2 --- /dev/null +++ b/orbotservice/src/main/res/values-uk/strings.xml @@ -0,0 +1,278 @@ + + + Orbot + Orbot — це вільна програма для проксі-з\'єднань, яка дозволяє іншим додаткам безпечніше використовувати інтернет-з\'єднання. Orbot використовує Tor для шифрування інтернет-трафіку, який далі приховується під час пересилання через кілька комп\'ютерів у різних частинах планети. Tor є вільним програмним забезпеченням, а також відкритою мережею, що допомагає захиститися від мережевого стеження, яке загрожує особистій свободі та приватному життю, конфіденційній бізнес-діяльності і контактам, а також державної програми безпеки, що відома як аналіз трафіку. + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + запуск і зупинка Tor + torproxyservice + Запуск Orbot... + Під\'єднаний до мережі Tor + «Orbot» від\'єднаний + Запускається клієнт Tor... + завершено. + очікування... + Попередження: Ваш трафік ще не анонімний! Будь ласка, налаштуйте свої додатки для використання HTTP проксі 127.0.0.1:8118 або ж SOCKS4A або SOCKS5 проксі 127.0.0.1:9050 + Домівка + Перегляд + Налаштування + Журнал + Довідка + Запустити + Зупинити + Про програму + Завантажити + Завантажити + Довідка + Закрити + Про програму + Очистити журнал + Перевірка + Вихід + Сканувати BridgeQR + Поділитися BridgeQR + - довге натиснення для запуску - + Прозорий проксі (Потрібен root) + Прозорий проксі + Автоматична торифікація додатків + Направляти все через Tor + Направляти трафік всіх додатків через Tor + Резервний проксі порт + ПОПЕРЕДЖЕННЯ: Обходить загальні порти (80, 443, і т.д.). *ВИКОРИСТУВУВАТИ ТІЛЬКИ* якщо режими «Все» або «Додатки» не працюють. + Список Портів + Список портів для проксифікації. *ВИКОРИСТОВУВАТИ ТІЛЬКИ* якщо режими «Все» або «Додатки» не працюють. + Введіть порти для проксифікації + Запитати root доступ + Запитати root доступ для прозорої проксифікації + Додаток Tor успішно встановленей! + Не вдалося встановити додаток Tor. Будь ласка, перевірте системний журнал і повідомте нам: tor-assistants@torproject.org + Помилка додатку + Orbot + Про Orbot + Вперед + Назад + Завершити + OK + Відміна + + Деякі відомості про програму Orbot + Orbot — це програма з відкритим кодом, яка містить Tor, LibEvent та Polipo. Він надає локальний HTTP-проксі (8118) і SOCKS-проксі (9050) у мережу Tor. Orbot також дозволяє на пристроях з правами root пересилати весь інтернет-трафік через Tor. + Дозвіл отримано + Дозволи Orbot + Чудово! Ми визначили, що ви надалили root права для Orbot. Ми будемо використовувати цю можливість з розумом. + Хоча це й не вимагається, Orbot може бути потужнішим інструментом, якщо ваш пристрій має права root. Натисніть на кнопку нижче і надайте Orbot суперсилу! + Якщо у вас немає root прав або ви не розумієте про що говоримо, просто впевніться, що використовуєте додатки, розроблені для Orbot. + Я розумію і хочу продовжити без прав суперкористувача + Надати root права Orbot + Налаштувати Tor-ифікацію + Програма Orbot дає вам можливість маршрутизувати трафік всіх додатків через Tor АБО вибрати додатки для маршрутизації самостійно. + Маршрутизувати всі додатки через Tor + Виберіть додатки для маршрутизації через Tor + Orbot-задіяні додатки + Ми радимо вам завантажити і використовувати додатки, які вміють працювати напряму через Orbot. Натисніть на кнопки нижче, щоб запустити процес встановлення. + ChatSecure - Захищений обмін повідомленнями в Android + Налаштування проксі — дізнайтесь як налаштувати додатки для роботи з Orbot + Додаток пошукової системи DuckDuckGo + Twitter підтримує http проксі «localhost:8118» + StoryMaker — Запишіть історію і залиште її Tor\'у для безпеки! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Налаштування Проксі + Якщо програмка для 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 + Програма Orbot готова до використання! + Мільйони людей у всьому світі використовують Tor з різних причин.\n\nЖурналісти і блогери, активісти захисту прав людини, судові виконавці, солдати, корпорації, громадяни країн з репресивним режимом, і прості люди… а тепер готові і Ви! + Будь ласка, налаштуйте Orbot, перш ніж почнете ним користуватись! + + Це призведе до запуску веб-браузера, вибраного на вашому пристрої за замовчуванням, і підключення до сайту https://check.torproject.org, з метою перевірки правильності роботи Orbot і визначення, чи під\'єднані ви до мережі Tor. + Приховані сервіси + Основні + Запуск Orbot при ввімкненні + Автоматичний запуск Orbot та з\'єднання Tor під час запуску вашого пристрою + + + Orbot дозволяє використовувати Tor на Android!\n\nTor дозволяє Вам захиститися від фільтрації вмісту, аналізу трафіку і спостереження за мережею, які ставлять під загрозу приватність, конфіденційну інформацію та особисті стосунки.\n\nЦей майстер допоможе Вам налаштувати Orbot і Tor на Вашому пристрої. + + Попередження + Просте встановлення Orbot не зробить автоматично Ваш мобільний трафік анонімним.\n\nВи повинні правильно налаштувати Orbot, Ваш пристрій та інші додатки, щоб успішно використовувати Tor. + + Дозволи + Ви також можете за бажанням надати Orbot права «Суперкористувача» для доступу до просунутих можливостей, типу \"Прозора Проксифікація\". + Якщо ви не хочете робити це, тоді будь ласка, впевніться, що використовуєте додатки створені для роботи з Orbot. + Схоже, ваш пристрій не має root-прав або не надає доступу до «Суперкористувача».\n\nБудь ласка, спробуйте натомість режим «Додатки» на головному екрані. + + Додатки, що працюють з Orbot: + ChatSecure: додаток для спілкування з підтримкою Off-the-Record шифрування + Знайти всі додатки Guardian Project на Google Play + Знайти всі додатки Guardian Project на F-Droid + Знайти всі додатки Guardian Project на https://f-droid.org + + Прозоре Проксування + Це дозволить вашим додаткам автоматично працювати в мережі Tor без будь-якої конфігурації. + (Позначте даний пункт, якщо ви не знаєте про що йде мова) + Ні + Роздача Tor + Ввімкнути Прозору Проксифікацію Tor для пристроїв з роздачею по Wi-Fi і USB (потрібен перезапуск) + Запитати Доступ Суперкористувача + Вибрані додатки + Вибрати додатки для направлення через Tor + Конфігурація вузла + Це додаткові налаштування, які можуть знизити вашу анонімність + Вхідні вузли + Відбитки, ніки, країни та адреси для першого стрибка + Введіть вхідні вузли + Усі через проксі + Жоден через проксі + Інвертувати виділення + Вихідна проксі мережа + Тип Проксі + Протокол для використання проксі-сервером: HTTP, HTTPS, Socks4, Socks5 + Введіть Тип Проксі + Хост Проксі + Ім\'я хоста проксі-сервера + Введіть Хост Проксі + Порт Проксі + Порт проксі-сервера + Введіть порт Проксі + Ім\'я користувача для вихідного проксі-з\'єднання + Ім\'я користувача для проксі-з\'єднання (вказувати не обов\'язково) + Введіть Ім\'я користувача проксі-з\'єднання + Пароль вихідного проксі-з\'єднання + Пароль проксі-з\'єднання (вказувати не обов\'язково) + Введіть пароль проксі-з\'єднання + Статус + Встановлення загальної прозорої проксифікації... + Встановлення заснованої на додатках прозорої проксифікації... + Прозора проксифікація ВВІМКНЕНА + TransProxy підтримує Роздачу! + УВАГА: помилка запуску прозорої проксифікації! + Правила TransProxy видалені + Неможливо запустити Tor: + Polipo працює на порті: + Встановлення засноване на портах прозорої проксифікації... + Помилка Мосту + Для використання мосту, необхідно задати IP адресу як мінімум одного мосту. + Відправте email на адресу bridges@torproject.org з рядком «get bridges» в тілі повідомлення із облікового запису gmail. + Помилка + Ваші налаштування Доступних Адрес викликали виключення! + Налаштування вашого ретранслятора викликали виключення! + Вихідні Вузли + Відбитки, ніки, країни та адреси для останнього стрибка + Введіть Вихідні Вузли + Виключені Вузли + Відбитки, ніки, країни та адреси на виключення + Введіть Виключені Вузли + Точні Вузли + Використовувати *тільки* ці задані вузли + Мости + Використрвувати Мости + Обфусковані Мости + Включити альтернативні вхідні вузли в мережу Tor + Задані мости обфусковані + IP адреси і порти мостів + Введіть Адреси Мостів + Ретранслятори + Ретрансляція + Дозволити вашому пристрою бути невихідним ретранслятором + Порт ретранслятора + Слухаючий порт для вашого ретранслятора Tor + Введіть порт OR + Ім\'я ретранслятора + Ім\'я для вашого ретранслятора Tor + Введіть користувацьке ім\'я ретранслятора + Доступні Адреси + Запускати як клієнт за брандмауером з обмежуючими політиками + Доступні порти + Порти доступні із обмежуваного брандмауера + Введіть порти + Ввімкнути Приховані Служби + запустити сервери доступні через мережу Tor + введіть локальні порти для прихованих служб + Порти Прихованої Служби + адресоване ім\'я для вашої прихованої служби (сгенеровано автоматично) + ввімкнути вивід логу налогодження (потрібно використовувати adb або aLogCat для перегляду) + Домашня сторінка(и) проекту: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Ліцензія Tor + https://torproject.org + Програми сторонніх розробників: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + Додаток хоче відкрити прихований порт сервера %S мережі Tor. Це безпечно, якщо ви довіряєте цьому додатку. + знайдено існуючий процес Tor... + Виникла якась помилка. Перевірте лог + прихована служба на: + неможливо прочитати ім\'я прихованої служби + Неможливо запустити Tor: + Перезавантажте свій пристрій, не вдається перезапустити Tor! + Використовувати Iptables за замовчуванням + використовувати вбудований бінарник iptables замість того що надається з Orbot + Бінарні файли Tor не змогли встановитися або оновитися. + Завжди показувати іконку в панелі завдань коли Orbot підключений + Сповіщення про постійну роботу + Показати розширене сповіщення з країною виходу Tor та IP + Розширені сповіщення + Мости ввімкнуті! + + Мова + Вибрати локаль і мову для Orbot + Вибрати Мову + Залишити за замовчуванням або переключити поточну мову + від Tor + Зберегти Налаштування + Немає інтернет-з\'єднання; Tor в режимі очікування… + Канал: + вх + вих + Не використовувати режим сну + Переводити в режим сну при відсутності інтернет-з\'єднання + Ви перемкнулись на новий ідентифікатор Tor! + Використовувати ChatSecure + Керування Tor + Дозволити додатку керувати сервісом Tor + Встановити додатки? + Немає доступу до мережі інтернет. Tor переходить в режим сну… + Доступ до мережі хороший. Tor виходить з режиму сну… + оновлення налаштувань у сервісі Tor + Tor SOCKS + Порт, який Tor надає своєму SOCKS-проксі (за замовчуванням: 9050 або 0 для вимкнення) + Налаштування порту SOCKS + Порт Tor TransProxy + Порт, який Tor надає своєму відкритому проксі (за замовчуванням: 9040 або 0 для вимкнення) + Налаштування порту Tor TransProxy + Порт Tor DNS + Порт, який Tor надає своєму DNS (за замовчуванням: 5400 або 0 для вимкнення) + Налаштування порту DNS + Додаткові налаштування Torrc + ЛИШЕ ДЛЯ ЕКСПЕРТІВ: введіть безпосередні рядки налаштувань torrc + Додаткове у Torrc + Mobile Martus — програма Benetech Human Rights Documentation + Ваші публічні Tor IP: + Будь ласка, вимкніть цей додаток у Android->Налаштування->Програми, якщо у Вас виникають проблеми з Orbot: + Конфлікт програм + Автоперезапуск Transproxy + Повторно застосувати правила Transproxy, коли зміниться стан мережі + ПРИМУСОВЕ ВИЛУЧЕННЯ Transproxy + Натисніть тут, щоб зрівняти усі правила мережі transproxy ЗАРАЗ + Правила прозорого проксі зрівняно! + У Вас не ввімкнено ROOT-доступ + Вам може бути потрібно зупинити і запустити Orbot, щоб зміни налаштувань вступили в дію. + kbps + mbps + KB + MB + Мости оновлено + Будь ласка, перезапустіть Orbot, щоб зміни ввійшли в силу + QR-коди + Режим мосту + Email + Веб + Активувати + Ви можете увімкнути пропускання трафіку усіх програм на Вашому прострої через мережу Tor, скориставшись функцією VPN в Android.\n\n*УВАГА* Це нова, експериментальна функція і в деяких випадках може не запуститися автоматично або зупинитись. Її НЕ варто використовувати для анонімності і ЛИШЕ для обходу фаєрволів та фільтрів. + Надіслати листа + Ви можете отримати адресу мосту через електронну пошту, веб або відсканувавши QR-код мосту. Оберіть «Email» чи «Веб» унизу, щоб подати запит на адресу мосту.\n\nКоли у Вас буде адреса, скопіюйте і вставте її у розділі «Мости» налаштувань Orbot і перезапустіть його. + Стандартний браузер + ПРИМІТКА: Лише стандартні мости Tor працюють на пристроях з Intel X86/Atom + diff --git a/orbotservice/src/main/res/values-ur/strings.xml b/orbotservice/src/main/res/values-ur/strings.xml new file mode 100644 index 00000000..21abd16d --- /dev/null +++ b/orbotservice/src/main/res/values-ur/strings.xml @@ -0,0 +1,18 @@ + + + براؤز کیجیے + مدد + مدد + بند کیجیے + پیچھے + تنسیخ کیجیے + + + + + + + + + + diff --git a/orbotservice/src/main/res/values-uz/strings.xml b/orbotservice/src/main/res/values-uz/strings.xml new file mode 100644 index 00000000..785d9672 --- /dev/null +++ b/orbotservice/src/main/res/values-uz/strings.xml @@ -0,0 +1,47 @@ + + + Orbot + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + Orbot ishga tushirilmoqda… + Tor tarmog\'iga ulangan + Uy + Moslamalar + Yordam + Dastur haqida + Yuklab olish + Yuklash + Yordam + Yopish + Dasur haqida + Tekshirish + Chiqish + Dastur xatosi + Orbot + + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Proksi moslamalari + Orbot tayyor! + + Umumiy + + + + + + + Proksi turini kiriting + Proksi maxfiy so\'zi (Qo\'shimcha) + Proksi maxfiy so\'zini kiriting + Holati + Xato + Tor litsenziyasi + https://torproject.org + Mavjud bo\'lgan Tor jarayoni topildi... + + Orbot uchun lokal va tilni tanlash + Tilni tanlansh + Moslamalarni saqlash + diff --git a/orbotservice/src/main/res/values-vi/strings.xml b/orbotservice/src/main/res/values-vi/strings.xml new file mode 100644 index 00000000..6562b4eb --- /dev/null +++ b/orbotservice/src/main/res/values-vi/strings.xml @@ -0,0 +1,293 @@ + + + Orbot + 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... + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + khởi động và ngừng Tor + dịch vụ tor proxy + Ortbot đang khởi động... + Đã kết nối với mạng Tor + Orbot đã được vô hiệu hóa + Đang tắt dịch vụ Tor + Bắt đầu Tor + hoàn thành. + đang chờ. + 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 + Trang chủ + Trình duyệt + Thiết lập + Nhật ký + Giúp đỡ + Mạng riêng ảo + Bắt đầu + Ngừng + Về + Các ứng dụng khác... + Tải về + Tải lên + Giúp đỡ + Đóng + Giới thiệu + Xóa nhật ký + Kiểm tra + Thoát + Quét mã BridgeQR + Xuất mã BridgeQR + - nhấn giữ để khởi động - + Proxy trong suốt (Yêu cầu root) + Proxy trong suốt + Tự động áp dụng Tor cho ứng dụng + Áp dụng Tor cho tất cả ứng dụng + Chuyển tất cả các kết nối của các ứng dụng qua Tor + Cổng Proxy dự phòng + 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. + Danh sách cổng + 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. + Điền số cổng để áp dụng proxy + Yêu cầu root + Yêu cầu root để kích hoạt proxy trong suốt + Tập nhị phân của Tor đã được cài đặt! + 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@torproject.org + Ứng dụng bị lỗi + Orbot + Về Orbot + Tiếp + Trở về + Kết thúc + Đồng ý + Hủy + + Vài chi tiết về Orbot + 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. + Đã cho phép quyền + Quyền truy cập của Orbot + 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. + 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\"! + 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. + Tôi hiểu rõ và sẽ tiếp tục dùng mà không cần root + Cho phép Orbot truy cập root + Cài đặt thông báo cho Tor + 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ẻ. + Áp dụng proxy Tor cho tất cả các ứng dụng + Lựa chọn từng ứng dụng để áp dụng Tor + Các ứng dụng đã được áp dụng Tor + 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. + ChatSecure - Ứng dụng IM (tin nhắn tức thời) bảo mật cho Android + Cài đặt Proxy - Tìm hiểu cách thiết lập ứng dụng để dùng với Orbot + Ứng dụng tìm kiếm DuckDuckGo + Cài proxy của Twitter với host là \"localhost\" và cổng là 8118 + StoryMaker - Viết một câu chuyện rồi để nó cho Tor để bảo mật! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + Cài đặt proxy + 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 + Orbot đã sẵn sàng! + 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ọ! + Vui lòng thiết lập Orbot trước khi bạn sử dụng nó! + + 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@guardianproject.info để biết thêm chi tiết. + 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. + Dịch vụ web hosting ẩn + Tổng quát + Chạy Orbot khi khởi động thiết bị + 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 + + + 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. + + Cảnh báo + 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. + + Quyền ứng dụng + 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. + 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. + 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ế. + + Các ứng dụng đã được áp dụng Orbot + ChatSecure: ứng dụng chat an toàn với mã hóa không-theo-dõi + 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 + Tìm những ứng dụng của Guardian Project trên Google Play + Tìm những ứng dụng của Guardian Project trên F-Droid + Tìm những ứng dụng của Guardian Project trên https://f-droid.org + + Proxy trong suốt + 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. + (Hãy chọn ô này nếu bạn không hiểu những gì chúng tôi đang nói) + Không có + Tor Tethering + Kích hoạt proxy Tor trong suốt để dùng cho WiFi/USB Tethering (cần khởi động lại) + Yều cầu truy cập root + Chọn ứng dụng + Chọn những ứng dụng mà bạn muốn kết nối qua Tor + Cấu hình nút + Những cài đặt nâng cao này có thể giảm sự ẩn danh của bạn + Nút vào (Entrace Nodes) + Dấu theo dõi (Fingerprint), biệt hiệu, quốc gia và địa chỉ cho nút đầu tiên + Nhập thông tin nút vào + Cho phép khởi động ngầm + 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 + Proxy tất cả + Không dùng proxy + Đảo ngược lựa chọn + Proxy mạng ngõ ra (Outbound Network) (Tùy chọn) + Loại proxy ngõ ra + Giao thức dùng cho proxy: HTTP, HTTPS, SOCKS4, SOCKS5 + Nhập loại proxy + Host proxy ngõ ra + Hostname của proxy + Nhập host của proxy + Cổng Proxy ngõ ra + Cổng của proxy + Nhập cổng Proxy + Tên tài khoản proxy ngõ ra + Tên tài khoản proxy (tùy chọn) + Nhập tên tài khoản proxy + Mật khẩu Proxy ngõ ra + Mật khẩu proxy (tùy chọn) + Nhập mật khẩu proxy + Tình trạng + Đang cấu hình proxy trong suốt cho tất cả... + Đang cấu hình proxy trong suốt cho các ứng dụng được chọn... + Proxy trong suốt ĐƯỢC KÍCH HOẠT + TransProxy đã được kích hoạt để dùng cho tethering! + CHÚ Ý: có lỗi khi khởi động proxy trong suốt! + Quy tắc TransProxy đã được xóa + Không thể khởi động tiến trình Tor: + Polipo đang chạy ở cổng: + Đang cài đặt proxy trong suốt theo cổng + Lỗi bridge + Để 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. + Gửi một email đến bridges@torproject.org với dòng chữ \"get bridges\" trong thư từ một tài khoản gmail. + Lỗi + Thiết lập ReachableAddresses đã gây ra một vấn đề! + Thiết lập relay của bạn đã gây ra một vấn đề! + Nút cuối (Exit Nodes) + Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ cho nút cuối cùng + Nhập thông tin nút cuối + Loại trừ nút + Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ để loại trừ + Nhập vào những nút để loại trừ + Nút chỉ định + *Chỉ* dùng những nút được liệt kê + Bridge + Dùng bridge + Các bridge được che giấu + Kích hoạt các nút vào khác để vào mạng Tor + Kích hoạt nếu như các bridge đã được cấu hình là bridge đã được che giấu + Địa chỉ IP và cổng của bridge + Nhập địa chỉ bridge + Relay + Chức năng 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) + Cổng cho relay + Cổng tiếp nhận cho việc relay + Nhập cổng OR + Biệt hiệu nút relay + Biệt hiệu cho nút Tor-relay của bạn + Nhập biệt hiệu tuỳ ý + Địa chỉ truy cập được (Reachable Addresses) + 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 + Cổng truy cập được + Cổng truy cập được đằng sau tường lửa + Nhập số cổng + Host web ẩn + 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. + Nhập cổng localhost cho web ẩn + Cổng web ẩn + Địa chỉ hợp lệ cho web ẩn của bạn (được tự động tạo ra) + Kích hoạt nhật ký gỡ lỗi ở đầu ra (phải dùng adb hoặc aLogCat để xem) + Các trang chủ dự án: + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Giấy phép của Tor + https://torproject.org + Phần mềm bên thứ 3: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + 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. + tìm ra tiến trình hiện hành của Tor... + Có gì đó không ổn. Xin xem lại nhật ký + web ẩn trong: + không thể đọc được tên dịch vụ ẩn + Không thể khởi động Tor được: + Khởi động lại thiết bị của bạn, không thể thiết đặt lại Tor! + Dùng Iptables mặc định + 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 + Tập nhị phân của Tor không thể cài hoặc nâng cấp được. + Luôn giữ thông báo trong thanh trạng thái khi Orbot được kết nối + Thông báo thường trực + 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) + Thông báo mở rộng + Bridge đã được kích hoạt! + + Ngôn ngữ + Chọn ngôn ngữ cho Orbot + Chọn ngôn ngữ + Giữ cài đặt mặc định hoặc chuyển qua ngôn ngữ khác + được hỗ trợ bởi Tor + Lưu thiết lập + Không có kết nối Internet; Tor đang ở chế độ chờ... + Băng thông: + tải xuống + tải lên + Tự động \"ngủ\" khi không có mạng + Chuyển Tor sang chế độ ngủ nếu không có Internet + Bạn đã chuyển sang một mạch Tor mới! + Trình duyệt + Dùng ChatSecure + Quản lý Tor + Cho phép ứng dụng này điều khiển dịch vụ Tor + 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? + Cài đặt ứng dụng? + Không có mạng. Đang chuyển Tor sang chế độ ngủ... + Kết nối mạng tốt. Đang \"đánh thức\" Tor... + đang cập nhật cài đặt dịch vụ Tor + Cổng SOCKS + Cổng để Tor đặt proxy SOCKS lên (mặc định: 9050 hoặc 0 để vô hiệu hóa) + Cấu hình cổng SOCKS + Cổng proxy trong suốt của Tor + Cổng để Tor đặt proxy trong suốt lên (mặc định: 9040 hoặc 0 để vô hiệu hóa) + Cấu hình cổng proxy trong suốt + Cổng DNS Tor + Cổng để Tor đặt DNS của nó lên (mặc định: 5400 hoặc 0 để vô hiệu hóa) + Cấu hình cổng DNS + Cấu hình tùy chỉnh cho Torrc + CHỈ NGƯỜI DÙNG CHUYÊN MÔN: nhập các thiết lập trực tiếp cho torrc + Torrc tùy chỉnh + Mobile Martus - Ứng dụng cung cấp các tài liệu về nhân quyền của Benetech + Các IP Tor công cộng của bạn là: + 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: + Xung đột ứng dụng + Tự động làm mới proxy trong suốt + Áp dụng lại các quy tắc proxy trong suốt khi trạng thái mạng thay đổi + ÉP BUỘC XÓA các quy tắc proxy trong suốt + Chạm vào đây để xóa sạch các quy tắc proxy trong suốt NGAY BÂY GIỜ + Quy tắc proxy trong suốt đã được xóa! + Bạn không có quyền truy cập ROOT + Bạn có thể cần kết nối lại Orbot để các thay đổi được áp dụng + VPN + kbps + mbps + KB + MB + Bridge được cập nhật + Vui lòng khởi động lại Orbot để áp dụng thay đổi + Mã QR + 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. + Chế độ bridge + Email + Web + Kích hoạt + Chế độ ứng dụng VPN + 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. + Gửi email + 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. + Cài đặt Orfox + Trình duyệt thường + LƯU Ý: Chỉ có bridge Tor chuẩn mới hoạt động trên các thiết bị Intel x86/Atom + Toàn cầu + diff --git a/orbotservice/src/main/res/values-zh-rCN/strings.xml b/orbotservice/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..e050c23f --- /dev/null +++ b/orbotservice/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,298 @@ + + + Orbot + Orbot 是一款免费的代理应用,能够让其他应用更安全地使用互联网。通过在位于世界各地的一系列计算机之间进行跳转,Orbot 可利用 Tor 对网络通信进行加密并隐藏。Tor 是一款免费的软件,并且是一个开放的网络。它可以保护用户免受流量分析的危害,这种网络监控可对个人自由与隐私、商业机密活动和关系以及国家安全造成威胁。 + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + 启动和停止 Tor + Tor 代理服务 + Orbot 正在启动... + 已连接到 Tor 网络 + Orbot 已停用 + Tor服务 正在关闭 + 正在启动 Tor 客户端... + 完成。 + 等待。 + 警告:你的网络通讯并非匿名!请设置应用程序,使用 HTTP 代理 127.0.0.1:8118 或者 SOCKS4A、SOCKS5 代理 127.0.0.1:9050 + 首页 + 浏览 + 设置 + 日志 + 帮助 + VPN + 启动 + 停止 + 关于 + 获取应用… + 下载 + 上传 + 帮助 + 关闭 + 关于 + 清除日志 + 检查 + 退出 + 扫描网桥QR码 + 分享网桥QR码 + - 长按启动 - + 透明代理(需要 Root 权限) + 透明代理 + 应用程序自动使用 Tor + 所有应用程序使用 Tor + 所有应用程序都通过 Tor 连接网络 + 备用代理端口 + 警告:避免使用常用端口(80、443 等)。仅在“应用程序”或“应用程序”模式无法工作时使用。 + 端口列表 + 代理端口列表。仅在“应用程序”或“应用程序”模式无法工作时使用。 + 输入代理端口 + 请求 Root 访问权限 + 为透明代理请求获取 Root 访问权限 + Tor 程序安装成功! + Tor 程序无法安装。请查看日志并将其发送到 tor-assistants@torproject.org + 应用程序错误 + Orbot + 关于 Orbot + 下一步 + 上一步 + 完成 + 确定 + 取消 + + 更多 Orbot 信息 + Orbot 是一个包含 Tor、LibEvent 和 Polipo 的开源应用程序。它提供了一个本地 HTTP 代理 (8118) 和一个 SOCKS 代理 (9050) 前往 Tor 网络。Orbot 也有能力在 root 过的设备上将所有互联网流量通过 Tor 发送。 + 已获取权限 + Orbot 权限 + 好极了!我们检测到 Orbot 已获取 Root 权限 。我们会谨慎地使用这一权限。 + 虽非必须,但是具有 Root 访问权限的设备可以让 Orbot 变得更强大。请使用下面的按钮授予 Orbot 这一强大的能力! + 如果没有 Root 访问权限或不明白此处所说的内容,只需确保 Orbot 支持所用的应用即可。 + 我明白并愿意在未获取 Root 权限的情况下继续操作 + 为 Orbot 获取 Root 权限 + 配置 Tor 网络 + Orbot 提供了选项,可指定所有应用程序使用 Tor 网络或指定某些应用通过 Tor 网络进行通讯。 + 所有应用程序都使用 Tor + 选择使用 Tor 的应用程序 + Orbot 支持的应用 + 以下应用可与 Orbot 一起使用。点击下面的按钮安装,也可以通过 Google Play 商店、GuardianProject.info 网站或 F-Droid.org 查找。 + ChatSecure - Android 上的安全即时通讯客户端 + 代理设置 - 学习如何配置应用程序使用 Orbot + DuckDuckGo 搜索引擎应用程序 + 将 Twitter 代理的主机设置 localhost 并将端口设置为 8118 + 故事制造者--乱说些什么,并用Tor保证您的安全! + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + 代理设置 + 如果 Android 应用程序支持 HTTP 或 SOCKS 代理,那么您可对它进行配置来连接到 Orbot 并使用 Tor 网络。 主机设置为 127.0.0.1 或 localhost。对于 HTTP,端口设置为 8118;对于 SOCKS,端口设置为 9050。如果可以,请尽量使用 SOCKS4A 或 SOCKS5 代理。 更多有关 Android 代理信息,请参阅 http://tinyurl.com/proxyandroid 中的常见问题 + Orbot 已就绪! + 全球数以万计的人正在使用Tor,他们中有媒体记者,博客家,人权主义者,改革宣扬者,军官,公司职工,以及同您一样的普通市民!现在,您也准备好了! + 请在您开始使用它前配置 Orbot! + + 您已经成功连接到Tor网络,但不代表您的设备是安全的。您可以使用“浏览器”按钮测试您的连接。 + +访问https://guardianproject.info/apps/orbot 或发送邮件至help@guardianproject.info 来了解更多。 + 浏览器将启动并访问:https://check.torproject.org,以便检查 Orbot 配置是否正确以及是否可连接 Tor 网络。 + 隐藏服务主机 + 常规 + 开机时启动 Orbot + Android 设备开机时自动启动 Orbot 并连接 Tor 网络 + + + Orbot使Android支持Tor网络! +Tor帮助你避开那些威胁到你的隐私,重要信息和社交关系的内容过滤,流量分析以及网络审查。 +这个向导将帮助你配置Orbot在你设备商以便访问Tor。 + + 警告 + 简单的安装完Orbot并不能自动的匿名你的移动流量。 +你必须适当的配置Orbot,以及你的设备及应用以成功匿名使用Tor。 + + 权限 + 可选择授予 Orbot “Superuser”访问权限,以便启用高级功能,例如透明代理。 + 如果不愿授予 Orbot 该权限,请确保应用程序可使用 Orbot。 + 您的设备似乎尚未 root,或者未提供 root 或“超级用户”的访问权限。\n\n请改为尝试主屏幕的“应用”模式。 + + 使用 Orbot 的应用程序 + ChatSecure:具有 OTF 加密共的安全通讯应用 + Orfox:隐私增强浏览器采用 Tor 工作 + 在 Google Play 商店查找所有 Guardian Project 的应用程序 + 在 F-Droid 查找所有 Guardian Project 的应用程序 + 在 https://f-droid.org 查找所有 Guardian Project 的应用程序 + + 透明代理 + 可使应用程序无需配置即可自动通过 Tor 连接网络。 + (如果不明白这里所说的问题,请选择该选项) + + Tor 网络共享 + 对 Wifi 和 USB 网络共享设备启用透明代理(需重新启动) + 请求 Superuser 访问权限 + 选择应用程序 + 选择通过 Tor 连接网络的应用程序 + 节点配置 + 这些高级设置可降低你的匿名度 + 入口节点 + 用于首次跳转的密钥指纹、昵称、国家与地址 + 输入入口节点 + 允许后台启动 + 允许任何应用告知 Orbot 启动 Tor 及相关服务 + 全部代理 + 全不代理 + 反选 + 出站网络代理(可选) + 出站代理类型 + 代理服务器使用的协议:HTTP、HTTPS、Socks4、Socks5 + 输入代理类型 + 出站代理主机 + 代理服务器主机名 + 输入代理主机 + 出站代理端口 + 代理服务器端口 + 输入代理端口 + 出站代理用户名 + 代理用户名(可选) + 请输入代理用户名 + 出站代理密码 + 代理密码(可选) + 请输入代理密码 + 状态 + 正在对所有应用程序进行透明代理设置... + 正在对所选应用程序进行透明代理设置... + 透明代理已启用 + 已为网络共享激活 TransProxy ! + 警告:启动透明代理时发生错误! + 已清除 TransProxy 规则 + 无法启动 Tor 进程: + Polipo 正运行在端口: + 正在对基于端口的透明代理进行设置... + 网桥错误 + 为了需使用网桥,必须至少输入一个网桥 IP 地址。 + 如需获取网桥地址,请使用 gmail 发送电子邮件至 bridges@torproject.org 并在正文内填上“ get bridges”。 + 错误 + 可访问地址设置导致异常! + 中继设置导致异常! + 出口节点 + 最后跳转的密钥指纹、昵称、国家与地址 + 输入出口节点 + 排除节点 + 排除的密钥指纹、昵称、国家与地址 + 输入排除节点 + 限制节点 + 仅使用这些指定节点 + 网桥 + 使用网桥 + 混淆网桥 + 使用其他入口节点连接到 Tor 网络 + 已配置的网桥为混淆网桥时启用 + 网桥的 IP 地址和端口 + 输入网桥地址 + 中继 + 中继转发 + 仅设置被设置为非出口中继 + 中继端口 + Tor 中继的侦听端口 + 输入 OR 端口 + 中继昵称 + Tor 中继昵称 + 输入自定义中继昵称 + 可访问地址 + 在具有限制策略防火墙内,作为客户端运行 + 可访问端口 + 防火墙限定的可访问端口 + 输入端口 + 隐藏服务主机 + 允许设备上的服务器可通过 Tor 网络访问 + 输入隐藏服务的本地主机端口 + 隐藏服务端口 + 隐藏服务的地址(自动生成) + 启用调试日志输出(必须使用 adb 或 aLongCat 查看) + 项目主页(s): + https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ + Tor 许可证 + https://torproject.org + 第三方软件: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + 应用程序试图打开隐藏服务主机端口 %S 连接 Tor 网络。对于可信应用这是安全的。 + 发现当前已存在 Tor 进程... + 发生错误,请检查日志 + 隐藏服务位于: + 无法读取隐藏服务名称 + 无法启动 Tor: + 重新启动您的设备,无法重置 Tor! + 使用默认 iptables + 使用内置的 iptables 程序替代 Orbot 绑定的 iptables + 无法安装或更新 Tor 程序。 + Orbot 连接后始终在通知栏显示图标 + 始终显示通知 + 显示扩展的通知,有关 Tor 出口的国家和 IP + 扩展的通知 + 已启用网桥! + + 语言 + 选择 Orbot 的区域设置与语言 + 选择语言 + 保持默认或切换为当前所用语言 + 由 Tor 提供 + 保存设置 + 没有互联网连接;Tor 处于待机状态… + 宽带速度: + 下行 + 上行 + 无网络自动休眠 + 没有网络连接时,暂时停用 Tor + 已切换为新的 Tor 标识! + 浏览器 + 使用 ChatSecure + 管理 Tor + 启用该应用可对 Tor 服务进行控制 + 似乎您还没有安装 Orfox。是否需要帮助,或者我们应该打开浏览器? + 安装应用? + 没有网络连接;让 Tor 进入睡眠… + 网络连接良好。正在唤醒 Tor... + 正在更新 Tor 服务中的设置 + Tor SOCKS + Tor 提供其 SOCKS 代理的端口 (默认: 9050, 0 禁用) + SOCKS 端口配置 + Tor 透明代理端口 + Tor 提供透明代理的端口 (默认: 9040, 0 禁用) + 透明代理配置 + Tor DNS 端口 + Tor 提供 DNS 的端口 (默认: 5400, 0 禁用) + DNS 端口配置 + Torrc 自定义配置 + 仅供专家:直接输入 torrc 配置行 + 自定义 Torrc + Mobile Martus - 美国人权文件 App + 您的 Tor 公网 IP: + 如果您使用 Orbot 遇到问题,请在 Android->设置->应用 中禁用本应用: + 应用冲突 + 透明代理自动刷新 + 在网络状态改变时重新应用透明代理规则 + 透明代理强制移除 + 点按这里立即刷新所有透明代理的网络规则 + 透明代理规则已刷新! + 您还没有 ROOT 访问权限 + 您可能需要停止并重新启动 Orbot 才能使设置更改生效。 + VPN + kbps + mbps + KB + MB + 网桥已更新 + 请重启 Orbot 以使变更生效 + QR码 + 网桥模式 + 电子邮件 + 网页 + 激活 + 应用 VPN 模式 + 通过开启VPN功能,您可以让您设备上全部的应用程序使用Tor网络。 +警告!!! +这是一项实验性的功能。在某些情况下,它可能停止或不能自动启动。它不应用于保持匿名,仅用于穿透防火墙和连接过滤系统。 + 发送电子邮件 + 安装 Orfox + 标准版浏览器 + 注意:只有标准的 Tor 网桥可以在 Intel X86/ATOM 设备上工作 + 世界 + diff --git a/orbotservice/src/main/res/values-zh-rTW/strings.xml b/orbotservice/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 00000000..b255c75c --- /dev/null +++ b/orbotservice/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,116 @@ + + + Orbot + Orbot是一款免費的網絡代理應用程式,用來保護其他應用程式的上網安全。 +Orbot使用Tor在全球一系列的電腦間跳躍,以便隱藏網路流量並加密。Tor是個免費軟體也是個開放網路,能幫您抵禦流量分析。它是某一種網路監控,牽涉到個人的自由與隱私、商業部分的機密關係和活動、甚至國家安全。 + http://orbot/ + http://check.torproject.org + https://check.torproject.org + https://check.torproject.org/?TorButton=true + 開始和停止 Tor + tor 代理服務 + Orbot 正在啟動中... + 已連線至 Tor 網路 + Orbot 已停用 + Tor服務 正在關閉 + 啟動Tor 用戶端... + 完成。 + 等待。 + 警告:您的網路尚未匿名!請設定您的應用程式使用HTTP 代理伺服器 127.0.0.1:8118 或 SOCKS4A 或 SOCKS5 代理伺服器 127.0.0.1:9050 + 首頁 + 瀏覽 + 設定 + 記錄檔 + 說明 + VPN + 開始 + 停止 + 關於 + 取得應用程式… + 下載 + 上傳 + 說明 + 關閉 + 關於 + 清除記錄檔 + 檢查 + 離開 + 掃描連接橋QR + 分享連接橋QR + - 請長按以開始 - + 通透式代理伺服器(需要 Root) + 通透式代理伺服器 + 自動啟動 Tor於應用程式 + Tor Everything + 所有應用程式皆透過Tor 代理伺服器 + 備用連接埠代理 + 警告: 避免常用的埠口(80、443等等)。在「所有」或是「App」模式都失效的時候*才使用*。 + 埠清單 + 輸入代理埠 + 請求 Root 存取權 + 爲通透式代理請求 Root 存取權 + Tor 二進制檔案安裝成功! + 應用程式錯誤 + Orbot + 關於 Orbot + 前進 + 返回 + 結束 + 確定 + 取消 + + Orbot 的一些詳細資料 + Orbot是個開源的應用程式,包含了Tor,LibEvent和Polipo。它提供了本地HTTP代理 (8118)和SOCKS代理 (9050)以進入Tor網路。Orbot也能夠在已Root的裝置上,以Tor傳送所有的網路流量。 + 已取得權限 + Orbot 權限 + 組態 Tor 網路 + 所有應用程式都透過 Tor 代理 + DuckDuckGo 搜尋引擎應用程式 + https://guardianproject.info/2012/05/02/orbot-your-twitter/ + 代理伺服器設定 + + 一般 + 當你的 Android 裝置啟動時自動開啟 Orbot 並連接 Tor 網路 + + + + 警告 + + 權限 + + 在 Google Play 尋找所有的 Guardian Project 應用程式 + + 通透式代理 + + 選擇應用程式 + 反向選擇 + 狀態 + 錯誤 + 輸入埠 + 專案首頁: + https://torproject.org + 第三方軟體: + Tor: https://www.torproject.org + LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ + Polipo v1.1.9: https://github.com/jech/polipo + IPtables v1.4.21: http://www.netfilter.org + OpenSSL v1.0.1q: http://www.openssl.org + + 語言 + 選擇語言 + 儲存設定 + 瀏覽器 + 管理 Tor + 安裝應用程式? + Tor SOCKS + Tor DNS 埠 + VPN + kbps + mbps + KB + MB + QR 碼 + 寄送電子信件 + 標準版瀏覽器 + 世界 + diff --git a/orbotservice/src/main/res/values/arrays.xml b/orbotservice/src/main/res/values/arrays.xml new file mode 100644 index 00000000..30d20c1e --- /dev/null +++ b/orbotservice/src/main/res/values/arrays.xml @@ -0,0 +1,16 @@ + + + + + + Obfs4 (Best) + Obfs3 + ScrambleSuit + Tunnel through Azure + Tunnel through Amazon + Tunnel through Google + Get New Bridges + + + + diff --git a/orbotservice/src/main/res/values/colors.xml b/orbotservice/src/main/res/values/colors.xml new file mode 100644 index 00000000..19e06e79 --- /dev/null +++ b/orbotservice/src/main/res/values/colors.xml @@ -0,0 +1,8 @@ + + + #ffffff + #efefef + #efefef + #ccff2a + #669901 + diff --git a/orbotservice/src/main/res/values/dimens.xml b/orbotservice/src/main/res/values/dimens.xml new file mode 100644 index 00000000..f96195c8 --- /dev/null +++ b/orbotservice/src/main/res/values/dimens.xml @@ -0,0 +1,361 @@ + + + + + 164dp + + 145dp + + 48dip + + 2 + 64dip + + 25dip + + 48dp + + 48dp + + 42dp + + 24dip + + 48sp + + @dimen/navigation_bar_height + + 32dip + + 5dp + + + 104dp + + 52sp + + 16dp + + 64dp + + 52dp + + 800dp + + + 56dip + + 56dip + + 4dip + + 3dip + + 9dip + + + 270dp + + + 135dip + + + 75dip + + + 40dip + + + 15dip + + + 0dp + + 0dp + + 0dp + + 0dp + + 48dp + + 0dp + + 16dp + + 4 + + 6 + + 0dp + + 0dp + + 0dp + + 65% + + + 320dp + + 320dp + + 80% + + 100% + + + 0dp + + 16dip + 0x02000000 + + 0x02000000 + + 8dip + 8dip + 16dip + + + 95% + + + 64dp + + 64dp + + + 160dip + + + 320dip + + + 64dip + + 48dip + + + 48dip + + 8dip + + 18dp + + 14dp + + -3dp + + 5dip + + + 80dip + + + 14dip + + + 42dip + + + 22dip + + + 12dip + + + 40dip + + + 330dip + + + 200dip + + + 8dip + + + 8dip + + + 8dip + + + 32dip + + + 240dip + + + 80dp + + + 8dp + 8dp + 8dp + 8dp + + + 56dip + + + 48dp + + + 180dp + + + 14dp + + 18dp + + 12dp + + + + 600dp + + + 480dp + + + 0dp + + + 0dp + + + 75dp + + + 15dp + + + 13dp + + + 16dp + + + -16dp + + + 0dp + + + 0dp + + + 60dp + + + 46dp + + + 7dp + + + 2dp + + + 16dp + + + 0dp + + + 64dp + + + 0dp + + + 80dip + + + 320dp + + + 400dp + + + 8dp + + + 8dp + + + 2dp + + + 1dp + + + 66dp + + + 10sp + + + 24dp + + + 600dp + + + 160dp + + + 2dp + + + 2dp + + + 2dp + + + 2dp + + + -1px + diff --git a/res/values/pdnsd.xml b/orbotservice/src/main/res/values/pdnsd.xml similarity index 87% rename from res/values/pdnsd.xml rename to orbotservice/src/main/res/values/pdnsd.xml index 522f765a..a9ba34d7 100644 --- a/res/values/pdnsd.xml +++ b/orbotservice/src/main/res/values/pdnsd.xml @@ -1,6 +1,6 @@ - + global { perm_cache=0; cache_dir="/data/data/org.torproject.android/app_bin"; @@ -17,8 +17,8 @@ global { server { label= "upstream"; - ip = %s; - port = %d; + ip = %1$s; + port = %2$d; uptest = none; } diff --git a/res/values/strings.xml b/orbotservice/src/main/res/values/strings.xml similarity index 99% rename from res/values/strings.xml rename to orbotservice/src/main/res/values/strings.xml index 9f6431db..59fcb771 100644 --- a/res/values/strings.xml +++ b/orbotservice/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - + Orbot 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. diff --git a/orbotservice/src/main/res/values/styles.xml b/orbotservice/src/main/res/values/styles.xml new file mode 100644 index 00000000..b3fe8af4 --- /dev/null +++ b/orbotservice/src/main/res/values/styles.xml @@ -0,0 +1,5 @@ + + + + + + diff --git a/orbotservice/src/test/java/org/torproject/android/control/.cvsignore b/orbotservice/src/test/java/org/torproject/android/control/.cvsignore new file mode 100644 index 00000000..6b468b62 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/.cvsignore @@ -0,0 +1 @@ +*.class diff --git a/orbotservice/src/test/java/org/torproject/android/control/Bytes.java b/orbotservice/src/test/java/org/torproject/android/control/Bytes.java new file mode 100644 index 00000000..e754d907 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/Bytes.java @@ -0,0 +1,114 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.util.Arrays; +import java.util.List; + +/** + * Static class to do bytewise structure manipulation in Java. + */ +/* XXXX There must be a better way to do most of this. + * XXXX The string logic here uses default encoding, which is stupid. + */ +final class Bytes { + + /** Write the two-byte value in 's' into the byte array 'ba', starting at + * the index 'pos'. */ + public static void setU16(byte[] ba, int pos, short s) { + ba[pos] = (byte)((s >> 8) & 0xff); + ba[pos+1] = (byte)((s ) & 0xff); + } + + /** Write the four-byte value in 'i' into the byte array 'ba', starting at + * the index 'pos'. */ + public static void setU32(byte[] ba, int pos, int i) { + ba[pos] = (byte)((i >> 24) & 0xff); + ba[pos+1] = (byte)((i >> 16) & 0xff); + ba[pos+2] = (byte)((i >> 8) & 0xff); + ba[pos+3] = (byte)((i ) & 0xff); + } + + /** Return the four-byte value starting at index 'pos' within 'ba' */ + public static int getU32(byte[] ba, int pos) { + return + ((ba[pos ]&0xff)<<24) | + ((ba[pos+1]&0xff)<<16) | + ((ba[pos+2]&0xff)<< 8) | + ((ba[pos+3]&0xff)); + } + + public static String getU32S(byte[] ba, int pos) { + return String.valueOf( (getU32(ba,pos))&0xffffffffL ); + } + + /** Return the two-byte value starting at index 'pos' within 'ba' */ + public static int getU16(byte[] ba, int pos) { + return + ((ba[pos ]&0xff)<<8) | + ((ba[pos+1]&0xff)); + } + + /** Return the string starting at position 'pos' of ba and extending + * until a zero byte or the end of the string. */ + public static String getNulTerminatedStr(byte[] ba, int pos) { + int len, maxlen = ba.length-pos; + for (len=0; len lst, byte[] ba, int pos, byte split) { + while (pos < ba.length && ba[pos] != 0) { + int len; + for (len=0; pos+len < ba.length; ++len) { + if (ba[pos+len] == 0 || ba[pos+len] == split) + break; + } + if (len>0) + lst.add(new String(ba, pos, len)); + pos += len; + if (ba[pos] == split) + ++pos; + } + } + + /** + * Read bytes from 'ba' starting at 'pos', dividing them into strings + * along the character in 'split' and writing them into 'lst' + */ + public static List splitStr(List lst, String str) { + // split string on spaces, include trailing/leading + String[] tokenArray = str.split(" ", -1); + if (lst == null) { + lst = Arrays.asList( tokenArray ); + } else { + lst.addAll( Arrays.asList( tokenArray ) ); + } + return lst; + } + + private static final char[] NYBBLES = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' + }; + + public static final String hex(byte[] ba) { + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < ba.length; ++i) { + int b = (ba[i]) & 0xff; + buf.append(NYBBLES[b >> 4]); + buf.append(NYBBLES[b&0x0f]); + } + return buf.toString(); + } + + private Bytes() {}; +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java b/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java new file mode 100644 index 00000000..31eb4b8e --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java @@ -0,0 +1,20 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** A single key-value pair from Tor's configuration. */ +public class ConfigEntry { + public ConfigEntry(String k, String v) { + key = k; + value = v; + is_default = false; + } + public ConfigEntry(String k) { + key = k; + value = ""; + is_default = true; + } + public final String key; + public final String value; + public final boolean is_default; +} diff --git a/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java b/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java new file mode 100644 index 00000000..5a4e2b5b --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java @@ -0,0 +1,75 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** + * Abstract interface whose methods are invoked when Tor sends us an event. + * + * @see TorControlConnection#setEventHandler + * @see TorControlConnection#setEvents + */ +public interface EventHandler { + /** + * Invoked when a circuit's status has changed. + * Possible values for status are: + *
      + *
    • "LAUNCHED" : circuit ID assigned to new circuit
    • + *
    • "BUILT" : all hops finished, can now accept streams
    • + *
    • "EXTENDED" : one more hop has been completed
    • + *
    • "FAILED" : circuit closed (was not built)
    • + *
    • "CLOSED" : circuit closed (was built)
    • + *
    + * + * circID is the alphanumeric identifier of the affected circuit, + * and path is a comma-separated list of alphanumeric ServerIDs. + */ + public void circuitStatus(String status, String circID, String path); + /** + * Invoked when a stream's status has changed. + * Possible values for status are: + *
      + *
    • "NEW" : New request to connect
    • + *
    • "NEWRESOLVE" : New request to resolve an address
    • + *
    • "SENTCONNECT" : Sent a connect cell along a circuit
    • + *
    • "SENTRESOLVE" : Sent a resolve cell along a circuit
    • + *
    • "SUCCEEDED" : Received a reply; stream established
    • + *
    • "FAILED" : Stream failed and not retriable.
    • + *
    • "CLOSED" : Stream closed
    • + *
    • "DETACHED" : Detached from circuit; still retriable.
    • + *
    + * + * streamID is the alphanumeric identifier of the affected stream, + * and its target is specified as address:port. + */ + public void streamStatus(String status, String streamID, String target); + /** + * Invoked when the status of a connection to an OR has changed. + * Possible values for status are ["LAUNCHED" | "CONNECTED" | "FAILED" | "CLOSED"]. + * orName is the alphanumeric identifier of the OR affected. + */ + public void orConnStatus(String status, String orName); + /** + * Invoked once per second. read and written are + * the number of bytes read and written, respectively, in + * the last second. + */ + public void bandwidthUsed(long read, long written); + /** + * Invoked whenever Tor learns about new ORs. The orList object + * contains the alphanumeric ServerIDs associated with the new ORs. + */ + public void newDescriptors(java.util.List orList); + /** + * Invoked when Tor logs a message. + * severity is one of ["DEBUG" | "INFO" | "NOTICE" | "WARN" | "ERR"], + * and msg is the message string. + */ + public void message(String severity, String msg); + /** + * Invoked when an unspecified message is received. + * is the message type, and is the message string. + */ + public void unrecognized(String type, String msg); + +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/NullEventHandler.java b/orbotservice/src/test/java/org/torproject/android/control/NullEventHandler.java new file mode 100644 index 00000000..a2390e68 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/NullEventHandler.java @@ -0,0 +1,18 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** + * Implementation of EventHandler that ignores all events. Useful + * when you only want to override one method. + */ +public class NullEventHandler implements EventHandler { + public void circuitStatus(String status, String circID, String path) {} + public void streamStatus(String status, String streamID, String target) {} + public void orConnStatus(String status, String orName) {} + public void bandwidthUsed(long read, long written) {} + public void newDescriptors(java.util.List orList) {} + public void message(String severity, String msg) {} + public void unrecognized(String type, String msg) {} +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java b/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java new file mode 100644 index 00000000..03d0a98e --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java @@ -0,0 +1,98 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +/** + * A hashed digest of a secret password (used to set control connection + * security.) + * + * For the actual hashing algorithm, see RFC2440's secret-to-key conversion. + */ +public class PasswordDigest { + + private final byte[] secret; + private final String hashedKey; + + /** Return a new password digest with a random secret and salt. */ + public static PasswordDigest generateDigest() { + byte[] secret = new byte[20]; + SecureRandom rng = new SecureRandom(); + rng.nextBytes(secret); + return new PasswordDigest(secret); + } + + /** Construct a new password digest with a given secret and random salt */ + public PasswordDigest(byte[] secret) { + this(secret, null); + } + + /** Construct a new password digest with a given secret and random salt. + * Note that the 9th byte of the specifier determines the number of hash + * iterations as in RFC2440. + */ + public PasswordDigest(byte[] secret, byte[] specifier) { + this.secret = secret.clone(); + if (specifier == null) { + specifier = new byte[9]; + SecureRandom rng = new SecureRandom(); + rng.nextBytes(specifier); + specifier[8] = 96; + } + hashedKey = "16:"+encodeBytes(secretToKey(secret, specifier)); + } + + /** Return the secret used to generate this password hash. + */ + public byte[] getSecret() { + return secret.clone(); + } + + /** Return the hashed password in the format used by Tor. */ + public String getHashedPassword() { + return hashedKey; + } + + /** Parameter used by RFC2440's s2k algorithm. */ + private static final int EXPBIAS = 6; + + /** Implement rfc2440 s2k */ + public static byte[] secretToKey(byte[] secret, byte[] specifier) { + MessageDigest d; + try { + d = MessageDigest.getInstance("SHA-1"); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException("Can't run without sha-1."); + } + int c = (specifier[8])&0xff; + int count = (16 + (c&15)) << ((c>>4) + EXPBIAS); + + byte[] tmp = new byte[8+secret.length]; + System.arraycopy(specifier, 0, tmp, 0, 8); + System.arraycopy(secret, 0, tmp, 8, secret.length); + while (count > 0) { + if (count >= tmp.length) { + d.update(tmp); + count -= tmp.length; + } else { + d.update(tmp, 0, count); + count = 0; + } + } + byte[] key = new byte[20+9]; + System.arraycopy(d.digest(), 0, key, 9, 20); + System.arraycopy(specifier, 0, key, 0, 9); + return key; + } + + /** Return a hexadecimal encoding of a byte array. */ + // XXX There must be a better way to do this in Java. + private static final String encodeBytes(byte[] ba) { + return Bytes.hex(ba); + } + +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/README b/orbotservice/src/test/java/org/torproject/android/control/README new file mode 100644 index 00000000..b310c7d5 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/README @@ -0,0 +1,4 @@ +We broke the version detection stuff in Tor 0.1.2.16 / 0.2.0.4-alpha. +Somebody should rip out the v0 control protocol stuff from here, and +it should start working again. -RD + diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java new file mode 100644 index 00000000..c98a1c48 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java @@ -0,0 +1,148 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +/** Interface defining constants used by the Tor controller protocol. + */ +// XXXX Take documentation for these from control-spec.txt +public interface TorControlCommands { + + public static final short CMD_ERROR = 0x0000; + public static final short CMD_DONE = 0x0001; + public static final short CMD_SETCONF = 0x0002; + public static final short CMD_GETCONF = 0x0003; + public static final short CMD_CONFVALUE = 0x0004; + public static final short CMD_SETEVENTS = 0x0005; + public static final short CMD_EVENT = 0x0006; + public static final short CMD_AUTH = 0x0007; + public static final short CMD_SAVECONF = 0x0008; + public static final short CMD_SIGNAL = 0x0009; + public static final short CMD_MAPADDRESS = 0x000A; + public static final short CMD_GETINFO = 0x000B; + public static final short CMD_INFOVALUE = 0x000C; + public static final short CMD_EXTENDCIRCUIT = 0x000D; + public static final short CMD_ATTACHSTREAM = 0x000E; + public static final short CMD_POSTDESCRIPTOR = 0x000F; + public static final short CMD_FRAGMENTHEADER = 0x0010; + public static final short CMD_FRAGMENT = 0x0011; + public static final short CMD_REDIRECTSTREAM = 0x0012; + public static final short CMD_CLOSESTREAM = 0x0013; + public static final short CMD_CLOSECIRCUIT = 0x0014; + + public static final String[] CMD_NAMES = { + "ERROR", + "DONE", + "SETCONF", + "GETCONF", + "CONFVALUE", + "SETEVENTS", + "EVENT", + "AUTH", + "SAVECONF", + "SIGNAL", + "MAPADDRESS", + "GETINFO", + "INFOVALUE", + "EXTENDCIRCUIT", + "ATTACHSTREAM", + "POSTDESCRIPTOR", + "FRAGMENTHEADER", + "FRAGMENT", + "REDIRECTSTREAM", + "CLOSESTREAM", + "CLOSECIRCUIT", + }; + + public static final short EVENT_CIRCSTATUS = 0x0001; + public static final short EVENT_STREAMSTATUS = 0x0002; + public static final short EVENT_ORCONNSTATUS = 0x0003; + public static final short EVENT_BANDWIDTH = 0x0004; + public static final short EVENT_NEWDESCRIPTOR = 0x0006; + public static final short EVENT_MSG_DEBUG = 0x0007; + public static final short EVENT_MSG_INFO = 0x0008; + public static final short EVENT_MSG_NOTICE = 0x0009; + public static final short EVENT_MSG_WARN = 0x000A; + public static final short EVENT_MSG_ERROR = 0x000B; + + public static final String[] EVENT_NAMES = { + "(0)", + "CIRC", + "STREAM", + "ORCONN", + "BW", + "OLDLOG", + "NEWDESC", + "DEBUG", + "INFO", + "NOTICE", + "WARN", + "ERR", + }; + + public static final byte CIRC_STATUS_LAUNCHED = 0x01; + public static final byte CIRC_STATUS_BUILT = 0x02; + public static final byte CIRC_STATUS_EXTENDED = 0x03; + public static final byte CIRC_STATUS_FAILED = 0x04; + public static final byte CIRC_STATUS_CLOSED = 0x05; + + public static final String[] CIRC_STATUS_NAMES = { + "LAUNCHED", + "BUILT", + "EXTENDED", + "FAILED", + "CLOSED", + }; + + public static final byte STREAM_STATUS_SENT_CONNECT = 0x00; + public static final byte STREAM_STATUS_SENT_RESOLVE = 0x01; + public static final byte STREAM_STATUS_SUCCEEDED = 0x02; + public static final byte STREAM_STATUS_FAILED = 0x03; + public static final byte STREAM_STATUS_CLOSED = 0x04; + public static final byte STREAM_STATUS_NEW_CONNECT = 0x05; + public static final byte STREAM_STATUS_NEW_RESOLVE = 0x06; + public static final byte STREAM_STATUS_DETACHED = 0x07; + + public static final String[] STREAM_STATUS_NAMES = { + "SENT_CONNECT", + "SENT_RESOLVE", + "SUCCEEDED", + "FAILED", + "CLOSED", + "NEW_CONNECT", + "NEW_RESOLVE", + "DETACHED" + }; + + public static final byte OR_CONN_STATUS_LAUNCHED = 0x00; + public static final byte OR_CONN_STATUS_CONNECTED = 0x01; + public static final byte OR_CONN_STATUS_FAILED = 0x02; + public static final byte OR_CONN_STATUS_CLOSED = 0x03; + + public static final String[] OR_CONN_STATUS_NAMES = { + "LAUNCHED","CONNECTED","FAILED","CLOSED" + }; + + public static final byte SIGNAL_HUP = 0x01; + public static final byte SIGNAL_INT = 0x02; + public static final byte SIGNAL_USR1 = 0x0A; + public static final byte SIGNAL_USR2 = 0x0C; + public static final byte SIGNAL_TERM = 0x0F; + + public static final String ERROR_MSGS[] = { + "Unspecified error", + "Internal error", + "Unrecognized message type", + "Syntax error", + "Unrecognized configuration key", + "Invalid configuration value", + "Unrecognized byte code", + "Unauthorized", + "Failed authentication attempt", + "Resource exhausted", + "No such stream", + "No such circuit", + "No such OR", + }; + +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java new file mode 100644 index 00000000..204dbc06 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java @@ -0,0 +1,730 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.Reader; +import java.io.Writer; +import java.net.Socket; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; + +/** A connection to a running Tor process as specified in control-spec.txt. */ +public class TorControlConnection implements TorControlCommands { + + private final LinkedList waiters; + private final BufferedReader input; + private final Writer output; + + private ControlParseThread thread; // Locking: this + + private volatile EventHandler handler; + private volatile PrintWriter debugOutput; + private volatile IOException parseThreadException; + + static class Waiter { + + List response; // Locking: this + + synchronized List getResponse() throws InterruptedException { + while (response == null) { + wait(); + } + return response; + } + + synchronized void setResponse(List response) { + this.response = response; + notifyAll(); + } + } + + static class ReplyLine { + + final String status; + final String msg; + final String rest; + + ReplyLine(String status, String msg, String rest) { + this.status = status; this.msg = msg; this.rest = rest; + } + } + + /** Create a new TorControlConnection to communicate with Tor over + * a given socket. After calling this constructor, it is typical to + * call launchThread and authenticate. */ + public TorControlConnection(Socket connection) throws IOException { + this(connection.getInputStream(), connection.getOutputStream()); + } + + /** Create a new TorControlConnection to communicate with Tor over + * an arbitrary pair of data streams. + */ + public TorControlConnection(InputStream i, OutputStream o) { + this(new InputStreamReader(i), new OutputStreamWriter(o)); + } + + public TorControlConnection(Reader i, Writer o) { + this.output = o; + if (i instanceof BufferedReader) + this.input = (BufferedReader) i; + else + this.input = new BufferedReader(i); + this.waiters = new LinkedList(); + } + + protected final void writeEscaped(String s) throws IOException { + StringTokenizer st = new StringTokenizer(s, "\n"); + while (st.hasMoreTokens()) { + String line = st.nextToken(); + if (line.startsWith(".")) + line = "."+line; + if (line.endsWith("\r")) + line += "\n"; + else + line += "\r\n"; + if (debugOutput != null) + debugOutput.print(">> "+line); + output.write(line); + } + output.write(".\r\n"); + if (debugOutput != null) + debugOutput.print(">> .\n"); + } + + protected static final String quote(String s) { + StringBuffer sb = new StringBuffer("\""); + for (int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + switch (c) + { + case '\r': + case '\n': + case '\\': + case '\"': + sb.append('\\'); + } + sb.append(c); + } + sb.append('\"'); + return sb.toString(); + } + + protected final ArrayList readReply() throws IOException { + ArrayList reply = new ArrayList(); + char c; + do { + String line = input.readLine(); + if (line == null) { + // if line is null, the end of the stream has been reached, i.e. + // the connection to Tor has been closed! + if (reply.isEmpty()) { + // nothing received so far, can exit cleanly + return reply; + } + // received half of a reply before the connection broke down + throw new TorControlSyntaxError("Connection to Tor " + + " broke down while receiving reply!"); + } + if (debugOutput != null) + debugOutput.println("<< "+line); + if (line.length() < 4) + throw new TorControlSyntaxError("Line (\""+line+"\") too short"); + String status = line.substring(0,3); + c = line.charAt(3); + String msg = line.substring(4); + String rest = null; + if (c == '+') { + StringBuffer data = new StringBuffer(); + while (true) { + line = input.readLine(); + if (debugOutput != null) + debugOutput.print("<< "+line); + if (line.equals(".")) + break; + else if (line.startsWith(".")) + line = line.substring(1); + data.append(line).append('\n'); + } + rest = data.toString(); + } + reply.add(new ReplyLine(status, msg, rest)); + } while (c != ' '); + + return reply; + } + + protected synchronized List sendAndWaitForResponse(String s, + String rest) throws IOException { + if(parseThreadException != null) throw parseThreadException; + checkThread(); + Waiter w = new Waiter(); + if (debugOutput != null) + debugOutput.print(">> "+s); + synchronized (waiters) { + output.write(s); + if (rest != null) + writeEscaped(rest); + output.flush(); + waiters.addLast(w); + } + List lst; + try { + lst = w.getResponse(); + } catch (InterruptedException ex) { + throw new IOException("Interrupted"); + } + for (Iterator i = lst.iterator(); i.hasNext(); ) { + ReplyLine c = i.next(); + if (! c.status.startsWith("2")) + throw new TorControlError("Error reply: "+c.msg); + } + return lst; + } + + /** Helper: decode a CMD_EVENT command and dispatch it to our + * EventHandler (if any). */ + protected void handleEvent(ArrayList events) { + if (handler == null) + return; + + for (Iterator i = events.iterator(); i.hasNext(); ) { + ReplyLine line = i.next(); + int idx = line.msg.indexOf(' '); + String tp = line.msg.substring(0, idx).toUpperCase(); + String rest = line.msg.substring(idx+1); + if (tp.equals("CIRC")) { + List lst = Bytes.splitStr(null, rest); + handler.circuitStatus(lst.get(1), + lst.get(0), + lst.get(1).equals("LAUNCHED") + || lst.size() < 3 ? "" + : lst.get(2)); + } else if (tp.equals("STREAM")) { + List lst = Bytes.splitStr(null, rest); + handler.streamStatus(lst.get(1), + lst.get(0), + lst.get(3)); + // XXXX circID. + } else if (tp.equals("ORCONN")) { + List lst = Bytes.splitStr(null, rest); + handler.orConnStatus(lst.get(1), lst.get(0)); + } else if (tp.equals("BW")) { + List lst = Bytes.splitStr(null, rest); + handler.bandwidthUsed(Integer.parseInt(lst.get(0)), + Integer.parseInt(lst.get(1))); + } else if (tp.equals("NEWDESC")) { + List lst = Bytes.splitStr(null, rest); + handler.newDescriptors(lst); + } else if (tp.equals("DEBUG") || + tp.equals("INFO") || + tp.equals("NOTICE") || + tp.equals("WARN") || + tp.equals("ERR")) { + handler.message(tp, rest); + } else { + handler.unrecognized(tp, rest); + } + } + } + + + /** Sets w as the PrintWriter for debugging output, + * which writes out all messages passed between Tor and the controller. + * Outgoing messages are preceded by "\>\>" and incoming messages are preceded + * by "\<\<" + */ + public void setDebugging(PrintWriter w) { + debugOutput = w; + } + + /** Sets s as the PrintStream for debugging output, + * which writes out all messages passed between Tor and the controller. + * Outgoing messages are preceded by "\>\>" and incoming messages are preceded + * by "\<\<" + */ + public void setDebugging(PrintStream s) { + debugOutput = new PrintWriter(s, true); + } + + /** Set the EventHandler object that will be notified of any + * events Tor delivers to this connection. To make Tor send us + * events, call setEvents(). */ + public void setEventHandler(EventHandler handler) { + this.handler = handler; + } + + /** + * Start a thread to react to Tor's responses in the background. + * This is necessary to handle asynchronous events and synchronous + * responses that arrive independantly over the same socket. + */ + public synchronized Thread launchThread(boolean daemon) { + ControlParseThread th = new ControlParseThread(); + if (daemon) + th.setDaemon(true); + th.start(); + this.thread = th; + return th; + } + + protected class ControlParseThread extends Thread { + + @Override + public void run() { + try { + react(); + } catch (IOException ex) { + parseThreadException = ex; + } + } + } + + protected synchronized void checkThread() { + if (thread == null) + launchThread(true); + } + + /** helper: implement the main background loop. */ + protected void react() throws IOException { + while (true) { + ArrayList lst = readReply(); + if (lst.isEmpty()) { + // connection has been closed remotely! end the loop! + return; + } + if ((lst.get(0)).status.startsWith("6")) + handleEvent(lst); + else { + synchronized (waiters) { + if (!waiters.isEmpty()) + { + Waiter w; + w = waiters.removeFirst(); + w.setResponse(lst); + } + } + + } + } + } + + /** Change the value of the configuration option 'key' to 'val'. + */ + public void setConf(String key, String value) throws IOException { + List lst = new ArrayList(); + lst.add(key+" "+value); + setConf(lst); + } + + /** Change the values of the configuration options stored in kvMap. */ + public void setConf(Map kvMap) throws IOException { + List lst = new ArrayList(); + for (Iterator> it = kvMap.entrySet().iterator(); it.hasNext(); ) { + Map.Entry ent = it.next(); + lst.add(ent.getKey()+" "+ent.getValue()+"\n"); + } + setConf(lst); + } + + /** Changes the values of the configuration options stored in + * kvList. Each list element in kvList is expected to be + * String of the format "key value". + * + * Tor behaves as though it had just read each of the key-value pairs + * from its configuration file. Keywords with no corresponding values have + * their configuration values reset to their defaults. setConf is + * all-or-nothing: if there is an error in any of the configuration settings, + * Tor sets none of them. + * + * When a configuration option takes multiple values, or when multiple + * configuration keys form a context-sensitive group (see getConf below), then + * setting any of the options in a setConf command is taken to reset all of + * the others. For example, if two ORBindAddress values are configured, and a + * command arrives containing a single ORBindAddress value, the new + * command's value replaces the two old values. + * + * To remove all settings for a given option entirely (and go back to its + * default value), include a String in kvList containing the key and no value. + */ + public void setConf(Collection kvList) throws IOException { + if (kvList.size() == 0) + return; + StringBuffer b = new StringBuffer("SETCONF"); + for (Iterator it = kvList.iterator(); it.hasNext(); ) { + String kv = it.next(); + int i = kv.indexOf(' '); + if (i == -1) + b.append(" ").append(kv); + b.append(" ").append(kv.substring(0,i)).append("=") + .append(quote(kv.substring(i+1))); + } + b.append("\r\n"); + sendAndWaitForResponse(b.toString(), null); + } + + /** Try to reset the values listed in the collection 'keys' to their + * default values. + **/ + public void resetConf(Collection keys) throws IOException { + if (keys.size() == 0) + return; + StringBuffer b = new StringBuffer("RESETCONF"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + String key = it.next(); + b.append(" ").append(key); + } + b.append("\r\n"); + sendAndWaitForResponse(b.toString(), null); + } + + /** Return the value of the configuration option 'key' */ + public List getConf(String key) throws IOException { + List lst = new ArrayList(); + lst.add(key); + return getConf(lst); + } + + /** Requests the values of the configuration variables listed in keys. + * Results are returned as a list of ConfigEntry objects. + * + * If an option appears multiple times in the configuration, all of its + * key-value pairs are returned in order. + * + * Some options are context-sensitive, and depend on other options with + * different keywords. These cannot be fetched directly. Currently there + * is only one such option: clients should use the "HiddenServiceOptions" + * virtual keyword to get all HiddenServiceDir, HiddenServicePort, + * HiddenServiceNodes, and HiddenServiceExcludeNodes option settings. + */ + public List getConf(Collection keys) throws IOException { + StringBuffer sb = new StringBuffer("GETCONF"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + String key = it.next(); + sb.append(" ").append(key); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + List result = new ArrayList(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + String kv = (it.next()).msg; + int idx = kv.indexOf('='); + if (idx >= 0) + result.add(new ConfigEntry(kv.substring(0, idx), + kv.substring(idx+1))); + else + result.add(new ConfigEntry(kv)); + } + return result; + } + + /** Request that the server inform the client about interesting events. + * Each element of events is one of the following Strings: + * ["CIRC" | "STREAM" | "ORCONN" | "BW" | "DEBUG" | + * "INFO" | "NOTICE" | "WARN" | "ERR" | "NEWDESC" | "ADDRMAP"] . + * + * Any events not listed in the events are turned off; thus, calling + * setEvents with an empty events argument turns off all event reporting. + */ + public void setEvents(List events) throws IOException { + StringBuffer sb = new StringBuffer("SETEVENTS"); + for (Iterator it = events.iterator(); it.hasNext(); ) { + sb.append(" ").append(it.next()); + } + sb.append("\r\n"); + sendAndWaitForResponse(sb.toString(), null); + } + + /** Authenticates the controller to the Tor server. + * + * By default, the current Tor implementation trusts all local users, and + * the controller can authenticate itself by calling authenticate(new byte[0]). + * + * If the 'CookieAuthentication' option is true, Tor writes a "magic cookie" + * file named "control_auth_cookie" into its data directory. To authenticate, + * the controller must send the contents of this file in auth. + * + * If the 'HashedControlPassword' option is set, auth must contain the salted + * hash of a secret password. The salted hash is computed according to the + * S2K algorithm in RFC 2440 (OpenPGP), and prefixed with the s2k specifier. + * This is then encoded in hexadecimal, prefixed by the indicator sequence + * "16:". + * + * You can generate the salt of a password by calling + * 'tor --hash-password ' + * or by using the provided PasswordDigest class. + * To authenticate under this scheme, the controller sends Tor the original + * secret that was used to generate the password. + */ + public void authenticate(byte[] auth) throws IOException { + String cmd = "AUTHENTICATE " + Bytes.hex(auth) + "\r\n"; + sendAndWaitForResponse(cmd, null); + } + + /** Instructs the server to write out its configuration options into its torrc. + */ + public void saveConf() throws IOException { + sendAndWaitForResponse("SAVECONF\r\n", null); + } + + /** Sends a signal from the controller to the Tor server. + * signal is one of the following Strings: + *
      + *
    • "RELOAD" or "HUP" : Reload config items, refetch directory
    • + *
    • "SHUTDOWN" or "INT" : Controlled shutdown: if server is an OP, exit immediately. + * If it's an OR, close listeners and exit after 30 seconds
    • + *
    • "DUMP" or "USR1" : Dump stats: log information about open connections and circuits
    • + *
    • "DEBUG" or "USR2" : Debug: switch all open logs to loglevel debug
    • + *
    • "HALT" or "TERM" : Immediate shutdown: clean up and exit now
    • + *
    + */ + public void signal(String signal) throws IOException { + String cmd = "SIGNAL " + signal + "\r\n"; + sendAndWaitForResponse(cmd, null); + } + + /** Send a signal to the Tor process to shut it down or halt it. + * Does not wait for a response. */ + public void shutdownTor(String signal) throws IOException { + String s = "SIGNAL " + signal + "\r\n"; + Waiter w = new Waiter(); + if (debugOutput != null) + debugOutput.print(">> "+s); + synchronized (waiters) { + output.write(s); + output.flush(); + } + } + + /** Tells the Tor server that future SOCKS requests for connections to a set of original + * addresses should be replaced with connections to the specified replacement + * addresses. Each element of kvLines is a String of the form + * "old-address new-address". This function returns the new address mapping. + * + * The client may decline to provide a body for the original address, and + * instead send a special null address ("0.0.0.0" for IPv4, "::0" for IPv6, or + * "." for hostname), signifying that the server should choose the original + * address itself, and return that address in the reply. The server + * should ensure that it returns an element of address space that is unlikely + * to be in actual use. If there is already an address mapped to the + * destination address, the server may reuse that mapping. + * + * If the original address is already mapped to a different address, the old + * mapping is removed. If the original address and the destination address + * are the same, the server removes any mapping in place for the original + * address. + * + * Mappings set by the controller last until the Tor process exits: + * they never expire. If the controller wants the mapping to last only + * a certain time, then it must explicitly un-map the address when that + * time has elapsed. + */ + public Map mapAddresses(Collection kvLines) throws IOException { + StringBuffer sb = new StringBuffer("MAPADDRESS"); + for (Iterator it = kvLines.iterator(); it.hasNext(); ) { + String kv = it.next(); + int i = kv.indexOf(' '); + sb.append(" ").append(kv.substring(0,i)).append("=") + .append(quote(kv.substring(i+1))); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + Map result = new HashMap(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + String kv = (it.next()).msg; + int idx = kv.indexOf('='); + result.put(kv.substring(0, idx), + kv.substring(idx+1)); + } + return result; + } + + public Map mapAddresses(Map addresses) throws IOException { + List kvList = new ArrayList(); + for (Iterator> it = addresses.entrySet().iterator(); it.hasNext(); ) { + Map.Entry e = it.next(); + kvList.add(e.getKey()+" "+e.getValue()); + } + return mapAddresses(kvList); + } + + public String mapAddress(String fromAddr, String toAddr) throws IOException { + List lst = new ArrayList(); + lst.add(fromAddr+" "+toAddr+"\n"); + Map m = mapAddresses(lst); + return m.get(fromAddr); + } + + /** Queries the Tor server for keyed values that are not stored in the torrc + * configuration file. Returns a map of keys to values. + * + * Recognized keys include: + *
      + *
    • "version" : The version of the server's software, including the name + * of the software. (example: "Tor 0.0.9.4")
    • + *
    • "desc/id/" or "desc/name/" : the latest server + * descriptor for a given OR, NUL-terminated. If no such OR is known, the + * corresponding value is an empty string.
    • + *
    • "network-status" : a space-separated list of all known OR identities. + * This is in the same format as the router-status line in directories; + * see tor-spec.txt for details.
    • + *
    • "addr-mappings/all"
    • + *
    • "addr-mappings/config"
    • + *
    • "addr-mappings/cache"
    • + *
    • "addr-mappings/control" : a space-separated list of address mappings, each + * in the form of "from-address=to-address". The 'config' key + * returns those address mappings set in the configuration; the 'cache' + * key returns the mappings in the client-side DNS cache; the 'control' + * key returns the mappings set via the control interface; the 'all' + * target returns the mappings set through any mechanism.
    • + *
    • "circuit-status" : A series of lines as for a circuit status event. Each line is of the form: + * "CircuitID CircStatus Path"
    • + *
    • "stream-status" : A series of lines as for a stream status event. Each is of the form: + * "StreamID StreamStatus CircID Target"
    • + *
    • "orconn-status" : A series of lines as for an OR connection status event. Each is of the + * form: "ServerID ORStatus"
    • + *
    + */ + public Map getInfo(Collection keys) throws IOException { + StringBuffer sb = new StringBuffer("GETINFO"); + for (Iterator it = keys.iterator(); it.hasNext(); ) { + sb.append(" ").append(it.next()); + } + sb.append("\r\n"); + List lst = sendAndWaitForResponse(sb.toString(), null); + Map m = new HashMap(); + for (Iterator it = lst.iterator(); it.hasNext(); ) { + ReplyLine line = it.next(); + int idx = line.msg.indexOf('='); + if (idx<0) + break; + String k = line.msg.substring(0,idx); + String v; + if (line.rest != null) { + v = line.rest; + } else { + v = line.msg.substring(idx+1); + } + m.put(k, v); + } + return m; + } + + + + /** Return the value of the information field 'key' */ + public String getInfo(String key) throws IOException { + List lst = new ArrayList(); + lst.add(key); + Map m = getInfo(lst); + return m.get(key); + } + + /** An extendCircuit request takes one of two forms: either the circID is zero, in + * which case it is a request for the server to build a new circuit according + * to the specified path, or the circID is nonzero, in which case it is a + * request for the server to extend an existing circuit with that ID according + * to the specified path. + * + * If successful, returns the Circuit ID of the (maybe newly created) circuit. + */ + public String extendCircuit(String circID, String path) throws IOException { + List lst = sendAndWaitForResponse( + "EXTENDCIRCUIT "+circID+" "+path+"\r\n", null); + return (lst.get(0)).msg; + } + + /** Informs the Tor server that the stream specified by streamID should be + * associated with the circuit specified by circID. + * + * Each stream may be associated with + * at most one circuit, and multiple streams may share the same circuit. + * Streams can only be attached to completed circuits (that is, circuits that + * have sent a circuit status "BUILT" event or are listed as built in a + * getInfo circuit-status request). + * + * If circID is 0, responsibility for attaching the given stream is + * returned to Tor. + * + * By default, Tor automatically attaches streams to + * circuits itself, unless the configuration variable + * "__LeaveStreamsUnattached" is set to "1". Attempting to attach streams + * via TC when "__LeaveStreamsUnattached" is false may cause a race between + * Tor and the controller, as both attempt to attach streams to circuits. + */ + public void attachStream(String streamID, String circID) + throws IOException { + sendAndWaitForResponse("ATTACHSTREAM "+streamID+" "+circID+"\r\n", null); + } + + /** Tells Tor about the server descriptor in desc. + * + * The descriptor, when parsed, must contain a number of well-specified + * fields, including fields for its nickname and identity. + */ + // More documentation here on format of desc? + // No need for return value? control-spec.txt says reply is merely "250 OK" on success... + public String postDescriptor(String desc) throws IOException { + List lst = sendAndWaitForResponse("+POSTDESCRIPTOR\r\n", desc); + return (lst.get(0)).msg; + } + + /** Tells Tor to change the exit address of the stream identified by streamID + * to address. No remapping is performed on the new provided address. + * + * To be sure that the modified address will be used, this event must be sent + * after a new stream event is received, and before attaching this stream to + * a circuit. + */ + public void redirectStream(String streamID, String address) throws IOException { + sendAndWaitForResponse("REDIRECTSTREAM "+streamID+" "+address+"\r\n", + null); + } + + /** Tells Tor to close the stream identified by streamID. + * reason should be one of the Tor RELAY_END reasons given in tor-spec.txt, as a decimal: + *
      + *
    • 1 -- REASON_MISC (catch-all for unlisted reasons)
    • + *
    • 2 -- REASON_RESOLVEFAILED (couldn't look up hostname)
    • + *
    • 3 -- REASON_CONNECTREFUSED (remote host refused connection)
    • + *
    • 4 -- REASON_EXITPOLICY (OR refuses to connect to host or port)
    • + *
    • 5 -- REASON_DESTROY (Circuit is being destroyed)
    • + *
    • 6 -- REASON_DONE (Anonymized TCP connection was closed)
    • + *
    • 7 -- REASON_TIMEOUT (Connection timed out, or OR timed out while connecting)
    • + *
    • 8 -- (unallocated)
    • + *
    • 9 -- REASON_HIBERNATING (OR is temporarily hibernating)
    • + *
    • 10 -- REASON_INTERNAL (Internal error at the OR)
    • + *
    • 11 -- REASON_RESOURCELIMIT (OR has no resources to fulfill request)
    • + *
    • 12 -- REASON_CONNRESET (Connection was unexpectedly reset)
    • + *
    • 13 -- REASON_TORPROTOCOL (Sent when closing connection because of Tor protocol violations)
    • + *
    + * + * Tor may hold the stream open for a while to flush any data that is pending. + */ + public void closeStream(String streamID, byte reason) + throws IOException { + sendAndWaitForResponse("CLOSESTREAM "+streamID+" "+reason+"\r\n",null); + } + + /** Tells Tor to close the circuit identified by circID. + * If ifUnused is true, do not close the circuit unless it is unused. + */ + public void closeCircuit(String circID, boolean ifUnused) throws IOException { + sendAndWaitForResponse("CLOSECIRCUIT "+circID+ + (ifUnused?" IFUNUSED":"")+"\r\n", null); + } +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java new file mode 100644 index 00000000..d07ee514 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java @@ -0,0 +1,39 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.IOException; + +/** + * An exception raised when Tor tells us about an error. + */ +public class TorControlError extends IOException { + + static final long serialVersionUID = 3; + + private final int errorType; + + public TorControlError(int type, String s) { + super(s); + errorType = type; + } + + public TorControlError(String s) { + this(-1, s); + } + + public int getErrorType() { + return errorType; + } + + public String getErrorMsg() { + try { + if (errorType == -1) + return null; + return TorControlCommands.ERROR_MSGS[errorType]; + } catch (ArrayIndexOutOfBoundsException ex) { + return "Unrecongized error #"+errorType; + } + } +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java new file mode 100644 index 00000000..dba4f44b --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java @@ -0,0 +1,16 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control; + +import java.io.IOException; + +/** + * An exception raised when Tor behaves in an unexpected way. + */ +public class TorControlSyntaxError extends IOException { + + static final long serialVersionUID = 3; + + public TorControlSyntaxError(String s) { super(s); } +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore b/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore new file mode 100644 index 00000000..6b468b62 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore @@ -0,0 +1 @@ +*.class diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java b/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java new file mode 100644 index 00000000..48c49a28 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java @@ -0,0 +1,44 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control.examples; + +import java.io.PrintWriter; +import java.util.Iterator; +import org.torproject.android.control.EventHandler; + +public class DebuggingEventHandler implements EventHandler { + + private final PrintWriter out; + + public DebuggingEventHandler(PrintWriter p) { + out = p; + } + + public void circuitStatus(String status, String circID, String path) { + out.println("Circuit "+circID+" is now "+status+" (path="+path+")"); + } + public void streamStatus(String status, String streamID, String target) { + out.println("Stream "+streamID+" is now "+status+" (target="+target+")"); + } + public void orConnStatus(String status, String orName) { + out.println("OR connection to "+orName+" is now "+status); + } + public void bandwidthUsed(long read, long written) { + out.println("Bandwidth usage: "+read+" bytes read; "+ + written+" bytes written."); + } + public void newDescriptors(java.util.List orList) { + out.println("New descriptors for routers:"); + for (Iterator i = orList.iterator(); i.hasNext(); ) + out.println(" "+i.next()); + } + public void message(String type, String msg) { + out.println("["+type+"] "+msg.trim()); + } + + public void unrecognized(String type, String msg) { + out.println("unrecognized event ["+type+"] "+msg.trim()); + } + +} + diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java b/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java new file mode 100644 index 00000000..b0e0a3c0 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java @@ -0,0 +1,146 @@ +// Copyright 2005 Nick Mathewson, Roger Dingledine +// See LICENSE file for copying information +package org.torproject.android.control.examples; + +import org.torproject.android.control.*; +import java.io.EOFException; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.ArrayList; +import java.util.List; +import java.util.Arrays; +import java.util.Map; +import java.util.Iterator; + +public class Main implements TorControlCommands { + + public static void main(String args[]) { + if (args.length < 1) { + System.err.println("No command given."); + return; + } + try { + if (args[0].equals("set-config")) { + setConfig(args); + } else if (args[0].equals("get-config")) { + getConfig(args); + } else if (args[0].equals("get-info")) { + getInfo(args); + } else if (args[0].equals("listen")) { + listenForEvents(args); + } else if (args[0].equals("signal")) { + signal(args); + } else if (args[0].equals("auth")) { + authDemo(args); + } else { + System.err.println("Unrecognized command: "+args[0]); + } + } catch (EOFException ex) { + System.out.println("Control socket closed by Tor."); + } catch (TorControlError ex) { + System.err.println("Error from Tor process: "+ + ex+" ["+ex.getErrorMsg()+"]"); + } catch (IOException ex) { + System.err.println("IO exception when talking to Tor process: "+ + ex); + ex.printStackTrace(System.err); + } + } + + private static TorControlConnection getConnection(String[] args, + boolean daemon) throws IOException { + Socket s = new Socket("127.0.0.1", 9100); + TorControlConnection conn = new TorControlConnection(s); + conn.launchThread(daemon); + conn.authenticate(new byte[0]); + return conn; + } + + private static TorControlConnection getConnection(String[] args) + throws IOException { + return getConnection(args, true); + } + + public static void setConfig(String[] args) throws IOException { + // Usage: "set-config [-save] key value key value key value" + TorControlConnection conn = getConnection(args); + ArrayList lst = new ArrayList(); + int i = 1; + boolean save = false; + if (args[i].equals("-save")) { + save = true; + ++i; + } + for (; i < args.length; i +=2) { + lst.add(args[i]+" "+args[i+1]); + } + conn.setConf(lst); + if (save) { + conn.saveConf(); + } + } + + public static void getConfig(String[] args) throws IOException { + // Usage: get-config key key key + TorControlConnection conn = getConnection(args); + List lst = conn.getConf(Arrays.asList(args).subList(1,args.length)); + for (Iterator i = lst.iterator(); i.hasNext(); ) { + ConfigEntry e = i.next(); + System.out.println("KEY: "+e.key); + System.out.println("VAL: "+e.value); + } + } + + public static void getInfo(String[] args) throws IOException { + TorControlConnection conn = getConnection(args); + Map m = conn.getInfo(Arrays.asList(args).subList(1,args.length)); + for (Iterator> i = m.entrySet().iterator(); i.hasNext(); ) { + Map.Entry e = i.next(); + System.out.println("KEY: "+e.getKey()); + System.out.println("VAL: "+e.getValue()); + } + } + + public static void listenForEvents(String[] args) throws IOException { + // Usage: listen [circ|stream|orconn|bw|newdesc|info|notice|warn|error]* + TorControlConnection conn = getConnection(args, false); + ArrayList lst = new ArrayList(); + for (int i = 1; i < args.length; ++i) { + lst.add(args[i]); + } + conn.setEventHandler( + new DebuggingEventHandler(new PrintWriter(System.out, true))); + conn.setEvents(lst); + } + + public static void signal(String[] args) throws IOException { + // Usage signal [reload|shutdown|dump|debug|halt] + TorControlConnection conn = getConnection(args, false); + // distinguish shutdown signal from other signals + if ("SHUTDOWN".equalsIgnoreCase(args[1]) + || "HALT".equalsIgnoreCase(args[1])) { + conn.shutdownTor(args[1].toUpperCase()); + } else { + conn.signal(args[1].toUpperCase()); + } + } + + public static void authDemo(String[] args) throws IOException { + + PasswordDigest pwd = PasswordDigest.generateDigest(); + Socket s = new Socket("127.0.0.1", 9100); + TorControlConnection conn = new TorControlConnection(s); + conn.launchThread(true); + conn.authenticate(new byte[0]); + + conn.setConf("HashedControlPassword", pwd.getHashedPassword()); + + s = new Socket("127.0.0.1", 9100); + conn = new TorControlConnection(s); + conn.launchThread(true); + conn.authenticate(pwd.getSecret()); + } + +} + diff --git a/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java b/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java new file mode 100644 index 00000000..578fa4b9 --- /dev/null +++ b/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java @@ -0,0 +1,15 @@ +package org.torproject.android.service; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * To work on unit tests, switch the Test Artifact in the Build Variants view. + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/project.properties b/project.properties index 42f3e5e5..145c9f25 100644 --- a/project.properties +++ b/project.properties @@ -10,6 +10,5 @@ # Project target. target=android-23 -android.library.reference.1=external/superuser-commands/RootCommands-Library -android.library.reference.2=external/jsocks/jsockslib -android.library.reference.3=external/appcompat +android.library.reference.1=external/jsocks/jsockslib +android.library.reference.2=external/appcompat diff --git a/res/values-de-rAT/strings.xml b/res/values-de-rAT/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-de-rAT/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml deleted file mode 100644 index 81e8de1d..00000000 --- a/res/values-en-rGB/strings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - Next - - - - - - - - - - - - - - - diff --git a/res/values-he b/res/values-he deleted file mode 120000 index 6fe8b495..00000000 --- a/res/values-he +++ /dev/null @@ -1 +0,0 @@ -values-iw \ No newline at end of file diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-hy-rAM/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-id b/res/values-id deleted file mode 120000 index 3e5fb5a7..00000000 --- a/res/values-id +++ /dev/null @@ -1 +0,0 @@ -values-in-rID \ No newline at end of file diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-kn-rIN/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-kn/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-lt-rLT/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-ml/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-mn/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-mr-rIN/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-ps/strings.xml b/res/values-ps/strings.xml deleted file mode 100644 index de5c3894..00000000 --- a/res/values-ps/strings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml deleted file mode 100644 index 78a8b29c..00000000 --- a/res/values-ru/strings.xml +++ /dev/null @@ -1,292 +0,0 @@ - - - Orbot - Orbot это бесплатное прокси приложение, которое позволяет другим приложениям безопаснее пользоваться Интернетом. Orbot использует Tor для шифрования вашего интернет-трафика, а затем прячет его перенаправливая через многочисленные компьютеры по всему миру. Тор является свободным программным обеспечением и открытой сетью, которая помогает вам защититься от сетевого надзора, угрожющий персональной свободе и приватности, конфиденциальности бизнес контактов и связей, а также общегосударственной безопасности, известный как анализ трафика. - http://orbot/ - http://check.torproject.org - https://check.torproject.org - https://check.torproject.org/?TorButton=true - запуск и остановка Tor - torproxyservice - Запуск Orbot... - Подключен к сети Tor - \"Orbot Отключен - TorService выключается - Запускается клиент Tor... - завершено. - ожидание. - ПРЕДУПРЕЖДЕНИЕ: Ваш трафик еще не анонимен! Пожалуйста, настройте свои приложения на использование HTTP прокси 127.0.0.1:8118 или же SOCKS4A или SOCKS5 прокси 127.0.0.1:9050 - Домашняя страница - Просмотр - Настройки - Журнал - Справка - VPN - Запустить - Остановить - О программе - Получить приложения... - Загрузить - Загрузить - Справка - Закрыть - О программе - Очистить журнал - Проверка - Выход - Сканировать BridgeQR - Опубликовать BridgeQR - - долгое нажатие для запуска - - Прозрачный прокси (Требуются root) - Прозрачный прокси - Автоматическая Tor-ификация Приложений - Направлять все через Tor - Направлять трафик всех приложений через Tor - Port Proxy Fallback - ПРЕДУПРЕЖДЕНИЕ: Обходит общие порты (80, 443, и т.д.). *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. - Список Портов - Список портов для проксификации. *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают. - Введите порты для проксификации - Запросить root доступ - Запросить root доступ для прозрачной проксификации - Программа Tor успешно установлена! - Не удалось установить программу Tor. Пожалуйста, проверьте системный журнал и сообщите нам: tor-assistants@torproject.org - Ошибка приложения - Orbot - Об Orbot - Вперед - Назад - Завершить - OK - Отмена - - Некоторые сведенья о программе Orbot - Orbot это применение с открытым исходным кодом, которое содержит Tor, Libevent и Polipo. Это обеспечивает локальный HTTP прокси (8118) и SOCKS прокси (9050) в сети Tor. На корневых устройствах Orbot способени отправить весь интернет-трафик через Tor. - Разрешение получено - Разрешения Orbot - Отлично! Мы определили, что вы предоставили root права для Orbot. Мы будем использовать эту возможность с умом. - Хотя это и не требуется, Orbot может быть более мощным инструментом, если ваше устройство имеет права root. Нажмите на кнопку ниже и дайте Orbot суперсилу! - Если у вас нет root прав или вы не имеете представления о чем мы говорим, просто убедитесь, что используете приложения, разработанные для Orbot. - Я понимаю и хочу продолжить без прав суперпользователя - Дать root права Orbot - Настроить Tor-ификацию - Программа Orbot дает вам возможность маршрутизировать трафик всех приложений через Tor ИЛИ выбрать приложения для маршрутизации самостоятельно. - Маршрутизировать все приложения через Tor - Выберите приложения для маршрутизации через Tor - Orbot-задействованные приложения - Мы советуем вам скачать и использовать приложения, которые умеют работать напрямую через Orbot. Нажмите на кнопки ниже, чтобы запустить процесс установки. - ChatSecure - Защищенный обмен сообщениями в Android - Настройки прокси - узнайте как настроить приложения для работы с Orbot - Приложение поисковой системы Duckduckgo - Twitter поддерживает http прокси \"localhost:8118\" - StoryMaker - Составьте рассказ и оставьте его Tor для обеспечения безопасности! - https://guardianproject.info/2012/05/02/orbot-your-twitter/ - Настройки Прокси - Если ваше приложение для Android, может поддерживать использование HTTP- или SOCKS прокси-сервер, то вы можете настроить его для подключения к Orbot и использовать Tor.\n\n\n Настройки хост 127.0.0.1 или \"локальный\". Для HTTP, настройка порта 8118. Для SOCKS прокси является 9050. Используйте SOCKS4A или SOCKS5, если возможно.\n \n\n\n Вы можете узнать больше о прокси на Android с помощью FAQ здесь: http://tinyurl.com/proxyandroid\n - Программа Orbot готова к использованию! - Миллионы людей во всем мире используют Tor по многочисленным причинам. Журналисты и блоггеры, правозащитники, сотрудники правоохранительных органов, солдаты, корпорации, граждане стран репрессивных режимов и просто обычные граждане ... а теперь готовы и вы ! - Пожалуйста, настройте Orbot прежде чем приступить к использованию! - - Вы успешно подключены к Tor сети - но это НЕ значит, что ваше устройство безопасно. Вы можете использовать кнопку \'Браузер\' для тестирования вашего соединения. \n\nПосетите нас на https://guardianproject.info/apps/orbot или отправьте письмо на help@guardianproject.info, чтобы узнать больше. - Это приведет к запуску веб-браузера, выбранного на вашем компьютере по-умолчанию, и подключению к сайту https://check.torproject.org, с целью проверки правильности работы Orbot и определения, подключены ли вы к сети Tor. - Скрытые сервисы - General - Start Orbot on Boot - Automatically start Orbot and connect Tor when your Android device boots - - - Orbot приносит Tor на Android! Tor поможет вам защититься от контентной фильтрации, анализа трафика и сетевого надзора, угрожабщий личной жизни, конфиденциальной информации и личных отношений. Эта программа поможет вам настроить Orbot и Tor на вашем устройстве. - - Предупреждение - Одна установка Orbot не сделает ваш мобильный трафик анонимным. Вы должны правильно настроить Orbot, устройство и другие приложения, чтобы успешно использовать Tor. - - Разрешения - Вы так же можете по желанию дать Orbot права \'Суперпользователь\' для доступа к продвинутым возможностям, типа Прозрачная Проксификация. - Если вы не хотите делать это, пожалуйста, удостоверьтесь, что используете приложения созданные для работы с Orbot. - Ваше устройство не рутованно или же не предоставляет рутинг или доступ к \"суперпользователю\". Пожалуйста, попробуйте режим \" Приложения\" на главном экране. - - Приложения, работающие с Orbot: - ChatSecure: приложение для общения с поддержкой Off-the-Record шифрования - Orfox: Браузер с повышенной приватностью, работающий через Tor - Найти все приложения Guardian Project на Google Play - Найти все приложения Guardian Project на F-Droid - Найти все приложения Guardian Project на сайте https://f-droid.org - - Прозрачное Проксирование - Это позволяет вашим приложениям автоматически работать по сети Tor без какого-либо конфигурирования. - (Отметьте данный пункт, если вы не знаете о чем идет речь) - Нет - Тетеринг Tor - Включить Прозрачную Проксификацию Tor для устройств с тетерингом по Wi-Fi и USB (требует перезапуска) - Запросить Доступ Суперпользователя - Выбранные приложения - Выбрать приложения для направления через Tor - Конфигурация узла - Это дополнительные настройки, которые могут снизить вашу анонимность - Входные узлы - Отпечатки, ники, страны и адреса для первого прыжка - Введите входные узлы - Разрешить фоновую загрузку - Позволить любому приложению говорить Orbot запустить Tor и относящиеся к нему сервисы - Проксировать Все - Не Проксировать - Инвертировать Выделенное - Исходящая прокси сеть - Тип Прокси - Протокол для использования прокси-сервером: HTTP, HTTPS, Socks4, Socks5 - Введите Тип Прокси - Хост Прокси - Имя хоста прокси-сервера - Введите Хост Прокси - Порт Прокси - Порт прокси-сервера - Введите порт Прокси - Имя пользователя для исходящего прокси-соединения - Имя пользователя для прокси-соединения (указывать не обязательно) - Введите Имя пользователя прокси-соединения - Пароль исходящего прокси-соединения - Пароль прокси-соединения (указывать не обязательно) - Введите пароль прокси-соединения - Статус - Установка общей прозрачной проксификации... - Установка основанной на приложениях прозрачной проксификации... - Прозрачная проксификация ВКЛЮЧЕНА - TransProxy поддерживает Тетеринг! - ВНИМАНИЕ: ошибка запуска прозрачной проксификации! - Правила TransProxy удалены - Невозможно запустить Tor: - Polipo работает на порту: - Установка основанной на портах прозрачной проксификации... - Ошибка Моста - Для использования моста, необходимо задать IP адрес как минимум одного моста. - Отправьте email на адрес bridges@torproject.org со строкой \"get bridges\" в теле сообщения из учетной записи gmail. - Ошибка - Ваши настройки Доступных Адресов вызвали исключение! - Настройки вашего ретранслятора вызвали исключение! - Выходные Узлы - Отпечатки, ники, страны и адреса для последнего прыжка - Введите Выходные Узлы - Исключенные Узлы - Отпечатки, ники, страны и адреса на исключение - Введите Исключенные Узлы - Точные Узлы - Использовать *только* эти заданные узлы - Мосты - Использовать Мосты - Обфусцированные Мосты - Включить альтернативные входные узлы в сеть Tor - Заданные мосты обфусцированы - IP адреса и порты мостов - Введите Адреса Мостов - Ретрансляторы - Ретрансляция - Разрешить вашему устройству быть невыходным ретранслятором - Порт ретранслятора - Слушающий порт для вашего ретранслятора Tor - Введите порт OR - Имя ретранслятора - Имя для вашего ретранслятора Tor - Введите пользовательское имя ретранслятора - Доступные Адреса - Запускать как клиент за брандмауэром с ограничивающими политиками - Доступные порты - Порты доступные из-за ограничительного брандмауэра - Введите порты - Включить Скрытые Службы - запустить сервера доступные через сеть Tor - введите локальные порты для скрытых служб - Порты Скрытой Службы - адресуемое имя для вашей скрытой службы (сгенерирован автоматически) - включить вывод лога отладки (требует использовать adb или aLogCat для просмотра) - Домашняя страниц(-а/-ы) проекта: - https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/ - Лицензия Tor - https://torproject.org - Программы сторонних разработчиков: - Tor: https://www.torproject.org - LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/ - Polipo v1.1.9: https://github.com/jech/polipo - IPtables v1.4.21: http://www.netfilter.org - OpenSSL v1.0.1q: http://www.openssl.org - Приложение хочет открыть скрытый порт сервера %S сети Tor. Это безопасно, если вы доверяете этому приложению. - найден существующий процесс Tor... - Произошла какая-то ошибка. Проверьте лог - скрытая служба на: - невозможно прочесть имя скрытой службы - Невозможно запустить Tor: - Перезагрузите устройство, невозможно переустановить Tor! - Использовать Iptables по умолчанию - использовать встроенный бинарник iptables вместо поставляемого с Orbot - Бинарные файлы Tor не смогли установиться или обновится. - Всегда отображать иконку в панели задач когда Orbot подключен - Уведомления о постоянной работе - Показать расширенное уведомление Tor с выходом страны и IP - Расширить Уведомления - Мосты включены! - - Язык - Выбрать локаль и язык для Orbot - Выбрать Язык - Оставить по умолчанию или переключить текущий язык - основанно Tor - Сохранить Настройки - Нет соединения с интернетом; Тор в режиме ожидания ... - Канал: - вх - исх - Не использовать режим сна - Переводить в режим сна при отсутствии интернет-соединения - Вы переключились на новый идентификатор Tor! - Браузер - Использовать ChatSecure - Управление Tor - Разрешить приложению управлять сервисом Tor - Не кажется, что у вас установлен Orfox. Хотите помощи с этим или просто открыть браузер? - Установить приложения? - Нет подключения к сети. Tor входит в режим сна ... - Подключение к сети установленно.Tor просыпается ... - обновление настроек в Tor сервисе - Tor SOCKS - Порт, где Тор предлагает свой SOCKS прокси-сервер на (по умолчанию: 9050 или 0, чтобы отключить) - SOCKS Порт Конфигурации - Tor TransProxy Порт - Порт, который Тор предлагает свою Прозрачную прокси (по умолчанию: 9040 или 0, чтобы отключить) - TransProxy Порт Конфигурации - Tor DNS Порт - Порт Тор который предлагает свой DNS (по умолчанию: 5400 или 0, чтобы отключить) - DNS Port Конфигурации - Torrc Пользовательские конфигурации - ТОЛЬКО ЭКСПЕРТЫ : ввести прямые линии конфигурации torrc - Пользовательские Torrc - Mobile Martus - приложение Benetech Документация по Правам Человека - Ваши публичные Tor IP адрессa: - Пожалуйста, отключите эту программу в Android- и gt; Настройки- & gt; Apps, если у вас возникли проблемы с Orbot: - Конфликт Приложений - Авто-Обновить Transproxy - Повторно применить правила Transproxy при изменении состояния сети - Transproxy ПРИНУДИТЕЛЬНОЕ УДАЛЕНИЕ - Нажмите здесь, чтобы очистить все правила transproxy в сети СЕЙЧАС - Прозрачные правила прокси смыты! - У вас не подключен Рутинг - Возможно, потребуется остановить и начать Orbot заново для подключения изменений настроек. - VPN - кбит - Мбит - КБ - МБ - Bridges Обновлён - Пожалуйста перезагрузите Orbot, чтобы подключить изменения - QR Коды - Режим Bridge - Е-мейл - Сеть - Активировать - VPN режим приложений - Вы можете включить все приложения на вашем устройстве, чтобы запустить их через сеть Tor, используя функцию VPN в Android. \ П \ п * ПРЕДУПРЕЖДЕНИЕ * Это новая, экспериментальная функция и в некоторых случаях может остановиться или не запуститься автоматически. Она не должна быть использованна для анонимности, а ТОЛЬКО для прохождения фильтров межсетевных экранов. - Отправить Письмо - Вы можете получить bridge адрес через электронную почту, в сети или путем сканирования QR код. Выберите \"Е-мейл\" или \"Сеть\" ниже, чтобы запросить bridge адрес \ N \ Полученный адрес, скопируйте и вставьте его в «Bridges» предпочтения в настройке Orbot и перезапустите. - Установить Orfox - Стандартный Браузер - ПРИМЕЧАНИЕ: Только стандартные Tor bridges работают на устройствах Intel X86/Atom - Мир - diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml deleted file mode 100644 index 02957697..00000000 --- a/res/values-vi/strings.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - Orbot - http://orbot/ - http://check.torproject.org - https://check.torproject.org - https://check.torproject.org/?TorButton=true - khởi động và ngừng Tor - dịch vụ tor proxy - Ortbot đang khởi động... - Đã kết nối với mạng Tor - Orbot đã được tắt - Bắt đầu Tor - hoàn thành. - đang chờ. - Chú ý: luồng thông tin của bạn không 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 hoặc SOCKS4A hoặc proxy SOCKS5 127.0.0.1:9050 - Trang chủ - Trình duyệt - Thiết lập - Đang nhập - Giúp đỡ - Bắt đầu - Ngừng - Về - Tải về - Tải lên - Giúp đỡ - Đóng - Giới thiệu - Xoá đăng nhập - Kiểm Tra - Thoát - - nhấn lâu để khởi động - - Proxy theo dạng minh bạch/trong suốt (Cần root) - Đang chuyển tiếp theo dạng hiển thị - Tự động áp dụng Tor cho các ứng dụng - Áp dụng Tor cho tất cả - Proxy luồng thông tin cho các ứng dụng qua Tor - Cổng Prox dự phòng - Chú Ý: Vượt qua các cổng thông dụng (80, 443, vv). *CHỈ DÙNG* nếu chế độ \"Tất Cả\" hoặc \"Ứng Dụng\" không dùng được. - Danh sách cổng - Liệt kê các cổng để proxy. *CHỈ DÙNG* nếu chế độ \"Tất Cả\" hoặc \"Ứng Dụng\" không dùng được. - Điền vào số cổng để proxy - Yêu cầu dùng truy cập gốc - Yêu cầu truy cập gốc để proxy theo dạng hiện hình - Nhị phân của Tor đã được cài đặt - Phần nhị phân của Tor bị lỗi khi cài đặt. Xin hãy kiểm tra log và thông báo cho tor-assistants@torproject.org - Ứng dụng bị lỗi - Orbot - Về Orbot - Tiếp - Trở về - Kết thúc - Chấp nhận - Hủy - - Vài chi tiết về Orbot - Đã cho phép - Phép truy cập của Orbot - Tuyệt! Chúng tôi đã nhận ra bạn có phép truy cập gốc để kích hoạt Orbort. Chúng tôi sẽ cẩn thận. - Mặc dù không cần thiết, nhưng Orbot có thể trở thành một công cụ siêu hơn nếu thiết bị của bạn có phép truy cập gốc. Hãy ấn nút dưới đây để cho phép Orbot có siêu quyền lực! - Nếu bạn không có phép truy cập gốc 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 với Orbot. - Tôi hiểu rõ và sẽ tiếp tục dùng không qua tài khoản Superuser - Cho phép Orbot có phép truy cập gốc - Cài đặt Torification - Orbot cho phép chuyển tất cả các luồng thông tin của các ứng dụng qua Tor hoặc áp dụng từng ứng dụng riêng rẽ. - Proxy Tất Cả Các Ứng Dụng Qua Tor - Áp dụng Tor cho từng ứng dụng riêng rẽ - Các ứng dụng đã được áp dụng Tor - Những ứng dụng sau đây đã được thiết lập để dùng với Orbot. Nhấn từng nút để 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 GuardienProject.info hoặc qua F-Droid.org. - ChatSecure - Ứng dụng tin nhắn an toàn cho Android - Cài Đặt Proxy - Hãy học cách thức thiết trí ứng dụng để dùng với Orbot - Ứng dụng tìm kiếm DuckDuckGo - Cài Twitter proxy đến máy chủ \"localhost\" và cổng 8118 - https://guardianproject.info/2012/05/02/orbot-your-twitter/ - Những Cài đặt máy chủ proxy - Orbot đã sẵn sàng! - - Trình duyệt sẽ mở trang 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 - Dịch vụ ẩn máy chủ - Chung - Bắt đầu Orbot khi Khởi Động (?!) - 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 lại - - - - Cảnh báo - - Phép ứng dụng - Bạn có thể tuỳ chọn cho phép Orbot có truy cập \"Superuser\" để kích hoạt những tính năng cao, như dùng proxy trong suốt chẳng hạn. - Nếu bạn không muốn cài đặt này, xin hãy dùng những ứng dụng được tạo để dùng với Tor. - - Các ứng dụng đã được áp dụng Orbot - ChatSecure: ứng dụng chat an toàn với mã hóa Off-the-Record - Hãy tìm những ứng dụng của Guardian Project trên Google Play - - Đang chuyển tiếp theo dạng hiển thị - Cài đặt này cho phép các ứng dụng của bạn tự động chạy qua mạng Tor mà không cần cài đặt cấu hình. - (Hãy chọn ô này nếu bạn không rành về cách cài đặt) - Không có - Tor tethering - Kích hoạt Proxy của Tor theo dạng trong suốt để dùng cho Wifi và những thiết bị USB Tethering (cần khởi động lại) - Yều cầu truy cập dạng Superuser - Chọn ứng dụng - Chọn những ứng dụng mà bạn muốn chuyền luồng thông tin qua Tor - Thiết trí trạm - Những cài đặt cao cấp này có thể giảm thiểu chức năng ẩn danh của bạn - Ngõ vào trạm - Dấu vân tay, biệt hiệu, quốc gia và địa chỉ cho trạm đầu tiên - Vào ngõ của trạm (?!) - Proxy Mạng Ngõ Ra - Loại Proxy Ngõ Ra - Giao thức để dùng cho proxy máy chủ như: HTTP, HTTPs, Socks4, Socks5 - Hãy đánh vào loại proxy - Máy Chủ Proxy Ngõ Ra - Tên proxy của máy chủ - Đánh vào proxy máy chủ - Cổng Proxy Ngõ Ra - Số cổng của proxy máy chủ - Đánh vào số cổng Proxy - Tên tài khoảng Cổng Proxy Ngõ ra - Tên tài khoản Proxy (có hoặc không) - Điền vào tên tài khoản Proxy - Mật khẩu Proxy Ngõ Ra - Mật khẩu Proxy (có hoặc không) - Điền vào mật khẩu Proxy - Tình trạng - Đang thiết trí hoàn toàn proxy trong suốt - Đài thiết trí proxy trong suốt theo ứng dụng... - Proxy theo dạng trong suốt ĐÃ ĐƯỢC KÍCH HOẠT - TransProxy đã được kích hoạt để dùng cho Tethering (mạng kết nối??) - CHÚ Ý: khởi động proxy trong suốt đã bị lỗi! - Qui tắc TransProxy đã được xoá - Không thể khởi động quá trình Tor: - Đang cài đặt proxy trong suốt theo cổng - Lỗi Cầu Nối (?!) - Để dùng chức năng cầu nối, bạn phải đánh vào ít nhất một địa chỉ IP của cầu nối. - Gửi một điện thư đến bridges@torproject.org với hàng chữ \"get bridges\" trong thân bài (?!) của điện thư từ một tài khoản gmail. - Lỗi - Thiết lập ReachableAddresses (địa chỉ tiếp cận được) đã gây ra môt ngoại lệ! - Thiết lập chuyển tiếp của bạn đã tạo ra một ngoại lệ! - Thoái khỏi trạm - Dấu vân tay, biệt hiệu, quốc gia và địa chỉ cho trạm cuối cùng - Đánh vào của thoát trạm - Loại trừ trạm - Dấu vân tay, biệt hiệu, quốc gia và địa chỉ để loại trừ - Đánh vào những trạm để loại trừ - Những Trạm Nghiêm Ngặt - *Chỉ* dùng những trạm liệt kê đây - Cầu Nối - Dùng Cầu Nối - Cầu Nối Được Che Dấu - Kích hoạt cửa trạm khác để vào mạng Tor - Kích hoạt nếu những thiết trí của cầu nối ..... (?!) - Địa chỉ IP và số cổng của cầu nối - Đánh vào địa chỉ cầu nối - Tiếp chuyển - Đang tiếp chuyển - Kích hoạt thiết bị của bạn theo dạng tiếp chuyển không-lối-thoát - Cổng Tiếp Chuyển - Đang lắng nghe cổng của bạn để dùng tiếp chuyển Tor - Đánh vào HOẶC cổng (?!) - Biệt hiệu chuyển tiếp - Biệt hiệu của bạn để dùng cho Tor dạng chuyển tiếp - Đánh vào biệt hiệu tiếp chuyển tuỳ chỉnh - Địa chỉ truy cập được - Chạy như một ứng dụng đứng sau tường lửa với chính sách hạn chế - Những cổng truy cập được - Những cổng truy cập được đằng sau tường lửa hạn chế - Đánh vào số cổng - Dịch vụ ẩn cho máy chủ - cho phép server trong thiết bị bạn được dùng qua mạng Tor. - đánh vào cổng localhost để dùng những dịch vụ ẩn - Cổng dịch vụ ẩn - tên địa chỉ hợp lệ cho dịch vụ ẩn của bạn (được tự động tạo ra) - kích hoạt danh sách gỡ lỗi để đầu ra (phải dùng abd hoặc aLogCat để xem) - Dự Án Nhà: - Giấy Phép của Tor - https://torproject.org - Phần Mềm Thứ 3: - Một trong những ứng dụng muốn mở cổng ẩn của máy chủ %S đến mạng Tor. An toàn nếu như bạn tin tưởng vào ứng dụng này. - tìm ra những quá trình hiện hành của Tor... - Có chút gì đó không ổn. Xin xem lại danh sách ghi chú - dịch vụ ẩn trong: - không thể đọc được tên dịch vụ ẩn - Không thể kích hoạt Tor được: - Dùng Mặc Định Iptables - dùng nhị phân gắn liền trong iptables thay vì dùng nhị phân được gắn chung với Orbot - Nhị phân của Tor không thể cài hoặc nâng cấp được. - Luôn luôn giữ hình tượng trong thanh công cụ khi đang kết nối với Orbot - Những thông báo luôn luôn được mở - Cầu nối đã được kích hoạt! - - Hãy chọn miền địa phương và ngôn ngữ cho Orbot - Chọn Ngôn Ngữ - Giữ cài đặt mặc định hoặc chuyển qua ngôn ngữ khác - Thiết lập Bảo lưu - Băng thông: - xuống - lên - Mạng Không Tự Động Ngủ - Cho Tor đi ngủ nếu không có kết nối vào mạng - Bạn đã đổi qua một danh tính Tor mới! - Dùng ChatSecure - Quản trị Tor - Cho phép ứng dụng này điều khiển dịch vụ Tor - Cài đặt ứng dụng? - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..9984a03e --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +include ':jsocksAndroid', ':orbotservice' +include ':app' diff --git a/src/net b/src/net deleted file mode 120000 index ab37141f..00000000 --- a/src/net +++ /dev/null @@ -1 +0,0 @@ -../external/jtorctl/net/ \ No newline at end of file diff --git a/src/org/torproject/android/settings/TorifiedApp.java b/src/org/torproject/android/settings/TorifiedApp.java deleted file mode 100644 index ceada4d6..00000000 --- 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; - } -}