mirror of
https://github.com/lxsang/silk.git
synced 2025-07-19 07:19:47 +02:00
Compare commits
8 Commits
32577500de
...
master
Author | SHA1 | Date | |
---|---|---|---|
903fcefc2a | |||
0fcf2fc2ab | |||
824769dee2 | |||
14e20cf41e | |||
6380787d7e | |||
bf5284e66f | |||
eeea893d92 | |||
adb81580a3 |
17
.gitea/workflows/ci.yml
Normal file
17
.gitea/workflows/ci.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name: Autotools pipeline
|
||||||
|
run-name: Building multi-platform autotools project
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-amd64:
|
||||||
|
uses: dany/actions/.gitea/workflows/autotools-cross.yml@master
|
||||||
|
with:
|
||||||
|
platform: amd64
|
||||||
|
build-arm64:
|
||||||
|
uses: dany/actions/.gitea/workflows/autotools-cross.yml@master
|
||||||
|
with:
|
||||||
|
platform: arm64
|
||||||
|
build-arm:
|
||||||
|
uses: dany/actions/.gitea/workflows/autotools-cross.yml@master
|
||||||
|
with:
|
||||||
|
platform: arm
|
106
Jenkinsfile
vendored
106
Jenkinsfile
vendored
@ -1,106 +0,0 @@
|
|||||||
def build_plugin()
|
|
||||||
{
|
|
||||||
sh '''
|
|
||||||
set -e
|
|
||||||
cd $WORKSPACE
|
|
||||||
mkdir -p build/$arch/opt/www
|
|
||||||
[ -f Makefile ] && make clean
|
|
||||||
libtoolize
|
|
||||||
aclocal
|
|
||||||
autoconf
|
|
||||||
automake --add-missing
|
|
||||||
./configure --prefix=/opt/www
|
|
||||||
make
|
|
||||||
DESTDIR=$WORKSPACE/build/$arch make install
|
|
||||||
'''
|
|
||||||
}
|
|
||||||
|
|
||||||
pipeline{
|
|
||||||
agent { node{ label'master' }}
|
|
||||||
options {
|
|
||||||
// Limit build history with buildDiscarder option:
|
|
||||||
// daysToKeepStr: history is only kept up to this many days.
|
|
||||||
// numToKeepStr: only this many build logs are kept.
|
|
||||||
// artifactDaysToKeepStr: artifacts are only kept up to this many days.
|
|
||||||
// artifactNumToKeepStr: only this many builds have their artifacts kept.
|
|
||||||
buildDiscarder(logRotator(numToKeepStr: "1"))
|
|
||||||
// Enable timestamps in build log console
|
|
||||||
timestamps()
|
|
||||||
// Maximum time to run the whole pipeline before canceling it
|
|
||||||
timeout(time: 3, unit: 'HOURS')
|
|
||||||
// Use Jenkins ANSI Color Plugin for log console
|
|
||||||
ansiColor('xterm')
|
|
||||||
// Limit build concurrency to 1 per branch
|
|
||||||
disableConcurrentBuilds()
|
|
||||||
}
|
|
||||||
stages
|
|
||||||
{
|
|
||||||
stage('Prepare dependencies')
|
|
||||||
{
|
|
||||||
steps {
|
|
||||||
copyArtifacts(projectName: 'gitea-sync/ant-http/master', target: 'antd');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build AMD64') {
|
|
||||||
agent {
|
|
||||||
docker {
|
|
||||||
image 'xsangle/ci-tools:bionic-amd64'
|
|
||||||
// Run the container on the node specified at the
|
|
||||||
// top-level of the Pipeline, in the same workspace,
|
|
||||||
// rather than on a new node entirely:
|
|
||||||
reuseNode true
|
|
||||||
registryUrl 'http://workstation:5000/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
env.arch = "amd64"
|
|
||||||
}
|
|
||||||
build_plugin()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build ARM64') {
|
|
||||||
agent {
|
|
||||||
docker {
|
|
||||||
image 'xsangle/ci-tools:bionic-arm64'
|
|
||||||
// Run the container on the node specified at the
|
|
||||||
// top-level of the Pipeline, in the same workspace,
|
|
||||||
// rather than on a new node entirely:
|
|
||||||
reuseNode true
|
|
||||||
registryUrl 'http://workstation:5000/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
env.arch = "arm64"
|
|
||||||
}
|
|
||||||
build_plugin()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build ARM') {
|
|
||||||
agent {
|
|
||||||
docker {
|
|
||||||
image 'xsangle/ci-tools:bionic-arm'
|
|
||||||
// Run the container on the node specified at the
|
|
||||||
// top-level of the Pipeline, in the same workspace,
|
|
||||||
// rather than on a new node entirely:
|
|
||||||
reuseNode true
|
|
||||||
registryUrl 'http://workstation:5000/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
env.arch = "arm"
|
|
||||||
}
|
|
||||||
build_plugin()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Archive') {
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
archiveArtifacts artifacts: 'build/', fingerprint: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
# initialise autoconf and set up some basic information about the program we’re packaging
|
# initialise autoconf and set up some basic information about the program we’re packaging
|
||||||
AC_INIT([silk], [0.1.0], [xsang.le@gmail.com])
|
AC_INIT([silk], [1.0.0], [xsang.le@gmail.com])
|
||||||
|
|
||||||
# We’re going to use automake for this project
|
# We’re going to use automake for this project
|
||||||
# [subdir-objects] if needed
|
# [subdir-objects] if needed
|
||||||
|
913
modules/ulib.c
913
modules/ulib.c
File diff suppressed because it is too large
Load Diff
@ -93,8 +93,19 @@ function AssetController:index(...)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function AssetController:get(...)
|
function AssetController:get(...)
|
||||||
local path = WWW_ROOT..DIR_SEP..implode({...}, DIR_SEP)
|
-- check for access in all parent DIR
|
||||||
|
local DENIEDF = ".DENIED"
|
||||||
|
local curr_dir = WWW_ROOT
|
||||||
|
local args = {...}
|
||||||
|
for i, v in ipairs(explode(args[1], "/")) do
|
||||||
|
LOG_DEBUG("Checking acess for %s", curr_dir)
|
||||||
|
if ulib.exists(curr_dir..DIR_SEP..DENIEDF) then
|
||||||
|
self:error("Access forbidden: "..curr_dir)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
curr_dir = curr_dir..DIR_SEP..v
|
||||||
|
end
|
||||||
|
local path = WWW_ROOT..DIR_SEP..implode(args, DIR_SEP)
|
||||||
if self.registry.fileaccess and ulib.exists(path) then
|
if self.registry.fileaccess and ulib.exists(path) then
|
||||||
local mime = std.mimeOf(path)
|
local mime = std.mimeOf(path)
|
||||||
if POLICY.mimes[mime] then
|
if POLICY.mimes[mime] then
|
||||||
|
@ -4,7 +4,7 @@ math.randomseed(os.time())
|
|||||||
__api__ = {
|
__api__ = {
|
||||||
apiroot = string.format("%s/lua", _SERVER["LIB_DIR"]),
|
apiroot = string.format("%s/lua", _SERVER["LIB_DIR"]),
|
||||||
tmpdir = _SERVER["TMP_DIR"],
|
tmpdir = _SERVER["TMP_DIR"],
|
||||||
dbpath = _SERVER["DB_DIR"]
|
dbpath = "/var/silk"
|
||||||
}
|
}
|
||||||
-- root dir
|
-- root dir
|
||||||
__ROOT__ = _SERVER["DOCUMENT_ROOT"]
|
__ROOT__ = _SERVER["DOCUMENT_ROOT"]
|
||||||
|
@ -37,10 +37,13 @@ setmetatable(default_mimes, {
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
function std.mime(ext)
|
function std.mime(ext)
|
||||||
return default_mimes[ext]
|
return default_mimes[ext:lower()]
|
||||||
end
|
end
|
||||||
function std.extra_mime(name)
|
function std.extra_mime(name)
|
||||||
local ext = utils.ext(name)
|
local ext = utils.ext(name)
|
||||||
|
if ext then
|
||||||
|
ext = ext:lower()
|
||||||
|
end
|
||||||
local mpath = __ROOT__ .. "/" .. "mimes.json"
|
local mpath = __ROOT__ .. "/" .. "mimes.json"
|
||||||
if WWW_ROOT and not ulib.exists(mpath) then
|
if WWW_ROOT and not ulib.exists(mpath) then
|
||||||
LOG_DEBUG("No extra mimes found in %s", mpath)
|
LOG_DEBUG("No extra mimes found in %s", mpath)
|
||||||
@ -79,7 +82,11 @@ function std.mimeOf(name)
|
|||||||
if ulib.is_dir(name) then
|
if ulib.is_dir(name) then
|
||||||
return "dir"
|
return "dir"
|
||||||
end
|
end
|
||||||
local mime = std.mime(utils.ext(name))
|
local ext = utils.ext(name)
|
||||||
|
if not ext then
|
||||||
|
return "application/octet-stream", true
|
||||||
|
end
|
||||||
|
local mime = std.mime(ext)
|
||||||
if mime ~= "application/octet-stream" then
|
if mime ~= "application/octet-stream" then
|
||||||
return mime
|
return mime
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
sqlite = require("sqlitedb")
|
sqlite = require("sqlitedb")
|
||||||
|
ulib = require("ulib")
|
||||||
if sqlite == nil then
|
if sqlite == nil then
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@ -8,12 +8,34 @@ require("silk.core.OOP")
|
|||||||
|
|
||||||
sqlite.getdb = function(name)
|
sqlite.getdb = function(name)
|
||||||
if name:find("%.db$") then
|
if name:find("%.db$") then
|
||||||
return sqlite.db(name)
|
local db = sqlite.db(name)
|
||||||
|
if db then
|
||||||
|
ret,err = ulib.chmod(name,"0600")
|
||||||
|
if not ret then
|
||||||
|
LOG_WARN("Unable to change mode of database file %s: %s", name, err)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return db
|
||||||
elseif name:find("/") then
|
elseif name:find("/") then
|
||||||
LOG_ERROR("Invalid database name %s", name)
|
LOG_ERROR("Invalid database name %s", name)
|
||||||
return nil
|
return nil
|
||||||
else
|
else
|
||||||
return sqlite.db(__api__.dbpath .. "/" .. name .. ".db")
|
-- default db path is /var/silk/
|
||||||
|
if not ulib.exists(__api__.dbpath) then
|
||||||
|
if not ulib.mkdir(__api__.dbpath) then
|
||||||
|
LOG_ERROR("Unable to create DB path: %s", __api__.dbpath)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local path = __api__.dbpath .. "/" .. name .. ".db"
|
||||||
|
local db = sqlite.db(path)
|
||||||
|
if db then
|
||||||
|
local ret,err = ulib.chmod(path,"0600")
|
||||||
|
if not ret then
|
||||||
|
LOG_WARN("Unable to change mode of database file %s: %s", path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return db
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user