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"
|
||||
func IsReadmeFile(name string, ext ...string) bool {
|
||||
name = strings.ToLower(name)
|
||||
if len(ext) > 0 {
|
||||
return name == "readme"+ext[0]
|
||||
}
|
||||
if len(name) < 6 {
|
||||
return false
|
||||
} else if len(name) == 6 {
|
||||
return name == "readme"
|
||||
}
|
||||
return name[:7] == "readme."
|
||||
return name == "readme" || strings.Index(name, "readme.") == 0 || strings.Index(name, ".readme.") == 0
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
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
|
||||
|
||||
|
|
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