Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
V4NSH4J
GitHub Repository: V4NSH4J/discord-mass-DM-GO
Path: blob/main/discord/server_checker.go
310 views
1
// Copyright (C) 2021 github.com/V4NSH4J
2
//
3
// This source code has been released under the GNU Affero General Public
4
// License v3.0. A copy of this license is available at
5
// https://www.gnu.org/licenses/agpl-3.0.en.html
6
7
package discord
8
9
import (
10
"fmt"
11
"os"
12
"os/exec"
13
"sync"
14
"time"
15
16
"github.com/V4NSH4J/discord-mass-dm-GO/instance"
17
"github.com/V4NSH4J/discord-mass-dm-GO/utilities"
18
)
19
20
func LaunchServerChecker() {
21
cfg, instances, err := instance.GetEverything()
22
if err != nil {
23
utilities.LogErr("Error while getting neccessary information %v", err)
24
return
25
}
26
var tokenFile, presentFile, notPresentFile string
27
if cfg.OtherSettings.Logs {
28
path := fmt.Sprintf(`logs/server_checker/DMDGO-SC-%s-%s`, time.Now().Format(`2006-01-02 15-04-05`), utilities.RandStringBytes(5))
29
err := os.MkdirAll(path, 0755)
30
if err != nil && !os.IsExist(err) {
31
utilities.LogErr("Error creating logs directory: %s", err)
32
utilities.ExitSafely()
33
}
34
tokenFileX, err := os.Create(fmt.Sprintf(`%s/token.txt`, path))
35
if err != nil {
36
utilities.LogErr("Error creating token file: %s", err)
37
utilities.ExitSafely()
38
}
39
tokenFileX.Close()
40
presentFileX, err := os.Create(fmt.Sprintf(`%s/present.txt`, path))
41
if err != nil {
42
utilities.LogErr("Error creating present file: %s", err)
43
utilities.ExitSafely()
44
}
45
presentFileX.Close()
46
notPresentFileX, err := os.Create(fmt.Sprintf(`%s/not_present.txt`, path))
47
if err != nil {
48
utilities.LogErr("Error creating failed file: %s", err)
49
utilities.ExitSafely()
50
}
51
notPresentFileX.Close()
52
tokenFile, presentFile, notPresentFile = tokenFileX.Name(), presentFileX.Name(), notPresentFileX.Name()
53
for i := 0; i < len(instances); i++ {
54
instances[i].WriteInstanceToFile(tokenFile)
55
}
56
}
57
var serverid string
58
var inServer []string
59
title := make(chan bool)
60
go func() {
61
Out:
62
for {
63
select {
64
case <-title:
65
break Out
66
default:
67
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Present in Server]`, len(inServer)))
68
_ = cmd.Run()
69
}
70
71
}
72
}()
73
serverid = utilities.UserInput("Enter the server ID: ")
74
var wg sync.WaitGroup
75
wg.Add(len(instances))
76
for i := 0; i < len(instances); i++ {
77
go func(i int) {
78
defer wg.Done()
79
r, err := instances[i].ServerCheck(serverid)
80
if err != nil {
81
utilities.LogErr("%v Error while checking server: %v", instances[i].CensorToken(), err)
82
if cfg.OtherSettings.Logs {
83
instances[i].WriteInstanceToFile(notPresentFile)
84
}
85
} else {
86
if r == 200 || r == 204 {
87
utilities.LogSuccess("%v is in server %v ", instances[i].CensorToken(), serverid)
88
inServer = append(inServer, instances[i].Token)
89
if cfg.OtherSettings.Logs {
90
instances[i].WriteInstanceToFile(presentFile)
91
}
92
} else if r == 429 {
93
utilities.LogFailed("%v is rate limited", instances[i].CensorToken())
94
if cfg.OtherSettings.Logs {
95
instances[i].WriteInstanceToFile(notPresentFile)
96
}
97
} else if r == 400 {
98
utilities.LogFailed("Bad request - Invalid Server ID")
99
if cfg.OtherSettings.Logs {
100
instances[i].WriteInstanceToFile(notPresentFile)
101
}
102
} else {
103
utilities.LogFailed("%v is not in server [%v]", instances[i].CensorToken(), serverid, r)
104
if cfg.OtherSettings.Logs {
105
instances[i].WriteInstanceToFile(notPresentFile)
106
}
107
}
108
}
109
}(i)
110
}
111
wg.Wait()
112
title <- true
113
save := utilities.UserInput("Do you want to save the results? (y/n)")
114
if save == "y" || save == "Y" {
115
err := utilities.TruncateLines("tokens.txt", inServer)
116
if err != nil {
117
utilities.LogErr("Error while truncating file: %v", err)
118
} else {
119
utilities.LogSuccess("Successfully truncated file")
120
}
121
}
122
}
123
124