(req dto.IptablesOp)
| 154 | } |
| 155 | |
| 156 | func (s *IptablesService) Operate(req dto.IptablesOp) error { |
| 157 | targetChain := iptables.ChainInput |
| 158 | if req.Name == iptables.Chain1PanelOutput { |
| 159 | targetChain = iptables.ChainOutput |
| 160 | } |
| 161 | switch req.Operate { |
| 162 | case "init-base": |
| 163 | if ok := cmd.Which("iptables"); !ok { |
| 164 | return fmt.Errorf("failed to find iptables") |
| 165 | } |
| 166 | if err := iptables.AddChain(iptables.FilterTab, iptables.Chain1PanelBasicBefore); err != nil { |
| 167 | return err |
| 168 | } |
| 169 | if err := iptables.AddChain(iptables.FilterTab, iptables.Chain1PanelBasic); err != nil { |
| 170 | return err |
| 171 | } |
| 172 | if err := iptables.AddChain(iptables.FilterTab, iptables.Chain1PanelBasicAfter); err != nil { |
| 173 | return err |
| 174 | } |
| 175 | if err := initPreRules(); err != nil { |
| 176 | return err |
| 177 | } |
| 178 | if err := iptables.BindChain(iptables.FilterTab, iptables.ChainInput, iptables.Chain1PanelBasicBefore, 1); err != nil { |
| 179 | return err |
| 180 | } |
| 181 | if err := iptables.BindChain(iptables.FilterTab, iptables.ChainInput, iptables.Chain1PanelBasic, 2); err != nil { |
| 182 | return err |
| 183 | } |
| 184 | if err := iptables.BindChain(iptables.FilterTab, iptables.ChainInput, iptables.Chain1PanelBasicAfter, 3); err != nil { |
| 185 | return err |
| 186 | } |
| 187 | if err := iptables.SaveRulesToFile(iptables.FilterTab, iptables.Chain1PanelBasicBefore, iptables.BasicBeforeFileName); err != nil { |
| 188 | return err |
| 189 | } |
| 190 | if err := iptables.SaveRulesToFile(iptables.FilterTab, iptables.Chain1PanelBasic, iptables.BasicFileName); err != nil { |
| 191 | return err |
| 192 | } |
| 193 | if err := iptables.SaveRulesToFile(iptables.FilterTab, iptables.Chain1PanelBasicAfter, iptables.BasicAfterFileName); err != nil { |
| 194 | return err |
| 195 | } |
| 196 | _ = settingRepo.Update("IptablesStatus", constant.StatusEnable) |
| 197 | return nil |
| 198 | case "init-forward": |
| 199 | if err := client.EnableIptablesForward(); err != nil { |
| 200 | return err |
| 201 | } |
| 202 | _ = settingRepo.Update("IptablesForwardStatus", constant.StatusEnable) |
| 203 | return nil |
| 204 | case "init-advance": |
| 205 | if err := iptables.AddChain(iptables.FilterTab, iptables.Chain1PanelInput); err != nil { |
| 206 | return err |
| 207 | } |
| 208 | if err := iptables.AddChain(iptables.FilterTab, iptables.Chain1PanelOutput); err != nil { |
| 209 | return err |
| 210 | } |
| 211 | if err := iptables.BindChain(iptables.FilterTab, iptables.ChainOutput, iptables.Chain1PanelOutput, 1); err != nil { |
| 212 | return err |
| 213 | } |
no test coverage detected