diff options
| author | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-11-02 15:29:28 +0800 |
| commit | 9f42c2d5f911cb4e215d7873221e642ce7df4d61 (patch) | |
| tree | 6dac90a889a7402a9556d3d1bcc5cb53cdb9f123 /deprecated-webircgateway/pkg/identd/rpcclient.go | |
| parent | fb2d9de539b660a261af19b1cbcceb7ee7980cb1 (diff) | |
deprecate webircdateway and ngircd
Diffstat (limited to 'deprecated-webircgateway/pkg/identd/rpcclient.go')
| -rw-r--r-- | deprecated-webircgateway/pkg/identd/rpcclient.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/deprecated-webircgateway/pkg/identd/rpcclient.go b/deprecated-webircgateway/pkg/identd/rpcclient.go new file mode 100644 index 0000000..37aec3e --- /dev/null +++ b/deprecated-webircgateway/pkg/identd/rpcclient.go @@ -0,0 +1,59 @@ +package identd + +import "net" +import "fmt" +import "time" + +func MakeRpcClient(appName string) *RpcClient { + return &RpcClient{AppName: appName} +} + +type RpcClient struct { + AppName string + Conn *net.Conn +} + +func (rpc *RpcClient) ConnectAndReconnect(serverAddress string) { + for { + if rpc.Conn == nil { + println("Connecting to identd RPC...") + rpc.Connect(serverAddress) + } + + time.Sleep(time.Second * 3) + } +} + +func (rpc *RpcClient) Connect(serverAddress string) error { + conn, err := net.Dial("tcp", serverAddress) + if err != nil { + return err + } + + rpc.Conn = &conn + rpc.Write("id " + rpc.AppName) + + return nil +} + +func (rpc *RpcClient) Write(line string) error { + if rpc.Conn == nil { + return fmt.Errorf("not connected") + } + + conn := *rpc.Conn + _, err := conn.Write([]byte(line + "\n")) + if err != nil { + rpc.Conn = nil + conn.Close() + } + return err +} + +func (rpc *RpcClient) AddIdent(lport int, rport int, username string, iface string) { + rpc.Write(fmt.Sprintf("add %s %d %d %s", username, lport, rport, iface)) +} + +func (rpc *RpcClient) RemoveIdent(lport int, rport int, username string, iface string) { + rpc.Write(fmt.Sprintf("del %d %d %s", lport, rport, iface)) +} |
