Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 20 additions & 8 deletions pkg/define/const.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
package define

const (
FFMPEG = "ffmpeg"
FFPROBE = "ffprobe"
InstallFFMPEG = "install_ffmpeg"
StudioDir = ".oomol-studio"
HostShared = "host-shared"
FFReleaseURLForVentura = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.1-2/jellyfin-ffmpeg_7.1.1-2_portable_macarm64-gpl.tar.xz"
FFMSha256ForVentura = "8ff4ed4eba151346d6d1ee894bbfcbd9f507dc82b34260f4567954136449001d"
ARCH = "arm64"

FFMPEGPkgName = "ffmpeg_macos_arm64"

// FFMPEG VERSION v7.1.1 info
FFMPEG7Version = "v7.1.1"
FF7ReleaseURL = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.1-2/jellyfin-ffmpeg_7.1.1-2_portable_macarm64-gpl.tar.xz"
FF7Sha256 = "8ff4ed4eba151346d6d1ee894bbfcbd9f507dc82b34260f4567954136449001d"

// // FFMPEG VERSION v6.0.1 info
FFMPEG6Version = "v6.0.1"
FF6ReleaseURL = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v6.0.1-8/jellyfin-ffmpeg_6.0.1-8_portable_macarm64-gpl.tar.xz"
FF6Sha256 = "efce8779d5f35127ec7dcd500669e00a2e13f2b099c7bf11ab5acee467dc5d57"
)

const (
DYLD_LIBRARY_PATH = "DYLD_LIBRARY_PATH" //nolint:stylecheck
InstallFFMPEGVersion7 = "install_ffmpeg_7"
InstallFFMPEGVersion6 = "install_ffmpeg_6"
StudioDir = ".oomol-studio"
HostShared = "host-shared"

FFMPEGBin = "ffmpeg"
FFPROBEBin = "ffprobe"
)

var (
Expand Down
6 changes: 3 additions & 3 deletions pkg/define/whitelist.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package define

var Whitelist = []string{
FFMPEG,
FFPROBE,
InstallFFMPEG,
FFPROBEBin,
FFMPEGBin,
InstallFFMPEGVersion6,
}

func IsWhitelisted(command string) bool {
Expand Down
15 changes: 8 additions & 7 deletions pkg/handler/ffmpeg/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ const RunFFMPEGStage = "ffmpeg run handler"
func Run(next ssh.Handler) ssh.Handler {
return func(s ssh.Session) {
targetBin := s.Command()[0]
if targetBin == define.FFPROBE || targetBin == define.FFMPEG {
logrus.Infof("run middleware: %q", RunFFMPEGStage)
stubber := ffmpeg.New(s)
if targetBin == define.FFPROBEBin || targetBin == define.FFMPEGBin {
logrus.Infof("run middleware: %q\r\n", RunFFMPEGStage)
stubber := ffmpeg.NewVersion6(s)
args, err := exec.DoArgsSanitizers(s.Command()[1:])
if err != nil {
slog.Fatalf(s, "DoArgsSanitizers error: %v\r\n", err)
Expand All @@ -39,10 +39,11 @@ const InstallStage = "ffmpeg install handler"

func Install(next ssh.Handler) ssh.Handler {
return func(s ssh.Session) {
// if the command is not define.InstallFFMPEG, do nothing and run next handler
if s.Command()[0] == define.InstallFFMPEG {
slog.Infof(s, "run middleware: %q", InstallStage)
stubber := ffmpeg.New(s)
// if the command is not InstallFFMPEGVersion6, do nothing and run the next handler
if s.Command()[0] == define.InstallFFMPEGVersion6 {
slog.Infof(s, "run middleware: %q\r\n", InstallStage)
stubber := ffmpeg.NewVersion6(s)

if err := stubber.Download(s.Context()); err != nil {
slog.Fatalf(s, "Download ffmpeg error: %v\r\n", err)
return
Expand Down
3 changes: 2 additions & 1 deletion pkg/handler/handler.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package handler

import (
"github.com/sirupsen/logrus"
"sshd/pkg/define"
slog "sshd/pkg/logger"

"github.com/sirupsen/logrus"

"github.com/gliderlabs/ssh"
)

Expand Down
4 changes: 2 additions & 2 deletions pkg/logger/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ func Infof(s ssh.Session, f string, v ...interface{}) {
func SetupLogger() error {
logrus.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
ForceColors: true,
DisableColors: false,
ForceColors: false,
DisableColors: true,
TimestampFormat: "2006-01-02 15:04:05.000",
})
homeDir, err := os.UserHomeDir()
Expand Down
48 changes: 36 additions & 12 deletions pkg/provider/ffmpeg/stubber.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ type Stubber struct {
Version define.Version
}

const VERSION = "7"
const NAME = "ffmpeg_macos_arm64"

func New(s ssh.Session) *Stubber {
func NewVersion6(s ssh.Session) *Stubber {
stdioHome, err := utils.GetStudioHomeDir()
if err != nil {
logrus.Errorf("GetStudioHomeDir error: %v", err)
Expand All @@ -41,28 +38,55 @@ func New(s ssh.Session) *Stubber {
return &Stubber{
Session: s,
Version: define.Version{
PkgName: NAME,
PkgVer: VERSION,
PkgName: define.FFMPEGPkgName,
PkgVer: define.FFMPEG6Version,
},
Installer: define.InstallOpts{
URL: define.FFReleaseURLForVentura,
Sha256Sum: define.FFMSha256ForVentura,
Prefix: filepath.Join(stdioHome, define.HostShared, NAME, VERSION),
URL: define.FF6ReleaseURL,
Sha256Sum: define.FF6Sha256,
Prefix: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version),
},
Runner: define.RunOpts{
FFMPEGPath: filepath.Join(stdioHome, define.HostShared, NAME, VERSION, define.FFMPEG),
FFPROBEPath: filepath.Join(stdioHome, define.HostShared, NAME, VERSION, define.FFPROBE),
FFMPEGPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version, define.FFMPEGBin),
FFPROBEPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version, define.FFPROBEBin),
},
}
}

// func NewVersion7(s ssh.Session) *Stubber {
// stdioHome, err := utils.GetStudioHomeDir()
// if err != nil {
// logrus.Errorf("GetStudioHomeDir error: %v", err)
// return nil
// }
//
// logrus.Infof("GetStudioHomeDir: %q", stdioHome)
//
// return &Stubber{
// Session: s,
// Version: define.Version{
// PkgName: define.FFMPEGPkgName,
// PkgVer: define.FFMPEG7Version,
// },
// Installer: define.InstallOpts{
// URL: define.FF7ReleaseURL,
// Sha256Sum: define.FF7Sha256,
// Prefix: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version),
// },
// Runner: define.RunOpts{
// FFMPEGPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version, define.FFMPEGBin),
// FFPROBEPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version, define.FFPROBEBin),
// },
// }
//}

func (l *Stubber) Run(ctx context.Context, target string, args, envs []string) error {
l.Runner.Args = args
l.Runner.Envs = envs

cmd := exec.CommandContext(ctx, l.Runner.FFMPEGPath, l.Runner.Args...)

if target == define.FFPROBE {
if target == define.FFPROBEBin {
cmd = exec.CommandContext(ctx, l.Runner.FFPROBEPath, l.Runner.Args...)
}

Expand Down