Browse Source

Updated pptpclient

Sergey Ilinykh 7 years ago
parent
commit
0c72b809cb

+ 2 - 0
net-dialup/pptpclient/Manifest

@@ -0,0 +1,2 @@
+DIST pptp-1.10.0.tar.gz 87007 SHA256 82492db8e487ce73b182ee7f444251d20c44f5c26d6e96c553ec7093aefb5af4 SHA512 d2b925fb9cb5dbc4da576dce0cfae62f466576ae5b5ed7d6edeaec9be16ab6e0d17c307df43ebdc06138f1269ef61ba8910462a4629b6262c452e8287cabe41c WHIRLPOOL 0275267e45c671c5c2dbf67db504990eaa7d15745080dc80f56ead5a8e93b01e38a835180689198c66abf16ff3674867a42395114eaa2f45ca8a0de08b97acd1
+DIST pptp-command-20130515.bz2 7269 SHA256 c94f6ccb4370adb4c8f857ed260326583484d461df54dc06a966b1387c68cd6a SHA512 3b0ad28c5f7bf4f674ba8742e8a3be50cb62521f767142a1a1e74263707bc860126b7238a4aea307366a71100a193d18f3ec7599f4c0c52cd259f8b1d6b429bf WHIRLPOOL 2f1c9c1e6c4fb75bc4932c8536d0b10aa89c7fc53ba0887875b7920c8fc2bc894e7863ae4830dd907e9a4459c16f747b3454fda542664f61ac80353164121773

+ 370 - 0
net-dialup/pptpclient/files/pptp_fe.pl

@@ -0,0 +1,370 @@
+#!/usr/bin/perl
+#
+#   $Id: pptp_fe.pl,v 1.1 2001/11/29 05:19:10 quozl Exp $
+#
+#   pptp_fe.pl, privileged portion of xpptp_fe.pl
+#   Copyright (C) 2001  Smoot Carl-Mitchell (smoot@tic.com)
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+use strict;
+use Getopt::Std;
+use Time::localtime;
+use IO::Handle;
+
+my $Usage = "usage: pptp_fe [-c config_file] [-d] [-h] [-k] [-n network]
+		[-p] [-r routes] [-t timeout] [host]
+	where:
+	-c - configuration file (default is ~/.pptp_fe.conf)
+	-d - pppd debug flag
+	-h - this help message
+	-k - kill pppd daemon with route to network
+	-n - network number of remote private network in x.x.x.x/n notation
+	-r - routes to add to routing table separated by commas
+	-p - suppress prompting
+	-t - connection timeout retry interval in seconds (default 60 seconds)
+	host - remote PPTP server name
+";
+
+my %Opt;
+getopts("c:dhkn:pr:t:", \%Opt);
+
+my $Config_File = $Opt{'c'};
+$Config_File = "$ENV{'HOME'}/.pptp_fe.conf" unless $Opt{'c'};
+my $Config;
+my $Debug = $Opt{'d'};
+$Debug = 0 unless $Debug;
+my $Debug_Flag = "debug" if $Debug;
+my $Help = $Opt{'h'};
+my $Kill = $Opt{'k'};
+my $Net = $Opt{'n'};
+my $No_Prompt = $Opt{'p'};
+my $Route = $Opt{'r'};
+my $Timeout = $Opt{'t'}; $Timeout = 60 unless $Timeout;
+
+print($Usage), exit(1) if $Help; 
+
+my $Server = $ARGV[0];
+
+my $State = "disconnected";
+
+system("modprobe ppp-compress-18");
+
+$Config = cmd_read_config_file($Config_File);
+for my $cmd (@$Config) {
+	cmd_set($cmd, 1);
+}
+
+print "($State) > " unless $No_Prompt;
+STDOUT->flush;
+for (;;) {
+	my $rin = '';
+	my $rout = '';
+	vec($rin, fileno(STDIN), 1) = 1;
+	command() if select($rout=$rin,  undef, undef, 5);
+
+	my $interface = "";
+	if ($State eq "connected" && ! ($interface = net_interface_up($Net))) {
+		print "\n";
+		print "interface $interface for $Net not up - restarting\n";
+		cmd_connect();
+		print "($State) > " unless $No_Prompt;;
+	}
+}
+
+sub command {
+
+	my $input;
+	sysread(STDIN, $input, 1024);
+
+	for my $line1 (split("\n", $input)) {
+		my $line = $line1;
+		$line =~ s/\s*$//;
+		$line =~ s/^\s*//;
+		my ($command, $arguments) = split(" ", $line, 2);
+
+		if ($command eq "c") {
+			cmd_connect();
+		}
+		elsif ($command eq "d") {
+			cmd_disconnect();
+		}
+		elsif ($command eq "h") {
+			cmd_help();
+		}
+		elsif ($command eq "l") {
+			cmd_list();
+		}
+		elsif ($command eq "q") {
+			cmd_disconnect();
+			exit 0;
+		}
+		elsif ($command eq "r") {
+			$Config = cmd_read_config_file($arguments);
+		}
+		elsif ($command eq "s") {
+			cmd_set($arguments, 0);
+		}
+		elsif ($command eq "w") {
+			cmd_write_config_file($arguments);
+		}
+		elsif ($command ne "") {
+			print "unknown command\n";
+		}
+	}
+	print "($State) > " unless $No_Prompt;
+	STDOUT->flush;
+}
+
+sub cmd_connect {
+
+	cmd_disconnect() if $State eq "connected";
+
+	my $start_time = time();
+	my $date_string = ctime($start_time);
+	print "$date_string Running pptp $Server $Debug_Flag";
+	system("pptp $Server $Debug_Flag");
+	
+	my $interface = "";
+	
+	do {
+		sleep 1;
+		$interface = net_interface_up($Net);
+		print ".";
+	} until ($interface || time() > $start_time + $Timeout);
+	
+	if (time() > $start_time + $Timeout) {
+		print "timed out after $Timeout sec\n";
+		$State = "disconnected";
+		return 0;
+	}
+
+	print "\n";
+	
+	my $ifcfg = `ifconfig $interface`;
+	$ifcfg =~ /P-t-P:(.*)  Mask/;
+	my $ip = $1;
+	print "setting route to network $Net to interface $interface\n";
+	system("route add -net $Net dev $interface metric 2");
+	
+	# Routes are separated by commas
+	my @route = split(/,/, $Route);
+	for my $route (@route) {
+		my $net_flag = "";
+		$net_flag = "-net" if $route =~ /\//;
+	
+		print "setting route to $route to interface $interface\n";
+		system("route add $net_flag $route dev $interface");
+	}
+
+	$State = "connected";
+	print "connected\n";
+	return 1;
+}
+
+sub cmd_disconnect {
+
+	return 1 if $State eq "disconnected";
+
+	my $interface = net_interface_up($Net);
+	my $pid_file = "/var/run/$interface.pid";
+
+	# delete the named pipes - XXX this is a bit crude
+	system("rm -f /var/run/pptp/*");
+	
+	$State = "disconnected", return 1 unless $interface && -f $pid_file;
+
+	my $pid = `cat $pid_file`; 
+	chomp $pid;
+	print "killing pppd($pid)\n";
+	kill("HUP", $pid);
+	print "waiting for pppd to die";
+	do {
+		sleep 1;
+		print ".";
+	}
+	until (kill(0, $pid));
+
+	print "\n";
+	$State = "disconnected";
+	print "disconnected\n";
+	return 1;
+}
+
+sub cmd_list {
+
+	print "Server = $Server\n";
+	print "Network = $Net\n";
+	print "Routes = $Route\n";
+	print "Debug = $Debug_Flag\n";
+	print "No_Prompt = $No_Prompt\n";
+	print "Timeout = $Timeout\n";
+	print "\n";
+}
+
+sub cmd_help {
+
+	print "Commands are:\n";
+	print "c - initiate PPTP connection\n";
+	print "d - disconnect PPTP\n";
+	print "h - this help message\n";
+	print "l - list current configuration\n";
+	print "q - quite the program\n";
+	print "r - read configuration file\n";
+	print "s - set configuration variable (l for a list)\n";
+	print "w - write the configuration file\n";
+
+}
+
+sub cmd_set {
+	my $input = shift;
+	my $no_replace = shift;
+
+	my ($variable, $value) = split(/\s*=\s*/, $input);
+
+	$variable = "\L$variable";
+	if (! $variable) {
+		print "syntax: s variable = value\n";
+		return 0;
+	}
+
+	if ($variable eq "server") {
+		$Server = $value unless $no_replace && $Server;
+	}
+	elsif ($variable eq "network") {
+		$Net = $value unless $no_replace && $Net;
+	}
+	elsif ($variable eq "routes") {
+		$Route = $value unless $no_replace && $Route;
+	}
+	elsif ($variable eq "debug") {
+		$Debug_Flag = $value unless $no_replace && $Debug_Flag;
+	}
+	elsif ($variable eq "no_prompt") {
+		$No_Prompt = $value unless $no_replace && $No_Prompt;
+	}
+	elsif ($variable eq "timeout") {
+		$Timeout = $value unless $no_replace && $Timeout;
+	}
+	elsif ($variable eq "config_file") {
+		$Config_File = $value unless $no_replace && $Config_File;
+	}
+	else {
+		print "unknown variable\n";
+	}
+}
+
+sub cmd_read_config_file {
+	my $file = shift;
+
+	my $config = [];
+	$file = $Config_File unless $file; 
+	local *IN;
+	if (!open(IN, $file)) {
+		print "cannot open $file\n";
+		return $config;
+	}
+
+	my @config_file = <IN>;
+	close IN;
+	push @config_file, "\n";
+	chomp @config_file;
+
+	for my $line (@config_file) {
+		next if /\s*#/;
+
+		if ($line =~ /\S/) {
+			$line =~ s/^\s*//;
+			$line =~ s/\s*$//;
+			push @$config, $line;
+			next;
+		}
+	}
+	return $config;
+}
+
+sub cmd_write_config_file {
+	my $file = shift;
+
+	$file = $Config_File unless $file; 
+	local *OUT;
+	if (!open(OUT, ">$file")) {
+		print "cannot open $file\n";
+		return 0;
+	}
+
+	my $oldfh = select OUT;
+	cmd_list();
+	close OUT;
+	select $oldfh;
+
+	return 1;
+}
+
+sub net_interface_up {
+	my $cidr = shift;
+
+	# cidr is net/bits
+	my($net, $nbits) = split(/\//, $cidr);
+
+	# compute the network number
+	my $netnum = netnum($net, $nbits);
+	local(*INTERFACE);
+	open(INTERFACE, "ifconfig|") || die "cannot run ifconfig - $!\n";
+
+	my $interface = "";
+	my @interface = <INTERFACE>;
+	close INTERFACE;
+	for  (@interface) {
+		chomp;
+
+		# new interface
+		if (/^[a-zA-Z]/) {
+			if ($interface =~ /(.*)      Link.*P-t-P:(.*)  Mask/) {
+				my $interface_name = $1;
+				my $ip = $2;
+				return $interface_name
+					if netnum($ip, $nbits) == $netnum;
+			}
+			$interface = "";
+		}
+		$interface .= $_;
+	}
+	return "";
+}
+
+sub netnum {
+	my $net = shift;
+	my $bits = shift;
+
+	my @octets = split(/\./, $net);
+	my $netnum = 0;
+	for my $octet (@octets) {
+		$netnum <<= 8;
+		$netnum |= $octet;
+	}
+
+	my $mask = 0;
+	for (1..$bits) {
+		$mask <<= 1;
+		$mask |= 1;
+	}
+	$mask = $mask << (32-$bits);
+
+	$netnum &= $mask;
+
+	return $netnum;
+}

+ 255 - 0
net-dialup/pptpclient/files/xpptp_fe.pl

@@ -0,0 +1,255 @@
+#!/usr/bin/perl -w
+#
+#   $Id: xpptp_fe.pl.pl,v 1.1 2001/11/29 05:19:10 quozl Exp $
+#
+#   xpptp_fe.pl.pl, graphical user interface for PPTP configuration
+#   Copyright (C) 2001  Smoot Carl-Mitchell (smoot@tic.com)
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+use Tk;
+use Tk::DirTree;
+
+=pod
+TK driver for pptp_fe.pl command script
+=cut
+
+=pod
+Global flags which correspnd to the pptp_fe.pl flags and options
+=cut
+
+my $Debug = 0;
+my $Debug_Flag = "";
+my $Network = "";
+my $Server = "";
+my $Routes = "";
+my $Get_Current_Config = 0;
+
+=pod
+
+Start up pptp_fe.pl and connect its input and output to the TK frontend.
+All I/O is done in raw mode, so the reads and writes are atomic and
+unbuffered.
+
+=cut
+
+pipe OUTPUT_READ, OUTPUT_WRITE;
+pipe COMMAND_READ, COMMAND_WRITE;
+
+my $Child_Pid = fork();
+die "cannot fork - $!\n" if $Child_Pid == -1;
+
+if ($Child_Pid) { # parent
+	close OUTPUT_WRITE;
+	close COMMAND_READ;
+}
+else { # child
+	close OUTPUT_READ;
+	close COMMAND_WRITE;
+
+	open(STDIN, "<&COMMAND_READ");
+	open(STDOUT, ">&OUTPUT_WRITE");
+	
+	exec("pptp_fe.pl -p");
+}
+
+=pod
+The main window which present the various pptp_fe.pl options.
+
+The window is composed of:
+
+		Server name
+		Network number
+		Routes
+Connect Button Disconnect Button Write Config Button Quit Button
+=cut
+
+my $Main = MainWindow->new();
+$Main->Label(-text => "PPTP")->pack;
+
+my $Server_Frame = $Main->Frame->pack(-fill => 'x',
+	-padx => 5,
+	-pady => 5);
+
+$Server_Frame->Label(-text => "Remote PPTP Host")->pack(-side => "left");
+$Server_Frame->Entry(
+	-text => "Host",
+	-width => 30,
+	-textvariable => \$Server,
+	)->pack(-side => "left");
+
+
+my $Net_Frame = $Main->Frame->pack(-fill => 'x',
+	-padx => 5,
+	-pady => 5);
+
+=pod
+Network number entry box.  This is the argument to the the -n flag
+=cut
+
+$Net_Frame->Label(-text => "Network Number")->pack(-side => "left");
+$Net_Frame->Entry(
+	-text => "Network",
+	-width => 15,
+	-textvariable => \$Network,
+	)->pack(-side => "left");
+
+=pod
+Additional static routes (-r) flag
+=cut
+
+my $Route_Frame = $Main->Frame->pack(
+	-fill => 'x',
+	-padx => 5,
+	-pady => 5);
+
+$Route_Frame->Label(-text => "Routes")->pack(-side => "left");
+
+$Route_Frame->Entry(
+	-text => "Routes",
+	-width => 30,
+	-textvariable => \$Routes
+	)->pack(
+		-side => "left",
+		-padx => 5,
+		-pady => 5);
+
+=pod
+Buttons
+
+Connect - Connect to a remote PPTP server
+
+Disconnect - Disconnect from the remote PPTP server
+
+Write - Write a configuration file
+
+Quit - Terminates the running pptp daemon and pptp_fe.pl program.
+=cut
+
+my $Button_Frame = $Main->Frame->pack(-fill => 'x', -pady => 5);
+ 
+my $Disconnect_Button;
+my $Connect_Button;
+my $Read_Button;
+my $Write_Button;
+my $Quit_Button;
+
+$Connect_Button = $Button_Frame->Button(
+	-text => "Connect",
+	-command =>
+		sub {
+			update_config();
+			syswrite(COMMAND_WRITE, "c\n");
+
+			$Connect_Button->configure(-state => "disabled");
+			$Disconnect_Button->configure(-state => "normal");
+		},
+	)->pack(-side => "left", -pady => 5, -padx => 5);
+
+$Disconnect_Button = $Button_Frame->Button(
+	-text => "Disconnect",
+	-state => "disabled",
+	-command =>
+		sub {
+			syswrite(COMMAND_WRITE, "d\n");
+
+			$Connect_Button->configure(-state => "normal");
+			$Disconnect_Button->configure(-state => "disabled");
+		}
+	)->pack(-side => "left", -pady => 5, -padx => 5);
+
+$Write_Button = $Button_Frame->Button(
+	-text => "Write Config",
+	-command =>
+		sub {
+			syswrite(COMMAND_WRITE, "w\n");
+
+		}
+	)->pack(-side => "left", -pady => 5, -padx => 5);
+
+$Quit_Button = $Button_Frame->Button(
+	-text => "Quit",
+	-command =>
+		sub {
+			syswrite(COMMAND_WRITE, "q\n");
+
+			$Connect_Button->configure(-state => "disabled");
+			$Disconnect_Button->configure(-state => "disabled");
+			$Quit_Button->configure(-state => "disabled");
+		}
+	)->pack(-side => "left", -pady => 5, -padx => 5);
+
+my $Log_Window = $Main->Toplevel;
+$Log_Window->title("PPTP Log");
+
+my $Log_Widget = $Log_Window->Text(
+	-height => 20,
+	-width => 80,
+	)->pack;
+
+
+$Log_Widget->fileevent(OUTPUT_READ, "readable", sub {
+	my $in = "";
+	my $n = sysread(OUTPUT_READ, $in, 1024);
+	if ($n == 0) {
+		close OUTPUT_READ;
+		$Main->destroy;
+		exit 0;
+	}
+
+	if (!$Get_Current_Config) {
+		$Log_Widget->insert("end", $in);
+		$Log_Widget->see("end");
+	}
+	else {
+		$Get_Current_Config = 0;
+
+		for my $line (split("\n", $in)) {
+			next unless $line =~ /\S/;
+
+			my ($variable, $value) = split(/\s*=\s*/, $line);
+			$variable = "\L$variable";
+
+			if ($variable eq "server") {
+				$Server = $value;
+			}
+			elsif ($variable eq "network") {
+				$Network = $value;
+			}
+			elsif ($variable eq "routes") {
+				$Routes = $value;
+			}
+			elsif ($variable eq "debug") {
+				$Debug = $value;
+			}
+		}
+	}
+
+	return 1;
+});
+
+syswrite(COMMAND_WRITE, "l\n");
+$Get_Current_Config = 1;
+
+MainLoop;
+
+sub update_config {
+
+	syswrite(COMMAND_WRITE, "s server = $Server\n");
+	syswrite(COMMAND_WRITE, "s network = $Network\n");
+	syswrite(COMMAND_WRITE, "s routes = $Routes\n");
+	syswrite(COMMAND_WRITE, "s debug = $Debug_Flag\n");
+}

+ 9 - 0
net-dialup/pptpclient/metadata.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+  <!-- maintainer-needed -->
+  <longdescription>PPTP Client is a client for the proprietary Microsoft Point-to-Point Tunneling Protocol.</longdescription>
+  <upstream>
+    <remote-id type="sourceforge">pptpclient</remote-id>
+  </upstream>
+</pkgmetadata>

+ 47 - 0
net-dialup/pptpclient/pptpclient-1.10.0.ebuild

@@ -0,0 +1,47 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs
+
+MY_P="${P/client}"
+MY_CMD="pptp-command-20130515"
+
+DESCRIPTION="Linux client for PPTP"
+HOMEPAGE="http://pptpclient.sourceforge.net/"
+SRC_URI="mirror://sourceforge/pptpclient/${MY_P}.tar.gz
+	https://dev.gentoo.org/~pinkbyte/distfiles/pptpclient/${MY_CMD}.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+IUSE="tk"
+
+DEPEND="net-dialup/ppp
+	dev-lang/perl
+	tk? ( dev-perl/Tk )"
+RDEPEND="${DEPEND}
+	sys-apps/iproute2"
+
+RESTRICT="test" #make test is useless and vector_test.c is broken
+
+S="${WORKDIR}/${MY_P}"
+
+DOCS=( AUTHORS ChangeLog DEVELOPERS NEWS README TODO USING )
+
+src_compile() {
+	emake OPTIMISE= DEBUG= CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)"
+}
+
+src_install() {
+	default
+	dodoc Documentation/*
+	dodir /etc/pptp.d
+
+	# The current version of pptp-linux doesn't include the
+	# RH-specific portions, so include them ourselves.
+	newsbin "${WORKDIR}/${MY_CMD}" pptp-command
+	dosbin "${FILESDIR}/pptp_fe.pl"
+	use tk && dosbin "${FILESDIR}/xpptp_fe.pl"
+}

+ 0 - 1
net-im/skypeforlinux/Manifest

@@ -1,2 +1 @@
-DIST skypeforlinux_8.15.76.2-1.x86_64.rpm 104946250 SHA256 59e165bf1459f915b1facc141194d79c4545f28fcb295c43f0486c0a4a1f8464 SHA512 a6ac8c57931e2b7b90324edda709677910ded398244923dced28043c9668a3365a7d3c316ac8aa6447f64bef926b8436a08445137de04d93054f1404b9d399a6 WHIRLPOOL c04b6616454255371349ecb96ed497bdf3afd1a7c5d0ea77c42355491cc86de673a0d0af6182a61c5c2f2a805383e46828b85f0e20ae12a51f6e334f9cd7f1e1
 DIST skypeforlinux_8.15.76.7-1.x86_64.rpm 104949172 SHA256 3e7dc69127b9346b4777e4085121994a231a4268e30653da3f700cabacbf557f SHA512 11538ead702964e49c31c093b3db647f0cbaa2505153ce8a40e6128d8da46256e5be4d70cecc172d1be9237204ed9e1ff71b4069cd635104f3ca4abc1e946acd WHIRLPOOL 02b5bb86bcad24cb0258910f258c99e603d935a0f92876f3919cee34fe3e3e98bbc9c59f75a26478fd7ead02fb407949a5b3b926100d5db4a659bbc4b7064b8a