forked from vxmppb/vxmppb
Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Stephen Vanderwarker | b38c528575 |
|
@ -1,6 +1,8 @@
|
||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
config.ini
|
||||||
build/
|
build/
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
.vs/
|
.vs/
|
||||||
Dockerfile
|
Dockerfile
|
||||||
|
Jenkinsfile
|
||||||
|
|
|
@ -3,6 +3,5 @@ package-lock.json
|
||||||
config.ini
|
config.ini
|
||||||
build/
|
build/
|
||||||
.npmignore
|
.npmignore
|
||||||
.dockerignore
|
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
.vs/
|
.vs/
|
||||||
|
|
|
@ -4,6 +4,14 @@ Vanderwarker Family XMPP Bot.
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[![NPM](https://nodei.co/npm/vxmppb.png?compact=true)](https://nodei.co/npm/vxmppb/)
|
||||||
|
|
||||||
|
[![Known Vulnerabilities](https://snyk.io/test/npm/vxmppb/badge.svg)](https://snyk.io/test/npm/vxmppb)
|
||||||
|
|
||||||
|
![docker](https://img.shields.io/docker/pulls/vxmppb/vxmppb.svg)
|
||||||
|
|
||||||
|
![npm](https://img.shields.io/npm/dt/vxmppb)
|
||||||
|
|
||||||
### :book: How To Install
|
### :book: How To Install
|
||||||
You can install using:
|
You can install using:
|
||||||
- [npm](https://wiki.vanderwarker.family/doku.php?id=code:vxmppb:install:npm)
|
- [npm](https://wiki.vanderwarker.family/doku.php?id=code:vxmppb:install:npm)
|
||||||
|
|
110
index.js
110
index.js
|
@ -280,7 +280,7 @@ try {
|
||||||
});
|
});
|
||||||
debug();
|
debug();
|
||||||
}
|
}
|
||||||
} else if (message === '!reauth') {
|
} else if (message === '!lightsauth') {
|
||||||
if (from != user_jid) {
|
if (from != user_jid) {
|
||||||
xmpp.send(from, pc);
|
xmpp.send(from, pc);
|
||||||
} else {
|
} else {
|
||||||
|
@ -446,26 +446,100 @@ try {
|
||||||
// Please note this section requires you to have an Ejabberd server.
|
// Please note this section requires you to have an Ejabberd server.
|
||||||
// I am welcome to pull requests for other servers (maybe set type in config.ini)
|
// I am welcome to pull requests for other servers (maybe set type in config.ini)
|
||||||
else if (message === '!meet') {
|
else if (message === '!meet') {
|
||||||
console.log(xmpp_server_type);
|
|
||||||
if (from != user_jid) {
|
if (from != user_jid) {
|
||||||
xmpp.send(from, pc);
|
xmpp.send(from, pc);
|
||||||
} else {
|
} else {
|
||||||
if (xmpp_server_type === "ejabberd"){
|
if (xmpp_server_type === "ejabberd"){
|
||||||
fs.readFileSync('./servers/ejabberd.js', 'utf-8');
|
// Create private XMPP room
|
||||||
console.log("server type is ejabberd");
|
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,
|
||||||
xmpp.send(from, "Ejabberd is the only supported server at the moment.")
|
host: bot_hostname,
|
||||||
xmpp.send(from, "Please see https://git.vanderwarker.family/vxmppb/vxmppb/issues/20")
|
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
|
||||||
|
@ -575,4 +649,4 @@ try {
|
||||||
console.log("Please create a config.ini");
|
console.log("Please create a config.ini");
|
||||||
console.log("See https://wiki.vanderwarker.family/doku.php?id=code:vxmppb:install:start");
|
console.log("See https://wiki.vanderwarker.family/doku.php?id=code:vxmppb:install:start");
|
||||||
console.log("and choose your prefered install method.");
|
console.log("and choose your prefered install method.");
|
||||||
}
|
}
|
|
@ -1,84 +0,0 @@
|
||||||
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);
|
|
|
@ -1,30 +0,0 @@
|
||||||
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
|
|
||||||
]
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue