впервые сказано пользователем ln(x) 19.10.2010 в 02:42
и с тех пор употреблялось 5
Сообщения со словом
Запрос выполнился за 0.0586
- 19.10.2010, 02:42. ln(x) в теме
«Линукс и мелкомягкие»
... first some support functions that are used everywhere yesno prompt ask the user prompt and return true for yes false for no sub yesno my prompt 0 while 1 print n prompt y n my choice stdin chomp choice return 1 if choice eq choice yy return 0 if choice nn print ni don t understand choice please try again n queryuser prompt default ask the user prompt and return the answer default if cr sub queryuser my prompt default print prompt print default if defined default print my answer stdin chomp answer answer default if answer eq and defined default return answer configuredtunnels returns a list of configured tunnels sub configuredtunnels my tunnels if -d tunnel dir foreach my f cd tunnel dir ls chomp f next if f eq default my p tunnel dir f if p safe re o print unsafe characters in tunnel name p n next p 1 push tunnels f if -f p and grep pptp p return tunnels bselect a rough equilivent of the bourne shell s select sub bselect my prompt shift my choices for my i 0 choices print i 1 choices i n my reply queryuser prompt undef return reply selecttunnel interactive prints 0 as a prompt and returns the choice sub selecttunnel my tunnel my tunnels configuredtunnels while tunnel eq tunnel bselect 0 tunnels return tunnels tunnel 1 if tunnel d return tunnel if grep tunnel tunnels return addtunnel name ip local remote adds a new tunnel with name name server ip address ip and using the chap secret determined by local name local and remote name remote sub addtunnel my name ip local remote routes if -f tunnel dir name print error peer name already exists n return open peer tunnel dir name or die can t open tunnel dir name for writing print peer pptp tunnel configuration for tunnel name server ip ip n foreach my r routes print peer route r n print peer tags for chap secret selection name local remotename remote tunnel name for ip-up local or ip-up d scripts ipparam name include the main pptp configuration file file pppdir options pptp close peer or die can t close tunnel dir name print added tunnel name n deltunnel name deletes the tunnel named name sub deltunnel my name 0 return if defined name name eq if -f tunnel dir name print error peer name does not exist n return force name to be untainted name is clean because it passed the -f test above and it s not being sent to a shell but -t doesn t know that name o name 1 unlink tunnel dir name print removed tunnel name n breaksymlink file if file is a symlink 1 break the link 2 copy the contents of the file pointed to do file sub breaksymlink my file shift if -l file my link readlink file link 1 link if file m and not link m print breaking symlink file link n unlink file die file pointed at a strangely named file n if link safe re link 1 cp link file rotate target new old rotates config files target full path of the config file new full path of the file being rotated in old expected contents of the file being rotated out example rotate etc resolv conf etc resolv conf pptp etc resolv conf real sub rotate my target new old return undef unless -f new -f old my diff diff target new chomp diff return 1 if diff eq diff diff target old chomp diff if diff ne print warning new not installed n print target does not match old n return undef ln -sf new target print installed new as target n return addchaporpap interactive prompts for parameters and adds a chap or pap secret sub addchaporpap my secret type 0 print add a new secret type secret note any backslashes must be doubled local name this is the local identifier for secret type authentication note if the server is a windows nt machine the local name should be your windows nt username including domain for example domain username my local queryuser local name undef print remote name this is the remote identifier for secret type authentication in most cases this can be left as the default it must be set if you have multiple secret type secrets with the same local name and different passwords just press enter to keep the default my remote queryuser remote name pptp print password this is the password or secret type secret for the account specified the password will not be echoed get the password without echoing stty -echo my pass queryuser password undef stty echo my secrets file if secret type eq chap secrets file chap secrets elsif secret type eq pap secrets file pap secrets else die wrong secret type open secrets file secrets file or die couldn t open secrets file print nadding secret local remote password n n print secrets file local t remote t pass t n print secrets file remote t local t pass n close secrets file or die couldn t close secrets file chmod 0600 secrets file addchaporpap addpptp interactive add a new pptp tunnel configuration sub addpptp my name ip local remote print nadd a new pptp tunnel n n my configs keys pptp servers my choice bselect which configuration would you like to use configs other my routes if choice configs 1 while 1 name queryuser tunnel name undef per man perlsec check for special characters if name w name 1 last print name contains special characters n print please use only alphanumerics and n ip queryuser server ip undef print what route s would you like to add when the tunnel comes up n print this is usually a route to your internal network behind the pptp server n print you can use substitution keywords as in etc pptp d config file n print tunnel dev is the tunnel interface n print def gw is the existing default gateway n print iplocal is the local ip address n print ipremote is the remote ip address n print the syntax to use is the same as the route 8 command n print enter a blank line to stop n while 1 my route queryuser route undef last unless defined route last if route eq if route unsafe re o print route contains unsafe characters discarded n next push routes route else name configs choice-1 ip pptp servers configs choice-1 ip routes pptp servers configs choice-1 routes print local name and remote name should match a configured chap or pap secret local name is probably your nt domain username note any backslashes must be doubled local queryuser local name undef remote queryuser remote name pptp print adding name ip local remote n addtunnel name ip local remote routes sub configureresolv if yesno use a pptp-specific resolv conf during tunnel connections if -f resolv pptp print resolv pptp exists n if yesno do you want to use the existing resolv pptp print renaming resolv pptp resolv pptp orig n rename resolv pptp resolv pptp orig or die couldn t rename resolv pptp if -f resolv pptp my configs keys dns servers my choice bselect which configuration do you want to use configs other my addresses search if choice configs 1 print what domain names do you want to search for partially n specified names n print enter all of them on one line seperated by spaces n search queryuser domain names undef print enter the ip addresses of your nameservers n print enter a blank ip address to stop n while 1 my address queryuser nameserver ip address undef last unless defined address last if address eq push addresses address else search dns servers configs choice-1 search list addresses dns servers configs choice-1 ip list open pptp resolv pptp or die couldn t open resolv pptp for writing print pptp search search n foreach my a addresses print pptp nameserver a n close pptp or die couldn t close resolv pptp if -f resolv real my diff diff resolv resolv real chomp diff if diff ne print resolv real exists n print copying it to resolv real orig n unlink resolv real orig rename resolv real resolv real orig breaksymlink resolv print copying resolv to resolv real n cp -f resolv resolv real print creating link from resolv real to resolv n ln -sf resolv real resolv else they choose not to twiddle etc resolv conf breaksymlink resolv if -f resolv pptp print resolv pptp exists n if yesno do you want to delete etc resolv conf pptp unlink resolv pptp print resolv pptp deleted n else print you have chosen not to delete resolv pptp n this existing resolv pptp may still be used n when tunnel connections are established if you n really don t want it to be used you should n rename or remove it n if -f resolv real my diff diff resolv resolv real chomp diff if diff eq print resolv is identical to resolv real n if yesno do you want to delete resolv real unlink resolv...