fakefilter 1.1.13 → 1.1.1581
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +29 -0
- package/README.md +66 -16
- package/dist/index.d.ts +9 -0
- package/dist/index.js +220 -0
- package/dist/json/data.json +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.js +3 -0
- package/package.json +36 -42
- package/apiserver/api/ext_result.js +0 -51
- package/apiserver/api/ext_tasks.js +0 -151
- package/apiserver/api/is_fakedomain.js +0 -39
- package/apiserver/api/is_fakeemail.js +0 -17
- package/apiserver/api/ping.js +0 -12
- package/apiserver/docs/README.md +0 -41
- package/apiserver/docs/babel.config.js +0 -3
- package/apiserver/docs/blog/2019-05-28-first-blog-post.md +0 -12
- package/apiserver/docs/blog/2019-05-29-long-blog-post.md +0 -44
- package/apiserver/docs/blog/2021-08-01-mdx-blog-post.mdx +0 -20
- package/apiserver/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- package/apiserver/docs/blog/2021-08-26-welcome/index.md +0 -25
- package/apiserver/docs/blog/authors.yml +0 -17
- package/apiserver/docs/docs/intro.md +0 -16
- package/apiserver/docs/docs/nodejs/_category_.json +0 -4
- package/apiserver/docs/docs/nodejs/index.md +0 -30
- package/apiserver/docs/docs/restful/_category_.json +0 -4
- package/apiserver/docs/docs/restful/index.md +0 -59
- package/apiserver/docs/docusaurus.config.js +0 -118
- package/apiserver/docs/package.json +0 -37
- package/apiserver/docs/sidebars.js +0 -31
- package/apiserver/docs/src/components/HomepageFeatures/index.js +0 -64
- package/apiserver/docs/src/components/HomepageFeatures/styles.module.css +0 -11
- package/apiserver/docs/src/css/custom.css +0 -39
- package/apiserver/docs/src/pages/index.js +0 -45
- package/apiserver/docs/src/pages/index.module.css +0 -23
- package/apiserver/docs/src/pages/markdown-page.md +0 -7
- package/apiserver/docs/src/theme/IconArrow/index.js +0 -10
- package/apiserver/docs/static/.nojekyll +0 -0
- package/apiserver/docs/static/img/docusaurus.png +0 -0
- package/apiserver/docs/static/img/favicon.ico +0 -0
- package/apiserver/docs/static/img/logo.svg +0 -1
- package/apiserver/docs/static/img/tutorial/docsVersionDropdown.png +0 -0
- package/apiserver/docs/static/img/tutorial/localeDropdown.png +0 -0
- package/apiserver/docs/static/img/undraw_docusaurus_mountain.svg +0 -171
- package/apiserver/docs/static/img/undraw_docusaurus_react.svg +0 -170
- package/apiserver/docs/static/img/undraw_docusaurus_tree.svg +0 -40
- package/apiserver/inc/middleware_client.js +0 -37
- package/apiserver/inc/middleware_logging.js +0 -17
- package/apiserver/inc/shared.js +0 -47
- package/apiserver/inc/worker_fakefilter.js +0 -53
- package/apiserver/index.js +0 -62
- package/apiserver/public/10minemail.com.js +0 -27
- package/apiserver/public/10minuteemails.com.js +0 -46
- package/apiserver/public/10minutemail.com.js +0 -29
- package/apiserver/public/crazymailing.com.js +0 -27
- package/apiserver/public/gettempmail.com.js +0 -39
- package/apiserver/public/img/dynamic/README.md +0 -0
- package/apiserver/public/img/test.html +0 -48
- package/apiserver/public/onetempmail.com.js +0 -35
- package/apiserver/public/shared.js +0 -54
- package/apiserver/public/temp-mail.org.js +0 -28
- package/apiserver/public/tempmail.com.tr.js +0 -36
- package/apiserver/public/tempmail.net.js +0 -28
- package/apiserver/public/tempmailid.com.js +0 -40
- package/apiserver/public/tempmailo.org.js +0 -36
- package/apiserver/public/throwawaymail.com.js +0 -27
- package/burner/README.md +0 -1
- package/burner/burner-check.js +0 -57
- package/burner/emails.txt +0 -57106
- package/chart-update.js +0 -261
- package/cleanup.js +0 -58
- package/config.js +0 -126
- package/demos/visitor0/index.js +0 -41
- package/demos/visitor0/renderedDOM.html +0 -8
- package/elements/demo.js +0 -78
- package/elements/renderedDOM.html +0 -6459
- package/elements/screenshots/afterclick.png +0 -0
- package/elements/screenshots/goto.png +0 -0
- package/events.js +0 -59
- package/fetch.js +0 -180
- package/models/events.js +0 -37
- package/models/harvested.js +0 -45
- package/models/harvested_clone.js +0 -44
- package/providers/10-minute-mail.com.js +0 -39
- package/providers/10-minuten-mail.de.js +0 -39
- package/providers/10mails.net.js +0 -41
- package/providers/10minut.com.pl.js +0 -39
- package/providers/10minut.xyz.js +0 -40
- package/providers/10minuteemails.com.js +0 -39
- package/providers/10minutemail.co.za.js +0 -39
- package/providers/10minutemail.com.js +0 -39
- package/providers/10minutemail.info.js +0 -38
- package/providers/10minutemail.net.js +0 -38
- package/providers/10minutemail.org.js +0 -38
- package/providers/10minutesemail.net.js +0 -36
- package/providers/10minutesmail.us.js +0 -39
- package/providers/1secmail.com.js +0 -39
- package/providers/20minutemail.com.js +0 -36
- package/providers/22.do.js +0 -25
- package/providers/24hour.email.js +0 -37
- package/providers/___emailondeck.com.js +0 -76
- package/providers/abandonmail.com.js +0 -39
- package/providers/airmailbox.website.js +0 -38
- package/providers/akmail.in.js +0 -37
- package/providers/altaddress.org.js +0 -50
- package/providers/altmails.com.js +0 -37
- package/providers/anonbox.net.js +0 -42
- package/providers/anonmails.de.js +0 -25
- package/providers/anonymmail.net.js +0 -47
- package/providers/another-temp-mail.com.js +0 -40
- package/providers/awgarstone.com.js +0 -15
- package/providers/brodilla.email.js +0 -45
- package/providers/byom.de.js +0 -42
- package/providers/chacuo.net.js +0 -38
- package/providers/cryptogmail.com.js +0 -40
- package/providers/default.tmail.thehp.in.js +0 -41
- package/providers/developermail.com.js +0 -39
- package/providers/dispemail.com.js +0 -38
- package/providers/disposableemail.co.js +0 -37
- package/providers/disposableemail.us.js +0 -37
- package/providers/disposablemail.com.js +0 -38
- package/providers/disposeamail.com.js +0 -43
- package/providers/dispostable.com.js +0 -39
- package/providers/dodsi.com.js +0 -38
- package/providers/dropmail.me.js +0 -37
- package/providers/easytrashmail.com.js +0 -33
- package/providers/edumail.icu.js +0 -36
- package/providers/email-fake.com.js +0 -35
- package/providers/emailfake.com.js +0 -35
- package/providers/emailnator.com.js +0 -37
- package/providers/etempmail.com.js +0 -36
- package/providers/etempmail.net.js +0 -37
- package/providers/eyepaste.com.js +0 -39
- package/providers/fakemail.io.js +0 -36
- package/providers/fakemail.net.js +0 -35
- package/providers/fakemailgenerator.com.js +0 -35
- package/providers/fakermail.com.js +0 -37
- package/providers/faxmail.co.js +0 -47
- package/providers/fex.plus.js +0 -38
- package/providers/findtempmail.com.js +0 -39
- package/providers/foxiomail.com.js +0 -42
- package/providers/fyii.de.js +0 -42
- package/providers/gecicimail.co.js +0 -14
- package/providers/gecicimail.com.tr.js +0 -15
- package/providers/generator.email.js +0 -37
- package/providers/getnada.cc.js +0 -37
- package/providers/getnada.com.js +0 -37
- package/providers/gmailcity.com.js +0 -37
- package/providers/gpa.lu.js +0 -37
- package/providers/guerrillamail.com.js +0 -38
- package/providers/harakirimail.com.js +0 -38
- package/providers/haribu.net.js +0 -39
- package/providers/hizli.email.js +0 -40
- package/providers/hottempmail.com.js +0 -52
- package/providers/instant-email.org.js +0 -39
- package/providers/instantemailaddress.com.js +0 -40
- package/providers/internxt.com.js +0 -47
- package/providers/jooko.info.js +0 -37
- package/providers/kopeechka.store.js +0 -43
- package/providers/kuku.lu.js +0 -37
- package/providers/linshi-email.com.js +0 -38
- package/providers/linshiyou.com.js +0 -25
- package/providers/linshiyouxiang.net.js +0 -36
- package/providers/lroid.com.js +0 -35
- package/providers/luxusmail.org.js +0 -39
- package/providers/mail-temp.com.js +0 -37
- package/providers/mail-tester.com.js +0 -37
- package/providers/mail.gen.tr.js +0 -14
- package/providers/mail.gw.js +0 -35
- package/providers/mail.td.js +0 -42
- package/providers/mail.tm.js +0 -35
- package/providers/mail1.js +0 -44
- package/providers/mail1a.de.js +0 -42
- package/providers/mail4qa.com.js +0 -37
- package/providers/mail7.io.js +0 -41
- package/providers/mailcatch.com.js +0 -38
- package/providers/maildim.com.js +0 -38
- package/providers/maildrop.cc.js +0 -38
- package/providers/mailinator.com.js +0 -27
- package/providers/mailnesia.com.js +0 -41
- package/providers/mailpoof.com.js +0 -71
- package/providers/mailsac.com.js +0 -27
- package/providers/mailswipe.net.js +0 -37
- package/providers/minimail.eu.org.js +0 -27
- package/providers/mintemail.com.js +0 -49
- package/providers/minuteinbox.com.js +0 -35
- package/providers/moakt.com.js +0 -37
- package/providers/mohmal.com.js +0 -39
- package/providers/muellmail.com.js +0 -40
- package/providers/mytemp.email.js +0 -35
- package/providers/mytrashmailer.com.js +0 -38
- package/providers/niepodam.pl.js +0 -53
- package/providers/nolog.email.js +0 -38
- package/providers/onetempmail.com.js +0 -37
- package/providers/open.js +0 -41
- package/providers/oxyemail.com.js +0 -38
- package/providers/phaantm.de.js +0 -42
- package/providers/poo.email.js +0 -27
- package/providers/sandvpn.com.js +0 -49
- package/providers/shitmail.me.js +0 -38
- package/providers/shitmail.org.js +0 -38
- package/providers/snapmail.cc.js +0 -42
- package/providers/spamdecoy.net.js +0 -38
- package/providers/spamgourmet.com.js +0 -29
- package/providers/spoofmail.de.js +0 -47
- package/providers/static.js +0 -32
- package/providers/t-mail.org.js +0 -42
- package/providers/temp-email.info.js +0 -39
- package/providers/temp-inbox.com.js +0 -38
- package/providers/temp-inbox.me.js +0 -47
- package/providers/temp-mail.io.js +0 -36
- package/providers/temp-mail.org.2.js +0 -60
- package/providers/temp-mail.org.js +0 -36
- package/providers/temp-mailbox.com.js +0 -35
- package/providers/temp-mails.com.js +0 -45
- package/providers/temp.cab.js +0 -39
- package/providers/tempail.com.js +0 -36
- package/providers/tempinbox.xyz.js +0 -38
- package/providers/tempmail.adguard.com.js +0 -31
- package/providers/tempmail.altmails.com.js +0 -37
- package/providers/tempmail.cn.js +0 -38
- package/providers/tempmail.co.js +0 -38
- package/providers/tempmail.dev.js +0 -35
- package/providers/tempmail.io.js +0 -38
- package/providers/tempmail.ninja.js +0 -35
- package/providers/tempmail.plus.js +0 -47
- package/providers/tempmail.quest.js +0 -45
- package/providers/tempmail.run.js +0 -37
- package/providers/tempmail.tel.js +0 -38
- package/providers/tempmailed.com.js +0 -43
- package/providers/tempmailo.com.js +0 -35
- package/providers/tempo-email.com.js +0 -38
- package/providers/tempo-mail.xyz.js +0 -40
- package/providers/temporary-email.com.js +0 -35
- package/providers/temporary-email.org.js +0 -36
- package/providers/temporary-mail.net.js +0 -42
- package/providers/temporarymail.com.js +0 -39
- package/providers/tempos.email.js +0 -38
- package/providers/tempr.email.js +0 -45
- package/providers/temprmail.com.js +0 -38
- package/providers/tenmail.org.js +0 -40
- package/providers/thnen.com.js +0 -25
- package/providers/throwaway.io.js +0 -39
- package/providers/tmail.gg.js +0 -36
- package/providers/tmail.mmomekong.com.js +0 -38
- package/providers/tmailor.com.js +0 -37
- package/providers/tmailweb.com.js +0 -39
- package/providers/trash-mail.com.js +0 -42
- package/providers/trashmail.com.js +0 -39
- package/providers/trashmail.de.js +0 -36
- package/providers/trashmail.live.js +0 -36
- package/providers/trashmail.org.js +0 -39
- package/providers/trashmail.ws.js +0 -42
- package/providers/trashmails.com.js +0 -38
- package/providers/tuamaeaquelaursa.com.js +0 -25
- package/providers/txen.de.js +0 -48
- package/providers/wegwerfemailadresse.com.js +0 -43
- package/providers/yopmail.com.js +0 -37
- package/providers/yopmail.fr.js +0 -37
- package/providers/yopmail.net.js +0 -37
- package/providers/yourmail.online.js +0 -39
- package/providers/youxiang.dev.js +0 -25
- package/release.sh +0 -26
- package/repo-update.js +0 -134
- package/shared.js +0 -736
- package/test/doRequest.js +0 -47
- package/test/is_domain_banned.js +0 -53
- package/test/is_fakedomain.js +0 -136
- package/test/is_fakeemail.js +0 -136
- package/test/psl.js +0 -58
- package/test/repo_json_v1.js +0 -30
- package/test/repo_json_v2.js +0 -41
- package/test1.js +0 -36
- package/update-repo.sh +0 -37
- package/vars.js +0 -16
|
Binary file
|
|
Binary file
|
package/events.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const debug = require('debug')('fetch')
|
|
3
|
-
const winston = require('winston')
|
|
4
|
-
const { getConfig, Sentry } = require('./config')
|
|
5
|
-
const { promiseTimeout, getDomainPart,domainFromEmail, eventsOfProvider } = require('./shared')
|
|
6
|
-
const Table = require('easy-table')
|
|
7
|
-
const chalk = require('chalk')
|
|
8
|
-
const vars = require('./vars')
|
|
9
|
-
const argv = require('minimist')(process.argv.slice(2))
|
|
10
|
-
const { parseDomain, ParseResultType } = require("parse-domain")
|
|
11
|
-
const { CoadminService } = require('coadmin-lib')
|
|
12
|
-
const coadmin_service = new CoadminService('fakefilter/fetch')
|
|
13
|
-
const MAX_RUN_HOURS = 2
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
async function start() {
|
|
17
|
-
try {
|
|
18
|
-
|
|
19
|
-
let config = await getConfig()
|
|
20
|
-
let selectedProvider = false
|
|
21
|
-
if (argv._.length > 0)
|
|
22
|
-
selectedProvider=argv._[0]
|
|
23
|
-
if (!selectedProvider) {
|
|
24
|
-
console.log(chalk.blue('Usage:'))
|
|
25
|
-
console.log(`node events.js <provider>`)
|
|
26
|
-
process.exit(0)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
let events = await eventsOfProvider(selectedProvider,7)
|
|
30
|
-
if (events) {
|
|
31
|
-
console.log(chalk.yellow(`${events.length} events found for ${selectedProvider}`))
|
|
32
|
-
var t = new Table()
|
|
33
|
-
let stats = {
|
|
34
|
-
success:0,
|
|
35
|
-
other:0,
|
|
36
|
-
failed:0
|
|
37
|
-
}
|
|
38
|
-
for(let event of events) {
|
|
39
|
-
// console.log(event)
|
|
40
|
-
t.cell("t",new Date(event.t).toISOString())
|
|
41
|
-
t.cell("event",event.event)
|
|
42
|
-
t.cell("result",event.result==='success' ? '✅ success' : '❌ '+event.result)
|
|
43
|
-
t.newRow()
|
|
44
|
-
if (event.result==='success') stats.success++; else
|
|
45
|
-
if (event.result==='failed') stats.failed++;
|
|
46
|
-
else stats.other++
|
|
47
|
-
}
|
|
48
|
-
console.log(t.toString())
|
|
49
|
-
console.log(`Total success: ${chalk.green(stats.success)} failed: ${chalk.red(stats.failed)} other: ${stats.other}`)
|
|
50
|
-
console.log(`This is only from last 7 days`)
|
|
51
|
-
}
|
|
52
|
-
process.exit(0)
|
|
53
|
-
} catch (err) {
|
|
54
|
-
console.log(err)
|
|
55
|
-
process.exit(0)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
start()
|
package/fetch.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
const { tryLock } = require('tcp-mutex')
|
|
2
|
-
const debug = require('debug')('fetch')
|
|
3
|
-
const winston = require('winston')
|
|
4
|
-
const { getConfig } = require('./config')
|
|
5
|
-
const { promiseTimeout, getDomainPart,domainFromEmail, eventsOfProvider } = require('./shared')
|
|
6
|
-
const chalk = require('chalk')
|
|
7
|
-
const vars = require('./vars')
|
|
8
|
-
const argv = require('minimist')(process.argv.slice(2))
|
|
9
|
-
const { parseDomain, ParseResultType } = require("parse-domain")
|
|
10
|
-
const { CoadminService } = require('coadmin-lib')
|
|
11
|
-
const coadmin_service = new CoadminService('fakefilter/fetch')
|
|
12
|
-
const MAX_RUN_HOURS = 2
|
|
13
|
-
|
|
14
|
-
let succeed = 0
|
|
15
|
-
let failed = []
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const logger = winston.createLogger({
|
|
19
|
-
level: 'info',
|
|
20
|
-
format: winston.format.combine(
|
|
21
|
-
winston.format.timestamp(),
|
|
22
|
-
winston.format.json(),
|
|
23
|
-
),
|
|
24
|
-
defaultMeta: { script: 'fetch.js' },
|
|
25
|
-
|
|
26
|
-
transports: [
|
|
27
|
-
//
|
|
28
|
-
// - Write all logs with importance level of `error` or less to `error.log`
|
|
29
|
-
// - Write all logs with importance level of `info` or less to `combined.log`
|
|
30
|
-
//
|
|
31
|
-
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
|
|
32
|
-
new winston.transports.File({ filename: 'logs/combined.log' }),
|
|
33
|
-
// log to Console too
|
|
34
|
-
// new winston.transports.Console()
|
|
35
|
-
],
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
// load all providers/*.js
|
|
39
|
-
var glob = require('glob'), path = require('path')
|
|
40
|
-
const { array_shuffle } = require('mybase')
|
|
41
|
-
glob.sync('./providers/*.js').forEach(function (file) {
|
|
42
|
-
require(path.resolve(file));
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
// shuffle providers to randomize
|
|
46
|
-
vars.providers = array_shuffle(vars.providers)
|
|
47
|
-
|
|
48
|
-
async function processProvider(p, headless = true) {
|
|
49
|
-
return new Promise(async function (resolve, reject) {
|
|
50
|
-
logger.info(`Processing ${p.name}`)
|
|
51
|
-
debug(`Processing ${p.name}`)
|
|
52
|
-
|
|
53
|
-
if (p.hasOwnProperty('min_hours') && parseInt(p['min_hours'])>0) {
|
|
54
|
-
let min_hours = parseInt(p['min_hours'])
|
|
55
|
-
// if min_hours specified we rate limit the provider
|
|
56
|
-
let events = await eventsOfProvider(p.name,1)
|
|
57
|
-
if (events && events.length>0) {
|
|
58
|
-
let last_event = events[events.length-1]
|
|
59
|
-
let since_last_event = Date.now()-last_event.t
|
|
60
|
-
let since_last_event_hours = since_last_event/(60*60*1000)
|
|
61
|
-
if (since_last_event_hours<min_hours) {
|
|
62
|
-
// need to skip processing this provider
|
|
63
|
-
console.log(chalk.yellow(`Provider ${p.name} skipped due to min_hours(${min_hours} hours) rule`))
|
|
64
|
-
return resolve(true)
|
|
65
|
-
}
|
|
66
|
-
console.log(last_event,since_last_event_hours)
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// console.log(chalk.yellow(p.name))
|
|
71
|
-
let initResult = await p.init()
|
|
72
|
-
debug(`Init done, result = ${initResult ? true : false}`)
|
|
73
|
-
// console.log(`init=`,initResult)
|
|
74
|
-
if (initResult === true) {
|
|
75
|
-
debug(`Calling start`)
|
|
76
|
-
let res = await p.start(headless)
|
|
77
|
-
debug(`Start result`, res)
|
|
78
|
-
if (res && res.hasOwnProperty('email')) {
|
|
79
|
-
await vars.models.Events.create({
|
|
80
|
-
provider: p.name,
|
|
81
|
-
t: Date.now(),
|
|
82
|
-
event: 'fetch',
|
|
83
|
-
result: 'success'
|
|
84
|
-
})
|
|
85
|
-
// console.log(res)
|
|
86
|
-
succeed++
|
|
87
|
-
// success
|
|
88
|
-
let emails = []
|
|
89
|
-
if (typeof res.email === 'string') emails.push(res.email);
|
|
90
|
-
else emails = res.email
|
|
91
|
-
for (let e of emails) {
|
|
92
|
-
let thedomain = p.randomSubdomain ? getDomainPart(domainFromEmail(e)) : domainFromEmail(e)
|
|
93
|
-
if (vars.config.ignore_domains.includes(thedomain)) {
|
|
94
|
-
console.log(chalk.red(`Ignored domain: ${thedomain} ignored`))
|
|
95
|
-
continue
|
|
96
|
-
}
|
|
97
|
-
console.log(chalk.green(`Provider ${p.name} - ${thedomain}`))
|
|
98
|
-
|
|
99
|
-
logger.info(`Provider ${p.name} - domain: ${thedomain}`)
|
|
100
|
-
await vars.models.Harvested.create({
|
|
101
|
-
provider: p.name,
|
|
102
|
-
t: Date.now(),
|
|
103
|
-
domain: thedomain
|
|
104
|
-
})
|
|
105
|
-
}
|
|
106
|
-
return resolve(true)
|
|
107
|
-
}
|
|
108
|
-
await vars.models.Events.create({
|
|
109
|
-
provider: p.name,
|
|
110
|
-
t:Date.now(),
|
|
111
|
-
event:'fetch',
|
|
112
|
-
result:'failed'
|
|
113
|
-
})
|
|
114
|
-
failed.push(p.name)
|
|
115
|
-
console.log(chalk.red(`Provider ${p.name} - failed`))
|
|
116
|
-
}
|
|
117
|
-
logger.error(`Provider ${p.name} - failed - initResult:${initResult ? 'true' : 'false'}`)
|
|
118
|
-
resolve(false)
|
|
119
|
-
})
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
async function start() {
|
|
123
|
-
try {
|
|
124
|
-
// make sure we never stuck
|
|
125
|
-
setTimeout(() => {
|
|
126
|
-
logger.error('MAX RUNTIME reached')
|
|
127
|
-
process.exit(0)
|
|
128
|
-
}, MAX_RUN_HOURS * 60 * 60 * 1000)
|
|
129
|
-
|
|
130
|
-
let config = await getConfig()
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
let selectedProvider = []
|
|
134
|
-
if (argv._.length > 0) {
|
|
135
|
-
selectedProvider.push(...argv._)
|
|
136
|
-
console.log(`Selected providers:`, selectedProvider.join(', '))
|
|
137
|
-
} else await tryLock(config.lockPort)
|
|
138
|
-
|
|
139
|
-
coadmin_service.report('started')
|
|
140
|
-
|
|
141
|
-
for (var p of vars.providers) {
|
|
142
|
-
if (selectedProvider.length > 0 && !selectedProvider.includes(p.name)) continue
|
|
143
|
-
if (p.disabled) {
|
|
144
|
-
console.log(chalk.yellow(`▪️ Provider ${p.name} is disabled, skipping`))
|
|
145
|
-
continue
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
await promiseTimeout(120000, processProvider(p, argv.v ? false : true))
|
|
149
|
-
coadmin_service.report_every(1, 'fetching')
|
|
150
|
-
} catch (err) {
|
|
151
|
-
console.log(err)
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// make sure to close the browser - attempt to protect the memory
|
|
155
|
-
if (vars.browsers.length > 0)
|
|
156
|
-
try {
|
|
157
|
-
let browser = vars.browsers.shift()
|
|
158
|
-
await browser.close()
|
|
159
|
-
coadmin_service.report_every(1, 'closing browsers')
|
|
160
|
-
} catch (e) {
|
|
161
|
-
console.log(e)
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (failed.length > 0)
|
|
166
|
-
console.log(chalk.bold(`Finished..`), chalk.green(`${succeed} succeed`), chalk.red(`${failed.length} failed`))
|
|
167
|
-
else
|
|
168
|
-
console.log(chalk.bold(`Finished..`), chalk.green(`${succeed} succeed`))
|
|
169
|
-
if (failed.length > 0)
|
|
170
|
-
console.log(chalk.red(`Failed providers:\n`), chalk.red(failed.join('\n')))
|
|
171
|
-
|
|
172
|
-
coadmin_service.report('stopped')
|
|
173
|
-
process.exit(0)
|
|
174
|
-
} catch (err) {
|
|
175
|
-
console.log(chalk.red(err))
|
|
176
|
-
process.exit(0)
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
start()
|
package/models/events.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const { Sequelize, DataTypes, Model } = require('sequelize');
|
|
2
|
-
const vars = require('./../vars')
|
|
3
|
-
|
|
4
|
-
class Events extends Model { }
|
|
5
|
-
|
|
6
|
-
function initEvents() {
|
|
7
|
-
Events.init({
|
|
8
|
-
t: {
|
|
9
|
-
type: DataTypes.BIGINT,
|
|
10
|
-
allowNull: true
|
|
11
|
-
},
|
|
12
|
-
provider: {
|
|
13
|
-
type: DataTypes.STRING(255),
|
|
14
|
-
allowNull: false,
|
|
15
|
-
comment: 'service hostname, domainname'
|
|
16
|
-
},
|
|
17
|
-
event: {
|
|
18
|
-
type: DataTypes.STRING(32),
|
|
19
|
-
allowNull: false,
|
|
20
|
-
},
|
|
21
|
-
result: {
|
|
22
|
-
type: DataTypes.STRING(32),
|
|
23
|
-
allowNull: false,
|
|
24
|
-
},
|
|
25
|
-
}, {
|
|
26
|
-
// Other model options go here
|
|
27
|
-
sequelize:vars.sequelize, // We need to pass the connection instance
|
|
28
|
-
modelName: 'Events',// We need to choose the model name
|
|
29
|
-
tableName: 'events'
|
|
30
|
-
})
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
module.exports = {
|
|
35
|
-
Events,
|
|
36
|
-
initEvents
|
|
37
|
-
}
|
package/models/harvested.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const { Sequelize, DataTypes, Model } = require('sequelize');
|
|
2
|
-
const vars = require('./../vars')
|
|
3
|
-
|
|
4
|
-
class Harvested extends Model { }
|
|
5
|
-
|
|
6
|
-
function initHarvested() {
|
|
7
|
-
Harvested.init({
|
|
8
|
-
t: {
|
|
9
|
-
type: DataTypes.BIGINT,
|
|
10
|
-
allowNull: true
|
|
11
|
-
},
|
|
12
|
-
provider: {
|
|
13
|
-
type: DataTypes.STRING(255),
|
|
14
|
-
allowNull: false,
|
|
15
|
-
comment: 'service hostname, domainname'
|
|
16
|
-
},
|
|
17
|
-
domain: {
|
|
18
|
-
type: DataTypes.STRING(255),
|
|
19
|
-
allowNull: false,
|
|
20
|
-
comment: 'domainname'
|
|
21
|
-
},
|
|
22
|
-
}, {
|
|
23
|
-
// Other model options go here
|
|
24
|
-
sequelize:vars.sequelize, // We need to pass the connection instance
|
|
25
|
-
modelName: 'Harvested',// We need to choose the model name
|
|
26
|
-
tableName: 'harvested',
|
|
27
|
-
indexes:[
|
|
28
|
-
{
|
|
29
|
-
fields:['provider'],
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
fields:['domain']
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
fields:['t']
|
|
36
|
-
},
|
|
37
|
-
]
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
module.exports = {
|
|
43
|
-
Harvested,
|
|
44
|
-
initHarvested
|
|
45
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const { Sequelize, DataTypes, Model } = require('sequelize');
|
|
2
|
-
const vars = require('./../vars')
|
|
3
|
-
|
|
4
|
-
class HarvestedClone extends Model { }
|
|
5
|
-
|
|
6
|
-
function initHarvestedClone() {
|
|
7
|
-
HarvestedClone.init({
|
|
8
|
-
t: {
|
|
9
|
-
type: DataTypes.BIGINT,
|
|
10
|
-
allowNull: true
|
|
11
|
-
},
|
|
12
|
-
provider: {
|
|
13
|
-
type: DataTypes.STRING(255),
|
|
14
|
-
allowNull: false,
|
|
15
|
-
comment: 'service hostname, domainname'
|
|
16
|
-
},
|
|
17
|
-
domain: {
|
|
18
|
-
type: DataTypes.STRING(255),
|
|
19
|
-
allowNull: false,
|
|
20
|
-
comment: 'domainname'
|
|
21
|
-
},
|
|
22
|
-
}, {
|
|
23
|
-
// Other model options go here
|
|
24
|
-
sequelize:vars.sequelize, // We need to pass the connection instance
|
|
25
|
-
modelName: 'HarvestedClone',// We need to choose the model name
|
|
26
|
-
tableName: 'harvested_clone',
|
|
27
|
-
indexes:[
|
|
28
|
-
{
|
|
29
|
-
fields:['provider'],
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
fields:['domain']
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
fields:['t']
|
|
36
|
-
},
|
|
37
|
-
]
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = {
|
|
42
|
-
HarvestedClone,
|
|
43
|
-
initHarvestedClone
|
|
44
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
const { validEmail } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailBy_querySelector_value } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10-minute-mail.com'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime,'#openRandomButton')
|
|
11
|
-
let email = await emailBy_querySelector_innerHTML(page,'strong')
|
|
12
|
-
|
|
13
|
-
if (browser) await browser.close()
|
|
14
|
-
if (email) return resolve({
|
|
15
|
-
email,
|
|
16
|
-
URL,
|
|
17
|
-
t:Date.now()
|
|
18
|
-
})
|
|
19
|
-
return resolve(null)
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.log(err)
|
|
22
|
-
Sentry.captureException(err)
|
|
23
|
-
resolve(false)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// for cli usage - development
|
|
29
|
-
if (require.main==module) {
|
|
30
|
-
start(false).then(res=>console.log(res))
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// pending
|
|
34
|
-
vars.providers.push({
|
|
35
|
-
name:'10-minute-mail.com',
|
|
36
|
-
init:initiateEmpty,
|
|
37
|
-
start:start,
|
|
38
|
-
disabled:true
|
|
39
|
-
})
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
const { validEmail } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailBy_querySelector_value } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10-minuten-mail.de'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime,'#openRandomButton')
|
|
11
|
-
let email = await emailBy_querySelector_innerHTML(page,'strong')
|
|
12
|
-
|
|
13
|
-
if (browser) await browser.close()
|
|
14
|
-
if (email) return resolve({
|
|
15
|
-
email,
|
|
16
|
-
URL,
|
|
17
|
-
t:Date.now()
|
|
18
|
-
})
|
|
19
|
-
return resolve(null)
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.log(err)
|
|
22
|
-
Sentry.captureException(err)
|
|
23
|
-
resolve(false)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// for cli usage - development
|
|
29
|
-
if (require.main==module) {
|
|
30
|
-
start(false).then(res=>console.log(res))
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// pending
|
|
34
|
-
vars.providers.push({
|
|
35
|
-
name:'10-minuten-mail.de',
|
|
36
|
-
init:initiateEmpty,
|
|
37
|
-
start:start,
|
|
38
|
-
disabled:true
|
|
39
|
-
})
|
package/providers/10mails.net.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
const { validEmail, wait } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailFrom_combobox_id, emailBy_querySelector_value, emailFrom_combobox_selector } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'http://10mails.net'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let email = await emailBy_querySelector_innerHTML(page,'span#tma')
|
|
14
|
-
|
|
15
|
-
if (browser) await browser.close()
|
|
16
|
-
if (email) return resolve({
|
|
17
|
-
email,
|
|
18
|
-
URL,
|
|
19
|
-
t:Date.now()
|
|
20
|
-
})
|
|
21
|
-
return resolve(null)
|
|
22
|
-
} catch (err) {
|
|
23
|
-
console.log(err)
|
|
24
|
-
Sentry.captureException(err)
|
|
25
|
-
resolve(false)
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// for cli usage - development
|
|
31
|
-
if (require.main==module) {
|
|
32
|
-
start(false).then(res=>console.log(res))
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
vars.providers.push({
|
|
37
|
-
name:'10mails.net',
|
|
38
|
-
init:initiateEmpty,
|
|
39
|
-
start:start,
|
|
40
|
-
disabled:true
|
|
41
|
-
})
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
const { validEmail, wait } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailFrom_combobox_id, emailBy_querySelector_value, emailFrom_combobox_selector, emailBy_querySelector_innerText, emailBy_querySelector_placeholder } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10minut.com.pl'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime)
|
|
11
|
-
|
|
12
|
-
let email = await emailBy_querySelector_value(page,'input[type="text"]')
|
|
13
|
-
if (browser) await browser.close()
|
|
14
|
-
if (email) return resolve({
|
|
15
|
-
email,
|
|
16
|
-
URL,
|
|
17
|
-
t:Date.now()
|
|
18
|
-
})
|
|
19
|
-
return resolve(null)
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.log(err)
|
|
22
|
-
Sentry.captureException(err)
|
|
23
|
-
resolve(false)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// for cli usage - development
|
|
29
|
-
if (require.main==module) {
|
|
30
|
-
start(false).then(res=>console.log(res))
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
vars.providers.push({
|
|
35
|
-
name:'10minut.com.pl',
|
|
36
|
-
init:initiateEmpty,
|
|
37
|
-
start:start,
|
|
38
|
-
disabled:true
|
|
39
|
-
})
|
package/providers/10minut.xyz.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const { validEmail, wait } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailFrom_combobox_id, emailBy_querySelector_value, emailFrom_combobox_selector, emailBy_querySelector_innerText, email_from_raw } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10minut.xyz'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime)
|
|
11
|
-
|
|
12
|
-
let raw = await emailBy_querySelector_innerText(page,'span.input-group-text',true)
|
|
13
|
-
let email = email_from_raw(raw)
|
|
14
|
-
// console.log(email)
|
|
15
|
-
if (browser) await browser.close()
|
|
16
|
-
if (email.length>0) return resolve({
|
|
17
|
-
email,
|
|
18
|
-
URL,
|
|
19
|
-
t:Date.now()
|
|
20
|
-
})
|
|
21
|
-
return resolve(null)
|
|
22
|
-
} catch (err) {
|
|
23
|
-
console.log(err)
|
|
24
|
-
Sentry.captureException(err)
|
|
25
|
-
resolve(false)
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// for cli usage - development
|
|
31
|
-
if (require.main==module) {
|
|
32
|
-
start(false).then(res=>console.log(res))
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
vars.providers.push({
|
|
37
|
-
name:'10minut.xyz',
|
|
38
|
-
init:initiateEmpty,
|
|
39
|
-
start:start
|
|
40
|
-
})
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
const { validEmail } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailBy_querySelector_value } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10minuteemails.com'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime,'input[value="Create a Random Email"]')
|
|
11
|
-
// document.querySelectorAll('form.flex input')[0].click()
|
|
12
|
-
let email = await emailBy_querySelector_innerHTML(page,'div.block')
|
|
13
|
-
|
|
14
|
-
if (browser) await browser.close()
|
|
15
|
-
if (email) return resolve({
|
|
16
|
-
email,
|
|
17
|
-
URL,
|
|
18
|
-
t:Date.now()
|
|
19
|
-
})
|
|
20
|
-
return resolve(null)
|
|
21
|
-
} catch (err) {
|
|
22
|
-
console.log(err)
|
|
23
|
-
Sentry.captureException(err)
|
|
24
|
-
resolve(false)
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// for cli usage - development
|
|
30
|
-
if (require.main==module) {
|
|
31
|
-
start(false).then(res=>console.log(res))
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// disabled in favor of extention
|
|
35
|
-
// vars.providers.push({
|
|
36
|
-
// name:'10minuteemails.com',
|
|
37
|
-
// init:initiateEmpty,
|
|
38
|
-
// start:start
|
|
39
|
-
// })
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
const { validEmail } = require('mybase')
|
|
2
|
-
const { Sentry } = require('../config')
|
|
3
|
-
const { initiateEmpty, launch, emailBy_id_innerText, emailBy_querySelector_innerHTML, emailBy_id_value, emailBy_querySelector_value } = require('../shared')
|
|
4
|
-
const vars = require('./../vars')
|
|
5
|
-
const URL = 'https://10minutemail.co.za'
|
|
6
|
-
|
|
7
|
-
function start(headless=true,waitTime=3) {
|
|
8
|
-
return new Promise(async function (resolve,reject) {
|
|
9
|
-
try {
|
|
10
|
-
let {page,browser} = await launch(headless,URL,waitTime,'input[name="getemail"]')
|
|
11
|
-
let email = await emailBy_querySelector_value(page,'input[name="mail"]')
|
|
12
|
-
|
|
13
|
-
if (browser) await browser.close()
|
|
14
|
-
if (email) return resolve({
|
|
15
|
-
email,
|
|
16
|
-
URL,
|
|
17
|
-
t:Date.now()
|
|
18
|
-
})
|
|
19
|
-
return resolve(null)
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.log(err)
|
|
22
|
-
Sentry.captureException(err)
|
|
23
|
-
resolve(false)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// for cli usage - development
|
|
29
|
-
if (require.main==module) {
|
|
30
|
-
start(false).then(res=>console.log(res))
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// pending
|
|
34
|
-
vars.providers.push({
|
|
35
|
-
name:'10minutemail.co.za',
|
|
36
|
-
init:initiateEmpty,
|
|
37
|
-
start:start,
|
|
38
|
-
disabled:true
|
|
39
|
-
})
|