tor-android/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/HSDataDialog.java

103 lines
3.8 KiB
Java
Raw Normal View History

2016-11-24 02:56:11 +01:00
package org.torproject.android.ui.hiddenservices.dialogs;
2016-11-17 02:57:37 +01:00
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
2016-11-17 02:57:37 +01:00
import android.widget.EditText;
import android.widget.Toast;
import org.torproject.android.R;
2016-11-24 02:56:11 +01:00
import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
2016-11-17 02:57:37 +01:00
public class HSDataDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Get the layout
2016-11-20 01:52:23 +01:00
final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.layout_hs_data_dialog, null);
2016-11-17 02:57:37 +01:00
// Use the Builder class for convenient dialog construction
2016-11-20 03:20:14 +01:00
final AlertDialog serviceDataDialog = new AlertDialog.Builder(getActivity())
2016-11-17 02:57:37 +01:00
.setView(dialog_view)
2016-11-20 03:20:14 +01:00
.setTitle(R.string.hidden_services)
2016-11-17 02:57:37 +01:00
.create();
// Buttons action
Button save = (Button) dialog_view.findViewById(R.id.HSDialogSave);
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String serverName = ((EditText) dialog_view.findViewById(R.id.hsName)).getText().toString();
2016-11-17 10:14:01 +01:00
Integer localPort = Integer.parseInt(
((EditText) dialog_view.findViewById(R.id.hsLocalPort)).getText().toString()
);
Integer onionPort = Integer.parseInt(
((EditText) dialog_view.findViewById(R.id.hsOnionPort)).getText().toString()
2016-11-17 02:57:37 +01:00
);
Boolean authCookie = ((CheckBox) dialog_view.findViewById(R.id.hsAuth)).isChecked();
2016-11-24 03:06:40 +01:00
if (checkInput(serverName, localPort, onionPort)) {
saveData(serverName, localPort, onionPort, authCookie);
2016-12-05 21:14:15 +01:00
Toast.makeText(
v.getContext(), R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG
).show();
2016-11-20 03:20:14 +01:00
serviceDataDialog.dismiss();
2016-11-17 02:57:37 +01:00
}
}
});
Button cancel = (Button) dialog_view.findViewById(R.id.HSDialogCancel);
cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
2016-11-20 03:20:14 +01:00
serviceDataDialog.cancel();
2016-11-17 02:57:37 +01:00
}
});
2016-11-20 03:20:14 +01:00
return serviceDataDialog;
2016-11-17 02:57:37 +01:00
}
2016-11-24 03:06:40 +01:00
private boolean checkInput(String serverName, Integer local, Integer remote) {
2016-11-17 02:57:37 +01:00
boolean is_ok = true;
Integer error_msg = 0;
2016-11-17 16:33:07 +01:00
if ((local < 1 || local > 65535) || (remote < 1 || remote > 65535)) {
2016-11-17 02:57:37 +01:00
error_msg = R.string.invalid_port;
is_ok = false;
}
2016-11-24 03:06:40 +01:00
if (serverName == null || serverName.length() < 1) {
error_msg = R.string.name_can_t_be_empty;
is_ok = false;
}
2016-11-17 02:57:37 +01:00
if (!is_ok) {
Toast.makeText(getContext(), error_msg, Toast.LENGTH_SHORT).show();
}
return is_ok;
}
private void saveData(String name, Integer local, Integer remote, Boolean authCookie) {
2016-11-17 02:57:37 +01:00
ContentValues fields = new ContentValues();
2016-11-27 18:50:20 +01:00
fields.put(HSContentProvider.HiddenService.NAME, name);
fields.put(HSContentProvider.HiddenService.PORT, local);
fields.put(HSContentProvider.HiddenService.ONION_PORT, remote);
fields.put(HSContentProvider.HiddenService.AUTH_COOKIE, authCookie);
2016-11-27 18:50:20 +01:00
fields.put(HSContentProvider.HiddenService.CREATED_BY_USER, 1);
2016-11-17 02:57:37 +01:00
ContentResolver cr = getContext().getContentResolver();
cr.insert(HSContentProvider.CONTENT_URI, fields);
}
}