From 37ce6165c8193b77fc695367a14193e99203c83e Mon Sep 17 00:00:00 2001 From: Azareal Date: Sun, 17 Feb 2019 15:38:49 +1000 Subject: [PATCH] Update the experimental plugins sendmail and hyperdrive to work with the new Plugin APIs. --- experimental/plugin_hyperdrive.go | 6 ++-- experimental/plugin_sendmail.go | 51 ++++++++++++++++++------------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/experimental/plugin_hyperdrive.go b/experimental/plugin_hyperdrive.go index ac038907..07ed50bd 100644 --- a/experimental/plugin_hyperdrive.go +++ b/experimental/plugin_hyperdrive.go @@ -13,13 +13,13 @@ func init() { common.Plugins.Add(&common.Plugin{UName: "hyperdrive", Name: "Hyperdrive", Author: "Azareal", Init: initHyperdrive, Deactivate: deactivateHyperdrive}) } -func initHyperdrive() error { +func initHyperdrive(plugin *common.Plugin) error { hyperPageCache = newHyperPageCache() - common.Plugins["hyperdrive"].AddHook("somewhere", deactivateHyperdrive) + plugin.AddHook("somewhere", deactivateHyperdrive) return nil } -func deactivateHyperdrive() { +func deactivateHyperdrive(plugin *common.Plugin) { hyperPageCache = nil } diff --git a/experimental/plugin_sendmail.go b/experimental/plugin_sendmail.go index a1622de8..72946382 100644 --- a/experimental/plugin_sendmail.go +++ b/experimental/plugin_sendmail.go @@ -1,25 +1,34 @@ package main -import "io" -import "os/exec" -import "errors" -import "runtime" +import ( + "errors" + "io" + "os/exec" + "runtime" + + "github.com/Azareal/Gosora/common" +) /* Sending emails in a way you really shouldn't be sending them. This method doesn't require a SMTP server, but has higher chances of an email being rejected or being seen as spam. Use at your own risk. Only for Linux as Windows doesn't have Sendmail. */ func init() { - plugins["sendmail"] = Plugin{"sendmail","Sendmail","Azareal","http://github.com/Azareal","",false,"Linux Only","",init_sendmail,activate_sendmail,deactivate_sendmail} + // Don't bother registering this plugin on platforms other than Linux + if runtime.GOOS != "linux" { + return + } + common.Plugins.Add(&common.Plugin{UName: "sendmail", Name: "Sendmail", Author: "Azareal", URL: "http://github.com/Azareal", Tag: "Linux Only", Init: initSendmail, Activate: activateSendmail, Deactivate: deactivateSendmail}) } -func init_sendmail() { - add_hook("email_send_intercept", send_sendmail) +func initSendmail(plugin *common.Plugin) error { + plugin.AddHook("email_send_intercept", sendSendmail) + return nil } -// Sendmail is only available on Linux -func activate_sendmail() error { - if !site.EnableEmails { +// /usr/sbin/sendmail is only available on Linux +func activateSendmail(plugin *common.Plugin) error { + if !common.Site.EnableEmails { return errors.New("You have emails disabled in your configuration file") } if runtime.GOOS != "linux" { @@ -28,36 +37,36 @@ func activate_sendmail() error { return nil } -func deactivate_sendmail() { - remove_vhook("email_send_intercept") +func deactivateSendmail(plugin *common.Plugin) { + plugin.RemoveHook("email_send_intercept", sendSendmail) } -func send_sendmail(data ...interface{}) interface{} { +func sendSendmail(data ...interface{}) interface{} { to := data[0].(string) subject := data[1].(string) body := data[2].(string) - - msg := "From: " + site.Email + "\n" + + msg := "From: " + common.Site.Email + "\n" msg += "To: " + to + "\n" msg += "Subject: " + subject + "\n\n" msg += body + "\n" - - sendmail := exec.Command("/usr/sbin/sendmail","-t","-i") + + sendmail := exec.Command("/usr/sbin/sendmail", "-t", "-i") stdin, err := sendmail.StdinPipe() if err != nil { return false // Possibly disable the plugin and show an error to the admin on the dashboard? Plugin log file? } - + err = sendmail.Start() if err != nil { return false } io.WriteString(stdin, msg) - + err = stdin.Close() if err != nil { return false } - + return sendmail.Wait() == nil -} \ No newline at end of file +}