commit
244b719466
5 changed files with 120 additions and 91 deletions
Binary file not shown.
|
@ -9,8 +9,8 @@ android {
|
|||
applicationId "com.zeapo.pwdstore"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 21
|
||||
versionCode 24
|
||||
versionName "1.2-a5"
|
||||
versionCode 25
|
||||
versionName "1.2-a6"
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
|
|
|
@ -97,43 +97,12 @@ public class GitHandler extends ActionBarActivity {
|
|||
case REQUEST_CLONE:
|
||||
setContentView(R.layout.activity_git_clone);
|
||||
|
||||
// init the spinner for protocols
|
||||
Spinner protcol_spinner = (Spinner) findViewById(R.id.clone_protocol);
|
||||
ArrayAdapter<CharSequence> protocol_adapter = ArrayAdapter.createFromResource(this,
|
||||
R.array.clone_protocols, android.R.layout.simple_spinner_item);
|
||||
protocol_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
protcol_spinner.setAdapter(protocol_adapter);
|
||||
protcol_spinner.setOnItemSelectedListener(
|
||||
new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
protocol = ((Spinner)findViewById(R.id.clone_protocol)).getSelectedItem().toString();
|
||||
if (protocol.equals("ssh://")) {
|
||||
((EditText)findViewById(R.id.clone_uri)).setHint("user@hostname:path");
|
||||
} else {
|
||||
((EditText)findViewById(R.id.clone_uri)).setHint("hostname/path");
|
||||
new AlertDialog.Builder(activity).
|
||||
setMessage(activity.getResources().getString(R.string.read_only_dialog_text)).
|
||||
setCancelable(true).
|
||||
setPositiveButton(activity.getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
final Spinner protcol_spinner = (Spinner) findViewById(R.id.clone_protocol);
|
||||
final Spinner connection_mode_spinner = (Spinner) findViewById(R.id.connection_mode);
|
||||
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> adapterView) {
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// init the spinner for connection modes
|
||||
Spinner connection_mode_spinner = (Spinner) findViewById(R.id.connection_mode);
|
||||
ArrayAdapter<CharSequence> connection_mode_adapter = ArrayAdapter.createFromResource(this,
|
||||
final ArrayAdapter<CharSequence> connection_mode_adapter = ArrayAdapter.createFromResource(this,
|
||||
R.array.connection_modes, android.R.layout.simple_spinner_item);
|
||||
connection_mode_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
connection_mode_spinner.setAdapter(connection_mode_adapter);
|
||||
|
@ -151,6 +120,43 @@ public class GitHandler extends ActionBarActivity {
|
|||
}
|
||||
});
|
||||
|
||||
// init the spinner for protocols
|
||||
ArrayAdapter<CharSequence> protocol_adapter = ArrayAdapter.createFromResource(this,
|
||||
R.array.clone_protocols, android.R.layout.simple_spinner_item);
|
||||
protocol_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
protcol_spinner.setAdapter(protocol_adapter);
|
||||
protcol_spinner.setOnItemSelectedListener(
|
||||
new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
protocol = ((Spinner)findViewById(R.id.clone_protocol)).getSelectedItem().toString();
|
||||
if (protocol.equals("ssh://")) {
|
||||
((EditText)findViewById(R.id.clone_uri)).setHint("user@hostname:path");
|
||||
|
||||
((EditText) findViewById(R.id.server_port)).setHint(R.string.default_ssh_port);
|
||||
|
||||
// select ssh-key auth mode as default and enable the spinner in case it was disabled
|
||||
connection_mode_spinner.setSelection(0);
|
||||
connection_mode_spinner.setEnabled(true);
|
||||
} else {
|
||||
((EditText)findViewById(R.id.clone_uri)).setHint("hostname/path");
|
||||
|
||||
((EditText) findViewById(R.id.server_port)).setHint(R.string.default_https_port);
|
||||
|
||||
// select user/pwd auth-mode and disable the spinner
|
||||
connection_mode_spinner.setSelection(1);
|
||||
connection_mode_spinner.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> adapterView) {
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// init the server information
|
||||
final EditText server_url = ((EditText) findViewById(R.id.server_url));
|
||||
final EditText server_port = ((EditText) findViewById(R.id.server_port));
|
||||
|
@ -259,30 +265,57 @@ public class GitHandler extends ActionBarActivity {
|
|||
EditText server_port = ((EditText) findViewById(R.id.server_port));
|
||||
EditText server_path = ((EditText) findViewById(R.id.server_path));
|
||||
EditText server_user = ((EditText) findViewById(R.id.server_user));
|
||||
Log.i("GIT", "key entred");
|
||||
|
||||
if (uri != null) {
|
||||
String hostname =
|
||||
server_user.getText()
|
||||
+ "@" +
|
||||
server_url.getText().toString().trim()
|
||||
+ ":";
|
||||
if (server_port.getText().toString().equals("22")) {
|
||||
hostname += server_path.getText().toString();
|
||||
if (uri != null) {
|
||||
switch (protocol)
|
||||
{
|
||||
case "ssh://":
|
||||
{
|
||||
String hostname =
|
||||
server_user.getText()
|
||||
+ "@" +
|
||||
server_url.getText().toString().trim()
|
||||
+ ":";
|
||||
if (server_port.getText().toString().equals("22")) {
|
||||
hostname += server_path.getText().toString();
|
||||
|
||||
((TextView) findViewById(R.id.warn_url)).setVisibility(View.GONE);
|
||||
} else {
|
||||
TextView warn_url = (TextView) findViewById(R.id.warn_url);
|
||||
if (!server_path.getText().toString().matches("/.*") && !server_port.getText().toString().isEmpty()) {
|
||||
warn_url.setText(R.string.warn_malformed_url_port);
|
||||
warn_url.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
warn_url.setVisibility(View.GONE);
|
||||
((TextView) findViewById(R.id.warn_url)).setVisibility(View.GONE);
|
||||
} else {
|
||||
TextView warn_url = (TextView) findViewById(R.id.warn_url);
|
||||
if (!server_path.getText().toString().matches("/.*") && !server_port.getText().toString().isEmpty()) {
|
||||
warn_url.setText(R.string.warn_malformed_url_port);
|
||||
warn_url.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
warn_url.setVisibility(View.GONE);
|
||||
}
|
||||
hostname += server_port.getText().toString() + server_path.getText().toString();
|
||||
}
|
||||
|
||||
if (!hostname.equals("@:")) uri.setText(hostname);
|
||||
}
|
||||
hostname += server_port.getText().toString() + server_path.getText().toString();
|
||||
break;
|
||||
case "https://":
|
||||
{
|
||||
StringBuilder hostname = new StringBuilder();
|
||||
hostname.append(server_url.getText().toString().trim());
|
||||
|
||||
if (server_port.getText().toString().equals("443")) {
|
||||
hostname.append(server_path.getText().toString());
|
||||
|
||||
((TextView) findViewById(R.id.warn_url)).setVisibility(View.GONE);
|
||||
} else {
|
||||
hostname.append("/");
|
||||
hostname.append(server_port.getText().toString())
|
||||
.append(server_path.getText().toString());
|
||||
}
|
||||
|
||||
if (!hostname.toString().equals("@/")) uri.setText(hostname);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (!hostname.equals("@:")) uri.setText(hostname);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -439,8 +472,6 @@ public class GitHandler extends ActionBarActivity {
|
|||
if (!port.isEmpty())
|
||||
hostname = protocol + hostname;
|
||||
|
||||
Log.i("GIT", "> " + port);
|
||||
|
||||
// did he forget the username?
|
||||
if (!hostname.matches("^.+@.+")) {
|
||||
new AlertDialog.Builder(this).
|
||||
|
@ -506,10 +537,9 @@ public class GitHandler extends ActionBarActivity {
|
|||
// remember the settings
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
|
||||
// TODO this is not pretty, use the information obtained earlier
|
||||
editor.putString("git_remote_server", hostname.split("@")[1].split(":")[0]);
|
||||
editor.putString("git_remote_location", hostname.split("@")[1].split(":")[1]);
|
||||
editor.putString("git_remote_username", hostname.split("@")[0]);
|
||||
editor.putString("git_remote_server", ((EditText) findViewById(R.id.server_url)).getText().toString());
|
||||
editor.putString("git_remote_location", ((EditText) findViewById(R.id.server_path)).getText().toString());
|
||||
editor.putString("git_remote_username", ((EditText) findViewById(R.id.server_user)).getText().toString());
|
||||
editor.putString("git_remote_protocol", protocol);
|
||||
editor.putString("git_remote_auth", connectionMode);
|
||||
editor.putString("git_remote_port", port);
|
||||
|
@ -700,39 +730,35 @@ public class GitHandler extends ActionBarActivity {
|
|||
}).show();
|
||||
}
|
||||
} else {
|
||||
if (protocol.equals("ssh://")) {
|
||||
final EditText password = new EditText(activity);
|
||||
password.setHint("Password");
|
||||
password.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
|
||||
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
||||
final EditText password = new EditText(activity);
|
||||
password.setHint("Password");
|
||||
password.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
|
||||
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
||||
|
||||
new AlertDialog.Builder(activity)
|
||||
.setTitle(activity.getResources().getString(R.string.passphrase_dialog_title))
|
||||
.setMessage(activity.getResources().getString(R.string.password_dialog_text))
|
||||
.setView(password)
|
||||
.setPositiveButton(activity.getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
|
||||
SshSessionFactory.setInstance(new GitConfigSessionFactory());
|
||||
try {
|
||||
method.invoke(activity,
|
||||
new UsernamePasswordCredentialsProvider(
|
||||
settings.getString("git_remote_username", "git"),
|
||||
password.getText().toString())
|
||||
);
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
new AlertDialog.Builder(activity)
|
||||
.setTitle(activity.getResources().getString(R.string.passphrase_dialog_title))
|
||||
.setMessage(activity.getResources().getString(R.string.password_dialog_text))
|
||||
.setView(password)
|
||||
.setPositiveButton(activity.getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
|
||||
SshSessionFactory.setInstance(new GitConfigSessionFactory());
|
||||
try {
|
||||
method.invoke(activity,
|
||||
new UsernamePasswordCredentialsProvider(
|
||||
settings.getString("git_remote_username", "git"),
|
||||
password.getText().toString())
|
||||
);
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}).setNegativeButton(activity.getResources().getString(R.string.dialog_cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
// Do nothing.
|
||||
}
|
||||
}).show();
|
||||
} else {
|
||||
// BUG: we do not support HTTP yet...
|
||||
}
|
||||
|
||||
}
|
||||
}).setNegativeButton(activity.getResources().getString(R.string.dialog_cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
// Do nothing.
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,5 +6,6 @@
|
|||
</string-array>
|
||||
<string-array name="clone_protocols">
|
||||
<item>ssh://</item>
|
||||
<item>https://</item>
|
||||
</string-array>
|
||||
</resources>
|
|
@ -63,6 +63,8 @@
|
|||
<string name="server_url">Server URL</string>
|
||||
<string name="server_url_hint">server.com</string>
|
||||
<string name="server_port_hint">22</string>
|
||||
<string name="default_ssh_port">22</string>
|
||||
<string name="default_https_port">443</string>
|
||||
<string name="server_path">Repo path</string>
|
||||
<string name="server_path_hint">path/to/pass</string>
|
||||
<string name="server_user">Username</string>
|
||||
|
|
Loading…
Reference in a new issue