This commit is contained in:
@@ -13,7 +13,7 @@ Just drop the binary on a server and start triaging.
|
|||||||
|
|
||||||
### Option A: Download the Binary
|
### Option A: Download the Binary
|
||||||
|
|
||||||
1. Go to the [Releases](https://epigas.gitea.cloud/RiskRancher/core/releases) tab and download the compiled executable for your OS (Windows/macOS/Linux).
|
1. Go to the [Releases](https://code.riskrancher.com/RiskRancher/core/releases) tab and download the compiled executable for your OS (Windows/macOS/Linux).
|
||||||
2. Place the binary in a dedicated directory and execute it.
|
2. Place the binary in a dedicated directory and execute it.
|
||||||
3. Visit `http://localhost:8080` in your browser.
|
3. Visit `http://localhost:8080` in your browser.
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Just drop the binary on a server and start triaging.
|
|||||||
Ensure you have **Go 1.26+** installed (*CGO is required for the native `mattn/go-sqlite3` driver*).
|
Ensure you have **Go 1.26+** installed (*CGO is required for the native `mattn/go-sqlite3` driver*).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://epigas.gitea.cloud/RiskRancher/core
|
git clone https://code.riskrancher.com/RiskRancher/core
|
||||||
cd core
|
cd core
|
||||||
go build -o rr ./cmd/rr/main.go
|
go build -o rr ./cmd/rr/main.go
|
||||||
./rr
|
./rr
|
||||||
|
|||||||
+3
-3
@@ -4,9 +4,9 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/server"
|
"code.riskrancher.com/RiskRancher/core/pkg/server"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/ui"
|
"code.riskrancher.com/RiskRancher/core/ui"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/auth"
|
"code.riskrancher.com/RiskRancher/core/pkg/auth"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
module epigas.gitea.cloud/RiskRancher/core
|
module code.riskrancher.com/RiskRancher/core
|
||||||
|
|
||||||
go 1.26.0
|
go 1.26.0
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *Handler) HandleGetAdapters(w http.ResponseWriter, r *http.Request) {
|
func (h *Handler) HandleGetAdapters(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestAdapters(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestAdapters(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package adapters
|
package adapters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/auth"
|
"code.riskrancher.com/RiskRancher/core/pkg/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PasswordResetRequest is the expected JSON payload
|
// PasswordResetRequest is the expected JSON payload
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetGlobalConfig(t *testing.T) {
|
func TestGetGlobalConfig(t *testing.T) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestExportSystemState(t *testing.T) {
|
func TestExportSystemState(t *testing.T) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Handler encapsulates all Admin and Sheriff HTTP logic
|
// Handler encapsulates all Admin and Sheriff HTTP logic
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
// setupTestAdmin returns the clean Admin Handler and the raw DB
|
// setupTestAdmin returns the clean Admin Handler and the raw DB
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestAnalytics(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestAnalytics(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package analytics
|
package analytics
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestAuth(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestAuth(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrNotFound is a standard error we can use across our handlers
|
// ErrNotFound is a standard error we can use across our handlers
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
_ "modernc.org/sqlite"
|
_ "modernc.org/sqlite"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
_ "modernc.org/sqlite" // We need the SQLite driver for the test
|
_ "modernc.org/sqlite" // We need the SQLite driver for the test
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package datastore
|
|||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SQLiteStore struct {
|
type SQLiteStore struct {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *SQLiteStore) UpdateAppConfig(ctx context.Context, config domain2.AppConfig) error {
|
func (s *SQLiteStore) UpdateAppConfig(ctx context.Context, config domain2.AppConfig) error {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *SQLiteStore) GetSheriffAnalytics(ctx context.Context) (domain2.SheriffAnalytics, error) {
|
func (s *SQLiteStore) GetSheriffAnalytics(ctx context.Context) (domain2.SheriffAnalytics, error) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *SQLiteStore) SaveDraft(ctx context.Context, d domain2.DraftTicket) error {
|
func (s *SQLiteStore) SaveDraft(ctx context.Context, d domain2.DraftTicket) error {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *SQLiteStore) IngestTickets(ctx context.Context, tickets []domain2.Ticket) error {
|
func (s *SQLiteStore) IngestTickets(ctx context.Context, tickets []domain2.Ticket) error {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *SQLiteStore) GetTickets(ctx context.Context) ([]domain.Ticket, error) {
|
func (s *SQLiteStore) GetTickets(ctx context.Context) ([]domain.Ticket, error) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package ingest
|
package ingest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *Handler) HandleIngest(w http.ResponseWriter, r *http.Request) {
|
func (h *Handler) HandleIngest(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestIngest(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestIngest(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/auth"
|
"code.riskrancher.com/RiskRancher/core/pkg/auth"
|
||||||
domain2 "epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
domain2 "code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (h *Handler) HandleSaveDraft(w http.ResponseWriter, r *http.Request) {
|
func (h *Handler) HandleSaveDraft(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package report
|
package report
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestReport(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestReport(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@ package server
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/sla"
|
"code.riskrancher.com/RiskRancher/core/pkg/sla"
|
||||||
)
|
)
|
||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ package server
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/adapters"
|
"code.riskrancher.com/RiskRancher/core/pkg/adapters"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/admin"
|
"code.riskrancher.com/RiskRancher/core/pkg/admin"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/analytics"
|
"code.riskrancher.com/RiskRancher/core/pkg/analytics"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/auth"
|
"code.riskrancher.com/RiskRancher/core/pkg/auth"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/ingest"
|
"code.riskrancher.com/RiskRancher/core/pkg/ingest"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/report"
|
"code.riskrancher.com/RiskRancher/core/pkg/report"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/tickets"
|
"code.riskrancher.com/RiskRancher/core/pkg/tickets"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/ui"
|
"code.riskrancher.com/RiskRancher/core/ui"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RegisterRoutes(app *App) {
|
func RegisterRoutes(app *App) {
|
||||||
@@ -85,7 +85,7 @@ func RegisterRoutes(app *App) {
|
|||||||
|
|
||||||
app.Router.Handle("POST /api/adapters", adminOnly(adapterH.HandleCreateAdapter))
|
app.Router.Handle("POST /api/adapters", adminOnly(adapterH.HandleCreateAdapter))
|
||||||
app.Router.Handle("DELETE /api/adapters/{id}", adminOnly(adapterH.HandleDeleteAdapter))
|
app.Router.Handle("DELETE /api/adapters/{id}", adminOnly(adapterH.HandleDeleteAdapter))
|
||||||
|
|
||||||
app.Router.Handle("GET /api/admin/export", sheriffOnly(adminH.HandleExportState))
|
app.Router.Handle("GET /api/admin/export", sheriffOnly(adminH.HandleExportState))
|
||||||
app.Router.Handle("GET /api/admin/check-updates", sheriffOnly(adminH.HandleCheckUpdates))
|
app.Router.Handle("GET /api/admin/check-updates", sheriffOnly(adminH.HandleCheckUpdates))
|
||||||
app.Router.Handle("POST /api/admin/shutdown", sheriffOnly(adminH.HandleShutdown))
|
app.Router.Handle("POST /api/admin/shutdown", sheriffOnly(adminH.HandleShutdown))
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultSLACalculator implements the SLACalculator interface
|
// DefaultSLACalculator implements the SLACalculator interface
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package tickets
|
package tickets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Handler encapsulates all Ticket-related HTTP logic
|
// Handler encapsulates all Ticket-related HTTP logic
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
|
"code.riskrancher.com/RiskRancher/core/pkg/datastore"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setupTestTickets(t *testing.T) (*Handler, *sql.DB) {
|
func setupTestTickets(t *testing.T) (*Handler, *sql.DB) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
type InlineUpdateRequest struct {
|
type InlineUpdateRequest struct {
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/auth"
|
"code.riskrancher.com/RiskRancher/core/pkg/auth"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/domain"
|
"code.riskrancher.com/RiskRancher/core/pkg/domain"
|
||||||
"epigas.gitea.cloud/RiskRancher/core/pkg/report"
|
"code.riskrancher.com/RiskRancher/core/pkg/report"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed templates/* templates/components/* static/*
|
//go:embed templates/* templates/components/* static/*
|
||||||
|
|||||||
Reference in New Issue
Block a user