This repository was archived by the owner on Mar 5, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.js
86 lines (81 loc) · 3.05 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var LogService = require("./src/LogService");
var Cli = require("matrix-appservice-bridge").Cli;
var AppServiceRegistration = require("matrix-appservice-bridge").AppServiceRegistration;
var path = require("path");
var TwilioStore = require("./src/storage/TwilioStore");
var TwilioBridge = require("./src/TwilioBridge");
var WebService = require("./src/WebService");
var cli = new Cli({
registrationPath: "appservice-registration-twilio.yaml",
enableRegistration: true,
enableLocalpart: true,
bridgeConfig: {
affectsRegistration: true,
schema: path.join(__dirname, "config/schema.yml"),
defaults: {
homeserver: {
url: "http://localhost:8008",
domain: "localhost"
},
bot: {
appearance: {
displayName: "Twilio Bridge",
avatarUrl: "https://t2bot.io/_matrix/media/v1/download/t2l.io/SOZlqpJCUoecxNFZGGnDEhEy" // sms bridge icon
}
},
twilio: {
accountSid: "YOUR_SID_HERE",
authToken: "YOUR_AUTH_TOKEN_HERE"
},
bridge: {
phoneNumber: "+15551234567",
allowedUser: "@me:t2bot.io"
},
advanced: {
localpartPrefix: "_twilio_",
localpartBridge: "_twilio",
},
web: {
port: 4501,
host: '0.0.0.0'
},
logging: {
file: "logs/twilio.log",
console: true,
consoleLevel: 'info',
fileLevel: 'verbose',
rotate: {
size: 52428800,
count: 5
}
}
}
},
generateRegistration: function (registration, callback) {
var config = cli.getConfig();
registration.setId(AppServiceRegistration.generateToken());
registration.setHomeserverToken(AppServiceRegistration.generateToken());
registration.setAppServiceToken(AppServiceRegistration.generateToken());
registration.setRateLimited(false); // disabled because webhooks can get spammy
if (!registration.getSenderLocalpart()) {
registration.setSenderLocalpart(config.advanced.localpartBridge);
}
registration.addRegexPattern("users", "@" + config.advanced.localpartPrefix + ".*", true);
callback(registration);
},
run: function (port, config, registration) {
LogService.init(config);
LogService.info("index", "Preparing database...");
TwilioStore.prepare().then(() => {
LogService.info("index", "Preparing bridge...");
return WebService.bind(config.web.host, config.web.port, config.web.secret);
}).then(() => {
var bridge = new TwilioBridge(config, registration);
return bridge.run(port);
}).catch(err => {
LogService.error("Init", "Failed to start the bridge");
throw err;
});
}
});
cli.run();