summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-24 22:00:34 +0200
committerbt <bt@rctt.net>2026-05-24 22:00:34 +0200
commit9fb83be2ad5396b6a33b75be806d18a92fe602fc (patch)
tree355b23c0a09612c644d0216168a5b26e5d8cee1a
parent60c6f3dd306c50bb2330eb09372bd032eaf996eb (diff)
downloadsolec-9fb83be2ad5396b6a33b75be806d18a92fe602fc.tar.gz
solec-9fb83be2ad5396b6a33b75be806d18a92fe602fc.zip
[common] Fix usermode
-rw-r--r--client/client.go8
-rw-r--r--core/payload.go6
-rw-r--r--server/user.go35
3 files changed, 26 insertions, 23 deletions
diff --git a/client/client.go b/client/client.go
index 8abbde2..ba53ec9 100644
--- a/client/client.go
+++ b/client/client.go
@@ -81,8 +81,8 @@ func (c *Client) SendMessage(target, content string) error {
func (c *Client) Join(channel string) error {
umod := core.Usermode{
- UserAddr: c.cfg.User + "@" + c.cfg.Addr,
- ChannelName: channel,
+ UserAddr: c.cfg.User,
+ ChannelAddr: channel,
Mode: core.UsermodeInChannel,
}
@@ -91,8 +91,8 @@ func (c *Client) Join(channel string) error {
func (c *Client) Leave(channel string) error {
umod := core.Usermode{
- UserAddr: c.cfg.User + "@" + c.cfg.Addr,
- ChannelName: channel,
+ UserAddr: c.cfg.User,
+ ChannelAddr: channel,
Mode: core.UsermodeNone,
}
diff --git a/core/payload.go b/core/payload.go
index 3bc6038..be9d844 100644
--- a/core/payload.go
+++ b/core/payload.go
@@ -152,14 +152,14 @@ func DecodeMessage(buf io.Reader) (Message, error) {
type Usermode struct {
UserAddr string
- ChannelName string
+ ChannelAddr string
Mode UsermodeType
}
func (u Usermode) Wrap() (PayloadType, []any) {
return PayloadUsermode, []any{
u.UserAddr,
- u.ChannelName,
+ u.ChannelAddr,
uint8(u.Mode),
}
}
@@ -172,7 +172,7 @@ func DecodeUsermode(buf io.Reader) (Usermode, error) {
return u, err
}
- err = decodeString(buf, &u.ChannelName)
+ err = decodeString(buf, &u.ChannelAddr)
if err != nil {
return u, err
}
diff --git a/server/user.go b/server/user.go
index c615c40..9a0a71b 100644
--- a/server/user.go
+++ b/server/user.go
@@ -132,26 +132,29 @@ func (s *Server) handleUserPayload(user *User, sender net.Conn, payload any) err
}
func (s *Server) handleUsermode(user *User, conn net.Conn, mode core.Usermode) error {
+ _, err := core.ReadAddr(mode.UserAddr)
+ if err != nil {
+ log.Println("invalid user address")
+ return err
+ }
- /*
- userAddr, err := core.ReadAddr(mode.UserAddr)
- if err != nil {
- return err
- }
+ _, err = core.ReadAddr(mode.ChannelAddr)
+ if err != nil {
+ log.Println("invalid channel address")
+ return err
+ }
- chanAddr, err := core.ReadAddr(mode.ChannelAddr)
- if err != nil {
- return err
- }
+ perm := core.PermissionData{
+ User: mode.UserAddr,
+ Channel: mode.ChannelAddr,
+ }
- if user.Addr != userAddr.Channel {
- log.Println("unauthorized")
- return user.Send(conn, core.Error{core.ErrorUnauthorized})
- }
+ if mode.Mode == core.UsermodeInChannel {
+ perm.Read = true
+ perm.Write = true
+ }
- // TODO: change user permissions here
- */
- return nil
+ return s.Storage.SetPermission(perm)
}
// TODO: Replace user.Send(error) with conn.Send()