mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-02-12 16:12:44 +00:00
234 lines
6.7 KiB
Go
234 lines
6.7 KiB
Go
package app
|
|
|
|
import (
|
|
"github.com/phishingclub/phishingclub/config"
|
|
"github.com/phishingclub/phishingclub/controller"
|
|
"go.uber.org/zap"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Controllers is a collection of controllers
|
|
type Controllers struct {
|
|
Asset *controller.Asset
|
|
Attachment *controller.Attachment
|
|
Company *controller.Company
|
|
Health *controller.Health
|
|
Installer *controller.Install
|
|
InitialSetup *controller.InitialSetup
|
|
Page *controller.Page
|
|
Proxy *controller.Proxy
|
|
Log *controller.Log
|
|
Option *controller.Option
|
|
User *controller.User
|
|
Domain *controller.Domain
|
|
Recipient *controller.Recipient
|
|
RecipientGroup *controller.RecipientGroup
|
|
SMTPConfiguration *controller.SMTPConfiguration
|
|
Email *controller.Email
|
|
CampaignTemplate *controller.CampaignTemplate
|
|
Campaign *controller.Campaign
|
|
QR *controller.QRGenerator
|
|
APISender *controller.APISender
|
|
AllowDeny *controller.AllowDeny
|
|
GeoIP *controller.GeoIP
|
|
Webhook *controller.Webhook
|
|
Identifier *controller.Identifier
|
|
Version *controller.Version
|
|
SSO *controller.SSO
|
|
Update *controller.Update
|
|
Import *controller.Import
|
|
Backup *controller.Backup
|
|
IPAllowList *controller.IPAllowList
|
|
OAuthProvider *controller.OAuthProvider
|
|
}
|
|
|
|
// NewControllers creates a collection of controllers
|
|
func NewControllers(
|
|
staticAssetPath string,
|
|
attachmentsPath string,
|
|
repositories *Repositories,
|
|
services *Services,
|
|
logger *zap.SugaredLogger,
|
|
atomLogger *zap.AtomicLevel,
|
|
utillities *Utilities,
|
|
db *gorm.DB,
|
|
conf *config.Config,
|
|
) *Controllers {
|
|
common := controller.Common{
|
|
SessionService: services.Session,
|
|
Logger: logger,
|
|
Response: utillities.JSONResponseHandler,
|
|
}
|
|
asset := &controller.Asset{
|
|
Common: common,
|
|
StaticAssetPath: staticAssetPath,
|
|
AssetService: services.Asset,
|
|
OptionService: services.Option,
|
|
DomainService: services.Domain,
|
|
}
|
|
attachment := &controller.Attachment{
|
|
Common: common,
|
|
StaticAttachmentPath: attachmentsPath,
|
|
AttachmentService: services.Attachment,
|
|
OptionService: services.Option,
|
|
TemplateService: services.Template,
|
|
CompanyService: services.Company,
|
|
}
|
|
company := &controller.Company{
|
|
Common: common,
|
|
CampaignService: services.Campaign,
|
|
CompanyService: services.Company,
|
|
RecipientService: services.Recipient,
|
|
}
|
|
initialSetup := &controller.InitialSetup{
|
|
Common: common,
|
|
CLIOutputter: utillities.CLIOutputter,
|
|
OptionRepository: repositories.Option,
|
|
InstallService: services.InstallSetup,
|
|
OptionService: services.Option,
|
|
}
|
|
installer := &controller.Install{
|
|
Common: common,
|
|
UserRepository: repositories.User,
|
|
CompanyRepository: repositories.Company,
|
|
OptionRepository: repositories.Option,
|
|
PasswordHasher: *utillities.PasswordHasher,
|
|
DB: db,
|
|
ImportService: services.Import,
|
|
}
|
|
health := &controller.Health{}
|
|
log := &controller.Log{
|
|
Common: common,
|
|
OptionService: services.Option,
|
|
Database: db,
|
|
LoggerAtom: atomLogger,
|
|
}
|
|
page := &controller.Page{
|
|
Common: common,
|
|
PageService: services.Page,
|
|
TemplateService: services.Template,
|
|
}
|
|
proxy := &controller.Proxy{
|
|
Common: common,
|
|
ProxyService: services.Proxy,
|
|
}
|
|
option := &controller.Option{
|
|
Common: common,
|
|
OptionService: services.Option,
|
|
}
|
|
user := &controller.User{
|
|
Common: common,
|
|
UserService: services.User,
|
|
}
|
|
domain := &controller.Domain{
|
|
Common: common,
|
|
DomainService: services.Domain,
|
|
}
|
|
recipient := &controller.Recipient{
|
|
Common: common,
|
|
RecipientService: services.Recipient,
|
|
}
|
|
recipientGroup := &controller.RecipientGroup{
|
|
Common: common,
|
|
RecipientGroupService: services.RecipientGroup,
|
|
}
|
|
smtpConfiguration := &controller.SMTPConfiguration{
|
|
Common: common,
|
|
SMTPConfigurationService: services.SMTPConfiguration,
|
|
}
|
|
email := &controller.Email{
|
|
Common: common,
|
|
EmailService: services.Email,
|
|
TemplateService: services.Template,
|
|
EmailRepository: repositories.Email,
|
|
}
|
|
campaignTemplate := &controller.CampaignTemplate{
|
|
Common: common,
|
|
CampaignTemplateService: services.CampaignTemplate,
|
|
}
|
|
campaign := &controller.Campaign{
|
|
Common: common,
|
|
CampaignService: services.Campaign,
|
|
}
|
|
qr := &controller.QRGenerator{
|
|
Common: common,
|
|
}
|
|
apiSender := &controller.APISender{
|
|
Common: common,
|
|
APISenderService: services.APISender,
|
|
}
|
|
allowDeny := &controller.AllowDeny{
|
|
Common: common,
|
|
AllowDenyService: services.AllowDeny,
|
|
}
|
|
webhook := &controller.Webhook{
|
|
Common: common,
|
|
WebhookService: services.Webhook,
|
|
}
|
|
identifier := &controller.Identifier{
|
|
Common: common,
|
|
IdentifierService: services.Identifier,
|
|
}
|
|
version := &controller.Version{Common: common}
|
|
sso := &controller.SSO{Common: common, SSO: services.SSO}
|
|
update := &controller.Update{
|
|
Common: common,
|
|
UpdateService: services.Update,
|
|
OptionService: services.Option,
|
|
}
|
|
importController := &controller.Import{
|
|
Common: common,
|
|
ImportService: services.Import,
|
|
}
|
|
backup := &controller.Backup{
|
|
Common: common,
|
|
BackupService: services.Backup,
|
|
}
|
|
ipAllowList := &controller.IPAllowList{
|
|
Common: common,
|
|
IPAllowListService: services.IPAllowList,
|
|
}
|
|
geoIP := &controller.GeoIP{
|
|
Common: common,
|
|
}
|
|
oauthProvider := &controller.OAuthProvider{
|
|
Common: common,
|
|
OAuthProviderService: services.OAuthProvider,
|
|
Config: conf,
|
|
}
|
|
|
|
return &Controllers{
|
|
Asset: asset,
|
|
Attachment: attachment,
|
|
Company: company,
|
|
Installer: installer,
|
|
InitialSetup: initialSetup,
|
|
Health: health,
|
|
Page: page,
|
|
Proxy: proxy,
|
|
Log: log,
|
|
Option: option,
|
|
User: user,
|
|
Domain: domain,
|
|
Recipient: recipient,
|
|
RecipientGroup: recipientGroup,
|
|
SMTPConfiguration: smtpConfiguration,
|
|
Email: email,
|
|
CampaignTemplate: campaignTemplate,
|
|
Campaign: campaign,
|
|
QR: qr,
|
|
APISender: apiSender,
|
|
AllowDeny: allowDeny,
|
|
GeoIP: geoIP,
|
|
Webhook: webhook,
|
|
Identifier: identifier,
|
|
Version: version,
|
|
SSO: sso,
|
|
Update: update,
|
|
Import: importController,
|
|
Backup: backup,
|
|
IPAllowList: ipAllowList,
|
|
OAuthProvider: oauthProvider,
|
|
}
|
|
}
|