Commit 30530a2d authored by ale's avatar ale

Update Debian metadata and add a missing dependency

parent 0dcc539b
Pipeline #2701 failed with stages
in 1 minute and 7 seconds
......@@ -9,6 +9,7 @@ EnvironmentFile=-/etc/default/autoradio
ExecStart=/usr/bin/radiod $ETCD_SERVER $PUBLIC_IP $INTERFACE $RADIOD_OPTIONS
Restart=always
RestartSec=1
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
[Unit]
Description=autoradio front-end
Description=autoradio transcoder service
After=etcd.service
Wants=etcd.service
[Service]
User=nobody
EnvironmentFile=-/etc/default/autoradio
ExecStart=/usr/sbin/redirectord $ETCD_SERVER $PUBLIC_IP $DOMAIN $REDIRECTORD_OPTIONS
ExecStart=/usr/bin/transcoderd $ETCD_SERVER $PUBLIC_IP $DOMAIN $TRANSCODERD_OPTIONS
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
Restart=always
RestartSec=1
......
......@@ -2,17 +2,16 @@
# Set your base domain name here.
#DOMAIN="--domain="
# Set your public IP if necessary.
#PUBLIC_IP="--ip="
# Set your public IP if necessary (specify multiple times for v4/v6).
#PUBLIC_IP="--public-ip="
# Name of the outbound network interface (if unset, radiod will try to
# figure it out automatically).
#INTERFACE="--interface=eth0"
# Set the IP address that is advertised to peers.
PEER_IP="--peer-ip="
# Set the etcd servers to connect to (default: localhost:2379).
#ETCD_SERVER="--etcd-servers=localhost:2379"
ETCD_SERVER="--etcd=http://localhost:2379"
# Additional options that are passed to specific daemons.
#RADIOD_OPTIONS="--bwlimit=1000"
#RADIOD_OPTIONS="--interface=eth0"
REDIRECTORD_OPTIONS=""
RADIOD_OPTIONS=""
......@@ -3,12 +3,14 @@
export DH_GOPKG = git.autistici.org/ale/autoradio
export DH_GOLANG_EXCLUDES = vendor
DESTDIR = debian/autoradio-server
%:
dh $@ --with systemd --with golang --buildsystem golang
override_dh_auto_install:
dh_auto_install
$(RM) -rv debian/tmp/usr/share/gocode
$(RM) -rv $(DESTDIR)/usr/share/gocode
# Icecast2 status XSL template.
install -d -m 755 -o root -g root $(DESTDIR)/usr/share/icecast2/web
......@@ -26,3 +28,4 @@ override_dh_installinit:
override_dh_systemd_enable:
dh_systemd_enable --name=radiod
dh_systemd_enable --name=transcoderd
......@@ -7,6 +7,7 @@ import (
"context"
"flag"
"fmt"
"html/template"
"io"
"log"
"net"
......@@ -18,7 +19,6 @@ import (
"git.autistici.org/ale/autoradio"
pb "git.autistici.org/ale/autoradio/proto"
"github.com/alecthomas/template"
assetfs "github.com/elazarl/go-bindata-assetfs"
)
......
Copyright (c) 2014, Elazar Leibovich
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# go-bindata-assetfs
Serve embedded files from [jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) with `net/http`.
[GoDoc](http://godoc.org/github.com/elazarl/go-bindata-assetfs)
### Installation
Install with
$ go get github.com/jteeuwen/go-bindata/...
$ go get github.com/elazarl/go-bindata-assetfs/...
### Creating embedded data
Usage is identical to [jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) usage,
instead of running `go-bindata` run `go-bindata-assetfs`.
The tool will create a `bindata_assetfs.go` file, which contains the embedded data.
A typical use case is
$ go-bindata-assetfs data/...
### Using assetFS in your code
The generated file provides an `assetFS()` function that returns a `http.Filesystem`
wrapping the embedded files. What you usually want to do is:
http.Handle("/", http.FileServer(assetFS()))
This would run an HTTP server serving the embedded files.
## Without running binary tool
You can always just run the `go-bindata` tool, and then
use
import "github.com/elazarl/go-bindata-assetfs"
...
http.Handle("/",
http.FileServer(
&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: "data"}))
to serve files embedded from the `data` directory.
package assetfs
import (
"bytes"
"errors"
"io"
"io/ioutil"
"net/http"
"os"
"path"
"path/filepath"
"strings"
"time"
)
var (
defaultFileTimestamp = time.Now()
)
// FakeFile implements os.FileInfo interface for a given path and size
type FakeFile struct {
// Path is the path of this file
Path string
// Dir marks of the path is a directory
Dir bool
// Len is the length of the fake file, zero if it is a directory
Len int64
// Timestamp is the ModTime of this file
Timestamp time.Time
}
func (f *FakeFile) Name() string {
_, name := filepath.Split(f.Path)
return name
}
func (f *FakeFile) Mode() os.FileMode {
mode := os.FileMode(0644)
if f.Dir {
return mode | os.ModeDir
}
return mode
}
func (f *FakeFile) ModTime() time.Time {
return f.Timestamp
}
func (f *FakeFile) Size() int64 {
return f.Len
}
func (f *FakeFile) IsDir() bool {
return f.Mode().IsDir()
}
func (f *FakeFile) Sys() interface{} {
return nil
}
// AssetFile implements http.File interface for a no-directory file with content
type AssetFile struct {
*bytes.Reader
io.Closer
FakeFile
}
func NewAssetFile(name string, content []byte, timestamp time.Time) *AssetFile {
if timestamp.IsZero() {
timestamp = defaultFileTimestamp
}
return &AssetFile{
bytes.NewReader(content),
ioutil.NopCloser(nil),
FakeFile{name, false, int64(len(content)), timestamp}}
}
func (f *AssetFile) Readdir(count int) ([]os.FileInfo, error) {
return nil, errors.New("not a directory")
}
func (f *AssetFile) Size() int64 {
return f.FakeFile.Size()
}
func (f *AssetFile) Stat() (os.FileInfo, error) {
return f, nil
}
// AssetDirectory implements http.File interface for a directory
type AssetDirectory struct {
AssetFile
ChildrenRead int
Children []os.FileInfo
}
func NewAssetDirectory(name string, children []string, fs *AssetFS) *AssetDirectory {
fileinfos := make([]os.FileInfo, 0, len(children))
for _, child := range children {
_, err := fs.AssetDir(filepath.Join(name, child))
fileinfos = append(fileinfos, &FakeFile{child, err == nil, 0, time.Time{}})
}
return &AssetDirectory{
AssetFile{
bytes.NewReader(nil),
ioutil.NopCloser(nil),
FakeFile{name, true, 0, time.Time{}},
},
0,
fileinfos}
}
func (f *AssetDirectory) Readdir(count int) ([]os.FileInfo, error) {
if count <= 0 {
return f.Children, nil
}
if f.ChildrenRead+count > len(f.Children) {
count = len(f.Children) - f.ChildrenRead
}
rv := f.Children[f.ChildrenRead : f.ChildrenRead+count]
f.ChildrenRead += count
return rv, nil
}
func (f *AssetDirectory) Stat() (os.FileInfo, error) {
return f, nil
}
// AssetFS implements http.FileSystem, allowing
// embedded files to be served from net/http package.
type AssetFS struct {
// Asset should return content of file in path if exists
Asset func(path string) ([]byte, error)
// AssetDir should return list of files in the path
AssetDir func(path string) ([]string, error)
// AssetInfo should return the info of file in path if exists
AssetInfo func(path string) (os.FileInfo, error)
// Prefix would be prepended to http requests
Prefix string
}
func (fs *AssetFS) Open(name string) (http.File, error) {
name = path.Join(fs.Prefix, name)
if len(name) > 0 && name[0] == '/' {
name = name[1:]
}
if b, err := fs.Asset(name); err == nil {
timestamp := defaultFileTimestamp
if fs.AssetInfo != nil {
if info, err := fs.AssetInfo(name); err == nil {
timestamp = info.ModTime()
}
}
return NewAssetFile(name, b, timestamp), nil
}
if children, err := fs.AssetDir(name); err == nil {
return NewAssetDirectory(name, children, fs), nil
} else {
// If the error is not found, return an error that will
// result in a 404 error. Otherwise the server returns
// a 500 error for files not found.
if strings.Contains(err.Error(), "not found") {
return nil, os.ErrNotExist
}
return nil, err
}
}
// assetfs allows packages to serve static content embedded
// with the go-bindata tool with the standard net/http package.
//
// See https://github.com/jteeuwen/go-bindata for more information
// about embedding binary data with go-bindata.
//
// Usage example, after running
// $ go-bindata data/...
// use:
// http.Handle("/",
// http.FileServer(
// &assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, Prefix: "data"}))
package assetfs
......@@ -44,6 +44,12 @@
"revision": "a621d807f061e1dd635033a8d6bc261461429e27",
"revisionTime": "2019-04-01T20:57:24Z"
},
{
"checksumSHA1": "7DxViusFRJ7UPH0jZqYatwDrOkY=",
"path": "github.com/elazarl/go-bindata-assetfs",
"revision": "38087fe4dafb822e541b3f7955075cc1c30bd294",
"revisionTime": "2018-02-23T16:03:09Z"
},
{
"checksumSHA1": "RGA4gzP1R6tMTLRfjsH7luN/y3c=",
"origin": "go.etcd.io/etcd/vendor/github.com/ghodss/yaml",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment