Skip to content

Commit

Permalink
refactor: move magicpacket code to pkg dir
Browse files Browse the repository at this point in the history
  • Loading branch information
jedrw committed Feb 3, 2025
1 parent d3975da commit 6007849
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 39 deletions.
6 changes: 3 additions & 3 deletions cmd/gowake/gowake.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"fmt"
"regexp"

"github.com/jedrw/gowake"
"github.com/jedrw/gowake/cmd/listen"
"github.com/jedrw/gowake/pkg/magicpacket"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -33,14 +33,14 @@ var gowakeCmd = &cobra.Command{
}

// Build packet
mp, err := gowake.NewMagicPacket(args[0])
mp, err := magicpacket.New(args[0])
if err != nil {
fmt.Println(err.Error())
return
}

// Send packet
err = gowake.SendMagicPacket(mp, ip, port)
err = magicpacket.Send(mp, ip, port)
if err != nil {
fmt.Println(err.Error())
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/listen/listen.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package listen
import (
"fmt"

"github.com/jedrw/gowake"
"github.com/jedrw/gowake/pkg/magicpacket"
"github.com/spf13/cobra"
)

Expand All @@ -15,13 +15,13 @@ var ListenCmd = &cobra.Command{
cont, _ := cmd.Flags().GetBool("continuous")
fmt.Printf("Listening for magic packets on port %d:\n", port)
for {
remote, mac, err := gowake.Listen(port)
remote, mac, err := magicpacket.Listen(port)
if err != nil {
if err.Error() == fmt.Sprintf("listen udp 0.0.0.0:%d: bind: permission denied", port) {
fmt.Println("Please run as elevated user")
return
} else {
fmt.Println(err.Error())
fmt.Println(err)
return
}
}
Expand Down
29 changes: 0 additions & 29 deletions listen.go

This file was deleted.

38 changes: 38 additions & 0 deletions pkg/magicpacket/listen.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package magicpacket

import (
"bytes"
"fmt"
"net"
)

func Listen(port int) (*net.UDPAddr, string, error) {
addr := net.UDPAddr{
IP: net.ParseIP("0.0.0.0"),
Port: port,
}

listener, err := net.ListenUDP("udp", &addr)
if err != nil {
return nil, "", err
}
defer listener.Close()

var magicPacket MagicPacket
remote := &net.UDPAddr{}
_, remote, err = listener.ReadFromUDP(magicPacket[:])
if err != nil {
return remote, "", err
}

macLength := 6
offset := 6
for i := 0; i < 16; i++ {
if !bytes.Equal(magicPacket[offset:offset+macLength], magicPacket[96:]) {
return remote, "", fmt.Errorf("received malformed magicpacket from %v", remote)
}
offset += 6
}

return remote, net.HardwareAddr.String(magicPacket[96:]), err
}
4 changes: 2 additions & 2 deletions magicpacket.go → pkg/magicpacket/magicpacket.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package gowake
package magicpacket

import (
"fmt"
Expand All @@ -7,7 +7,7 @@ import (

type MagicPacket [102]byte

func NewMagicPacket(mac string) (MagicPacket, error) {
func New(mac string) (MagicPacket, error) {
// Parse mac address
hwAddr, err := net.ParseMAC(mac)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions send.go → pkg/magicpacket/send.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package gowake
package magicpacket

import (
"fmt"
"net"
)

func SendMagicPacket(packet MagicPacket, ip string, port int) error {
func Send(packet MagicPacket, ip string, port int) error {
conn, err := net.Dial("udp", fmt.Sprintf("%s:%d", ip, port))
if err != nil {
return err
Expand Down

0 comments on commit 6007849

Please sign in to comment.