From 2cdafa11782cce35be40cafa06aa5ff82f783397 Mon Sep 17 00:00:00 2001 From: andresvia Date: Mon, 25 Jul 2016 12:56:14 -0500 Subject: [PATCH] =?UTF-8?q?linting,=20agregando=20excepci=C3=B3n=20para=20?= =?UTF-8?q?portaloas,=20compilando=20binario=20para=20windows=20y=20constr?= =?UTF-8?q?uyendo=20siempre=20con=20gox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .travis.yml | 1 + build.sh | 18 ++++-------- main.go | 84 +++++++++++++++++++++++++++++++---------------------- 4 files changed, 57 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index 3c8df99..5ebc8d9 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ _testmain.go *.prof udpac +udpac_* *.deb *.rpm .vagrant diff --git a/.travis.yml b/.travis.yml index a931562..c017047 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ addons: - rpm before_install: - gem install fpm +- go get github.com/mitchellh/gox deploy: provider: releases api_key: diff --git a/build.sh b/build.sh index 158b832..c258430 100755 --- a/build.sh +++ b/build.sh @@ -1,14 +1,6 @@ #!/bin/bash set -eu -# detect os -if [ "$(uname -sm)" = "Linux x86_64" ] -then - go_build="go build" - artifact="udpac" -else - go_build="gox -os Linux -arch amd64" - artifact="udpac_linux_amd64" -fi +# use gox # vars CURRENT_TAG=$(git tag | tail -n1) VERSION_MAJOR_MINOR="${TRAVIS_TAG:-$CURRENT_TAG}" @@ -20,12 +12,14 @@ rm -rfv packages/* # get pkgs go get -t -v ./... # build -$go_build +gox -os 'Linux Windows' -arch 'amd64 386' +package_artifact="udpac_linux_amd64" +artifacts="udpac_linux_386 udpac_linux_amd64 udpac_windows_386.exe udpac_windows_amd64.exe" # files mkdir -pv package/os/usr/sbin -cp -vf $artifact package/os/usr/sbin/udpac +cp -vf $package_artifact package/os/usr/sbin/udpac # packages and binary mkdir -vp packages -mv $artifact packages/udpac_linux_amd64 +mv $artifacts packages/ fpm --package=packages/ -C package/os -s dir -t deb --name=udpac --version="${VERSION}" --after-install package/after-install --deb-no-default-config-files . fpm --package=packages/ -C package/os -s dir -t rpm --name=udpac --version="${VERSION}" --after-install package/after-install --rpm-os linux . diff --git a/main.go b/main.go index f34925c..5b22837 100644 --- a/main.go +++ b/main.go @@ -16,49 +16,63 @@ var pac = `// ESTE ES EL ARCHIVO PAC/WPAD.DAT DE LA UNIVERSIDAD DISTRITAL function FindProxyForURL(url, host) { -// CUALQUIER PETICION DESDE EL NAVEGADOR A DOMINIOS QUE TERMINEN EN -// .udistrital.edu.co O .udistritaloas.edu.co O .local[domain] NO SE ENVIARA A -// TRAVES DEL PROXY, QUIERE DECIR QUE CONECTARAN DIRECTAMENTE A TRAVES DE LA -// RED LOCAL, SIEMPRE Y CUANDO LOS CLIENTES PUEDAN RESOLVER ESTOS NOMBRES CON -// CONFIGURACION ACTUAL DE DNS Y QUE EXISTA UNA RUTA EN LA RED QUE LOS PUEDA -// CONECTAR ES; DECIR ACTUARA COMO SI EL PROXY SE HUBIERA DESHABILITADO -// MANUALMENTE. ESTA CONDICION SE BASA EN LA DIRECCION QUE SE VISITA EN LA -// BARRA DE DIRECCIONES Y SE EVALUA ANTES DE QUE OCURRA CUALQUIER CONEXION O -// RESOLUCION DE NOMBRE POR PARTE DEL NAVEGADOR + // LA ESTRATEGIA DE FAIL-OVER EN CASO DE QUE NO SE PUEDA ESTABLECER UNA + // CONEXION CON EL PROXY ES HACER CONEXION DIRECTA (DIRECT) + var defaultProxy = "PROXY 10.20.4.15:3128; PROXY proxy.udistrital.edu.co:3128; DIRECT"; - if ( shExpMatch(host, "*.local") || // UN DOMINIO MUY COMUN USADO PARA DESARROLLO - shExpMatch(host, "*.localdomain") || // UN DOMINIO COMUN USADO POR DEFECTO - shExpMatch(host, "*.nip.io") || // NIP ES UN CLON DE XIP - shExpMatch(host, "*.xip.io") || // XIP UN SERVICIO QUE MAPEA DOMINIOS COMODIN - shExpMatch(host, "*.udistrital.edu.co") || // DOMINIO OFICIAL DE LA UNIVERSIDAD - shExpMatch(host, "*.udistritaloas.edu.co") // // DOMINIO OFICIAL DE LA OFICINA ASESORA DE SISTEMAS - ) return "DIRECT"; + // EXCEPCION OFICINA ASESORA DE SISTEMAS + // LA OFICINA ASESORA DE SISTEMAS TIENE UN DOMINIO EL CUAL ES ATENDIDO POR FUERA + // DE LA RED LOCAL, ESTE DEBE REDIRIGIRSE A TRAVES DEL PROXY + if (shExpMatch(host, "*.portaloas.udistrital.edu.co")) { + return defaultProxy; + } -// CUALQUIER PETICION QUE RESUELVA EL NOMBRE DNS A UNA IP LOCAL (ES DECIR -// CUALQUIER IP DEL ESPACIO PRIVADO DE IPV4) NO SERA ENVIADA A TRAVES DEL PROXY + // CUALQUIER PETICION DESDE EL NAVEGADOR A DOMINIOS QUE TERMINEN EN + // .udistrital.edu.co O .udistritaloas.edu.co O .local[domain] NO SE ENVIARA A + // TRAVES DEL PROXY, QUIERE DECIR QUE CONECTARAN DIRECTAMENTE A TRAVES DE LA + // RED LOCAL, SIEMPRE Y CUANDO LOS CLIENTES PUEDAN RESOLVER ESTOS NOMBRES CON + // CONFIGURACION ACTUAL DE DNS Y QUE EXISTA UNA RUTA EN LA RED QUE LOS PUEDA + // CONECTAR ES; DECIR ACTUARA COMO SI EL PROXY SE HUBIERA DESHABILITADO + // MANUALMENTE. ESTA CONDICION SE BASA EN LA DIRECCION QUE SE VISITA EN LA + // BARRA DE DIRECCIONES Y SE EVALUA ANTES DE QUE OCURRA CUALQUIER CONEXION O + // RESOLUCION DE NOMBRE POR PARTE DEL NAVEGADOR + // LAS EXCEPCIONES A ESTA REGLA GENERAL DEBERÁN INSERTARSE ANTES DE ESTO - var resolved_ip = dnsResolve(host); - if ( isInNet(resolved_ip, "10.0.0.0", "255.0.0.0") || // UNA RED DE CLASE A - isInNet(resolved_ip, "172.16.0.0", "255.240.0.0") || // 16 REDES DE CLASE B - isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") || // 256 REDES DE CLASE C - isInNet(resolved_ip, "169.254.0.0", "255.255.0.0") || // LINK-LOCAL RFC3927 - isInNet(resolved_ip, "192.0.2.0", "255.255.255.0") || // TEST-NET RFC3330 - isInNet(resolved_ip, "127.0.0.0", "255.0.0.0") // // LOOPBACK - ) return "DIRECT"; + if (shExpMatch(host, "*.local") || // UN DOMINIO MUY COMUN USADO PARA DESARROLLO + shExpMatch(host, "*.localdomain") || // UN DOMINIO COMUN USADO POR DEFECTO + shExpMatch(host, "*.nip.io") || // NIP ES UN CLON DE XIP + shExpMatch(host, "*.xip.io") || // XIP UN SERVICIO QUE MAPEA DOMINIOS COMODIN + shExpMatch(host, "*.udistrital.edu.co") || // DOMINIO OFICIAL DE LA UNIVERSIDAD + shExpMatch(host, "*.udistritaloas.edu.co") // DOMINIO NO OFICIAL DE LA OFICINA ASESORA DE SISTEMAS + ) { + return "DIRECT"; + } -// CUALQUIER PETICION ENVIADA A UN HOST NO CALIFICADO (POR EJEMPLO http://www/ O -// https://mail/) NO SERA ENVIADA A TRAVES DEL PROXY + // CUALQUIER PETICION QUE RESUELVA EL NOMBRE DNS A UNA IP LOCAL (ES DECIR + // CUALQUIER IP DEL ESPACIO PRIVADO DE IPV4) NO SERA ENVIADA A TRAVES DEL PROXY + // LAS EXCEPCIONES A ESTA REGLA GENERAL DEBERÁN INSERTARSE ANTES DE ESTO - if ( isPlainHostName(host) ) return "DIRECT"; + var resolved_ip = dnsResolve(host); + if (isInNet(resolved_ip, "10.0.0.0", "255.0.0.0") || // UNA RED DE CLASE A + isInNet(resolved_ip, "172.16.0.0", "255.240.0.0") || // 16 REDES DE CLASE B + isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") || // 256 REDES DE CLASE C + isInNet(resolved_ip, "169.254.0.0", "255.255.0.0") || // LINK-LOCAL RFC3927 + isInNet(resolved_ip, "192.0.2.0", "255.255.255.0") || // TEST-NET RFC3330 + isInNet(resolved_ip, "127.0.0.0", "255.0.0.0") // LOOPBACK + ) { + return "DIRECT"; + } + // CUALQUIER PETICION ENVIADA A UN HOST NO CALIFICADO (POR EJEMPLO http://www/ O + // https://mail/) NO SERA ENVIADA A TRAVES DEL PROXY -// SI NINGUNA DE LAS ANTERIORES CONDICIONES ANTERIORES APLICAN SE USARA PROXY. -// LA ESTRATEGIA DE FAIL-OVER EN CASO DE QUE NO SE PUEDA ESTABLECER UNA -// CONEXION CON EL PROXY ES HACER CONEXION DIRECTA + if (isPlainHostName(host)) { + return "DIRECT"; + } - return "PROXY proxy.udistrital.edu.co:3128; DIRECT"; + // SI NINGUNA DE LAS ANTERIORES CONDICIONES ANTERIORES APLICAN SE USARA EL PROXY + // POR DEFECTO + return defaultProxy; -// ESTE ES UN EJEMPLO QUE HACE FAIL-OVER CON UN PROXY DE BACKUP -// return "PROXY proxy.udistrital.edu.co:3128; PROXY proxybkp.udistrital.edu.co:3128; DIRECT"; } // FIN`