| ... | ... |
@@ -11,6 +11,17 @@ import ( |
| 11 | 11 |
"syscall" |
| 12 | 12 |
) |
| 13 | 13 |
|
| 14 |
+// Setup networking |
|
| 15 |
+func setupNetworking(gw string) {
|
|
| 16 |
+ if gw == "" {
|
|
| 17 |
+ return |
|
| 18 |
+ } |
|
| 19 |
+ cmd := exec.Command("/sbin/route", "add", "default", "gw", gw)
|
|
| 20 |
+ if err := cmd.Run(); err != nil {
|
|
| 21 |
+ log.Fatalf("Unable to set up networking: %v", err)
|
|
| 22 |
+ } |
|
| 23 |
+} |
|
| 24 |
+ |
|
| 14 | 25 |
// Takes care of dropping privileges to the desired user |
| 15 | 26 |
func changeUser(u string) {
|
| 16 | 27 |
if u == "" {
|
| ... | ... |
@@ -62,8 +73,11 @@ func SysInit() {
|
| 62 | 62 |
os.Exit(1) |
| 63 | 63 |
} |
| 64 | 64 |
var u = flag.String("u", "", "username or uid")
|
| 65 |
+ var gw = flag.String("g", "", "gateway address")
|
|
| 65 | 66 |
|
| 66 | 67 |
flag.Parse() |
| 68 |
+ |
|
| 69 |
+ setupNetworking(*gw) |
|
| 67 | 70 |
changeUser(*u) |
| 68 | 71 |
executeProgram(flag.Arg(0), flag.Args()) |
| 69 | 72 |
} |