Merge changes I70eebbb7,I1e0ce43d,Id481240f
* changes: Support reloading of allowProjectOwnersToChangeParent Change sshd.requestLog to use event.reject(ConfigKey) Add reject method overload to accept a Configkey
This commit is contained in:
@@ -3684,6 +3684,9 @@ allow the owner to circumvent certain enforced rules (like important
|
||||
BLOCK rules).
|
||||
+
|
||||
Default is false.
|
||||
+
|
||||
This value supports configuration reloads:
|
||||
link:cmd-reload-config.html[reload-config]
|
||||
|
||||
[[receive.checkReferencedObjectsAreReachable]]receive.checkReferencedObjectsAreReachable::
|
||||
+
|
||||
|
||||
@@ -66,6 +66,10 @@ public class ConfigUpdatedEvent {
|
||||
return createUpdate(entries, UpdateResult.APPLIED);
|
||||
}
|
||||
|
||||
public Update reject(ConfigKey entry) {
|
||||
return reject(Collections.singleton(entry));
|
||||
}
|
||||
|
||||
public Update reject(Set<ConfigKey> entries) {
|
||||
return createUpdate(entries, UpdateResult.REJECTED);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,9 @@ import static com.google.gerrit.server.project.ProjectResource.PROJECT_KIND;
|
||||
import static com.google.gerrit.server.project.TagResource.TAG_KIND;
|
||||
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
import com.google.gerrit.extensions.restapi.RestApiModule;
|
||||
import com.google.gerrit.server.config.GerritConfigListener;
|
||||
import com.google.gerrit.server.project.RefValidationHelper;
|
||||
import com.google.gerrit.server.restapi.change.CherryPickCommit;
|
||||
|
||||
@@ -41,6 +43,8 @@ public class Module extends RestApiModule {
|
||||
DynamicMap.mapOf(binder(), COMMIT_KIND);
|
||||
DynamicMap.mapOf(binder(), TAG_KIND);
|
||||
|
||||
DynamicSet.bind(binder(), GerritConfigListener.class).to(SetParent.class);
|
||||
|
||||
create(PROJECT_KIND).to(CreateProject.class);
|
||||
put(PROJECT_KIND).to(PutProject.class);
|
||||
get(PROJECT_KIND).to(GetProject.class);
|
||||
|
||||
@@ -30,6 +30,9 @@ import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.config.AllProjectsName;
|
||||
import com.google.gerrit.server.config.AllUsersName;
|
||||
import com.google.gerrit.server.config.ConfigKey;
|
||||
import com.google.gerrit.server.config.ConfigUpdatedEvent;
|
||||
import com.google.gerrit.server.config.GerritConfigListener;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.git.meta.MetaDataUpdate;
|
||||
import com.google.gerrit.server.permissions.GlobalPermission;
|
||||
@@ -43,18 +46,21 @@ import com.google.gerrit.server.project.ProjectState;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
|
||||
@Singleton
|
||||
public class SetParent implements RestModifyView<ProjectResource, ParentInput> {
|
||||
public class SetParent
|
||||
implements RestModifyView<ProjectResource, ParentInput>, GerritConfigListener {
|
||||
private final ProjectCache cache;
|
||||
private final PermissionBackend permissionBackend;
|
||||
private final MetaDataUpdate.Server updateFactory;
|
||||
private final AllProjectsName allProjects;
|
||||
private final AllUsersName allUsers;
|
||||
private final boolean allowProjectOwnersToChangeParent;
|
||||
private volatile boolean allowProjectOwnersToChangeParent;
|
||||
|
||||
@Inject
|
||||
SetParent(
|
||||
@@ -164,4 +170,20 @@ public class SetParent implements RestModifyView<ProjectResource, ParentInput> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ConfigUpdatedEvent.Update> configUpdated(ConfigUpdatedEvent event) {
|
||||
ConfigKey receiveSetParent = ConfigKey.create("receive", "allowProjectOwnersToChangeParent");
|
||||
if (!event.isValueUpdated(receiveSetParent)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
try {
|
||||
boolean enabled =
|
||||
event.getNewConfig().getBoolean("receive", "allowProjectOwnersToChangeParent", false);
|
||||
this.allowProjectOwnersToChangeParent = enabled;
|
||||
return Collections.singletonList(event.accept(receiveSetParent));
|
||||
} catch (IllegalArgumentException iae) {
|
||||
return Collections.singletonList(event.reject(receiveSetParent));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,16 +323,20 @@ class SshLog implements LifecycleListener, GerritConfigListener {
|
||||
if (!event.isValueUpdated(sshdRequestLog)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
boolean enabled = event.getNewConfig().getBoolean("sshd", "requestLog", true);
|
||||
boolean stateUpdated;
|
||||
if (enabled) {
|
||||
stateUpdated = enableLogging();
|
||||
} else {
|
||||
stateUpdated = disableLogging();
|
||||
try {
|
||||
boolean enabled = event.getNewConfig().getBoolean("sshd", "requestLog", true);
|
||||
|
||||
if (enabled) {
|
||||
stateUpdated = enableLogging();
|
||||
} else {
|
||||
stateUpdated = disableLogging();
|
||||
}
|
||||
return stateUpdated
|
||||
? Collections.singletonList(event.accept(sshdRequestLog))
|
||||
: Collections.emptyList();
|
||||
} catch (IllegalArgumentException iae) {
|
||||
return Collections.singletonList(event.reject(sshdRequestLog));
|
||||
}
|
||||
return stateUpdated
|
||||
? Collections.singletonList(event.accept(sshdRequestLog))
|
||||
: Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user