Creating files for prosidy, and openfire

#20
Moved ejabberd to it's own file as well.
This commit is contained in:
Stephen Vanderwarker 2022-06-02 21:48:12 -04:00
parent ca65ed3c75
commit da3390bc89
Signed by: stephen
GPG Key ID: EF429EF847868C14
4 changed files with 156 additions and 90 deletions

102
index.js
View File

@ -450,96 +450,18 @@ try {
xmpp.send(from, pc); xmpp.send(from, pc);
} else { } else {
if (xmpp_server_type === "ejabberd"){ if (xmpp_server_type === "ejabberd"){
// Create private XMPP room fs.readFileSync('./servers/ejabberd.js', 'utf-8');
const createRoom = { debug();
method: 'POST', xmpp.send(from, "Alright. Starting a new meeting: " + xmpp_muc_name + "@" + xmpp_muc_server + " and inviting friends");
url: xmpp_api_url + '/create_room_with_opts', }
headers: { else if (xmpp_server_type === "prosidy"){
'Content-Type': 'application/json', xmpp.send(from, "Ejabberd is the only supported server at the moment.")
Authorization: xmpp_auth xmpp.send(from, "Please see https://git.vanderwarker.family/vxmppb/vxmppb/issues/20")
}, }
body: { else if (xmpp_server_type === "openfire"){
name: xmpp_muc_name, fs.readFileSync('./servers/openfire.js', 'utf-8');
service: xmpp_muc_server, }
host: bot_hostname, }
options: {
allow_change_subj: 'false',
allow_private_messages: 'false',
allow_private_messages_from_visitors: 'false',
allow_visitor_nickchange: 'false',
allow_visitor_status: 'false',
lang: 'en',
mam: 'true',
members_only: 'true',
persistent: 'false',
public: 'false',
public_list: 'false',
title: 'Secure channel generated by https://vxmppb.tk',
allow_subscription: 'true'
}
},
json: true
};
// send request to create room
request(createRoom, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
// wait 2 seconds until room has been created (http issues)
setTimeout(() => {
// loop through friends, authorize users, and send invites
for (const key in config.friends) {
// send xmpp message to friends alerting of new room
xmpp.send(key, "Meeting started");
// authorize users
const addMember = {
method: 'POST',
url: xmpp_api_url + 'set_room_affiliation',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
jid: key,
affiliation: 'member'
},
json: true
};
// invite users
const inviteMember = {
method: 'POST',
url: xmpp_api_url + '/send_direct_invitation',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
password: '',
reason: 'vXMPPb Meeting Invite',
users: key
},
json: true
};
request(addMember, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
request(inviteMember, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
}
}, 2000);
debug();
xmpp.send(from, "Alright. Starting a new meeting: " + xmpp_muc_name + "@" + xmpp_muc_server + " and inviting friends");
} else {
xmpp.send(from, "Ejabberd is the only supported server at the moment.")
xmpp.send(from, "Please see https://git.vanderwarker.family/vxmppb/vxmppb/issues/20")
}}
} }
// End meeting // End meeting

84
servers/ejabberd.js Normal file
View File

@ -0,0 +1,84 @@
const createRoom = {
method: 'POST',
url: xmpp_api_url + '/create_room_with_opts',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
host: bot_hostname,
options: {
allow_change_subj: 'false',
allow_private_messages: 'false',
allow_private_messages_from_visitors: 'false',
allow_visitor_nickchange: 'false',
allow_visitor_status: 'false',
lang: 'en',
mam: 'true',
members_only: 'true',
persistent: 'false',
public: 'false',
public_list: 'false',
title: 'Secure channel generated by https://vxmppb.tk',
allow_subscription: 'true'
}
},
json: true
};
// send request to create room
request(createRoom, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
// wait 2 seconds until room has been created (http issues)
setTimeout(() => {
// loop through friends, authorize users, and send invites
for (const key in config.friends) {
// send xmpp message to friends alerting of new room
xmpp.send(key, "Meeting started");
// authorize users
const addMember = {
method: 'POST',
url: xmpp_api_url + 'set_room_affiliation',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
jid: key,
affiliation: 'member'
},
json: true
};
// invite users
const inviteMember = {
method: 'POST',
url: xmpp_api_url + '/send_direct_invitation',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
password: '',
reason: 'vXMPPb Meeting Invite',
users: key
},
json: true
};
request(addMember, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
request(inviteMember, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
}
}, 2000);

30
servers/openfire.js Normal file
View File

@ -0,0 +1,30 @@
const createRoom = {
method: 'POST',
// This requires to install a plugin! Please check list on openfire
// admin dashboard. Search for HTTP API
url: xmpp_api_url + '/plugins/restapi/v1/chatrooms',
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
options: {
roomName: xmpp_muc_name,
naturalName: xmpp_muc_name,
description: "Secure channel generated by https://vxmppb.tk",
subject: "Secure channel generated by https://vxmppb.tk",
persistent: "false",
publicRoom: "false",
registrationEnabled: "false",
canOccupantsChangeSubject: "false",
membersOnly: "true",
moderated: "true",
members: {
// Member!? MEMBER?!? Ooo ooo! Member?!
"member": [
config.friends
]
},
}
}
}

30
servers/prosidy.js Normal file
View File

@ -0,0 +1,30 @@
const createRoom = {
method: 'GET',
url: xmpp_api_url + '/muc/config?jid=' + user_jid,
headers: {
'Content-Type': 'application/json',
Authorization: xmpp_auth
},
body: {
name: xmpp_muc_name,
service: xmpp_muc_server,
host: bot_hostname,
options: {
affliations: [
{
affliation: "member",
jid: config.friends,
}
],
config: {
description: "",
members_only: true,
moderated: true,
name: xmpp_muc_name,
persistent: false,
subject: "Secure channel generated by https://vxmppb.tk",
public: false
}
}
}
}