Compare commits
7 commits
f649ef486c
...
b699c23a14
Author | SHA1 | Date | |
---|---|---|---|
|
b699c23a14 | ||
ad123522d5 | |||
11aacebcf7 | |||
0f8f77bb59 | |||
4f57897640 | |||
43e106a31a | |||
b27dfdcf5d |
6 changed files with 124 additions and 9 deletions
39
.woodpecker.yml
Normal file
39
.woodpecker.yml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
clone:
|
||||||
|
git:
|
||||||
|
image: woodpeckerci/plugin-git
|
||||||
|
settings:
|
||||||
|
tags: true
|
||||||
|
|
||||||
|
pipeline:
|
||||||
|
build:
|
||||||
|
image: docker.io/alpine:3.16
|
||||||
|
commands:
|
||||||
|
- echo "172.17.0.1 alpine.proxy.coso npm.proxy.coso" >> /etc/hosts
|
||||||
|
- echo "http://alpine.proxy.coso/alpine/v3.16/main" > /etc/apk/repositories
|
||||||
|
- echo "http://alpine.proxy.coso/alpine/v3.16/community" >> /etc/apk/repositories
|
||||||
|
- apk add git nodejs npm go make rsync openssh-client-default
|
||||||
|
- npm set registry http://npm.proxy.coso
|
||||||
|
|
||||||
|
- GOOS=linux GOARCH=amd64 LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="bindata sqlite sqlite_unlock_notify" make build
|
||||||
|
|
||||||
|
- eval $(ssh-agent -s)
|
||||||
|
- echo "$${SSH_KEY}" | tr -d '\r' | ssh-add -
|
||||||
|
- mkdir -p ~/.ssh
|
||||||
|
- echo "[nulo.in]:420,[186.136.121.7]:420 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGPkgRVWYcVcgjI0xAjDgZQsYuXU9edcya8zna01ibyUMlfKHIMD9yOoq0R+fQPTCqwiol/2tKMPJ2hlKshc+H8=" > ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
# #!/bin/sh
|
||||||
|
# # Editar en https://gitea.nulo.in/Nulo/gitea si se cambia
|
||||||
|
# bin=/usr/local/bin/gitea
|
||||||
|
# new=/usr/local/bin/gitea.new
|
||||||
|
#
|
||||||
|
# rm "$new"
|
||||||
|
# cat /dev/stdin > "$new" || exit $?
|
||||||
|
# chmod +x "$new" || exit $?
|
||||||
|
# mv "$new" "$bin" || exit $?
|
||||||
|
# sv restart gitea || exit $?
|
||||||
|
- ssh -p420 ci-gitea@nulo.in doas /usr/local/sbin/instalar-gitea < gitea
|
||||||
|
when:
|
||||||
|
branch: gitea.nulo.in
|
||||||
|
event: push
|
||||||
|
secrets:
|
||||||
|
- ssh_key
|
|
@ -315,13 +315,5 @@ func IsMarkupFile(name, markup string) bool {
|
||||||
// Note that the '.' should be provided in ext, e.g ".md"
|
// Note that the '.' should be provided in ext, e.g ".md"
|
||||||
func IsReadmeFile(name string, ext ...string) bool {
|
func IsReadmeFile(name string, ext ...string) bool {
|
||||||
name = strings.ToLower(name)
|
name = strings.ToLower(name)
|
||||||
if len(ext) > 0 {
|
return name == "readme" || strings.Index(name, "readme.") == 0 || strings.Index(name, ".readme.") == 0
|
||||||
return name == "readme"+ext[0]
|
|
||||||
}
|
|
||||||
if len(name) < 6 {
|
|
||||||
return false
|
|
||||||
} else if len(name) == 6 {
|
|
||||||
return name == "readme"
|
|
||||||
}
|
|
||||||
return name[:7] == "readme."
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,6 +102,10 @@ func (l *LocalStorage) Save(path string, r io.Reader, size int64) (int64, error)
|
||||||
if err := util.Rename(tmp.Name(), p); err != nil {
|
if err := util.Rename(tmp.Name(), p); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
// Golang's tmp file (os.CreateTemp) always have 0o600 mode, so we need to change the file to follow the umask (as what Create/MkDir does)
|
||||||
|
if err := util.ApplyUmask(p, os.ModePerm); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
tmpRemoved = true
|
tmpRemoved = true
|
||||||
|
|
||||||
|
|
28
modules/util/file_unix.go
Normal file
28
modules/util/file_unix.go
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !windows
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
var defaultUmask int
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// at the moment, the umask could only be gotten by calling unix.Umask(newUmask)
|
||||||
|
// use 0o077 as temp new umask to reduce the risks if this umask is used anywhere else before the correct umask is recovered
|
||||||
|
tempUmask := 0o077
|
||||||
|
defaultUmask = unix.Umask(tempUmask)
|
||||||
|
unix.Umask(defaultUmask)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApplyUmask(f string, newMode os.FileMode) error {
|
||||||
|
mod := newMode & ^os.FileMode(defaultUmask)
|
||||||
|
return os.Chmod(f, mod)
|
||||||
|
}
|
36
modules/util/file_unix_test.go
Normal file
36
modules/util/file_unix_test.go
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !windows
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestApplyUmask(t *testing.T) {
|
||||||
|
f, err := os.CreateTemp(t.TempDir(), "test-filemode-")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = os.Chmod(f.Name(), 0o777)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
st, err := os.Stat(f.Name())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0o777, st.Mode().Perm()&0o777)
|
||||||
|
|
||||||
|
oldDefaultUmask := defaultUmask
|
||||||
|
defaultUmask = 0o037
|
||||||
|
defer func() {
|
||||||
|
defaultUmask = oldDefaultUmask
|
||||||
|
}()
|
||||||
|
err = ApplyUmask(f.Name(), os.ModePerm)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
st, err = os.Stat(f.Name())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0o740, st.Mode().Perm()&0o777)
|
||||||
|
}
|
16
modules/util/file_windows.go
Normal file
16
modules/util/file_windows.go
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ApplyUmask(f string, newMode os.FileMode) error {
|
||||||
|
// do nothing for Windows, because Windows doesn't use umask
|
||||||
|
return nil
|
||||||
|
}
|
Reference in a new issue