business
Version:
Untitled
736 lines (709 loc) • 32.8 kB
JavaScript
(function one($) {
if ($.action == 'build'){
//During build regex Untitled with agent name
//require('fs').writeFile('./index.html', JSON.stringify(body), 'utf-8');
(function bucket($) {
var Bucket = $.untiled
var callback = $.callback
var file = $.file
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var s3 = new AWS.S3()
s3.createBucket({
Bucket: Bucket
}, function(err, data) {
if (err) {
console.log('bucket_0')
} else {
console.log('bucket_1')
var file = require('fs').readFileSync('assets/index.html', 'utf8')
var params = {
Bucket: Bucket,
Key: 'index.html',
ContentType: 'text/html',
ACL: 'public-read',
Body: file
}
s3.upload(params, function(err, data) {
if (err) {
console.log('uplaod_bucket_data_0')
} else {
console.log('upload_bucket_1')
bucket_website(Bucket, bucket_website_policy)
}
})
}
})
})($)
function bucket_website($) {
var bucket = $.bucket
var callback = $.callback
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var s3 = new AWS.S3()
s3.putBucketWebsite({
Bucket: Bucket,
WebsiteConfiguration: {
ErrorDocument: {
Key: 'error.html'
},
IndexDocument: {
Suffix: 'index.html'
}
},
ContentMD5: ""
}, function(err, data) {
if (err) {
console.log('bucket_website_0')
} else {
console.log('bucket_website_1')
console.log(data)
bucket_website_policy(Bucket, cloudfront_distribution)
}
})
}
function bucket_website_policy($) {
var bucket = $.bucket
var callback = $.callback
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var s3 = new AWS.S3()
var readOnlyAnonUserPolicy = {
Version: "2012-10-17",
Statement: [{
Sid: "AddPerm",
Effect: "Allow",
Principal: "*",
Action: [
"s3:GetObject"
],
Resource: [
""
]
}]
};
var bucketResource = "arn:aws:s3:::" + Bucket + "/*";
readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource;
var bucketPolicyParams = {
Bucket: Bucket,
Policy: JSON.stringify(readOnlyAnonUserPolicy)
};
s3.putBucketPolicy(bucketPolicyParams, function(err, data) {
if (err) {
console.log('policy_0')
} else {
cloudfront_distribution(Bucket)
console.log('policy_1')
}
})
}
function cloudfront_distribution($) {
var bucket = $.DomainName
var callback = $.callback
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var params = {
DistributionConfig: {
CallerReference: DomainName,
Comment: 'Distribution for ' + DomainName,
DefaultCacheBehavior: {
ForwardedValues: {
Cookies: {
Forward: "all",
WhitelistedNames: {
Quantity: 0
}
},
QueryString: true,
Headers: {
Quantity: 0
},
QueryStringCacheKeys: {
Quantity: 0
}
},
MinTTL: 0,
TargetOriginId: 'STRING_VALUE',
TrustedSigners: {
Enabled: true,
Quantity: 0,
},
ViewerProtocolPolicy: "allow-all",
AllowedMethods: {
Items: [
"GET", "HEAD"
],
Quantity: 2,
CachedMethods: {
Items: [
"GET", "HEAD"
],
Quantity: 2
}
},
Compress: false,
DefaultTTL: 0,
LambdaFunctionAssociations: {
Quantity: 0
},
MaxTTL: 0,
SmoothStreaming: false
},
Enabled: true,
Origins: {
Quantity: 1,
Items: [{
DomainName: DomainName + '.s3.amazonaws.com',
Id: 'STRING_VALUE',
CustomHeaders: {
Quantity: 0
},
CustomOriginConfig: {
HTTPPort: 80,
HTTPSPort: 443,
OriginProtocolPolicy: "match-viewer",
OriginKeepaliveTimeout: 5,
OriginReadTimeout: 30,
OriginSslProtocols: {
Items: ["SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"],
Quantity: 4
}
}
}, ]
},
Aliases: {
Quantity: 1,
Items: [DomainName + 'fastur.com']
},
CacheBehaviors: {
Quantity: 0
},
CustomErrorResponses: {
Quantity: 0
},
DefaultRootObject: 'index.html',
HttpVersion: "http2",
IsIPV6Enabled: false,
Logging: {
Bucket: 'LogBucket.s3.amazonaws.com',
Enabled: false,
IncludeCookies: true,
Prefix: ''
},
PriceClass: "PriceClass_All",
Restrictions: {
GeoRestriction: {
Quantity: 0,
RestrictionType: "none"
}
},
ViewerCertificate: {
CertificateSource: "cloudfront",
CloudFrontDefaultCertificate: true,
MinimumProtocolVersion: "SSLv3",
SSLSupportMethod: "vip"
},
WebACLId: ''
}
};
var cloudfront = new AWS.CloudFront();
cloudfront.createDistribution(params, function(err, data) {
if (err) console.log('distribution_0')
else console.log('distribution_1')
route53_records(data.Distribution.DomainName, DomainName, data.Distribution.Id)
});
}
function route53_records($) {
var DNSName = $.DNSName
var subdomain_fastur_com = $.subdomain_fastur_com
var HostedZoneId = $.HostedZoneId
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var route53 = new AWS.Route53()
route53.changeResourceRecordSets({
ChangeBatch: {
Changes: [{
Action: "CREATE",
ResourceRecordSet: {
AliasTarget: {
DNSName: DNSName,
EvaluateTargetHealth: false,
HostedZoneId: "Z2FDTNDATAQYW2"
},
Name: subdomain_fastur_com,
Type: "A"
}
}],
Comment: ""
},
HostedZoneId: "Z2T4D51UVYFTGW"
}, function(err, data) {
if (err) {
console.log('change_resource_records_0')
console.log(err)
} else
console.log('change_resource_records_1')
});
}
function register_domain($) {
var bucket = $
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-east-1",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
})
var route53 = new AWS.Route53()
var params = {
AdminContact: {
AddressLine1: '30 River Street',
City: 'Toronto',
ContactType: 'Admin',
CountryCode: '',
Email: 'admin@fastur.com',
Fax: '6473609669',
FirstName: 'Assist',
LastName: 'Fastur',
OrganizationName: 'Fastur',
PhoneNumber: '6473609669',
State: 'Present',
ZipCode: 'A1B2C3'
},
DomainName: Bucket,
DurationInYears: 0,
RegistrantContact: {
AddressLine1: '30 River Street',
City: 'Toronto',
ContactType: 'Admin',
CountryCode: '',
Email: 'admin@fastur.com',
Fax: '6473609669',
FirstName: 'Assist',
LastName: 'Fastur',
OrganizationName: 'Fastur',
PhoneNumber: '6473609669',
State: 'Present',
ZipCode: 'A1B2C3'
},
AutoRenew: true || false,
IdnLangCode: 'STRING_VALUE',
PrivacyProtectAdminContact: true || false,
PrivacyProtectRegistrantContact: true || false,
PrivacyProtectTechContact: true || false
};
route53domains.registerDomain(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
}
}
if ($.action == 'query'){
(function api_ai($) {
var q = $
var require_apiai = require('apiai')
var generate ='mcgill nonoinc'
var base = "'Own your profile: Fastur.com. Your profile is receiving attention, We attempted to make a payout to your bank account. However, your bank has returned this payout. Since future payouts are likely to also fail, we wont be able to make any further payouts to or from your bank account until this is fixed. This problem can be fixed pretty easily. Please follow the instructions in your dashboard to retry this payout: Fastur.com Accepted Payment Methods cheque: Joseph Mujuzi 30 river street, Toronto, Ontario M5A3N9, E-transfer: jmujuzi@ryerson.ca Direct Deposit: Transit No. 12222 Institution No. 004 Account No. 6169875'"
var assist = "21f6a5778d484870ad46be4d34ac2eeb"
var build = "ca941d68aed44cd6a6349f0ef286b777"
var Agent_Name = "2ffc44062e09425da136e520f06995e4"
var App_Management = "79f9052b73434faa9736f5048a0fe393"
var Car = "de91e7d6cdbb4421b86361772bbea6c2"
var Currency_Converter = "01ee8742cfe74d2499096fe52b20b56c"
var Date = "4cf3222fdd474719b673e8639722ab0e"
var Hotel_Booking = "f01067f00eb645f5935e07e9111c0b50"
var Music = "b6b1b206f0c341238184a5901b6f0661"
var Navigation = "ecb4eb2b77de4bfba640926b1b026353"
var News = "d63b47cc842a4f87a5710c7c8d166623"
var Restaurant_Booking = "8fc0a7a35797444db76b71b914e96689"
var Support = "74d22512d83f4e9a90947d99773d182a"
var Time = "74d22512d83f4e9a90947d99773d182a"
var Tips_Calculator = "a70bb5c9a3634f8a9cab85aa8eed39e1"
var Traffic = "be8705a067724dc1999c0de93c9cd0fd"
var Translate = "fda27d7fb5b74f868e15c2a413800d6e"
var Unit_Converter = "b622920a87b445478022bb855583203c"
var User_Name = "6a152ef3d2d440aab22dd128ff265612"
var Video = "873264c2504d4e46b4a18672cdbe7112"
var Volume = "45aac7156d584d3ca268c4606ee35d7c"
var Weather = "7042eea76e664b05b7190cc66f40cc62"
var Web_Search = "79e50bdc84a243dca6c776a928086baa"
var agents = [assist, build, Agent_Name, App_Management, Car, Currency_Converter, Date, Hotel_Booking, Music, Navigation, News, Restaurant_Booking, Support, Time, Tips_Calculator, Traffic, Translate, Unit_Converter, User_Name, Video, Volume, Weather, Web_Search];
for (var i = 0, len = agents.length; i < len; i++) {
require_apiai("21f6a5778d484870ad46be4d34ac2eeb").textRequest($, {
sessionId: '9ba9551d-8f5b-4853-bafb-b0fa943cb56c'
}).on('response', function(result) {
one({action:'keyboard',content:result})
}).on('error', function(error) {
console.log(error)
}).end()
}
})($)
}
if ($.action == 'screen'){
(function _screen($) {
var link = "<a href='http://"+$+".fastur.com.s3-website-us-east-1.amazonaws.com'>"+$+"</a> "
var host = $.host
var path = $.path
if (typeof process === 'object' && process + '' === '[object process]') {
var https = require('https');
return https.get({
host: host,
port: 443,
path: path,
}, function(response) {
var body = '';
response.on('data', function(data) {
body += data;
});
response.on('end', function() {
one({action:'build',content:body})
});
});
} else {
fetch(host + path, {
method: 'get',
mode: 'no-cors',
body: path
}).then(function(response) {
});
}
})($)
}
if ($.action == 'annotate'){
(function annotate($) {
var image_uri = $
var object = {
"requests": [{
"image": {
"source": {
"imageUri": image_uri
}
},
"features": [{
"type": "FACE_DETECTION",
"type": "LABEL_DETECTION",
"type": "LANDMARK_DETECTION",
"type": "LOGO_DETECTION",
"type": "LABEL_DETECTION",
"type": "TEXT_DETECTION",
"type": "DOCUMENT_TEXT_DETECTION",
"type": "SAFE_SEARCH_DETECTION",
"type": "IMAGE_PROPERTIES",
"type": "CROP_HINTS",
"type": "WEB_DETECTION"
}]
}]
}
one({action:'keyboard',content:"vision.googleapis.com/v1/images:annotate?key=AIzaSyANwnpMb4fXsGDdMeFIHkQRvetxYoMsAGw", object})
})($)
}
if ($.action == 'translate'){
(function translate($) {
var q = $.q
var background = $.background
Translate(q, 'en', get_response)
function Translate(q, background, callback) {
var translate_request = new Request('https://www.googleapis.com/language/translate/v2?q=' + q + '&target=' + background + '&key=AIzaSyANwnpMb4fXsGDdMeFIHkQRvetxYoMsAGw', {
method: 'get'
});
fetch(translate_request).then(function(response) {
var decoder = new TextDecoder();
var reader = response.body.getReader();
reader.read().then(function processResult(result) {
if (result.done) return;
var result = decoder.decode(result.value, {
stream: true
});
var Result = JSON.parse(result);
var translated_Text = Result.data.translations[0].translatedText;
var detected_Source_Language = Result.data.translations[0].detectedSourceLanguage;
callback(translated_Text, detected_Source_Language, background);
return reader.read().then(processResult);
});
});
}
function get_response(q, detected_Source_Language, callback) {
var intent_request = new Request('https://api.api.ai/v1/query?v=20150910', {
method: 'POST',
mode: 'cors',
redirect: 'follow',
headers: {
'Authorization': 'Bearer 21f6a5778d484870ad46be4d34ac2eeb',
'content-Type': 'application/json; charset=utf-8'
},
body: JSON.stringify({
q: q,
lang: 'en',
sessionId: '44628d21-d7a4-47d5-b1c6-a7f851be65fv',
})
})
fetch(intent_request).then(function(response) {
Respond(response);
})
function Respond(response) {
var decoder = new TextDecoder();
var reader = response.body.getReader();
reader.read().then(function processResult(result) {
if (result.done) return;
var result = decoder.decode(result.value, {
stream: true
});
var Result = JSON.parse(result);
var string = JSON.stringify(Result);
var speech = Result.result.fulfillment.speech;
Translate(speech, detected_Source_Language, print_to_user);
return reader.read().then(processResult);
});
};
}
function print_to_user(translated_Text, detected_Source_Language, background) {
document.getElementById('text07').innerHTML = translated_Text;
var msg = new SpeechSynthesisUtterance(translated_Text);
msg.lang = background;
window.speechSynthesis.speak(msg);
msg.onend = function(event) {
};
}
})($)
}
if ($.action == 'distance'){
(function distance_matrix(unit, origin, destination, key, callback) {
var https = require('https');
return https.get({
host: 'maps.googleapis.com',
port: 443,
path: '/maps/api/distancematrix/json?units=' + unit + '&origins=' + origin + '&destinations=' + destination + '&key=' + key + ''
}, function(response) {
var body = '';
response.on('data', function(d) {
body += d;
});
response.on('end', function() {
var parsed = JSON.parse(body);
one({action:'keyboard',content:parsed})
});
});
})($)
}
if ($.action == 'stream'){
(function twitter_stream($) {
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'zEy22K3iWIFuTcCEeMzrtK4Yu',
consumer_secret: 'jYdDkc7SAJaTv22kG6zUcnXVGV93mYU2OJavoRahiyX58If9cP',
access_token_key: '724716718006874112-NjBNDluPR74VWGE4hIwcs9r52LZuJhE',
access_token_secret: 'VHkrp0WnQPayJY8NasJYB66OP1lqXMsT6vvnM9HFTEEZG'
});
client.stream('statuses/filter', {
track: market
}, function(stream) {
stream.on('data', function(tweet) {
});
stream.on('error', function(error) {
console.log(error);
});
});
})($)
}
if ($.action == 'profile'){
(function twitter_user($) {
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'zEy22K3iWIFuTcCEeMzrtK4Yu',
consumer_secret: 'jYdDkc7SAJaTv22kG6zUcnXVGV93mYU2OJavoRahiyX58If9cP',
access_token_key: '724716718006874112-NjBNDluPR74VWGE4hIwcs9r52LZuJhE',
access_token_secret: 'VHkrp0WnQPayJY8NasJYB66OP1lqXMsT6vvnM9HFTEEZG'
});
client.get('statuses/user_timeline', {
screen_name: $.id
}, function(error, tweets, response) {
console.log(error || tweets || response)
});
})($)
}
if ($.action == 'keyboard'){
(function keyboard($) {
if (typeof process === 'object' && process + '' === '[object process]') {
var https = require('https');
var Body = JSON.stringify($.body);
var headers = {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(Body, 'utf8')
};
var optionspost = {
host: $.host,
port: 443,
path: $.path,
method: 'post',
headers: $.headers
};
var reqPost = https.request(optionspost, function(res) {
res.on('data', function(d) {
process.stdout.write(d);
});
});
reqPost.write(Body);
reqPost.end();
reqPost.on('error', function(e) {
console.log(e)
});
} else {
fetch($.host + $.path, {
method: 'post',
mode: 'no-cors',
body: $.body
}).then(function(response) {
var decoder = new TextDecoder();
var reader = response.body.getReader();
reader.read().then(function processResult(result) {
if (result.done) return;
var result = decoder.decode(result.value, {
stream: true
});
return reader.read().then(processResult);
});
});
}
})($)
}
if ($.action == 'email'){
(function email($) {
var AWS = require('aws-sdk')
AWS.config.update({
"accessKeyId": "AKIAJVUZKKUMNMNS4MGA",
"secretAccessKey": "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",
"region": "us-west-2",
"apiVersions": {
"s3": "2006-03-01",
"ses": "2010-12-01",
"route53domains": "2014-05-15",
"cloudfront": '2017-03-25',
"route53": '2013-04-01'
}
});
var ses = new AWS.SES();
const params = {
Destination: {
ToAddresses: [$.emails]
},
Message: {
Body: {
Html: {
Charset: 'UTF-8',
Data: $.content,
},
Text: {
Charset: 'UTF-8',
Data: $.content,
}
},
Subject: {
Charset: 'UTF-8',
Data: 'Test email from code'
}
},
ReturnPath: 'assist@fastur.com',
Source: 'assist@fastur.com'
}
ses.sendEmail(params, (err, data) => {
if (err) console.log(err, err.stack)
else console.log(data)
})
})($)
}
require('http').createServer(function(request, response) {
switch (request.method) {
case 'GET':
var fs = require('fs')
if (request.url.split('/')[1] == 'assets') {
var img = fs.readFileSync('./assets/' + request.url.split('/')[2]);
response.writeHead(200, {
'Content-Type': request.url.split('/')[2].split('.')[1]
});
response.end(img, 'binary');
}
response.end(fs.readFileSync('index.html'))
break;
case 'POST':
function string_to_object(queryString) {
let obj = {}
if (queryString) {
queryString.split('&').map((item) => {
const [k, v] = item.split('=')
v ? obj[k] = v : null
})
}
return obj
}
var buffer = []
request.on('error', function(err) {}).on('data', function(chunk) {
buffer.push(chunk)
}).on('end', function() {
var string = Buffer.concat(buffer).toString()
one(string_to_object(string))
response.end(require('fs').readFileSync('index.html'))
})
}
}).listen(process.env.PORT)
})({action:'',content:''} )