Compare commits
1 Commits
main
...
renovate/a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3463cb971 |
@ -1,5 +1,5 @@
|
|||||||
variables:
|
variables:
|
||||||
- &node_image 'node:20.8.1-alpine'
|
- &node_image 'node:20.9.0-alpine'
|
||||||
- &create_synapse_access_token >-
|
- &create_synapse_access_token >-
|
||||||
echo '{"user_id":"ci-dummy","access_token":"ci-dummy","home_server":"ci-dummy","device_id":"ci-dummy"}' > src/config/synapse_access_token.json
|
echo '{"user_id":"ci-dummy","access_token":"ci-dummy","home_server":"ci-dummy","device_id":"ci-dummy"}' > src/config/synapse_access_token.json
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ version: '3'
|
|||||||
services:
|
services:
|
||||||
|
|
||||||
synapse:
|
synapse:
|
||||||
image: docker.io/matrixdotorg/synapse:v1.94.0
|
image: docker.io/matrixdotorg/synapse:v1.95.0
|
||||||
# Since synapse does not retry to connect to the database, restart upon
|
# Since synapse does not retry to connect to the database, restart upon
|
||||||
# failure
|
# failure
|
||||||
restart: "no"
|
restart: "no"
|
||||||
|
|||||||
@ -144,20 +144,7 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const roomCreatorId = (
|
|
||||||
await axios.get(`/_synapse/admin/v1/rooms/${room_id}`)
|
|
||||||
).data.creator
|
|
||||||
if (!roomCreatorId) {
|
|
||||||
log.warn(
|
|
||||||
`Could not determine room creator for room ${room_id}, using admin credentials.`
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (roomCreatorId == matrixUser) {
|
|
||||||
log.warn(
|
|
||||||
`Room creator ${roomCreatorId} left rocketchat room ${room_id}, skipping to prevent being unable to rejoin.`
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.http(`User ${matrixUser} leaves room ${room_id}`)
|
log.http(`User ${matrixUser} leaves room ${room_id}`)
|
||||||
await axios.post(
|
await axios.post(
|
||||||
`/_matrix/client/v3/rooms/${room_id}/leave`,
|
`/_matrix/client/v3/rooms/${room_id}/leave`,
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import adminAccessToken from '../config/synapse_access_token.json'
|
|||||||
import { IdMapping } from '../entity/IdMapping'
|
import { IdMapping } from '../entity/IdMapping'
|
||||||
import log from '../helpers/logger'
|
import log from '../helpers/logger'
|
||||||
import { createMembership, getUserId, save } from '../helpers/storage'
|
import { createMembership, getUserId, save } from '../helpers/storage'
|
||||||
import { axios, getUserDomain } from '../helpers/synapse'
|
import { axios } from '../helpers/synapse'
|
||||||
|
|
||||||
export type RcUser = {
|
export type RcUser = {
|
||||||
_id: string
|
_id: string
|
||||||
@ -32,12 +32,6 @@ export type AccessToken = {
|
|||||||
user_id: string
|
user_id: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export type UserInfo = {
|
|
||||||
admin: boolean
|
|
||||||
displayname: string
|
|
||||||
name: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export function mapUser(rcUser: RcUser): MatrixUser {
|
export function mapUser(rcUser: RcUser): MatrixUser {
|
||||||
return {
|
return {
|
||||||
user_id: '',
|
user_id: '',
|
||||||
@ -81,13 +75,6 @@ async function registerUser(user: MatrixUser): Promise<AccessToken> {
|
|||||||
return (await axios.post('/_synapse/admin/v1/register', user)).data
|
return (await axios.post('/_synapse/admin/v1/register', user)).data
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getUserData(user: MatrixUser): Promise<UserInfo> {
|
|
||||||
return (await axios.get('/_synapse/admin/v2/users/@' + user.username + ":" + getUserDomain())).data
|
|
||||||
}
|
|
||||||
async function loginUser(user: MatrixUser): Promise<AccessToken> {
|
|
||||||
return (await axios.post('/_synapse/admin/v1/users/@' + user.username + ":" + getUserDomain() + "/login")).data
|
|
||||||
}
|
|
||||||
|
|
||||||
async function parseUserMemberships(rcUser: RcUser): Promise<void> {
|
async function parseUserMemberships(rcUser: RcUser): Promise<void> {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
rcUser.__rooms.map(async (rcRoomId: string) => {
|
rcUser.__rooms.map(async (rcRoomId: string) => {
|
||||||
@ -130,30 +117,12 @@ export async function createMapping(
|
|||||||
|
|
||||||
export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
||||||
const user = mapUser(rcUser)
|
const user = mapUser(rcUser)
|
||||||
var user_exists = false;
|
|
||||||
try {
|
|
||||||
await getUserData(user)
|
|
||||||
user_exists = true
|
|
||||||
} catch (error) {
|
|
||||||
user_exists = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user_exists) {
|
|
||||||
const userData = await getUserData(user)
|
|
||||||
user.user_id = userData.name
|
|
||||||
user.displayname = userData.displayname
|
|
||||||
user.admin = user.admin || userData.admin
|
|
||||||
const accessToken = await loginUser(user)
|
|
||||||
user.access_token = accessToken.access_token
|
|
||||||
log.info(`User ${rcUser.username} exists:`, user)
|
|
||||||
} else {
|
|
||||||
const nonce = await getUserRegistrationNonce()
|
const nonce = await getUserRegistrationNonce()
|
||||||
const mac = generateHmac({ ...user, nonce })
|
const mac = generateHmac({ ...user, nonce })
|
||||||
const accessToken = await registerUser({ ...user, nonce, mac })
|
const accessToken = await registerUser({ ...user, nonce, mac })
|
||||||
user.user_id = accessToken.user_id
|
user.user_id = accessToken.user_id
|
||||||
user.access_token = accessToken.access_token
|
user.access_token = accessToken.access_token
|
||||||
log.info(`User ${rcUser.username} created:`, user)
|
log.info(`User ${rcUser.username} created:`, user)
|
||||||
}
|
|
||||||
|
|
||||||
await parseUserMemberships(rcUser)
|
await parseUserMemberships(rcUser)
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { access_token } from '../config/synapse_access_token.json'
|
|||||||
import log from './logger'
|
import log from './logger'
|
||||||
import { getAccessToken } from './storage'
|
import { getAccessToken } from './storage'
|
||||||
|
|
||||||
axios.defaults.baseURL = 'https://m-rc.jennett-wheeler.co.uk'
|
axios.defaults.baseURL = 'http://localhost:8008'
|
||||||
axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}`
|
axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}`
|
||||||
axios.defaults.headers.post['Content-Type'] = 'application/json'
|
axios.defaults.headers.post['Content-Type'] = 'application/json'
|
||||||
|
|
||||||
@ -14,10 +14,6 @@ export interface SessionOptions {
|
|||||||
[others: string]: unknown
|
[others: string]: unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getUserDomain(): string {
|
|
||||||
return "m-rc.jennett-wheeler.co.uk"
|
|
||||||
}
|
|
||||||
|
|
||||||
export { default as axios } from 'axios'
|
export { default as axios } from 'axios'
|
||||||
export const whoami = () =>
|
export const whoami = () =>
|
||||||
new Promise<void>((resolve, reject) => {
|
new Promise<void>((resolve, reject) => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user