@Override public void postRun() throws Exception { AuthType authType = flags.cfg.getEnum(AuthType.values(), "auth", null, "type", null); if (authType != AuthType.DEVELOPMENT_BECOME_ANY_ACCOUNT) { return; } try (ReviewDb db = dbFactory.open()) { if (db.accounts().anyAccounts().toList().isEmpty()) { ui.header("Gerrit Administrator"); if (ui.yesno(true, "Create administrator user")) { Account.Id id = new Account.Id(db.nextAccountId()); String username = ui.readString("admin", "username"); String name = ui.readString("Administrator", "name"); String httpPassword = ui.readString("secret", "HTTP password"); AccountSshKey sshKey = readSshKey(id); String email = readEmail(sshKey); AccountExternalId extUser = new AccountExternalId( id, new AccountExternalId.Key(AccountExternalId.SCHEME_USERNAME, username)); if (!Strings.isNullOrEmpty(httpPassword)) { extUser.setPassword(httpPassword); } db.accountExternalIds().insert(Collections.singleton(extUser)); if (email != null) { AccountExternalId extMailto = new AccountExternalId( id, new AccountExternalId.Key(AccountExternalId.SCHEME_MAILTO, email)); extMailto.setEmailAddress(email); db.accountExternalIds().insert(Collections.singleton(extMailto)); } Account a = new Account(id, TimeUtil.nowTs()); a.setFullName(name); a.setPreferredEmail(email); db.accounts().insert(Collections.singleton(a)); AccountGroupMember m = new AccountGroupMember(new AccountGroupMember.Key(id, new AccountGroup.Id(1))); db.accountGroupMembers().insert(Collections.singleton(m)); if (sshKey != null) { db.accountSshKeys().insert(Collections.singleton(sshKey)); } } } } }
@Override public void run() { ui.header("Email Delivery"); final String hostname = sendemail.string("SMTP server hostname", "smtpServer", "localhost"); sendemail.string("SMTP server port", "smtpServerPort", "(default)", true); final Encryption enc = sendemail.select("SMTP encryption", "smtpEncryption", Encryption.NONE, true); String username = null; if (Files.exists(site.gerrit_config)) { username = sendemail.get("smtpUser"); } else if ((enc != null && enc != Encryption.NONE) || !isLocal(hostname)) { username = username(); } sendemail.string("SMTP username", "smtpUser", username); sendemail.password("smtpUser", "smtpPass"); }