Detailed changes
@@ -122,8 +122,20 @@ func main() {
mux.HandleFunc("/", wsHandler.RootHandler)
httpServer := &http.Server{
- Addr: config.Server.Listen,
- Handler: mux,
+ Addr: config.Server.Listen,
+ Handler: mux,
+ DisableGeneralOptionsHandler: false,
+ TLSConfig: nil,
+ ReadTimeout: 0,
+ ReadHeaderTimeout: 0,
+ WriteTimeout: 0,
+ IdleTimeout: 0,
+ MaxHeaderBytes: 0,
+ TLSNextProto: nil,
+ ConnState: nil,
+ ErrorLog: nil,
+ BaseContext: nil,
+ ConnContext: nil,
}
fmt.Println("Starting web server on", config.Server.Listen)
@@ -33,6 +33,7 @@ var migrations = [...]migration{
upQuery: `CREATE TABLE schema_migrations (version uint64, dirty bool);
INSERT INTO schema_migrations (version, dirty) VALUES (0, 0);`,
downQuery: `DROP TABLE schema_migrations;`,
+ postHook: nil,
},
1: {
upQuery: migration1Up,
@@ -42,9 +43,12 @@ var migrations = [...]migration{
2: {
upQuery: migration2Up,
downQuery: migration2Down,
+ postHook: nil,
},
3: {
- postHook: correctProjectIDs,
+ upQuery: "",
+ downQuery: "",
+ postHook: correctProjectIDs,
},
}
@@ -70,7 +74,10 @@ func Migrate(db *sql.DB) error {
func runMigration(db *sql.DB, migrationIdx int) (err error) {
current := migrations[migrationIdx]
- tx, err := db.BeginTx(context.Background(), &sql.TxOptions{})
+ tx, err := db.BeginTx(context.Background(), &sql.TxOptions{
+ Isolation: 0,
+ ReadOnly: false,
+ })
if err != nil {
return fmt.Errorf("failed opening transaction for migration %d: %w", migrationIdx, err)
}
@@ -110,7 +117,10 @@ func runMigration(db *sql.DB, migrationIdx int) (err error) {
func undoMigration(db *sql.DB, migrationIdx int) (err error) {
current := migrations[migrationIdx]
- tx, err := db.BeginTx(context.Background(), &sql.TxOptions{})
+ tx, err := db.BeginTx(context.Background(), &sql.TxOptions{
+ Isolation: 0,
+ ReadOnly: false,
+ })
if err != nil {
return fmt.Errorf("failed opening undo transaction for migration %d: %w", migrationIdx, err)
}
@@ -84,6 +84,7 @@ func GetReleases(gitURI, forge string) ([]Release, error) {
}
var tagURL string
+
tagName := bmStrict.Sanitize(tagRef.Name().Short())
switch forge {
@@ -121,9 +122,21 @@ func minimalClone(url string) (r *git.Repository, err error) {
r, err = git.PlainOpen(path)
if err == nil {
err = r.Fetch(&git.FetchOptions{
- RemoteName: "origin",
- Depth: 1,
- Tags: git.AllTags,
+ RemoteName: "origin",
+ RemoteURL: "",
+ RefSpecs: nil,
+ Depth: 1,
+ Auth: nil,
+ Progress: nil,
+ Tags: git.AllTags,
+ Force: false,
+ InsecureSkipTLS: false,
+ CABundle: nil,
+ ProxyOptions: transport.ProxyOptions{
+ URL: "",
+ Username: "",
+ Password: "",
+ },
})
if errors.Is(err, git.NoErrAlreadyUpToDate) {
return r, nil
@@ -135,10 +148,26 @@ func minimalClone(url string) (r *git.Repository, err error) {
}
r, err = git.PlainClone(path, false, &git.CloneOptions{
- URL: url,
- SingleBranch: true,
- NoCheckout: true,
- Depth: 1,
+ URL: url,
+ Auth: nil,
+ RemoteName: "",
+ ReferenceName: "",
+ SingleBranch: true,
+ NoCheckout: true,
+ Depth: 1,
+ RecurseSubmodules: 0,
+ Progress: nil,
+ Tags: 0,
+ InsecureSkipTLS: false,
+ CABundle: nil,
+ ProxyOptions: transport.ProxyOptions{
+ URL: "",
+ Username: "",
+ Password: "",
+ },
+ Mirror: false,
+ ShallowSubmodules: false,
+ Shared: false,
})
return r, err
@@ -82,11 +82,12 @@ func fetchReleases(dbConn *sql.DB, mu *sync.Mutex, p Project) (Project, error) {
for _, release := range rssReleases {
p.Releases = append(p.Releases, Release{
- ID: GenReleaseID(p.URL, release.URL, release.Tag),
- Tag: release.Tag,
- Content: release.Content,
- URL: release.URL,
- Date: release.Date,
+ ID: GenReleaseID(p.URL, release.URL, release.Tag),
+ ProjectID: p.ID,
+ Tag: release.Tag,
+ Content: release.Content,
+ URL: release.URL,
+ Date: release.Date,
})
err = upsertReleases(dbConn, mu, p.ID, p.Releases)
@@ -103,11 +104,12 @@ func fetchReleases(dbConn *sql.DB, mu *sync.Mutex, p Project) (Project, error) {
for _, release := range gitReleases {
p.Releases = append(p.Releases, Release{
- ID: GenReleaseID(p.URL, release.URL, release.Tag),
- Tag: release.Tag,
- Content: release.Content,
- URL: release.URL,
- Date: release.Date,
+ ID: GenReleaseID(p.URL, release.URL, release.Tag),
+ ProjectID: p.ID,
+ Tag: release.Tag,
+ Content: release.Content,
+ URL: release.URL,
+ Date: release.Date,
})
err = upsertReleases(dbConn, mu, p.ID, p.Releases)
@@ -259,11 +261,12 @@ func GetProject(dbConn *sql.DB, proj Project) (Project, error) {
}
p := Project{
- ID: proj.ID,
- URL: proj.URL,
- Name: proj.Name,
- Forge: proj.Forge,
- Running: projectDB["version"],
+ ID: proj.ID,
+ URL: proj.URL,
+ Name: proj.Name,
+ Forge: proj.Forge,
+ Running: projectDB["version"],
+ Releases: nil,
}
return p, err
@@ -289,11 +292,12 @@ func GetProjects(dbConn *sql.DB) ([]Project, error) {
projects := make([]Project, len(projectsDB))
for i, p := range projectsDB {
projects[i] = Project{
- ID: p["id"],
- URL: p["url"],
- Name: p["name"],
- Forge: p["forge"],
- Running: p["version"],
+ ID: p["id"],
+ URL: p["url"],
+ Name: p["name"],
+ Forge: p["forge"],
+ Running: p["version"],
+ Releases: nil,
}
}
@@ -127,10 +127,12 @@ func (h Handler) NewHandler(w http.ResponseWriter, r *http.Request) {
}
proj := project.Project{
- ID: project.GenProjectID(submittedURL, name, forge),
- URL: submittedURL,
- Name: name,
- Forge: forge,
+ ID: project.GenProjectID(submittedURL, name, forge),
+ URL: submittedURL,
+ Name: name,
+ Forge: forge,
+ Running: "",
+ Releases: nil,
}
proj, err := project.GetProject(h.DbConn, proj)
@@ -299,12 +301,18 @@ func (h Handler) LoginHandler(w http.ResponseWriter, r *http.Request) {
maxAge := int(time.Until(expiry))
cookie := http.Cookie{
- Name: "id",
- Value: session,
- MaxAge: maxAge,
- HttpOnly: true,
- SameSite: http.SameSiteStrictMode,
- Secure: true,
+ Name: "id",
+ Value: session,
+ Path: "",
+ Domain: "",
+ Expires: time.Time{},
+ RawExpires: "",
+ MaxAge: maxAge,
+ Secure: true,
+ HttpOnly: true,
+ SameSite: http.SameSiteStrictMode,
+ Raw: "",
+ Unparsed: nil,
}
http.SetCookie(w, &cookie)