Skip to content

Commit dde115c

Browse files
committed
Some changes
Reorganized some code, added tasks.json for Visual Studio Code, added SSL listening support.
1 parent 82fbd52 commit dde115c

File tree

7 files changed

+53
-14
lines changed

7 files changed

+53
-14
lines changed

.vscode/launch.json

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"program": "${workspaceRoot}",
1313
"env": {},
1414
"args": [],
15+
"preLaunchTask": "kill previous instance",
1516
"showLog": true
1617
}
1718
]

.vscode/tasks.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
// NB: This will only work on Linux!
3+
"version": "0.1.0",
4+
"command": "sh",
5+
"isShellCommand": true,
6+
"args": ["-c"],
7+
"showOutput": "always",
8+
"echoCommand": true,
9+
"suppressTaskName": true,
10+
"tasks": [
11+
{
12+
"taskName": "kill previous instance",
13+
"args": [
14+
"fuser -k 8196/tcp"
15+
]
16+
}
17+
]
18+
}

config.example.json

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"Listen": ":8196",
3+
"SSL": {
4+
"Enabled": false,
5+
"KeyFile": "key.pem",
6+
"CertFile": "cert.pem"
7+
},
38
"Repositories": {
49
"test": {
510
"Metadata": {

main.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@ func main() {
2222
store.NewLocalPackageStore(value.Storage.Path))
2323
}
2424

25-
if err := http.ListenAndServe(conf.Listen, server.RepoHTTPHandler{
26-
Repositories: configuredRepositories,
27-
}); err != nil {
25+
handler := server.RepoHTTPHandler{Repositories: configuredRepositories}
26+
if conf.SSL.Enabled {
27+
err = http.ListenAndServeTLS(conf.Listen, conf.SSL.CertFile, conf.SSL.KeyFile, handler)
28+
} else {
29+
err = http.ListenAndServe(conf.Listen, handler)
30+
}
31+
32+
if err != nil {
2833
log.Fatalln(err)
2934
}
3035
}

repository/maven/metadata.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package maven
22

3-
import (
4-
"sort"
5-
6-
"github.com/minecrafter/sage/repository"
7-
)
3+
import "github.com/minecrafter/sage/repository"
84

95
const (
106
mavenDateFormat = "20060102150405"
@@ -17,11 +13,12 @@ func CreateMavenMetadata(metadata repository.PackageMetadata) MavenMetadata {
1713
ArtifactID: metadata.MavenData.ArtifactID,
1814
}
1915

20-
// Copy and sort versions. While we could have sorted versions beforehand, we would only gain mimimal beenfits.
16+
// Copy and sort versions. While we could have sorted versions beforehand, we would only gain minimal benefits.
2117
versions := make([]repository.PackageVersionMetadata, len(metadata.Versions))
2218
copy(versions, metadata.Versions)
23-
sort.Sort(repository.PackageVersionCollection(versions))
19+
repository.SortVersionsByCreated(versions)
2420

21+
// Stringify the sorted versions.
2522
sortedVersions := make([]string, len(metadata.Versions))
2623
for i, version := range versions {
2724
sortedVersions[i] = version.Version

repository/metadata.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package repository
22

33
import (
4+
"sort"
45
"time"
56
)
67

@@ -18,15 +19,15 @@ type PackageVersionMetadata struct {
1819
Created time.Time
1920
}
2021

21-
type PackageVersionCollection []PackageVersionMetadata
22+
type packageVersionCollection []PackageVersionMetadata
2223

23-
func (s PackageVersionCollection) Len() int {
24+
func (s packageVersionCollection) Len() int {
2425
return len(s)
2526
}
26-
func (s PackageVersionCollection) Swap(i, j int) {
27+
func (s packageVersionCollection) Swap(i, j int) {
2728
s[i], s[j] = s[j], s[i]
2829
}
29-
func (s PackageVersionCollection) Less(i, j int) bool {
30+
func (s packageVersionCollection) Less(i, j int) bool {
3031
return s[i].Created.Before(s[j].Created)
3132
}
3233

@@ -42,3 +43,8 @@ type MavenData struct {
4243
GroupID string
4344
ArtifactID string
4445
}
46+
47+
// SortVersionsByCreated sorts the PackageVersionMetadata slice provided by creation date.
48+
func SortVersionsByCreated(versions []PackageVersionMetadata) {
49+
sort.Sort(packageVersionCollection(versions))
50+
}

server/config.go

+7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
type Config struct {
1212
Listen string
1313
Repositories map[string]RepoConfig
14+
SSL SSLConfig
1415
}
1516

1617
type RepoConfig struct {
@@ -31,6 +32,12 @@ type AuthenticationConfig struct {
3132
Logins map[string]string
3233
}
3334

35+
type SSLConfig struct {
36+
Enabled bool
37+
CertFile string
38+
KeyFile string
39+
}
40+
3441
func (c AuthenticationConfig) CheckPassword(username, password string) (bool, error) {
3542
b64password, ok := c.Logins[username]
3643
if !ok {

0 commit comments

Comments
 (0)