Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/web/server.go
988 views
1
// Package web includes code for the web server of PhoneInfoga
2
//
3
//go:generate swag init -g ./server.go --parseDependency
4
package web
5
6
import (
7
"github.com/gin-gonic/gin"
8
v2 "github.com/sundowndev/phoneinfoga/v2/web/v2/api/server"
9
"net/http"
10
)
11
12
// @title PhoneInfoga REST API
13
// @description Advanced information gathering & OSINT framework for phone numbers.
14
// @version v2
15
// @host localhost:5000
16
// @BasePath /api
17
// @schemes http https
18
// @license.name GNU General Public License v3.0
19
// @license.url https://github.com/sundowndev/phoneinfoga/blob/master/LICENSE
20
21
type Server struct {
22
router *gin.Engine
23
}
24
25
func NewServer(disableClient bool) (*Server, error) {
26
s := &Server{
27
router: gin.Default(),
28
}
29
if err := s.registerRoutes(disableClient); err != nil {
30
return s, err
31
}
32
return s, nil
33
}
34
35
func (s *Server) registerRoutes(disableClient bool) error {
36
group := s.router.Group("/api")
37
38
group.
39
GET("/", healthHandler).
40
GET("/numbers", getAllNumbers).
41
GET("/numbers/:number/validate", ValidateScanURL, validate).
42
GET("/numbers/:number/scan/local", ValidateScanURL, localScan).
43
GET("/numbers/:number/scan/numverify", ValidateScanURL, numverifyScan).
44
GET("/numbers/:number/scan/googlesearch", ValidateScanURL, googleSearchScan).
45
GET("/numbers/:number/scan/ovh", ValidateScanURL, ovhScan)
46
47
v2routes := v2.NewServer().Routes()
48
for _, r := range v2routes {
49
group.Handle(r.Method, r.Path, r.HandlerFunc)
50
}
51
52
if !disableClient {
53
err := registerClientRoutes(s.router)
54
if err != nil {
55
return err
56
}
57
}
58
59
s.router.Use(func(c *gin.Context) {
60
c.JSON(404, JSONResponse{
61
Success: false,
62
Error: "resource not found",
63
})
64
})
65
66
return nil
67
}
68
69
func (s *Server) ListenAndServe(addr string) error {
70
return s.router.Run(addr)
71
}
72
73
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
74
s.router.ServeHTTP(w, r)
75
}
76
77