Update the experimental plugins sendmail and hyperdrive to work with the new Plugin APIs.
This commit is contained in:
parent
d5a58421a7
commit
37ce6165c8
|
@ -13,13 +13,13 @@ func init() {
|
||||||
common.Plugins.Add(&common.Plugin{UName: "hyperdrive", Name: "Hyperdrive", Author: "Azareal", Init: initHyperdrive, Deactivate: deactivateHyperdrive})
|
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()
|
hyperPageCache = newHyperPageCache()
|
||||||
common.Plugins["hyperdrive"].AddHook("somewhere", deactivateHyperdrive)
|
plugin.AddHook("somewhere", deactivateHyperdrive)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deactivateHyperdrive() {
|
func deactivateHyperdrive(plugin *common.Plugin) {
|
||||||
hyperPageCache = nil
|
hyperPageCache = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,34 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
import "os/exec"
|
"errors"
|
||||||
import "errors"
|
"io"
|
||||||
import "runtime"
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/Azareal/Gosora/common"
|
||||||
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Sending emails in a way you really shouldn't be sending them.
|
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.
|
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() {
|
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() {
|
func initSendmail(plugin *common.Plugin) error {
|
||||||
add_hook("email_send_intercept", send_sendmail)
|
plugin.AddHook("email_send_intercept", sendSendmail)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sendmail is only available on Linux
|
// /usr/sbin/sendmail is only available on Linux
|
||||||
func activate_sendmail() error {
|
func activateSendmail(plugin *common.Plugin) error {
|
||||||
if !site.EnableEmails {
|
if !common.Site.EnableEmails {
|
||||||
return errors.New("You have emails disabled in your configuration file")
|
return errors.New("You have emails disabled in your configuration file")
|
||||||
}
|
}
|
||||||
if runtime.GOOS != "linux" {
|
if runtime.GOOS != "linux" {
|
||||||
|
@ -28,36 +37,36 @@ func activate_sendmail() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deactivate_sendmail() {
|
func deactivateSendmail(plugin *common.Plugin) {
|
||||||
remove_vhook("email_send_intercept")
|
plugin.RemoveHook("email_send_intercept", sendSendmail)
|
||||||
}
|
}
|
||||||
|
|
||||||
func send_sendmail(data ...interface{}) interface{} {
|
func sendSendmail(data ...interface{}) interface{} {
|
||||||
to := data[0].(string)
|
to := data[0].(string)
|
||||||
subject := data[1].(string)
|
subject := data[1].(string)
|
||||||
body := data[2].(string)
|
body := data[2].(string)
|
||||||
|
|
||||||
msg := "From: " + site.Email + "\n"
|
msg := "From: " + common.Site.Email + "\n"
|
||||||
msg += "To: " + to + "\n"
|
msg += "To: " + to + "\n"
|
||||||
msg += "Subject: " + subject + "\n\n"
|
msg += "Subject: " + subject + "\n\n"
|
||||||
msg += body + "\n"
|
msg += body + "\n"
|
||||||
|
|
||||||
sendmail := exec.Command("/usr/sbin/sendmail","-t","-i")
|
sendmail := exec.Command("/usr/sbin/sendmail", "-t", "-i")
|
||||||
stdin, err := sendmail.StdinPipe()
|
stdin, err := sendmail.StdinPipe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false // Possibly disable the plugin and show an error to the admin on the dashboard? Plugin log file?
|
return false // Possibly disable the plugin and show an error to the admin on the dashboard? Plugin log file?
|
||||||
}
|
}
|
||||||
|
|
||||||
err = sendmail.Start()
|
err = sendmail.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
io.WriteString(stdin, msg)
|
io.WriteString(stdin, msg)
|
||||||
|
|
||||||
err = stdin.Close()
|
err = stdin.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendmail.Wait() == nil
|
return sendmail.Wait() == nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue