fixed jobid display error and added sql tables for dns domains and mtls

This commit is contained in:
Tim Makram Ghatas
2023-06-06 00:45:07 +02:00
parent a463aa1218
commit 3dc7002fdd
4 changed files with 43 additions and 21 deletions
+1 -1
View File
@@ -41,6 +41,6 @@ func WGListenerCmd(ctx *grumble.Context, con *console.SliverConsoleClient) {
if err != nil {
con.PrintErrorf("%s\n", err)
} else {
con.PrintInfof("Successfully started job #%d\n", wg.ID)
con.PrintInfof("Successfully started job #%d\n", wg.JobID)
}
}
+10 -10
View File
@@ -33,7 +33,7 @@ type ListenerJob struct {
JobID uint32
Type string
HttpListener HTTPListener
MtlsListener MTLSListener
MtlsListener MtlsListener
DnsListener DNSListener
WgListener WGListener
MultiplayerListener MultiplayerListener
@@ -61,7 +61,7 @@ type DNSListener struct {
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
ListenerJobID uuid.UUID `gorm:"type:uuid;"`
Domains []Domain
Domains []DnsDomain
Canaries bool
Host string
Port uint32
@@ -78,7 +78,7 @@ type WGListener struct {
TunIP string
}
type MTLSListener struct {
type MtlsListener struct {
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
ListenerJobID uuid.UUID `gorm:"type:uuid;"`
Host string
@@ -92,7 +92,7 @@ type MultiplayerListener struct {
Port uint32
}
type Domain struct {
type DnsDomain struct {
ID uuid.UUID `gorm:"primaryKey;->;<-:create;type:uuid;"`
DNSListenerID uuid.UUID `gorm:"type:uuid;"`
Domain string
@@ -132,7 +132,7 @@ func (j *WGListener) BeforeCreate(tx *gorm.DB) (err error) {
return nil
}
func (j *MTLSListener) BeforeCreate(tx *gorm.DB) (err error) {
func (j *MtlsListener) BeforeCreate(tx *gorm.DB) (err error) {
j.ID, err = uuid.NewV4()
if err != nil {
return err
@@ -196,7 +196,7 @@ func (j *WGListener) ToProtobuf() *clientpb.WGListenerReq {
}
}
func (j *MTLSListener) ToProtobuf() *clientpb.MTLSListenerReq {
func (j *MtlsListener) ToProtobuf() *clientpb.MTLSListenerReq {
return &clientpb.MTLSListenerReq{
Host: j.Host,
Port: j.Port,
@@ -249,14 +249,14 @@ func ListenerJobFromProtobuf(pbListenerJob *clientpb.ListenerJob) *ListenerJob {
RandomizeJarm: pbListenerJob.HTTPConf.RandomizeJARM,
}
case "mtls":
cfg.MtlsListener = MTLSListener{
cfg.MtlsListener = MtlsListener{
Host: pbListenerJob.MTLSConf.Host,
Port: pbListenerJob.MTLSConf.Port,
}
case "dns":
var domains []Domain
var domains []DnsDomain
for _, domain := range pbListenerJob.DNSConf.Domains {
domains = append(domains, Domain{Domain: domain})
domains = append(domains, DnsDomain{Domain: domain})
}
cfg.DnsListener = DNSListener{
Domains: domains,
@@ -265,7 +265,7 @@ func ListenerJobFromProtobuf(pbListenerJob *clientpb.ListenerJob) *ListenerJob {
Port: pbListenerJob.DNSConf.Port,
EnforceOtp: pbListenerJob.DNSConf.EnforceOTP,
}
case "WG":
case "wg":
cfg.WgListener = WGListener{
Host: pbListenerJob.WGConf.Host,
Port: pbListenerJob.WGConf.Port,
+2
View File
@@ -90,6 +90,8 @@ func newDBClient() *gorm.DB {
&models.DNSListener{},
&models.WGListener{},
&models.MultiplayerListener{},
&models.MtlsListener{},
&models.DnsDomain{},
)
if err != nil {
clientLog.Error(err)
+30 -10
View File
@@ -89,12 +89,11 @@ func (rpc *Server) StartMTLSListener(ctx context.Context, req *clientpb.MTLSList
if 65535 <= req.Port {
return nil, ErrInvalidPort
}
listenPort := uint16(defaultMTLSPort)
if req.Port != 0 {
listenPort = uint16(req.Port)
if req.Port == 0 {
req.Port = defaultMTLSPort
}
job, err := c2.StartMTLSListenerJob(req.Host, listenPort)
job, err := c2.StartMTLSListenerJob(req.Host, uint16(req.Port))
if err != nil {
return nil, err
}
@@ -105,7 +104,10 @@ func (rpc *Server) StartMTLSListener(ctx context.Context, req *clientpb.MTLSList
MTLSConf: req,
}
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
db.HTTPC2ListenerSave(listenerModel)
err = db.HTTPC2ListenerSave(listenerModel)
if err != nil {
return nil, err
}
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
}
@@ -142,7 +144,10 @@ func (rpc *Server) StartWGListener(ctx context.Context, req *clientpb.WGListener
WGConf: req,
}
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
db.HTTPC2ListenerSave(listenerModel)
err = db.HTTPC2ListenerSave(listenerModel)
if err != nil {
return nil, err
}
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
}
@@ -162,7 +167,16 @@ func (rpc *Server) StartDNSListener(ctx context.Context, req *clientpb.DNSListen
return nil, err
}
// TODO save listener to db
listenerJob := &clientpb.ListenerJob{
JobID: uint32(job.ID),
Type: "dns",
DNSConf: req,
}
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
err = db.HTTPC2ListenerSave(listenerModel)
if err != nil {
return nil, err
}
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
}
@@ -183,11 +197,14 @@ func (rpc *Server) StartHTTPSListener(ctx context.Context, req *clientpb.HTTPLis
listenerJob := &clientpb.ListenerJob{
JobID: uint32(job.ID),
Type: "http",
Type: "https",
HTTPConf: req,
}
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
db.HTTPC2ListenerSave(listenerModel)
err = db.HTTPC2ListenerSave(listenerModel)
if err != nil {
return nil, err
}
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
}
@@ -212,7 +229,10 @@ func (rpc *Server) StartHTTPListener(ctx context.Context, req *clientpb.HTTPList
HTTPConf: req,
}
listenerModel := models.ListenerJobFromProtobuf(listenerJob)
db.HTTPC2ListenerSave(listenerModel)
err = db.HTTPC2ListenerSave(listenerModel)
if err != nil {
return nil, err
}
return &clientpb.ListenerJob{JobID: uint32(job.ID)}, nil
}