mirror of
https://iceshrimp.dev/iceshrimp/iceshrimp
synced 2024-11-28 14:58:09 +09:00
beban work on account domains
This commit is contained in:
parent
19489103fb
commit
701fc6d275
@ -8,7 +8,12 @@
|
|||||||
#───┘ URL └─────────────────────────────────────────────────────
|
#───┘ URL └─────────────────────────────────────────────────────
|
||||||
|
|
||||||
# Final accessible URL seen by a user.
|
# Final accessible URL seen by a user.
|
||||||
url: https://example.com/
|
url: https://example.org/
|
||||||
|
|
||||||
|
# (Optional - ADVANCED) Domain used for account handles.
|
||||||
|
# Only uncomment this if you want to for example have the URL be ice.example.org
|
||||||
|
# and the handles to be example.org
|
||||||
|
# accountDomain: example.org
|
||||||
|
|
||||||
# ┌───────────────────────┐
|
# ┌───────────────────────┐
|
||||||
#───┘ Port and TLS settings └───────────────────────────────────
|
#───┘ Port and TLS settings └───────────────────────────────────
|
||||||
|
@ -4,6 +4,7 @@ mod m20230531_180824_drop_reversi;
|
|||||||
mod m20230627_185451_index_note_url;
|
mod m20230627_185451_index_note_url;
|
||||||
mod m20230709_000510_move_antenna_to_cache;
|
mod m20230709_000510_move_antenna_to_cache;
|
||||||
mod m20230726_213530_drop_ads;
|
mod m20230726_213530_drop_ads;
|
||||||
|
mod m20230801_160334_add_instance_account_domain;
|
||||||
|
|
||||||
pub struct Migrator;
|
pub struct Migrator;
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ impl MigratorTrait for Migrator {
|
|||||||
Box::new(m20230627_185451_index_note_url::Migration),
|
Box::new(m20230627_185451_index_note_url::Migration),
|
||||||
Box::new(m20230709_000510_move_antenna_to_cache::Migration),
|
Box::new(m20230709_000510_move_antenna_to_cache::Migration),
|
||||||
Box::new(m20230726_213530_drop_ads::Migration),
|
Box::new(m20230726_213530_drop_ads::Migration),
|
||||||
|
Box::new(m20230801_160334_add_instance_account_domain::Migration),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
use sea_orm_migration::prelude::*;
|
||||||
|
|
||||||
|
#[derive(DeriveMigrationName)]
|
||||||
|
pub struct Migration;
|
||||||
|
|
||||||
|
#[async_trait::async_trait]
|
||||||
|
impl MigrationTrait for Migration {
|
||||||
|
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Instance::Table)
|
||||||
|
.add_column(ColumnDef::new(Instance::AccountDomain).string())
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Instance::Table)
|
||||||
|
.drop_column(Instance::AccountDomain)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Learn more at https://docs.rs/sea-query#iden
|
||||||
|
#[derive(Iden)]
|
||||||
|
enum Instance {
|
||||||
|
Table,
|
||||||
|
AccountDomain,
|
||||||
|
}
|
@ -10,6 +10,7 @@ pub struct Model {
|
|||||||
#[sea_orm(column_name = "caughtAt")]
|
#[sea_orm(column_name = "caughtAt")]
|
||||||
pub caught_at: DateTimeWithTimeZone,
|
pub caught_at: DateTimeWithTimeZone,
|
||||||
pub host: String,
|
pub host: String,
|
||||||
|
pub account_domain: Option<String>,
|
||||||
#[sea_orm(column_name = "usersCount")]
|
#[sea_orm(column_name = "usersCount")]
|
||||||
pub users_count: i32,
|
pub users_count: i32,
|
||||||
#[sea_orm(column_name = "notesCount")]
|
#[sea_orm(column_name = "notesCount")]
|
||||||
|
@ -63,7 +63,7 @@ export async function masterMain() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bootLogger.succ(
|
bootLogger.succ(
|
||||||
`Now listening on port ${config.port} on ${config.url}`,
|
`Now listening on port ${config.port} on ${config.url} - using ${config.accountDomain}`,
|
||||||
null,
|
null,
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
@ -40,6 +40,8 @@ export default function load() {
|
|||||||
|
|
||||||
config.url = url.origin;
|
config.url = url.origin;
|
||||||
|
|
||||||
|
if (!config.accountDomain) config.accountDomain = url.hostname
|
||||||
|
|
||||||
config.port = config.port || parseInt(process.env.PORT || "", 10);
|
config.port = config.port || parseInt(process.env.PORT || "", 10);
|
||||||
|
|
||||||
mixin.version = meta.version;
|
mixin.version = meta.version;
|
||||||
|
@ -5,6 +5,7 @@ export type Source = {
|
|||||||
repository_url?: string;
|
repository_url?: string;
|
||||||
feedback_url?: string;
|
feedback_url?: string;
|
||||||
url: string;
|
url: string;
|
||||||
|
accountDomain?: string;
|
||||||
port: number;
|
port: number;
|
||||||
disableHsts?: boolean;
|
disableHsts?: boolean;
|
||||||
db: {
|
db: {
|
||||||
|
@ -170,4 +170,9 @@ export class Instance {
|
|||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
public infoUpdatedAt: Date | null;
|
public infoUpdatedAt: Date | null;
|
||||||
|
|
||||||
|
@Column("Domains for account ats", {
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
public accountDomain: string | null;
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ export const InstanceRepository = db.getRepository(Instance).extend({
|
|||||||
iconUrl: instance.iconUrl,
|
iconUrl: instance.iconUrl,
|
||||||
faviconUrl: instance.faviconUrl,
|
faviconUrl: instance.faviconUrl,
|
||||||
themeColor: instance.themeColor,
|
themeColor: instance.themeColor,
|
||||||
|
accountDomain: instance.accountDomain,
|
||||||
infoUpdatedAt: instance.infoUpdatedAt
|
infoUpdatedAt: instance.infoUpdatedAt
|
||||||
? instance.infoUpdatedAt.toISOString()
|
? instance.infoUpdatedAt.toISOString()
|
||||||
: null,
|
: null,
|
||||||
|
@ -21,6 +21,12 @@ export const packedFederationInstanceSchema = {
|
|||||||
nullable: false,
|
nullable: false,
|
||||||
example: "firefish.example.com",
|
example: "firefish.example.com",
|
||||||
},
|
},
|
||||||
|
accountDomain: {
|
||||||
|
type: "string",
|
||||||
|
optional: true,
|
||||||
|
nullable: true,
|
||||||
|
example: "example.com",
|
||||||
|
},
|
||||||
usersCount: {
|
usersCount: {
|
||||||
type: "number",
|
type: "number",
|
||||||
optional: false,
|
optional: false,
|
||||||
|
@ -32,7 +32,7 @@ export async function resolveUser(
|
|||||||
|
|
||||||
host = toPuny(host);
|
host = toPuny(host);
|
||||||
|
|
||||||
if (config.host === host) {
|
if (config.host === host || config.accountDomain === host) {
|
||||||
logger.info(`return local user: ${usernameLower}`);
|
logger.info(`return local user: ${usernameLower}`);
|
||||||
return await Users.findOneBy({ usernameLower, host: IsNull() }).then(
|
return await Users.findOneBy({ usernameLower, host: IsNull() }).then(
|
||||||
(u) => {
|
(u) => {
|
||||||
|
@ -18,6 +18,7 @@ export async function getInstance(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
uri: response.uri,
|
uri: response.uri,
|
||||||
|
account_domain: config.accountDomain,
|
||||||
title: response.title || "Iceshrimp",
|
title: response.title || "Iceshrimp",
|
||||||
short_description:
|
short_description:
|
||||||
response.description?.substring(0, 50) || "See real server website",
|
response.description?.substring(0, 50) || "See real server website",
|
||||||
|
Loading…
Reference in New Issue
Block a user