2 PPTP CLIENT start/stop and configuration for Tomato
3 by Jean-Yves Avenard (c) 2008-2011
12 void start_pptp_client(void)
18 char buffer
[BUF_SIZE
];
22 sprintf(buffer
, "pptpclient");
23 if ( pidof(buffer
) >= 0 )
25 // PPTP already running
28 unlink("/etc/vpn/ip-down");
29 unlink("/etc/vpn/ip-up");
30 unlink("/etc/vpn/ip-vpn");
31 unlink("/etc/vpn/options.vpn");
33 mkdir("/etc/vpn",0700);
34 ok
|= symlink("/rom/etc/vpn/ip-down", "/etc/vpn/ip-down");
35 ok
|= symlink("/rom/etc/vpn/ip-up", "/etc/vpn/ip-up");
36 // Make sure symbolic link exists
37 sprintf(buffer
, "/etc/vpn/pptpclient");
39 ok
|= symlink("/usr/sbin/pppd", buffer
);
47 if ( (fd
= fopen("/etc/vpn/options.vpn", "w")) != NULL
)
54 "lcp-echo-failure 3\n"
55 "lcp-echo-interval 2\n"
59 "pptp_server %s\n", nvram_safe_get("pptp_client_srvip"));
60 // Accept default route
61 if (nvram_get_int("pptp_client_dfltroute"))
62 fprintf(fd
,"defaultroute\n");
63 i
= nvram_get_int("pptp_client_peerdns"); //-1 or 0: enable, 1 disable
65 fprintf(fd
,"usepeerdns\n");
67 "ip-up-script /etc/vpn/ip-up\n"
68 "ip-down-script /etc/vpn/ip-down\n"
69 "ipparam kelokepptpd\n");
71 if ((p
= nvram_get("pptp_client_mtu")) == NULL
)
73 if (!nvram_get_int("pptp_client_mtuenable"))
75 fprintf(fd
,"mtu %s\n", p
);
77 if (!nvram_get_int("pptp_client_mruenable"))
79 if ((p
= nvram_get("pptp_client_mru")) == NULL
)
81 fprintf(fd
,"mru %s\n", p
);
84 if ((p
= nvram_get("pptp_client_username")) == NULL
)
87 fprintf(fd
,"name %s\n", p
);
89 if ((p
= nvram_get("pptp_client_passwd")) == NULL
)
92 fprintf(fd
,"password %s\n", p
);
93 switch (get_wan_proto())
105 switch (nvram_get_int("pptp_client_crypt"))
108 fprintf(fd
, "nomppe\n");
111 fprintf(fd
, "nomppe-40\n");
112 fprintf(fd
, "require-mppe-128\n");
115 fprintf(fd
, "require-mppe\n");
120 if (!nvram_get_int("pptp_client_stateless"))
121 fprintf(fd
, "mppe-stateful\n");
123 fprintf(fd
, "nomppe-stateful\n");
124 fprintf(fd
, "unit %s\n", p
);
125 fprintf(fd
, "%s\n", nvram_safe_get("pptp_client_custom"));
130 sprintf(buffer
, "/etc/vpn/pptpclient file /etc/vpn/options.vpn");
131 for (argv
[argc
=0] = strtok(&buffer
[0], " "); argv
[argc
] != NULL
; argv
[++argc
] = strtok(NULL
, " "));
132 if ( _eval(argv
, NULL
, 0, NULL
) )
143 void stop_pptp_client(void)
147 char buffer
[BUF_SIZE
];
149 killall("pptpclient", SIGTERM
);
151 sprintf(buffer
, "rm -rf /etc/vpn/pptpclient /etc/vpn/ip-down /etc/vpn/ip-up /etc/vpn/options.vpn");
152 for (argv
[argc
=0] = strtok(&buffer
[0], " "); argv
[argc
] != NULL
; argv
[++argc
] = strtok(NULL
, " "));
153 _eval(argv
, NULL
, 0, NULL
);