12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package libbox
- import (
- "encoding/binary"
- "net"
- "github.com/sagernet/sing-box/experimental/deprecated"
- "github.com/sagernet/sing/common"
- E "github.com/sagernet/sing/common/exceptions"
- "github.com/sagernet/sing/common/varbin"
- "github.com/sagernet/sing/service"
- )
- func (c *CommandClient) GetDeprecatedNotes() (DeprecatedNoteIterator, error) {
- conn, err := c.directConnect()
- if err != nil {
- return nil, err
- }
- defer conn.Close()
- err = binary.Write(conn, binary.BigEndian, uint8(CommandGetDeprecatedNotes))
- if err != nil {
- return nil, err
- }
- err = readError(conn)
- if err != nil {
- return nil, err
- }
- var features []deprecated.Note
- err = varbin.Read(conn, binary.BigEndian, &features)
- if err != nil {
- return nil, err
- }
- return newIterator(common.Map(features, func(it deprecated.Note) *DeprecatedNote { return (*DeprecatedNote)(&it) })), nil
- }
- func (s *CommandServer) handleGetDeprecatedNotes(conn net.Conn) error {
- boxService := s.service
- if boxService == nil {
- return writeError(conn, E.New("service not ready"))
- }
- err := writeError(conn, nil)
- if err != nil {
- return err
- }
- return varbin.Write(conn, binary.BigEndian, service.FromContext[deprecated.Manager](boxService.ctx).(*deprecatedManager).Get())
- }
|