mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-08-18 00:17:14 +02:00
Proxy MITM
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/phishingclub/phishingclub/database"
|
||||
"github.com/phishingclub/phishingclub/model"
|
||||
"github.com/phishingclub/phishingclub/repository"
|
||||
"github.com/phishingclub/phishingclub/service"
|
||||
)
|
||||
|
||||
// ProxyColumnsMap is a map between the frontend and the backend
|
||||
// so the frontend has user friendly names instead of direct references
|
||||
// to the database schema
|
||||
// this is tied to a slice in the repository package
|
||||
var ProxyColumnsMap = map[string]string{
|
||||
"created_at": repository.TableColumn(database.PROXY_TABLE, "created_at"),
|
||||
"updated_at": repository.TableColumn(database.PROXY_TABLE, "updated_at"),
|
||||
"name": repository.TableColumn(database.PROXY_TABLE, "name"),
|
||||
"target_domain": repository.TableColumn(database.PROXY_TABLE, "target_domain"),
|
||||
}
|
||||
|
||||
// Proxy is a proxy controller
|
||||
type Proxy struct {
|
||||
Common
|
||||
ProxyService *service.Proxy
|
||||
}
|
||||
|
||||
// Create creates a proxy
|
||||
func (m *Proxy) Create(g *gin.Context) {
|
||||
// handle session
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse req
|
||||
var req model.Proxy
|
||||
if ok := m.handleParseRequest(g, &req); !ok {
|
||||
return
|
||||
}
|
||||
// save proxy
|
||||
id, err := m.ProxyService.Create(
|
||||
g.Request.Context(),
|
||||
session,
|
||||
&req,
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, map[string]string{
|
||||
"id": id.String(),
|
||||
})
|
||||
}
|
||||
|
||||
// GetOverview gets proxies overview using pagination
|
||||
func (m *Proxy) GetOverview(g *gin.Context) {
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse request
|
||||
queryArgs, ok := m.handleQueryArgs(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
queryArgs.DefaultSortByUpdatedAt()
|
||||
companyID := companyIDFromRequestQuery(g)
|
||||
// get proxies
|
||||
proxies, err := m.ProxyService.GetAllOverview(
|
||||
companyID,
|
||||
g,
|
||||
session,
|
||||
queryArgs,
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, proxies)
|
||||
}
|
||||
|
||||
// GetAll gets all proxies using pagination
|
||||
func (m *Proxy) GetAll(g *gin.Context) {
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse request
|
||||
queryArgs, ok := m.handleQueryArgs(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
queryArgs.DefaultSortByUpdatedAt()
|
||||
companyID := companyIDFromRequestQuery(g)
|
||||
// get proxies
|
||||
proxies, err := m.ProxyService.GetAll(
|
||||
g,
|
||||
session,
|
||||
companyID,
|
||||
&repository.ProxyOption{
|
||||
QueryArgs: queryArgs,
|
||||
},
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, proxies)
|
||||
}
|
||||
|
||||
// GetByID gets a proxy by ID
|
||||
func (m *Proxy) GetByID(g *gin.Context) {
|
||||
// handle session
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse request
|
||||
id, ok := m.handleParseIDParam(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// get proxy
|
||||
proxy, err := m.ProxyService.GetByID(
|
||||
g.Request.Context(),
|
||||
session,
|
||||
id,
|
||||
&repository.ProxyOption{},
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, proxy)
|
||||
}
|
||||
|
||||
// UpdateByID updates a proxy by ID
|
||||
func (m *Proxy) UpdateByID(g *gin.Context) {
|
||||
// handle session
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse request
|
||||
id, ok := m.handleParseIDParam(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
var req model.Proxy
|
||||
if ok := m.handleParseRequest(g, &req); !ok {
|
||||
return
|
||||
}
|
||||
// update proxy
|
||||
err := m.ProxyService.UpdateByID(
|
||||
g.Request.Context(),
|
||||
session,
|
||||
id,
|
||||
&req,
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, map[string]string{
|
||||
"message": "Proxy updated",
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteByID deletes a proxy by ID
|
||||
func (m *Proxy) DeleteByID(g *gin.Context) {
|
||||
// handle session
|
||||
session, _, ok := m.handleSession(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// parse request
|
||||
id, ok := m.handleParseIDParam(g)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
// delete proxy
|
||||
err := m.ProxyService.DeleteByID(
|
||||
g.Request.Context(),
|
||||
session,
|
||||
id,
|
||||
)
|
||||
// handle response
|
||||
if ok := m.handleErrors(g, err); !ok {
|
||||
return
|
||||
}
|
||||
m.Response.OK(g, map[string]string{
|
||||
"message": "Proxy deleted",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user