Skip to content

Commit

Permalink
chore: update defines
Browse files Browse the repository at this point in the history
  • Loading branch information
soulteary committed Nov 19, 2022
1 parent ddb7d6d commit 9ab1c78
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 128 deletions.
14 changes: 14 additions & 0 deletions internal/define/debian.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,17 @@ var DEBIAN_CUSTOM_MIRRORS = []string{
}

var BUILDIN_DEBIAN_MIRRORS = GenerateBuildInList(DEBIAN_OFFICAL_MIRRORS, DEBIAN_CUSTOM_MIRRORS)

var DEBIAN_DEFAULT_CACHE_RULES = []Rule{
{Pattern: regexp.MustCompile(`deb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`udeb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`DiffIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`PackagesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Packages\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`SourcesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Sources\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Release(\.gpg)?$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Translation-(en|fr)\.(gz|bz2|bzip2|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
// Add file file hash
{Pattern: regexp.MustCompile(`/by-hash/`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_DEBIAN},
}
14 changes: 14 additions & 0 deletions internal/define/ubuntu.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,17 @@ var UBUNTU_CUSTOM_MIRRORS = []string{
}

var BUILDIN_UBUNTU_MIRRORS = GenerateBuildInList(UBUNTU_OFFICAL_MIRRORS, UBUNTU_CUSTOM_MIRRORS)

var UBUNTU_DEFAULT_CACHE_RULES = []Rule{
{Pattern: regexp.MustCompile(`deb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`udeb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`DiffIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`PackagesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Packages\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`SourcesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Sources\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Release(\.gpg)?$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Translation-(en|fr)\.(gz|bz2|bzip2|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
// Add file file hash
{Pattern: regexp.MustCompile(`/by-hash/`), CacheControl: `max-age=3600`, Rewrite: true, OS: TYPE_LINUX_DISTROS_UBUNTU},
}
44 changes: 0 additions & 44 deletions internal/mirrors/custom_test.go

This file was deleted.

97 changes: 29 additions & 68 deletions internal/mirrors/mirrors.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package mirrors

import (
"bufio"
"net/http"
"regexp"

Define "github.com/soulteary/apt-proxy/internal/define"
Expand All @@ -11,50 +9,52 @@ import (
func GenerateMirrorListByPredefined(osType int) (mirrors []string) {
var src []Define.UrlWithAlias
switch osType {
case Define.TYPE_LINUX_ALL_DISTROS:
src = append(src, Define.BUILDIN_UBUNTU_MIRRORS...)
src = append(src, Define.BUILDIN_DEBIAN_MIRRORS...)
src = append(src, Define.BUILDIN_CENTOS_MIRRORS...)
src = append(src, Define.BUILDIN_ALPINE_MIRRORS...)
case Define.TYPE_LINUX_DISTROS_UBUNTU:
src = Define.BUILDIN_UBUNTU_MIRRORS
case Define.TYPE_LINUX_DISTROS_DEBIAN:
src = Define.BUILDIN_DEBIAN_MIRRORS
case Define.TYPE_LINUX_DISTROS_CENTOS:
src = Define.BUILDIN_CENTOS_MIRRORS
case Define.TYPE_LINUX_DISTROS_ALPINE:
src = Define.BUILDIN_ALPINE_MIRRORS
}

for _, mirror := range src {
mirrors = append(mirrors, mirror.URL)
}
return mirrors
}

var BUILDIN_UBUNTU_MIRRORS = GenerateMirrorListByPredefined(Define.TYPE_LINUX_DISTROS_UBUNTU)
var BUILDIN_CENTOS_MIRRORS = GenerateMirrorListByPredefined(Define.TYPE_LINUX_DISTROS_CENTOS)
var BUILDIN_DEBIAN_MIRRORS = GenerateMirrorListByPredefined(Define.TYPE_LINUX_DISTROS_DEBIAN)
var BUILDIN_CENTOS_MIRRORS = GenerateMirrorListByPredefined(Define.TYPE_LINUX_DISTROS_CENTOS)

var DEBIAN_DEFAULT_CACHE_RULES = []Define.Rule{
{Pattern: regexp.MustCompile(`deb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`udeb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`DiffIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`PackagesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Packages\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`SourcesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Sources\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Release(\.gpg)?$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
{Pattern: regexp.MustCompile(`Translation-(en|fr)\.(gz|bz2|bzip2|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
// Add file file hash
{Pattern: regexp.MustCompile(`/by-hash/`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_DEBIAN},
}
func GetGeoMirrorUrlsByMode(mode int) (mirrors []string) {
if mode == Define.TYPE_LINUX_DISTROS_UBUNTU {
ubuntuMirrorsOnline, err := GetUbuntuMirrorUrlsByGeo()
if err != nil {
return BUILDIN_UBUNTU_MIRRORS
}
return ubuntuMirrorsOnline
}

// Ubuntu
var UBUNTU_DEFAULT_CACHE_RULES = []Define.Rule{
{Pattern: regexp.MustCompile(`deb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`udeb$`), CacheControl: `max-age=100000`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`DiffIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`PackagesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Packages\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`SourcesIndex$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Sources\.(bz2|gz|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Release(\.gpg)?$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
{Pattern: regexp.MustCompile(`Translation-(en|fr)\.(gz|bz2|bzip2|lzma)$`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
// Add file file hash
{Pattern: regexp.MustCompile(`/by-hash/`), CacheControl: `max-age=3600`, Rewrite: true, OS: Define.TYPE_LINUX_DISTROS_UBUNTU},
if mode == Define.TYPE_LINUX_DISTROS_DEBIAN {
return BUILDIN_DEBIAN_MIRRORS
}

if mode == Define.TYPE_LINUX_DISTROS_CENTOS {
return BUILDIN_CENTOS_MIRRORS
}

mirrors = append(mirrors, BUILDIN_UBUNTU_MIRRORS...)
mirrors = append(mirrors, BUILDIN_DEBIAN_MIRRORS...)
mirrors = append(mirrors, BUILDIN_CENTOS_MIRRORS...)
return mirrors
}

func GetMirrorURLByAliases(osType int, alias string) string {
Expand All @@ -81,45 +81,6 @@ func GetMirrorURLByAliases(osType int, alias string) string {
return ""
}

func GetGeoMirrorUrlsByMode(mode int) (mirrors []string) {
if mode == Define.TYPE_LINUX_DISTROS_UBUNTU {
ubuntuMirrorsOnline, err := getUbuntuMirrorUrlsByGeo()
if err != nil {
return BUILDIN_UBUNTU_MIRRORS
}
return ubuntuMirrorsOnline
}

if mode == Define.TYPE_LINUX_DISTROS_DEBIAN {
return BUILDIN_DEBIAN_MIRRORS
}

if mode == Define.TYPE_LINUX_DISTROS_CENTOS {
return BUILDIN_CENTOS_MIRRORS
}

mirrors = append(mirrors, BUILDIN_UBUNTU_MIRRORS...)
mirrors = append(mirrors, BUILDIN_DEBIAN_MIRRORS...)
mirrors = append(mirrors, BUILDIN_CENTOS_MIRRORS...)
return mirrors
}

func getUbuntuMirrorUrlsByGeo() (mirrors []string, err error) {
response, err := http.Get(Define.UBUNTU_GEO_MIRROR_API)
if err != nil {
return mirrors, err
}

defer response.Body.Close()
scanner := bufio.NewScanner(response.Body)

for scanner.Scan() {
mirrors = append(mirrors, scanner.Text())
}

return mirrors, scanner.Err()
}

func GetPredefinedConfiguration(proxyMode int) (string, *regexp.Regexp) {
switch proxyMode {
case Define.TYPE_LINUX_DISTROS_UBUNTU:
Expand Down
38 changes: 32 additions & 6 deletions internal/mirrors/mirrors_test.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,45 @@
package mirrors

import (
"strings"
"testing"

Define "github.com/soulteary/apt-proxy/internal/define"
)

func TestGetGeoMirrors(t *testing.T) {
mirrors, err := getUbuntuMirrorUrlsByGeo()
if err != nil {
t.Fatal(err)
func TestGetUbuntuMirrorByAliases(t *testing.T) {
alias := GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_UBUNTU, "cn:tsinghua")
if !strings.Contains(alias, "mirrors.tuna.tsinghua.edu.cn/ubuntu/") {
t.Fatal("Test Get Mirror By Custom Name Failed")
}

if len(mirrors) == 0 {
t.Fatal("No mirrors found")
alias = GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_UBUNTU, "cn:not-found")
if alias != "" {
t.Fatal("Test Get Mirror By Custom Name Failed")
}
}

func TestGetDebianMirrorByAliases(t *testing.T) {
alias := GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_DEBIAN, "cn:tsinghua")
if !strings.Contains(alias, "mirrors.tuna.tsinghua.edu.cn/debian/") {
t.Fatal("Test Get Mirror By Custom Name Failed")
}

alias = GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_DEBIAN, "cn:not-found")
if alias != "" {
t.Fatal("Test Get Mirror By Custom Name Failed")
}
}

func TestGetCentOSMirrorByAliases(t *testing.T) {
alias := GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_CENTOS, "cn:tsinghua")
if !strings.Contains(alias, "mirrors.tuna.tsinghua.edu.cn/centos/") {
t.Fatal("Test Get Mirror By Custom Name Failed")
}

alias = GetMirrorURLByAliases(Define.TYPE_LINUX_DISTROS_CENTOS, "cn:not-found")
if alias != "" {
t.Fatal("Test Get Mirror By Custom Name Failed")
}
}

Expand Down
22 changes: 22 additions & 0 deletions internal/mirrors/ubuntu.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package mirrors

import (
"bufio"
"net/http"

Define "github.com/soulteary/apt-proxy/internal/define"
)

func GetUbuntuMirrorUrlsByGeo() (mirrors []string, err error) {
response, err := http.Get(Define.UBUNTU_GEO_MIRROR_API)
if err != nil {
return mirrors, err
}
defer response.Body.Close()

scanner := bufio.NewScanner(response.Body)
for scanner.Scan() {
mirrors = append(mirrors, scanner.Text())
}
return mirrors, scanner.Err()
}
13 changes: 13 additions & 0 deletions internal/mirrors/ubuntu_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package mirrors

import "testing"

func TestGetUbuntuMirrorUrlsByGeo(t *testing.T) {
mirrors, err := GetUbuntuMirrorUrlsByGeo()
if err != nil {
t.Fatal(err)
}
if len(mirrors) == 0 {
t.Fatal("get ubuntu get mirrors failed")
}
}
8 changes: 4 additions & 4 deletions internal/rewriter/rewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ type URLRewriter struct {

func GetRewriteRulesByMode(mode int) (rules []Define.Rule) {
if mode == Define.TYPE_LINUX_DISTROS_UBUNTU {
return Mirrors.UBUNTU_DEFAULT_CACHE_RULES
return Define.UBUNTU_DEFAULT_CACHE_RULES
}
if mode == Define.TYPE_LINUX_DISTROS_DEBIAN {
return Mirrors.DEBIAN_DEFAULT_CACHE_RULES
return Define.DEBIAN_DEFAULT_CACHE_RULES
}

rules = append(rules, Mirrors.UBUNTU_DEFAULT_CACHE_RULES...)
rules = append(rules, Mirrors.DEBIAN_DEFAULT_CACHE_RULES...)
rules = append(rules, Define.UBUNTU_DEFAULT_CACHE_RULES...)
rules = append(rules, Define.DEBIAN_DEFAULT_CACHE_RULES...)
return rules
}

Expand Down
15 changes: 9 additions & 6 deletions internal/rewriter/rewriter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,22 @@ import (

Benchmark "github.com/soulteary/apt-proxy/internal/benchmark"
Define "github.com/soulteary/apt-proxy/internal/define"
Mirrors "github.com/soulteary/apt-proxy/internal/mirrors"
State "github.com/soulteary/apt-proxy/internal/state"
)

func TestGetRewriteRulesByMode(t *testing.T) {
rules := GetRewriteRulesByMode(Define.TYPE_LINUX_DISTROS_UBUNTU)
if rules[0].Pattern != Mirrors.UBUNTU_DEFAULT_CACHE_RULES[0].Pattern {
if rules[0].Pattern != Define.UBUNTU_DEFAULT_CACHE_RULES[0].Pattern {
t.Fatal("Pattern Not Match")
}

rules = GetRewriteRulesByMode(Define.TYPE_LINUX_DISTROS_DEBIAN)
if rules[0].Pattern != Mirrors.DEBIAN_DEFAULT_CACHE_RULES[0].Pattern {
if rules[0].Pattern != Define.DEBIAN_DEFAULT_CACHE_RULES[0].Pattern {
t.Fatal("Pattern Not Match")
}

rules = GetRewriteRulesByMode(Define.TYPE_LINUX_ALL_DISTROS)
if len(rules) != (len(Mirrors.DEBIAN_DEFAULT_CACHE_RULES) + len(Mirrors.UBUNTU_DEFAULT_CACHE_RULES)) {
if len(rules) != (len(Define.DEBIAN_DEFAULT_CACHE_RULES) + len(Define.UBUNTU_DEFAULT_CACHE_RULES)) {
t.Fatal("Pattern Length Not Match")
}
}
Expand Down Expand Up @@ -97,14 +96,18 @@ func TestCreateNewRewritersWithSpecifyMirror(t *testing.T) {
}

func TestMatchingRule(t *testing.T) {
_, match := MatchingRule("http://archive.ubuntu.com/ubuntu/InRelease", Mirrors.UBUNTU_DEFAULT_CACHE_RULES)
_, match := MatchingRule("http://archive.ubuntu.com/ubuntu/InRelease", Define.UBUNTU_DEFAULT_CACHE_RULES)
if !match {
t.Fatal("test ap rules faild")
}
_, match = MatchingRule("http://cn.archive.ubuntu.com/ubuntu/InRelease", Define.UBUNTU_DEFAULT_CACHE_RULES)
if !match {
t.Fatal("test ap rules faild")
}
}

func TestRuleToString(t *testing.T) {
rule, _ := MatchingRule("http://archive.ubuntu.com/ubuntu/InRelease", Mirrors.UBUNTU_DEFAULT_CACHE_RULES)
rule, _ := MatchingRule("http://archive.ubuntu.com/ubuntu/InRelease", Define.UBUNTU_DEFAULT_CACHE_RULES)
if rule.String() != "Release(\\.gpg)?$ Cache-Control=max-age=3600 Rewrite=true" {
t.Fatal("test rules toString faild")
}
Expand Down

0 comments on commit 9ab1c78

Please sign in to comment.