(req dto.FirewallOperation)
| 162 | } |
| 163 | |
| 164 | func (u *FirewallService) OperateFirewall(req dto.FirewallOperation) error { |
| 165 | client, err := firewall.NewFirewallClient() |
| 166 | if err != nil { |
| 167 | return err |
| 168 | } |
| 169 | needRestartDocker := false |
| 170 | switch req.Operation { |
| 171 | case "start": |
| 172 | if err := client.Start(); err != nil { |
| 173 | return err |
| 174 | } |
| 175 | if err := u.addPortsBeforeStart(client); err != nil { |
| 176 | _ = client.Stop() |
| 177 | return err |
| 178 | } |
| 179 | needRestartDocker = true |
| 180 | case "stop": |
| 181 | if err := client.Stop(); err != nil { |
| 182 | return err |
| 183 | } |
| 184 | needRestartDocker = true |
| 185 | case "restart": |
| 186 | if err := client.Restart(); err != nil { |
| 187 | return err |
| 188 | } |
| 189 | if err := u.addPortsBeforeStart(client); err != nil { |
| 190 | return err |
| 191 | } |
| 192 | needRestartDocker = true |
| 193 | case "disableBanPing": |
| 194 | if err := firewall.UpdatePingStatus("0"); err != nil { |
| 195 | return err |
| 196 | } |
| 197 | _ = settingRepo.Update("BanPing", constant.StatusDisable) |
| 198 | return nil |
| 199 | case "enableBanPing": |
| 200 | if err := firewall.UpdatePingStatus("1"); err != nil { |
| 201 | return err |
| 202 | } |
| 203 | _ = settingRepo.Update("BanPing", constant.StatusEnable) |
| 204 | return nil |
| 205 | default: |
| 206 | return fmt.Errorf("not supported operation: %s", req.Operation) |
| 207 | } |
| 208 | if needRestartDocker && req.WithDockerRestart { |
| 209 | if err := controller.HandleRestart("docker"); err != nil { |
| 210 | return fmt.Errorf("failed to restart Docker: %v", err) |
| 211 | } |
| 212 | } |
| 213 | return nil |
| 214 | } |
| 215 | |
| 216 | func (u *FirewallService) OperatePortRule(req dto.PortRuleOperate, reload bool) error { |
| 217 | client, err := firewall.NewFirewallClient() |
nothing calls this directly
no test coverage detected