More ssh code refactoring

This commit is contained in:
Andrea Del Bene 2020-02-02 17:59:26 +01:00
parent 859dfc6662
commit 0f738bf172
8 changed files with 38 additions and 33 deletions

View File

@ -161,7 +161,7 @@ import io.onedev.server.git.GitFilter;
import io.onedev.server.git.GitPostReceiveCallback;
import io.onedev.server.git.GitPreReceiveCallback;
import io.onedev.server.git.config.GitConfig;
import io.onedev.server.git.server.SimpleGitSshServer;
import io.onedev.server.git.ssh.SimpleGitSshServer;
import io.onedev.server.infomanager.CodeCommentRelationInfoManager;
import io.onedev.server.infomanager.CommitInfoManager;
import io.onedev.server.infomanager.DefaultCodeCommentRelationInfoManager;

View File

@ -33,7 +33,7 @@ import io.onedev.server.event.system.SystemStarted;
import io.onedev.server.event.system.SystemStarting;
import io.onedev.server.event.system.SystemStopped;
import io.onedev.server.event.system.SystemStopping;
import io.onedev.server.git.server.SimpleGitSshServer;
import io.onedev.server.git.ssh.SimpleGitSshServer;
import io.onedev.server.maintenance.DataManager;
import io.onedev.server.persistence.PersistManager;
import io.onedev.server.persistence.SessionManager;

View File

@ -1,10 +1,9 @@
package io.onedev.server.git.server;
package io.onedev.server.git.ssh;
import java.io.IOException;
import java.nio.file.Path;
import java.security.PublicKey;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutorService;
@ -17,9 +16,7 @@ import org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactory;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.util.threads.ThreadUtils;
import org.apache.sshd.server.ServerAuthenticationManager;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.server.auth.UserAuth;
import org.apache.sshd.server.command.AbstractCommandSupport;
import org.apache.sshd.server.command.Command;
import org.apache.sshd.server.shell.UnknownCommand;
@ -28,14 +25,11 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.ReceivePack;
import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.jgit.transport.UploadPack;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import io.onedev.server.entitymanager.ProjectManager;
import io.onedev.server.entitymanager.impl.DefaultUserManager;
import io.onedev.server.model.SshKey;
import io.onedev.server.model.User;
import io.onedev.server.persistence.dao.Dao;
import io.onedev.server.persistence.dao.EntityCriteria;
@Singleton
public class SimpleGitSshServer {
@ -92,10 +86,7 @@ public class SimpleGitSshServer {
System.out.println("key digest: " + fingerPrint);
User user = userManager.findByName(userName);
SimpleExpression eq = Restrictions.eq("owner", user);
EntityCriteria<SshKey> entityCriteria = EntityCriteria.of(SshKey.class).add(eq);
List<SshKey> keys = dao.query(entityCriteria);
List<SshKey> keys = SshUtils.loadUserKeys(user, dao);
for (SshKey sshKey : keys) {
if (fingerPrint.equals(sshKey.getDigest())) {
@ -106,18 +97,6 @@ public class SimpleGitSshServer {
return false;
}
private List<NamedFactory<UserAuth>> getAuthFactories() {
List<NamedFactory<UserAuth>> authentications = new ArrayList<>();
authentications.add(
ServerAuthenticationManager.DEFAULT_USER_AUTH_PUBLIC_KEY_FACTORY);
authentications.add(
ServerAuthenticationManager.DEFAULT_USER_AUTH_KB_INTERACTIVE_FACTORY);
// authentications.add(
// ServerAuthenticationManager.DEFAULT_USER_AUTH_PASSWORD_FACTORY);
return authentications;
}
private List<NamedFactory<Command>> configureSubsystems() {
server.setFileSystemFactory(new VirtualFileSystemFactory() {

View File

@ -0,0 +1,19 @@
package io.onedev.server.git.ssh;
import java.util.List;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import io.onedev.server.model.SshKey;
import io.onedev.server.model.User;
import io.onedev.server.persistence.dao.Dao;
import io.onedev.server.persistence.dao.EntityCriteria;
public class SshUtils {
public static List<SshKey> loadUserKeys(User user, Dao dao) {
SimpleExpression eq = Restrictions.eq("owner", user);
EntityCriteria<SshKey> entityCriteria = EntityCriteria.of(SshKey.class).add(eq);
List<SshKey> keys = dao.query(entityCriteria);
return keys;
}
}

View File

@ -12,6 +12,7 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import javax.validation.Validator;
import org.apache.shiro.authc.credential.PasswordService;
import org.apache.wicket.request.Url;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.quartz.CronScheduleBuilder;
@ -30,6 +31,7 @@ import io.onedev.server.entitymanager.RoleManager;
import io.onedev.server.entitymanager.SettingManager;
import io.onedev.server.entitymanager.UserManager;
import io.onedev.server.event.system.SystemStarting;
import io.onedev.server.git.ssh.SimpleGitSshServer;
import io.onedev.server.model.Setting;
import io.onedev.server.model.Setting.Key;
import io.onedev.server.model.User;

View File

@ -21,6 +21,8 @@ public class SystemSetting implements Serializable, Validatable {
private static final long serialVersionUID = 1;
private String serverUrl;
private String serverSshUrl;
private GitConfig gitConfig = new SystemGit();
@ -78,4 +80,12 @@ public class SystemSetting implements Serializable, Validatable {
return true;
}
public String getServerSshUrl() {
return serverSshUrl;
}
public void setServerSshUrl(String serverSshUrl) {
this.serverSshUrl = serverSshUrl;
}
}

View File

@ -16,7 +16,7 @@ import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import io.onedev.server.OneDev;
import io.onedev.server.git.server.SimpleGitSshServer;
import io.onedev.server.git.ssh.SimpleGitSshServer;
import io.onedev.server.model.SshKey;
import io.onedev.server.model.User;
import io.onedev.server.persistence.dao.Dao;

View File

@ -13,13 +13,11 @@ import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;
import io.onedev.server.OneDev;
import io.onedev.server.git.ssh.SshUtils;
import io.onedev.server.model.SshKey;
import io.onedev.server.model.User;
import io.onedev.server.persistence.dao.Dao;
import io.onedev.server.persistence.dao.EntityCriteria;
import io.onedev.server.web.component.modal.ModalLink;
import io.onedev.server.web.component.modal.ModalPanel;
import io.onedev.server.web.page.my.MyPage;
@ -54,13 +52,10 @@ public class MySshKeysPage extends MyPage {
});
LoadableDetachableModel<List<SshKey>> detachableModel = new LoadableDetachableModel<List<SshKey>>() {
final SimpleExpression eq = Restrictions.eq("owner", user);
@Override
protected List<SshKey> load() {
Dao dao = OneDev.getInstance(Dao.class);
EntityCriteria<SshKey> entityCriteria = EntityCriteria.of(SshKey.class).add(eq);
return dao.query(entityCriteria);
return SshUtils.loadUserKeys(user, dao);
}
};