Compare commits
No commits in common. "a7072e613026d3aa9bbc50635f31a2b3cb3012d9" and "8782834c04ca4141d858a325711adeea915ab365" have entirely different histories.
a7072e6130
...
8782834c04
46 changed files with 69 additions and 8602 deletions
17
.gitignore
vendored
17
.gitignore
vendored
|
@ -129,20 +129,3 @@ dist
|
||||||
.yarn/install-state.gz
|
.yarn/install-state.gz
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|
||||||
|
|
||||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
|
||||||
/.pnp
|
|
||||||
.pnp.js
|
|
||||||
|
|
||||||
# testing
|
|
||||||
/coverage
|
|
||||||
|
|
||||||
# production
|
|
||||||
/build
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# chatbridge
|
# ucla-chat
|
||||||
|
|
||||||
Invite people to a bridged nextcloud chat with a token
|
Invite people to a bridged nextcloud chat with a token
|
||||||
|
|
||||||
|
@ -25,13 +25,10 @@ Use the ansible role!!!
|
||||||
## References
|
## References
|
||||||
|
|
||||||
idk i'm just learnin
|
idk i'm just learnin
|
||||||
|
|
||||||
- https://typeorm.io/active-record-data-mapper#what-is-the-active-record-pattern
|
|
||||||
- https://typeorm.io/example-with-express
|
|
||||||
- https://github.com/wpcodevo/node_typeorm/tree/restapi-node-typeorm
|
- https://github.com/wpcodevo/node_typeorm/tree/restapi-node-typeorm
|
||||||
- https://www.axllent.org/docs/nodejs-service-with-systemd/
|
- https://www.axllent.org/docs/nodejs-service-with-systemd/
|
||||||
- https://github.com/wpcodevo/Blog_MUI_React-hook-form/tree/login-signup-form
|
- https://github.com/wpcodevo/Blog_MUI_React-hook-form/tree/login-signup-form
|
||||||
- https://blog.alexdevero.com/build-react-app-express-api/
|
- https://blog.alexdevero.com/build-react-app-express-api/
|
||||||
- https://www.react.express/
|
- https://www.react.express/
|
||||||
- https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
|
- https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
|
||||||
- https://www.typescriptlang.org/docs/handbook/compiler-options.html
|
- https://www.typescriptlang.org/docs/handbook/compiler-options.html
|
|
@ -1,8 +0,0 @@
|
||||||
import { render, screen } from '@testing-library/react';
|
|
||||||
import App from './App';
|
|
||||||
|
|
||||||
test('renders learn react link', () => {
|
|
||||||
render(<App />);
|
|
||||||
const linkElement = screen.getByText(/learn react/i);
|
|
||||||
expect(linkElement).toBeInTheDocument();
|
|
||||||
});
|
|
|
@ -1,25 +0,0 @@
|
||||||
import logo from './logo.svg';
|
|
||||||
import './styles/App.css';
|
|
||||||
|
|
||||||
function App() {
|
|
||||||
return (
|
|
||||||
<div className="App">
|
|
||||||
<header className="App-header">
|
|
||||||
<img src={logo} className="App-logo" alt="logo" />
|
|
||||||
<p>
|
|
||||||
Edit <code>src/App.js</code> and save to reload.
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
className="App-link"
|
|
||||||
href="https://reactjs.org"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
Learn React
|
|
||||||
</a>
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default App;
|
|
|
@ -1,17 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import ReactDOM from 'react-dom/client';
|
|
||||||
import './styles/index.css';
|
|
||||||
import App from './App';
|
|
||||||
import reportWebVitals from './reportWebVitals';
|
|
||||||
|
|
||||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
|
||||||
root.render(
|
|
||||||
<React.StrictMode>
|
|
||||||
<App />
|
|
||||||
</React.StrictMode>
|
|
||||||
);
|
|
||||||
|
|
||||||
// If you want to start measuring performance in your app, pass a function
|
|
||||||
// to log results (for example: reportWebVitals(console.log))
|
|
||||||
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
|
||||||
reportWebVitals();
|
|
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
|
|
Before Width: | Height: | Size: 2.6 KiB |
|
@ -1,38 +0,0 @@
|
||||||
.App {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-logo {
|
|
||||||
height: 40vmin;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
.App-logo {
|
|
||||||
animation: App-logo-spin infinite 20s linear;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-header {
|
|
||||||
background-color: #282c34;
|
|
||||||
min-height: 100vh;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: calc(10px + 2vmin);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.App-link {
|
|
||||||
color: #61dafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes App-logo-spin {
|
|
||||||
from {
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
||||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
||||||
sans-serif;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
|
||||||
monospace;
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
export default {
|
|
||||||
port: '8999',
|
|
||||||
postgresConfig: {
|
|
||||||
host: '127.0.0.1',
|
|
||||||
port: '6500',
|
|
||||||
username: 'POSTGRES_USER',
|
|
||||||
password: 'POSTGRES_PASSWORD',
|
|
||||||
database: 'POSTGRES_DB',
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
PORT=8999
|
|
||||||
NODE_ENV=development
|
|
||||||
|
|
||||||
POSTGRES_HOST=127.0.0.1
|
|
||||||
POSTGRES_PORT=6500
|
|
||||||
POSTGRES_USER=
|
|
||||||
POSTGRES_PASSWORD=
|
|
||||||
POSTGRES_DB=
|
|
11
galaxy.yml
11
galaxy.yml
|
@ -1,11 +0,0 @@
|
||||||
namespace: "sneakers_the_rat"
|
|
||||||
name: "chatbridge"
|
|
||||||
version: 0.1.0
|
|
||||||
readme: README.md
|
|
||||||
authors: ["Jonny Saunders <j@nny.fyi>"]
|
|
||||||
description: Ansible roles for managing chatbridge!
|
|
||||||
repository: https://git.jon-e.net/jonny/chatbridge
|
|
||||||
|
|
||||||
manifest:
|
|
||||||
directives:
|
|
||||||
- graft roles
|
|
15
package.json
15
package.json
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "chatbridge",
|
"name": "ucla-chat",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "bridging a bunch of chats together",
|
"description": "bridging a bunch of chats together",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
@ -12,14 +12,10 @@
|
||||||
"typeorm": "typeorm-ts-node-commonjs",
|
"typeorm": "typeorm-ts-node-commonjs",
|
||||||
"migrate": "rm -rf build && yarn build && yarn typeorm migration:generate ./src/migrations/added-user-entity -d ./src/utils/data-source.ts",
|
"migrate": "rm -rf build && yarn build && yarn typeorm migration:generate ./src/migrations/added-user-entity -d ./src/utils/data-source.ts",
|
||||||
"db:push": "rm -rf build && yarn build && yarn typeorm migration:run -d src/utils/data-source.ts",
|
"db:push": "rm -rf build && yarn build && yarn typeorm migration:run -d src/utils/data-source.ts",
|
||||||
"importData": "npx ts-node-dev --transpile-only --exit-child src/data/seeder.ts",
|
"importData": "npx ts-node-dev --transpile-only --exit-child src/data/seeder.ts"
|
||||||
"client_start": "react-scripts start",
|
|
||||||
"client_build": "react-scripts build",
|
|
||||||
"client_eject": "react-scripts eject"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@slack/oauth": "^2.6.1",
|
"@slack/oauth": "^2.6.1",
|
||||||
"config": "^3.3.9",
|
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.3.1",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
@ -30,7 +26,6 @@
|
||||||
"pug": "^3.0.2",
|
"pug": "^3.0.2",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-scripts": "^5.0.1",
|
|
||||||
"redis": "^4.6.7",
|
"redis": "^4.6.7",
|
||||||
"typeorm": "^0.3.17",
|
"typeorm": "^0.3.17",
|
||||||
"typescript": "^5.1.6",
|
"typescript": "^5.1.6",
|
||||||
|
@ -45,11 +40,5 @@
|
||||||
"@types/pug": "^2.0.6",
|
"@types/pug": "^2.0.6",
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"ts-node-dev": "^2.0.0"
|
"ts-node-dev": "^2.0.0"
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"react-app/jest"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB |
|
@ -1,43 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<meta name="theme-color" content="#000000" />
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="Web site created using create-react-app"
|
|
||||||
/>
|
|
||||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
||||||
<!--
|
|
||||||
manifest.json provides metadata used when your web app is installed on a
|
|
||||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
|
||||||
-->
|
|
||||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
||||||
<!--
|
|
||||||
Notice the use of %PUBLIC_URL% in the tags above.
|
|
||||||
It will be replaced with the URL of the `public` folder during the build.
|
|
||||||
Only files inside the `public` folder can be referenced from the HTML.
|
|
||||||
|
|
||||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
|
||||||
work correctly both with client-side routing and a non-root public URL.
|
|
||||||
Learn how to configure a non-root public URL by running `npm run build`.
|
|
||||||
-->
|
|
||||||
<title>React App</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
||||||
<div id="root"></div>
|
|
||||||
<!--
|
|
||||||
This HTML file is a template.
|
|
||||||
If you open it directly in the browser, you will see an empty page.
|
|
||||||
|
|
||||||
You can add webfonts, meta tags, or analytics to this file.
|
|
||||||
The build step will place the bundled scripts into the <body> tag.
|
|
||||||
|
|
||||||
To begin the development, run `npm start` or `yarn start`.
|
|
||||||
To create a production bundle, use `npm run build` or `yarn build`.
|
|
||||||
-->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 9.4 KiB |
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
"short_name": "React App",
|
|
||||||
"name": "Create React App Sample",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "favicon.ico",
|
|
||||||
"sizes": "64x64 32x32 24x24 16x16",
|
|
||||||
"type": "image/x-icon"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "logo192.png",
|
|
||||||
"type": "image/png",
|
|
||||||
"sizes": "192x192"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "logo512.png",
|
|
||||||
"type": "image/png",
|
|
||||||
"sizes": "512x512"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"start_url": ".",
|
|
||||||
"display": "standalone",
|
|
||||||
"theme_color": "#000000",
|
|
||||||
"background_color": "#ffffff"
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
# https://www.robotstxt.org/robotstxt.html
|
|
||||||
User-agent: *
|
|
||||||
Disallow:
|
|
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
# defaults file for chatbridge
|
|
||||||
|
|
||||||
chatbridge_postgres_user: chatbridge
|
|
||||||
chatbridge_postgres_password: CHANGEME
|
|
||||||
chatbridge_postgres_db: chatbridge
|
|
||||||
chatbridge_postgres_port: 6500
|
|
||||||
|
|
||||||
chatbridge_user: chatbridge
|
|
||||||
chatbridge_user_home: /var/lib/chatbridge
|
|
||||||
|
|
||||||
# Where, beneath the root domain, we should host the site
|
|
||||||
# (used in nginx configs)
|
|
||||||
chatbridge_fqdn: localhost
|
|
||||||
chatbridge_webroot: ""
|
|
||||||
chatbridge_api_port: 8999
|
|
||||||
|
|
||||||
# false gives you an http-only nginx config
|
|
||||||
chatbridge_https: true
|
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
# handlers file for ucla_chat
|
|
||||||
|
|
||||||
- name: restart nginx
|
|
||||||
service:
|
|
||||||
name: nginx
|
|
||||||
state: restarted
|
|
||||||
enabled: yes
|
|
||||||
become: yes
|
|
|
@ -1,10 +0,0 @@
|
||||||
- name: clone repository
|
|
||||||
become: yes
|
|
||||||
become_user: "{{ chatbridge_user }}"
|
|
||||||
git:
|
|
||||||
repo: https://git.jon-e.net/jonny/chatbridge
|
|
||||||
dest: "{{ chatbridge_user_home }}/chatbridge"
|
|
||||||
version: "HEAD"
|
|
||||||
# failed_when: "command_result.failed and 'Local modifications' not in command_result.msg"
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
- name: check that mandatory variables are correctly defined
|
|
||||||
assert:
|
|
||||||
quiet: yes
|
|
||||||
that: "{{ item }}"
|
|
||||||
fail_msg: "One or more variables are not correctly defined. Check role documentation: https://gitlab.com/nodiscc/xsrv/-/tree/master/roles/matrix_synapse"
|
|
||||||
with_items:
|
|
||||||
- chatbridge_postgres_password is not search("CHANGEME")
|
|
|
@ -1,35 +0,0 @@
|
||||||
- name: create development .env
|
|
||||||
become: yes
|
|
||||||
become_user: "{{ chatbridge_user }}"
|
|
||||||
template:
|
|
||||||
src: chatbridge_env.j2
|
|
||||||
dest: "{{ chatbridge_user_home}}/.env"
|
|
||||||
|
|
||||||
- name: create https nginx config
|
|
||||||
become: yes
|
|
||||||
template:
|
|
||||||
src: nginx_chatbridge.conf.j2
|
|
||||||
dest: /etc/nginx/sites-available/chatbridge.conf
|
|
||||||
when:
|
|
||||||
- chatbridge_https is defined
|
|
||||||
- chatbridge_https | bool
|
|
||||||
notify: restart nginx
|
|
||||||
|
|
||||||
- name: create http nginx config
|
|
||||||
become: yes
|
|
||||||
template:
|
|
||||||
src: nginx_chatbridge_http.conf.j2
|
|
||||||
dest: /etc/nginx/sites-available/chatbridge.conf
|
|
||||||
when:
|
|
||||||
- chatbridge_https is defined
|
|
||||||
- not chatbridge_https
|
|
||||||
notify: restart nginx
|
|
||||||
|
|
||||||
|
|
||||||
- name: link nginx config
|
|
||||||
become: yes
|
|
||||||
file:
|
|
||||||
state: link
|
|
||||||
src: /etc/nginx/sites-available/chatbridge.conf
|
|
||||||
dest: /etc/nginx/sites-enabled/chatbridge.conf
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
|
|
||||||
- name: include variable checks
|
|
||||||
import_tasks: checks.yml
|
|
||||||
|
|
||||||
- name: include user config
|
|
||||||
import_tasks: user.yml
|
|
||||||
|
|
||||||
- name: include postgres config
|
|
||||||
import_tasks: postgres.yml
|
|
||||||
|
|
||||||
- name: install chatbridge
|
|
||||||
import_tasks: chatbridge.yml
|
|
||||||
|
|
||||||
- name: configure chatbridge
|
|
||||||
import_tasks: config.yml
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
- name: install postgresql
|
|
||||||
become: yes
|
|
||||||
apt:
|
|
||||||
state: present
|
|
||||||
package:
|
|
||||||
- postgresql
|
|
||||||
- postgresql-client
|
|
||||||
- python3-psycopg2
|
|
||||||
|
|
||||||
- name: postgres is enabled and running
|
|
||||||
become: yes
|
|
||||||
systemd:
|
|
||||||
name: postgresql
|
|
||||||
enabled: true
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: create postgres user
|
|
||||||
become: yes
|
|
||||||
become_user: postgres
|
|
||||||
postgresql_user:
|
|
||||||
name: "{{ chatbridge_postgres_user }}"
|
|
||||||
password: "{{ chatbridge_postgres_password }}"
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: create postgres database
|
|
||||||
become: yes
|
|
||||||
become_user: postgres
|
|
||||||
postgresql_db:
|
|
||||||
name: "{{ chatbridge_postgres_db }}"
|
|
||||||
state: present
|
|
||||||
owner: "{{ chatbridge_postgres_user }}"
|
|
||||||
|
|
||||||
- name: assign postgres privileges
|
|
||||||
become: yes
|
|
||||||
become_user: postgres
|
|
||||||
postgresql_privs:
|
|
||||||
database: "{{ chatbridge_postgres_db }}"
|
|
||||||
state: present
|
|
||||||
privs: ALL
|
|
||||||
type: database
|
|
||||||
role: "{{ chatbridge_postgres_user }}"
|
|
|
@ -1,24 +0,0 @@
|
||||||
- name: Create chatbridge group
|
|
||||||
group:
|
|
||||||
name: "{{ chatbridge_user }}"
|
|
||||||
system: true
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: Create chatbridge user and home directory
|
|
||||||
become: yes
|
|
||||||
user:
|
|
||||||
name: "{{ chatbridge_user }}"
|
|
||||||
state: present
|
|
||||||
group: "{{ chatbridge_user }}"
|
|
||||||
home: "{{ chatbridge_user_home }}"
|
|
||||||
system: true
|
|
||||||
|
|
||||||
|
|
||||||
- name: Create public directory and give permissions to www-data
|
|
||||||
become: yes
|
|
||||||
file:
|
|
||||||
mode: '660'
|
|
||||||
state: directory
|
|
||||||
group: "www-data"
|
|
||||||
owner: "{{ chatbridge_user }}"
|
|
||||||
path: "{{ chatbridge_user_home }}/public"
|
|
|
@ -1,8 +0,0 @@
|
||||||
PORT={{ chatbridge_api_port }}
|
|
||||||
NODE_ENV=development
|
|
||||||
|
|
||||||
POSTGRES_HOST=127.0.0.1
|
|
||||||
POSTGRES_PORT={{ chatbridge_postgres_port }}
|
|
||||||
POSTGRES_USER={{ chatbridge_postgres_user }}
|
|
||||||
POSTGRES_PASSWORD={{ chatbridge_postgres_password }}
|
|
||||||
POSTGRES_DB={{ chatbridge_postgres_db }}
|
|
|
@ -1,36 +0,0 @@
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
server_name {{ chatbridge_fqdn }};
|
|
||||||
|
|
||||||
location {{ chatbridge_webroot }}/api/ {
|
|
||||||
proxy_pass http://127.0.0.1:{{ chatbridge_api_port }}/;
|
|
||||||
}
|
|
||||||
|
|
||||||
location {{ chatbridge_webroot }}/ {
|
|
||||||
root {{ chatbridge_user_home }}/public;
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssl_certificate /etc/letsencrypt/live/{{ chatbridge_fqdn }}/fullchain.pem;
|
|
||||||
ssl_certificate_key /etc/letsencrypt/live/{{ chatbridge_fqdn }}/privkey.pem;
|
|
||||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
||||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
|
|
||||||
server_name {{ chatbridge_fqdn }};
|
|
||||||
|
|
||||||
location /.well-known/acme-challenge {
|
|
||||||
root /var/www/letsencrypt;
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
rewrite ^ https://{{ chatbridge_fqdn }}$request_uri? permanent;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name {{ chatbridge_fqdn }};
|
|
||||||
|
|
||||||
location {{ chatbridge_webroot }}/api/ {
|
|
||||||
proxy_pass http://127.0.0.1:{{ chatbridge_api_port }}/;
|
|
||||||
}
|
|
||||||
|
|
||||||
location {{ chatbridge_webroot }} {
|
|
||||||
root {{ chatbridge_user_home }}/public;
|
|
||||||
try_files $uri $uri/ $uri/index.html /index.html index.html;
|
|
||||||
}
|
|
||||||
|
|
||||||
location {{ chatbridge_webroot }}/ {
|
|
||||||
rewrite ^{{ chatbridge_webroot }}/?(.*)$ $1 break;
|
|
||||||
root {{ chatbridge_user_home }}/public;
|
|
||||||
try_files $uri $uri/ $uri/index.html =404;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
2
roles/ucla_chat/defaults/main.yml
Normal file
2
roles/ucla_chat/defaults/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# defaults file for ucla_chat
|
2
roles/ucla_chat/handlers/main.yml
Normal file
2
roles/ucla_chat/handlers/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# handlers file for ucla_chat
|
|
@ -1,6 +1,7 @@
|
||||||
galaxy_info:
|
galaxy_info:
|
||||||
author: Jonny Saunders
|
author: your name
|
||||||
description: Install chatbridge :)
|
description: your role description
|
||||||
|
company: your company (optional)
|
||||||
|
|
||||||
# If the issue tracker for your role is not on github, uncomment the
|
# If the issue tracker for your role is not on github, uncomment the
|
||||||
# next line and provide a value
|
# next line and provide a value
|
||||||
|
@ -13,7 +14,7 @@ galaxy_info:
|
||||||
# - GPL-3.0-only
|
# - GPL-3.0-only
|
||||||
# - Apache-2.0
|
# - Apache-2.0
|
||||||
# - CC-BY-4.0
|
# - CC-BY-4.0
|
||||||
license: AGPL-3.0-or-later
|
license: license (GPL-2.0-or-later, MIT, etc)
|
||||||
|
|
||||||
min_ansible_version: 2.1
|
min_ansible_version: 2.1
|
||||||
|
|
2
roles/ucla_chat/tasks/main.yml
Normal file
2
roles/ucla_chat/tasks/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# tasks file for ucla_chat
|
|
@ -1,20 +0,0 @@
|
||||||
require('dotenv').config();
|
|
||||||
import express, { NextFunction, Request, Response } from 'express';
|
|
||||||
import config from 'config';
|
|
||||||
import cors from 'cors';
|
|
||||||
import { AppDataSource } from './db/data-source';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AppDataSource.initialize()
|
|
||||||
.then(async () => {
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
|
|
||||||
app.all('*', (req: Request, res: Response, next: NextFunction) => {
|
|
||||||
next(new AppError(404, `Route ${req.originalUrl} not found`));
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
|
@ -1,22 +0,0 @@
|
||||||
require('dotenv').config();
|
|
||||||
import 'reflect-metadata';
|
|
||||||
import { DataSource } from 'typeorm';
|
|
||||||
import config from 'config';
|
|
||||||
|
|
||||||
const postgresConfig = config.get<{
|
|
||||||
host: string;
|
|
||||||
port: number;
|
|
||||||
username: string;
|
|
||||||
password: string;
|
|
||||||
database: string;
|
|
||||||
}>('postgresConfig');
|
|
||||||
|
|
||||||
export const AppDataSource = new DataSource({
|
|
||||||
...postgresConfig,
|
|
||||||
type: 'postgres',
|
|
||||||
synchronize: false,
|
|
||||||
logging: false,
|
|
||||||
entities: ['server/entities/**/*.entity{.ts,.js}'],
|
|
||||||
migrations: ['server/migrations/**/*{.ts,.js}'],
|
|
||||||
// subscribers: ['server/subscribers/**/*{.ts,.js}'],
|
|
||||||
});
|
|
|
@ -1,17 +0,0 @@
|
||||||
import {
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
BaseEntity,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
export default abstract class Model extends BaseEntity {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
/*
|
|
||||||
Creating and synchronizing the .toml configuration files for matterbridge
|
|
||||||
|
|
||||||
*/
|
|
|
@ -1,5 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Managing the matterbridge processes
|
|
||||||
|
|
||||||
*/
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es2016",
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"emitDecoratorMetadata": true,
|
|
||||||
"module": "commonjs",
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"strict": true,
|
|
||||||
"strictPropertyInitialization": false,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"outDir": "./build",
|
|
||||||
"rootDir": ".",
|
|
||||||
"include": ["server/**/*"],
|
|
||||||
"exclude": ["node_modules", "roles"]
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue