How to use Forward method of isolated Package

Best Syzkaller code snippet using isolated.Forward

iptables_test.go

Source:iptables_test.go Github

copy

Full Screen

...124// - hook does nothing if container is not in bridge or user mode125// - iptables are correctly injected on at hook execution126func (s *IptablesTestSuite) TestIptablesHookRunPostRun() {127 // Store the state of the namespace network128 BaseForwardRule, _ := s.iptablesDriver.List("filter", s.forwardChain)129 BasePostRoutingRules, _ := s.iptablesDriver.List("nat", s.postroutingChain)130 BasePreRoutingRules, _ := s.iptablesDriver.List("nat", s.preroutingChain)131 // Injection should not be executed if the network is not in bridge mode132 info := &mesos.TaskInfo{}133 assert.Nil(s.T(), s.hook.RunPostRun(s.c, info, s.frameworkInfo, ""))134 forwardRules, _ := s.iptablesDriver.List("filter", s.forwardChain)135 postRoutingRules, _ := s.iptablesDriver.List("nat", s.postroutingChain)136 preRoutingRules, _ := s.iptablesDriver.List("nat", s.preroutingChain)137 assert.Equal(138 s.T(),139 BaseForwardRule,140 forwardRules,141 )142 assert.Equal(143 s.T(),144 BasePostRoutingRules,145 postRoutingRules,146 )147 assert.Equal(148 s.T(),149 BasePreRoutingRules,150 preRoutingRules,151 )152 // Now test for each table and chain that rule are correctly inserted,153 // next to the previous network states154 assert.Nil(s.T(), s.hook.RunPostRun(s.c, s.taskInfo, s.frameworkInfo, ""))155 forwardRules, _ = s.iptablesDriver.List("filter", s.forwardChain)156 assert.Subset(157 s.T(),158 forwardRules,159 append(160 BaseForwardRule,161 []string{162 "-A " + s.forwardChain + " -d 172.0.2.1/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT",163 "-A " + s.forwardChain + " -s 172.0.2.1/32 -i docker0 ! -o docker0 -p tcp -m tcp --sport 80 -j ACCEPT",164 "-A " + s.forwardChain + " -d 172.0.2.1/32 ! -i docker0 -o docker0 -p udp -m udp --dport 10000 -j ACCEPT",165 "-A " + s.forwardChain + " -s 172.0.2.1/32 -i docker0 ! -o docker0 -p udp -m udp --sport 10000 -j ACCEPT",166 "-A " + s.forwardChain + " -d 172.0.3.1/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT",167 "-A " + s.forwardChain + " -s 172.0.3.1/32 -i docker0 ! -o docker0 -p tcp -m tcp --sport 80 -j ACCEPT",168 "-A " + s.forwardChain + " -d 172.0.3.1/32 ! -i docker0 -o docker0 -p udp -m udp --dport 10000 -j ACCEPT",169 "-A " + s.forwardChain + " -s 172.0.3.1/32 -i docker0 ! -o docker0 -p udp -m udp --sport 10000 -j ACCEPT",170 }...,171 ),172 )173 postRoutingRules, _ = s.iptablesDriver.List("nat", s.postroutingChain)174 assert.Subset(175 s.T(),176 postRoutingRules,177 append(178 BasePostRoutingRules,179 []string{180 "-A " + s.postroutingChain + " -s 172.0.2.1/32 ! -o docker0 -j MASQUERADE",181 "-A " + s.postroutingChain + " -s 172.0.2.1/32 -d 172.0.2.1/32 -p tcp -m tcp --dport 80 -j MASQUERADE",182 "-A " + s.postroutingChain + " -s 172.0.2.1/32 -d 172.0.2.1/32 -p udp -m udp --dport 10000 -j MASQUERADE",183 "-A " + s.postroutingChain + " -s 172.0.3.1/32 ! -o docker0 -j MASQUERADE",184 "-A " + s.postroutingChain + " -s 172.0.3.1/32 -d 172.0.3.1/32 -p tcp -m tcp --dport 80 -j MASQUERADE",185 "-A " + s.postroutingChain + " -s 172.0.3.1/32 -d 172.0.3.1/32 -p udp -m udp --dport 10000 -j MASQUERADE",186 }...,187 ),188 )189 preRoutingRules, _ = s.iptablesDriver.List("nat", s.preroutingChain)190 assert.Subset(191 s.T(),192 preRoutingRules,193 append(194 BasePreRoutingRules,195 []string{196 "-A " + s.preroutingChain + " ! -i docker0 -p tcp -m tcp --dport 32000 -j DNAT --to-destination 172.0.2.1:80",197 "-A " + s.preroutingChain + " ! -i docker0 -p udp -m udp --dport 33000 -j DNAT --to-destination 172.0.2.1:10000",198 "-A " + s.preroutingChain + " ! -i docker0 -p tcp -m tcp --dport 32000 -j DNAT --to-destination 172.0.3.1:80",199 "-A " + s.preroutingChain + " ! -i docker0 -p udp -m udp --dport 33000 -j DNAT --to-destination 172.0.3.1:10000",200 }...,201 ),202 )203}204// Check that :205// - hook does nothing when container is not in bridge or user mode206// - iptables are correctly removed at task hook execution207func (s *IptablesTestSuite) TestIptablesHookRunPreStop() {208 // Store the state of the namespace network209 referenceForwardRule, _ := s.iptablesDriver.List("filter", s.forwardChain)210 referencePostRoutingRules, _ := s.iptablesDriver.List("nat", s.postroutingChain)211 referencePreRoutingRules, _ := s.iptablesDriver.List("nat", s.preroutingChain)212 // Removing should not be executed if the network is not in bridge mode213 info := &mesos.TaskInfo{}214 assert.Nil(s.T(), s.hook.RunPreStop(s.c, info, s.frameworkInfo, ""))215 // Execute insert iptables hook to insert iptables216 s.hook.RunPostRun(s.c, s.taskInfo, s.frameworkInfo, "")217 // Execute remove iptables hook to remove inserted iptables218 assert.Nil(s.T(), s.hook.RunPreStop(s.c, s.taskInfo, s.frameworkInfo, ""))219 forwardRules, _ := s.iptablesDriver.List("filter", s.forwardChain)220 postRoutingRules, _ := s.iptablesDriver.List("nat", s.postroutingChain)221 preRoutingRules, _ := s.iptablesDriver.List("nat", s.preroutingChain)222 assert.Equal(223 s.T(),224 forwardRules,225 referenceForwardRule,226 )227 assert.Equal(228 s.T(),229 postRoutingRules,230 referencePostRoutingRules,231 )232 assert.Equal(233 s.T(),234 preRoutingRules,235 referencePreRoutingRules,236 )237}238func TestIptablesHookSuite(t *testing.T) {239 suite.Run(t, new(IptablesTestSuite))...

Full Screen

Full Screen

isolated.go

Source:isolated.go Github

copy

Full Screen

...94 inst.ssh("rm -rf '" + filepath.Join(inst.cfg.TargetDir, "*") + "'")95 closeInst = nil96 return inst, nil97}98func (inst *instance) Forward(port int) (string, error) {99 if inst.forwardPort != 0 {100 return "", fmt.Errorf("isolated: Forward port already set")101 }102 if port == 0 {103 return "", fmt.Errorf("isolated: Forward port is zero")104 }105 inst.forwardPort = port106 return fmt.Sprintf("127.0.0.1:%v", port), nil107}108func (inst *instance) ssh(command string) error {109 if inst.debug {110 log.Logf(0, "executing ssh %+v", command)111 }112 rpipe, wpipe, err := osutil.LongPipe()113 if err != nil {114 return err115 }116 // TODO(dvyukov): who is closing rpipe?117 args := append(vmimpl.SSHArgs(inst.debug, inst.sshKey, inst.targetPort),118 inst.sshUser+"@"+inst.targetAddr, command)119 if inst.debug {120 log.Logf(0, "running command: ssh %#v", args)121 }122 cmd := osutil.Command("ssh", args...)123 cmd.Stdout = wpipe124 cmd.Stderr = wpipe125 if err := cmd.Start(); err != nil {126 wpipe.Close()127 return err128 }129 wpipe.Close()130 done := make(chan bool)131 go func() {132 select {133 case <-time.After(time.Second * 30):134 if inst.debug {135 log.Logf(0, "ssh hanged")136 }137 cmd.Process.Kill()138 case <-done:139 }140 }()141 if err := cmd.Wait(); err != nil {142 close(done)143 out, _ := ioutil.ReadAll(rpipe)144 if inst.debug {145 log.Logf(0, "ssh failed: %v\n%s", err, out)146 }147 return fmt.Errorf("ssh %+v failed: %v\n%s", args, err, out)148 }149 close(done)150 if inst.debug {151 log.Logf(0, "ssh returned")152 }153 return nil154}155func (inst *instance) repair() error {156 log.Logf(2, "isolated: trying to ssh")157 if err := inst.waitForSSH(30 * time.Minute); err == nil {158 if inst.cfg.TargetReboot {159 log.Logf(2, "isolated: trying to reboot")160 inst.ssh("reboot") // reboot will return an error, ignore it161 if err := inst.waitForReboot(5 * 60); err != nil {162 log.Logf(2, "isolated: machine did not reboot")163 return err164 }165 log.Logf(2, "isolated: rebooted wait for comeback")166 if err := inst.waitForSSH(30 * time.Minute); err != nil {167 log.Logf(2, "isolated: machine did not comeback")168 return err169 }170 log.Logf(2, "isolated: reboot succeeded")171 } else {172 log.Logf(2, "isolated: ssh succeeded")173 }174 } else {175 log.Logf(2, "isolated: ssh failed")176 return fmt.Errorf("SSH failed")177 }178 return nil179}180func (inst *instance) waitForSSH(timeout time.Duration) error {181 return vmimpl.WaitForSSH(inst.debug, timeout, inst.targetAddr, inst.sshKey, inst.sshUser,182 inst.os, inst.targetPort, nil)183}184func (inst *instance) waitForReboot(timeout int) error {185 var err error186 start := time.Now()187 for {188 if !vmimpl.SleepInterruptible(time.Second) {189 return fmt.Errorf("shutdown in progress")190 }191 // If it fails, then the reboot started192 if err = inst.ssh("pwd"); err != nil {193 return nil194 }195 if time.Since(start).Seconds() > float64(timeout) {196 break197 }198 }199 return fmt.Errorf("isolated: the machine did not reboot on repair")200}201func (inst *instance) Close() {202 close(inst.closed)203}204func (inst *instance) Copy(hostSrc string) (string, error) {205 baseName := filepath.Base(hostSrc)206 vmDst := filepath.Join(inst.cfg.TargetDir, baseName)207 inst.ssh("pkill -9 '" + baseName + "'; rm -f '" + vmDst + "'")208 args := append(vmimpl.SCPArgs(inst.debug, inst.sshKey, inst.targetPort),209 hostSrc, inst.sshUser+"@"+inst.targetAddr+":"+vmDst)210 cmd := osutil.Command("scp", args...)211 if inst.debug {212 log.Logf(0, "running command: scp %#v", args)213 cmd.Stdout = os.Stdout214 cmd.Stderr = os.Stdout215 }216 if err := cmd.Start(); err != nil {217 return "", err218 }219 done := make(chan bool)220 go func() {221 select {222 case <-time.After(3 * time.Minute):223 cmd.Process.Kill()224 case <-done:225 }226 }()227 err := cmd.Wait()228 close(done)229 if err != nil {230 return "", err231 }232 return vmDst, nil233}234func (inst *instance) Run(timeout time.Duration, stop <-chan bool, command string) (235 <-chan []byte, <-chan error, error) {236 args := append(vmimpl.SSHArgs(inst.debug, inst.sshKey, inst.targetPort), inst.sshUser+"@"+inst.targetAddr)237 dmesg, err := vmimpl.OpenRemoteConsole("ssh", args...)238 if err != nil {239 return nil, nil, err240 }241 rpipe, wpipe, err := osutil.LongPipe()242 if err != nil {243 dmesg.Close()244 return nil, nil, err245 }246 args = vmimpl.SSHArgs(inst.debug, inst.sshKey, inst.targetPort)247 // Forward target port as part of the ssh connection (reverse proxy)248 if inst.forwardPort != 0 {249 proxy := fmt.Sprintf("%v:127.0.0.1:%v", inst.forwardPort, inst.forwardPort)250 args = append(args, "-R", proxy)251 }252 args = append(args, inst.sshUser+"@"+inst.targetAddr, "cd "+inst.cfg.TargetDir+" && exec "+command)253 log.Logf(0, "running command: ssh %#v", args)254 if inst.debug {255 log.Logf(0, "running command: ssh %#v", args)256 }257 cmd := osutil.Command("ssh", args...)258 cmd.Stdout = wpipe259 cmd.Stderr = wpipe260 if err := cmd.Start(); err != nil {261 dmesg.Close()...

Full Screen

Full Screen

Forward

Using AI Code Generation

copy

Full Screen

1import "fmt"2func main(){3 fmt.Println(isolated.Forward(5))4}5import "fmt"6func main(){7 fmt.Println(isolated.Backward(5))8}9In this way, we can use the isolated class as an interface in our code. But we can’t use the Forward() and Backward() methods of the isolated class directly in the code. We have to

Full Screen

Full Screen

Forward

Using AI Code Generation

copy

Full Screen

1import (2func main() {3    i.Forward()4}5import (6func main() {7    i.Forward()8}9import (10func main() {11    i.Forward()12}13import (14func main() {15    i.Forward()16}17import (18func main() {19    i.Forward()20}21import (22func main() {23    i.Forward()24}25import (26func main() {27    i.Forward()28}29import (30func main() {31    i.Forward()32}33import (34func main() {35    i.Forward()36}37import (38func main() {39    i.Forward()40}41import (42func main() {43    i.Forward()44}

Full Screen

Full Screen

Forward

Using AI Code Generation

copy

Full Screen

1func main() {2 i := isolated.New()3 i.Forward()4}5func main() {6 i := isolated.New()7 i.Forward()8}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Syzkaller automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful