I have a random.js file containing this to get random fake ip
exports.ip = function () {
let random = (Math.floor(Math.random() * 255) + 1)+"."+(Math.floor(Math.random() * 255) + 0)+"."+(Math.floor(Math.random() * 255) + 0)+"."+(Math.floor(Math.random() * 255) + 0);
return random
}
and I call the variable in the send.js file to replace string {randomip}
let replace_tag = function (to) {
config.message.subject = config.message.subject
.replace("{randomip}", random.ip)
.replace("{email}", to)
.replace("{date}", random.date);
config.message.fromname = config.message.fromname
.replace("{randomip}", random.ip)
.replace("{email}", to)
.replace("{date}", random.date);
config.message.fromemail = config.message.fromemail
.replace("{randomip}", random.ip)
.replace("{email}", to)
.replace("{date}", random.date);
}
but it will only produce one generated ip, I want to make it generate random every time it is called will produce different values
I have tried inserting it in the loop but still not working
I call the replace function in another function then enter it into loop like that
let kirim = function (to) {
replace_tag(to);
let message = {
from: config.message.fromname+'<'+config.message.fromemail+'>',
to: to,
subject: config.message.subject,
text: config.message.text,
html: html
};
transporter.sendMail(message, (error, info) => {
if (error) {
return console.log(error.response)
}
console.log('Message sent: ',info.accepted);
});
};
(async () => {
for (var i in list) {
kirim(list[i]);
await delay(config.send.delay*1000);
}
})();
I call the replace function in another function then enter it into loop
Ah, there's your problem. Your replace_tag
function will change the config
object, and after the first call it doesn't contain the template tag any more but the replacement result. Further calls to replace_tag
won't find {randomip}
in your configuration any more, so no new ips are generated.
You should instead keep the configuration constant (immutable), and create new message objects every time you need one. Each of those objects will then have different randomised IP addresses.
// takes a string, returns a new string
function replace_tags(input, email) {
return input
.replace("{randomip}", random.ip)
.replace("{email}", email)
.replace("{date}", random.date);
}
// returns a new object, leaves config.message unaltered
function get_customised_message_template(to) {
return {
subject: replace_tags(config.message.subject, to),
fromname: replace_tags(config.message.fromname, to),
fromemail: replace_tags(config.message.fromemail, to),
};
}
function kirim(to) {
const random_message = get_customised_message_template(to);
// ^^^^^^^^^^^^^^^^^^^^^^
const message = {
from: random_message.fromname+'<'+random_message.fromemail+'>',
to: to,
subject: random_message.subject,
text: config.message.text,
html: html
};
transporter.sendMail(message, (error, info) => {
if (error) console.log(error.response);
else console.log('Message sent: ', info.accepted);
});
};