mirror of
https://github.com/fspc/Yellow-Bike-Database.git
synced 2025-02-22 08:53:23 -05:00
Added an example of a working connector.
- mailman specific - has been tested to work properly for both subscribe, and unsubscribe - uses node.js - two stage security 1) password is specific to connector for recognization 2) password used by list not kept local - ssl used for all communication - yeah!
This commit is contained in:
parent
39def79d87
commit
6aa95e1ad4
87
examples/mailman_connector_example.js
Normal file
87
examples/mailman_connector_example.js
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
var https = require('https');
|
||||||
|
var fs = require('fs');
|
||||||
|
var querystring = require('querystring');
|
||||||
|
var password = 'fakepassword';
|
||||||
|
var secret_password = 'bikebike';
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
passphrase: 'fakepassword',
|
||||||
|
key: fs.readFileSync('./ssl/privkey.pem'),
|
||||||
|
cert: fs.readFileSync('./ssl/cacert.pem')
|
||||||
|
};
|
||||||
|
|
||||||
|
var mailman = require('https');
|
||||||
|
var mailman_options = {
|
||||||
|
hostname: 'wvcompletestreets.org',
|
||||||
|
port: 443,
|
||||||
|
path: '/',
|
||||||
|
method: 'POST',
|
||||||
|
ca: fs.readFileSync('/etc/ssl/certs/demo-cert.pem')
|
||||||
|
};
|
||||||
|
|
||||||
|
var server = https.createServer(options, function (request, response) {
|
||||||
|
|
||||||
|
response.writeHead(200, { 'Content-Type': 'application/json' });
|
||||||
|
|
||||||
|
request.on('data',function(message){
|
||||||
|
|
||||||
|
var data = JSON.parse(message);
|
||||||
|
var subscribees_upload = data.first_name + ' ' + data.last_name + ' <' + data.email + '>';
|
||||||
|
var url_object;
|
||||||
|
var member_query;
|
||||||
|
if (data.subscribe === 'subscribe') {
|
||||||
|
url_object = {
|
||||||
|
subscribe_or_invite: 0,
|
||||||
|
send_welcome_msg_to_this_batch: 1,
|
||||||
|
notification_to_list_owner: 1,
|
||||||
|
adminpw: password,
|
||||||
|
subscribees_upload: subscribees_upload
|
||||||
|
};
|
||||||
|
member_query = '/mailman/admin/ybdb-devel/members/add?' + querystring.stringify(url_object);
|
||||||
|
} else {
|
||||||
|
url_object = {
|
||||||
|
send_unsub_ack_to_this_batch: 1,
|
||||||
|
send_unsub_notifications_to_list_owner: 1,
|
||||||
|
unsubscribees_upload: data.email,
|
||||||
|
adminpw: password
|
||||||
|
};
|
||||||
|
member_query = '/mailman/admin/ybdb-devel/members/remove?' + querystring.stringify(url_object);
|
||||||
|
}
|
||||||
|
|
||||||
|
mailman_options.path = member_query;
|
||||||
|
|
||||||
|
if (secret_password === data.password) {
|
||||||
|
|
||||||
|
// post to mailman server
|
||||||
|
var req = mailman.request(mailman_options, function(res) {
|
||||||
|
console.log("statusCode: ", res.statusCode);
|
||||||
|
console.log("headers: ", res.headers);
|
||||||
|
|
||||||
|
res.on('data', function(d) {
|
||||||
|
//req.write(d);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
req.end();
|
||||||
|
|
||||||
|
req.on('error', function(e) {
|
||||||
|
console.error(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
} // secret_password matches
|
||||||
|
|
||||||
|
response.write('ok');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
request.on('end',function(){
|
||||||
|
response.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('error', function (e) {
|
||||||
|
console.error(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}); // end email connector server
|
||||||
|
server.listen(Number(process.argv[2]));
|
@ -89,7 +89,7 @@ $(function(){
|
|||||||
if ((err0 + err1 + err2 + err3 + err4 + err5) > 0 ) {
|
if ((err0 + err1 + err2 + err3 + err4 + err5) > 0 ) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
e.preventDefault();
|
//e.preventDefault();
|
||||||
dfd.resolve("Success");
|
dfd.resolve("Success");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,8 +121,11 @@ $(function(){
|
|||||||
|
|
||||||
// email subscribe
|
// email subscribe
|
||||||
if (email_list == 1) {
|
if (email_list == 1) {
|
||||||
$.post("json/contact.php", {email_list_connector: 1, email: email.val(),
|
$.post("json/contact.php", {email_list_connector: 'subscribe', email: email.val(),
|
||||||
first_name: first_name.val(), last_name: last_name.val()});
|
first_name: first_name.val(), last_name: last_name.val()});
|
||||||
|
} else {
|
||||||
|
$.post("json/contact.php", {email_list_connector: 'unsubscribe', email: email.val(),
|
||||||
|
first_name: first_name.val(), last_name: last_name.val()});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -49,9 +49,10 @@ $ssl_certificate = SSL_CERTIFICATE;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send data to connector (local or remote)
|
// send data to connector (local or remote)
|
||||||
if (isset($_POST['email_list_connector'])) {
|
if (isset($_POST['email_list_connector']) == 'subscribe' || isset($_POST['email_list_connector']) == 'unsubscribe' ) {
|
||||||
|
|
||||||
$json = array(
|
$json = array(
|
||||||
|
'subscribe' => $_POST['email_list_connector'],
|
||||||
'password' => $email_list_connector_password,
|
'password' => $email_list_connector_password,
|
||||||
'email' => $_POST['email'],
|
'email' => $_POST['email'],
|
||||||
'first_name' => $_POST['first_name'],
|
'first_name' => $_POST['first_name'],
|
||||||
@ -73,10 +74,9 @@ $ssl_certificate = SSL_CERTIFICATE;
|
|||||||
|
|
||||||
curl_setopt_array($ch, $curlConfig);
|
curl_setopt_array($ch, $curlConfig);
|
||||||
$result = curl_exec($ch);
|
$result = curl_exec($ch);
|
||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
|
|
||||||
// just to test
|
echo $result;
|
||||||
echo $result;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user