Skip to content
Snippets Groups Projects
Commit a6ac4c9b authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#562 - added button to test connection if backup strategy is "git remote"

parent bea9a4a3
Branches
Tags
No related merge requests found
......@@ -12,6 +12,7 @@ import org.eclipse.jgit.transport.URIish;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
public class GitHelper
......@@ -83,5 +84,21 @@ public class GitHelper
pushCommand.setCredentialsProvider(credentialsProvider);
pushCommand.call();
}
public static boolean checkConnection(String uri, CredentialsProvider credentialsProvider)
{
try
{
final Path tempDirectory = Files.createTempDirectory("TestGitRepo");
cloneRepository(uri, credentialsProvider, tempDirectory);
}
catch(GitAPIException | IOException e)
{
e.printStackTrace();
return false;
}
return true;
}
}
......@@ -21,6 +21,8 @@ import de.deadlocker8.budgetmaster.utils.Strings;
import de.thecodelabs.utils.util.Localization;
import de.thecodelabs.utils.util.RandomUtils;
import de.thecodelabs.versionizer.UpdateItem;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
......@@ -357,4 +359,16 @@ public class SettingsController extends BaseController
settingsService.disableFirstUseBanner();
return "redirect:/";
}
@PostMapping("/git/test")
public String testGit(@RequestParam(value = "autoBackupGitUrl") String autoBackupGitUrl,
@RequestParam(value = "autoBackupGitUserName") String autoBackupGitUserName,
@RequestParam(value = "autoBackupGitPassword") String autoBackupGitPassword)
{
final CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(autoBackupGitUserName, autoBackupGitPassword);
final boolean isValidConnection = GitHelper.checkConnection(autoBackupGitUrl, credentialsProvider);
// TODO: return isValidConnection or json
return "1234";
}
}
\ No newline at end of file
......@@ -211,6 +211,7 @@ settings.backup.auto.next=Nächste Ausführung
settings.backup.auto.git.url=Adresse des Git-Servers
settings.backup.auto.git.user.name=Git Nutzername
settings.backup.auto.git.password=Git Passwort
settings.backup.auto.git.test=Verbindung testen
settings.database.import=Importieren
settings.database.export=Exportieren
......
......@@ -211,6 +211,7 @@ settings.backup.auto.next=Next execution
settings.backup.auto.git.url=Git server address
settings.backup.auto.git.user.name=Git user name
settings.backup.auto.git.password=Git password
settings.backup.auto.git.test=Test connection
settings.database.import=Import
settings.database.export=Export
......
......@@ -69,7 +69,6 @@ function fetchAndShowWhatsNewModal(item, containerID)
data: {},
success: function(data)
{
$('#' + containerID).html(data);
$(modalID).modal();
$(modalID).modal('open');
......
......@@ -22,6 +22,28 @@ $(document).ready(function()
onAutoBackupStrategyChange(this.selectedIndex);
});
$('#settings-backup-auto-git-test').click(function()
{
$.ajax({
type: 'POST',
url: $('#settings-backup-auto-git-test').attr('data-url'),
data: {
'_csrf': document.getElementById('token').value,
'autoBackupGitUrl': document.getElementById('settings-backup-auto-git-url').value,
'autoBackupGitUserName': document.getElementById('settings-backup-auto-git-user-name').value,
'autoBackupGitPassword': document.getElementById('settings-backup-auto-git-password').value,
},
success: function(data)
{
M.toast({html: data});
},
error: function(data)
{
console.log(data);
}
});
});
let autoBackupDays = $('#settings-backup-auto-days');
if(autoBackupDays.length)
{
......
......@@ -22,7 +22,7 @@
<div class="container">
<#import "../helpers/validation.ftl" as validation>
<form name="Settings" action="<@s.url '/settings/save'/>" method="post" onsubmit="return validateForm()">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" id="token"/>
<input type="hidden" name="ID" value="${settings.getID()?c}">
<input type="hidden" name="lastBackupReminderDate" value="${dateService.getLongDateString(settings.getLastBackupReminderDate())}">
<input type="hidden" name="installedVersionCode" value="${settings.getInstalledVersionCode()}">
......
......@@ -239,5 +239,9 @@
<input id="settings-backup-auto-git-password" name="autoBackupGitPassword" type="text" <@validation.validation "autoBackupGitPassword"/> value="•••••">
<label for="settings-backup-auto-git-password">${locale.getString("settings.backup.auto.git.password")}</label>
</div>
<div class="col s12 m12 l8 offset-l2">
<a id="settings-backup-auto-git-test" data-url="<@s.url '/settings/git/test'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">send</i>${locale.getString("settings.backup.auto.git.test")}</a>
</div>
</div>
</#macro>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment