Files
DragonCoreSSH-Beta/openvpn.php
2025-11-24 21:29:17 -03:00

240 lines
5.6 KiB
PHP

<?php
function ovpnin()
{
echo "apt-get install openvpn iptables easy-rsa openssl ca-certificates zip -y";
}
function setupOpenVPN()
{
$pl = exec("find /usr -type f -name 'openvpn-plugin-auth-pam.so'");
$openVPNPath = "/etc/openvpn";
$GROUPNAME = "nogroup";
$porta = 1194;
$PROTOCOL = "tcp";
mkdir("$openVPNPath/easy-rsa/");
chdir("$openVPNPath/easy-rsa/");
exec("chown -R root:root $openVPNPath/easy-rsa/");
exec("ln -s /usr/share/easy-rsa/* $openVPNPath/easy-rsa/");
exec("./easyrsa init-pki");
exec("./easyrsa --batch build-ca nopass");
exec("./easyrsa gen-dh");
exec("./easyrsa build-server-full server nopass");
exec("./easyrsa build-client-full DragonCore nopass");
exec("./easyrsa gen-crl");
exec("cp pki/ca.crt pki/private/ca.key pki/dh.pem pki/issued/server.crt pki/private/server.key $openVPNPath/easy-rsa/pki/crl.pem $openVPNPath");
exec("chown nobody:$GROUPNAME $openVPNPath/crl.pem");
exec("openvpn --genkey --secret $openVPNPath/ta.key");
$configContent = "
port $porta
proto $PROTOCOL
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push \"redirect-gateway def1 bypass-dhcp\"
push \"dhcp-option DNS 8.8.8.8\"
push \"dhcp-option DNS 8.8.8.8\"
keepalive 10 120
float
cipher AES-256-CBC
comp-lzo yes
user nobody
group $GROUPNAME
persist-key
persist-tun
status openvpn-status.log
management 127.0.0.1 7505
verb 3
crl-verify crl.pem
client-to-client
verify-client-cert none
username-as-common-name
plugin $pl login
duplicate-cn";
file_put_contents("$openVPNPath/server.conf", $configContent);
exec("systemctl stop openvpn");
exec("systemctl disable openvpn");
}
function ipv4()
{
echo "echo 'net.ipv4.ip_forward=1' >>/etc/sysctl.conf";
}
function ipv42()
{
echo "echo 1 >/proc/sys/net/ipv4/ip_forward";
}
function client()
{
$openVPNPath = "/etc/openvpn";
$configContent = "#OVPN_ACCESS_SERVER_PROFILE=[DragonCoreSSH]
client
dev tun
proto tcp
sndbuf 0
rcvbuf 0
remote 127.0.0.1 1194
resolv-retry 5
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
comp-lzo yes
setenv opt block-outside-dns
key-direction 1
verb 3
auth-user-pass
keepalive 10 120
float";
file_put_contents("$openVPNPath/client-common.txt", $configContent);
}
function client2()
{
copy('/etc/openvpn/client-common.txt', "/root/DragonCore.ovpn");
$file = fopen("/root/DragonCore.ovpn", "a");
fwrite($file, "\n<ca>\n");
fwrite($file, file_get_contents('/etc/openvpn/easy-rsa/pki/ca.crt'));
fwrite($file, "</ca>\n");
fwrite($file, "<cert>\n");
fwrite($file, file_get_contents("/etc/openvpn/easy-rsa/pki/issued/DragonCore.crt"));
fwrite($file, "</cert>\n");
fwrite($file, "<key>\n");
fwrite($file, file_get_contents("/etc/openvpn/easy-rsa/pki/private/DragonCore.key"));
fwrite($file, "</key>\n");
fwrite($file, "<tls-auth>\n");
fwrite($file, file_get_contents("/etc/openvpn/ta.key"));
fwrite($file, "</tls-auth>\n");
fclose($file);
}
function checkinstall()
{
$install = exec("openvpn --version | grep -q OpenVPN && echo \"1\" || echo \"0\"");
if ("$install" == "1") {
echo "OK";
} else {
echo "NOK";
}
}
function checkovpon()
{
$install = exec("screen -list | grep -q openvpn && echo \"1\" || echo \"0\"");
if ("$install" == "1") {
echo "OK";
} else {
echo "NOK";
}
}
function startovpn()
{
fixovpn();
$onoff = shell_exec('screen -list | grep -q openvpn && echo 1 || echo 0');
if ($onoff == 1) {
shell_exec('screen -X -S openvpn quit');
echo "screen -dmS openvpn bash -c 'while true; do ulimit -n 999999 && /opt/DragonCore/iptables.sh && cd /etc/openvpn && openvpn --config /etc/openvpn/server.conf; done'" . "\n" . "echo \"OVPN ON Porta: 1194\"";
} else {
deletecone("open");
incone("open", "null", "null", "null", "null");
echo "screen -dmS openvpn bash -c 'while true; do ulimit -n 999999 && /opt/DragonCore/iptables.sh && cd /etc/openvpn && openvpn --config /etc/openvpn/server.conf; done'" . "\n" . "echo \"OVPN ON Porta: 1194\"";
}
}
function stopovpn()
{
deletecone("open");
shell_exec('screen -X -S openvpn quit');
echo "OVPN Offline";
}
function fixovpn2()
{
$openVPNPath = "/etc/openvpn";
$configContent = "
port 1194
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
push \"redirect-gateway def1 bypass-dhcp\"
push \"dhcp-option DNS 8.8.8.8\"
push \"dhcp-option DNS 8.8.4.4\"
keepalive 10 120
float
cipher AES-256-CBC
comp-lzo yes
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
management localhost 7505
verb 3
crl-verify crl.pem
client-to-client
verify-client-cert none
username-as-common-name
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login
duplicate-cn
";
file_put_contents("$openVPNPath/server.conf", $configContent);
}
function fixovpn()
{
$cake3 = exec("cat /etc/openvpn/client-common.txt | grep -q \"http-proxy\" && echo \"1\" || echo \"0\"");
if ("$cake3" == "1") {
exec("systemctl stop openvpn");
exec("systemctl disable openvpn");
exec("rm -rf /etc/openvpn/client-common.txt");
exec("rm -rf /root/DragonCore.ovpn");
exec("rm -rf /etc/openvpn/server.conf");
client();
client2();
fixovpn2();
}
}