From: Michael Prokop Date: Fri, 29 May 2009 20:08:51 +0000 (+0200) Subject: Initial Debian packaging; rm src/win32/#winService.cpp# X-Git-Tag: v0.3.2-1~12 X-Git-Url: https://git.syn-net.org/debian/?p=anytun.git;a=commitdiff_plain;h=b99e6479ae12bb6b8688a7d6f8dc6e129135ebe7 Initial Debian packaging; rm src/win32/#winService.cpp# --- diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..91e7048 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,6 @@ +anytun (0.3-1) unstable; urgency=low + + * Initial release. [Closes: #531077] + + -- Michael Prokop Fri, 29 May 2009 21:31:21 +0200 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..689e7a1 --- /dev/null +++ b/debian/control @@ -0,0 +1,27 @@ +Source: anytun +Section: net +Priority: extra +Maintainer: Michael Prokop +Build-Depends: debhelper (>= 5), autotools-dev, libgcrypt11-dev, libboost-serialization-dev, libboost-dev, asciidoc, xmlto, liblzo2-dev +Homepage: http://www.anytun.org/ +Vcs-git: git://git.grml.org/anytun.git +Vcs-Browser: http://git.grml.org/?p=anytun.git +Standards-Version: 3.8.1 + +Package: anytun +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Suggests: quagga +Description: secure anycast tunneling protocol + Anytun is an implementation of the secure anycast tunneling protocol. It + uses an easy openvpn style interface and makes it possible to build + redundant VPN clusters with load balancing between servers. VPN servers + share a single IP address. Adding and removing VPN Servers is done by the + routing protocol, so no client changes have to be made when additional VPN + servers are added or removed. It is possible to realise global load + balancing based on shortest BGP routes by simply announcing the address + space of the tunnel servers at multiple locations. + . + Currently ethernet, ipv4 and ipv6 tunnels are supported by the + implementation. However the protocol allows to tunnel every ETHERTYPE + protocol. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..66bc1c6 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,32 @@ +This package was debianized by Michael Prokop on +Fri, 29 May 2009 11:23:42 +0200. + +It was downloaded from + +Upstream Author: Othmar Gsenger + Erwin Nindl + Christian Pointner + +Copyright: 2007-2008 Othmar Gsenger, Erwin Nindl, Christian Pointner + +License: + + 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 3 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL-3'. + +The Debian packaging is © 2009, Michael Prokop and +is licensed under the GPL, see above. diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 0000000..6fe7cc6 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,10 @@ +#!/bin/sh +# postinst script for anytun + +set -e + +if [ -x "/etc/init.d/anytun" ]; then + update-rc.d anytun defaults >/dev/null +fi + +#DEBHELPER# diff --git a/debian/postrm b/debian/postrm new file mode 100755 index 0000000..cbb8c6d --- /dev/null +++ b/debian/postrm @@ -0,0 +1,10 @@ +#!/bin/sh +# postrm script for anytun + +set -e + +if [ "$1" = "purge" ] ; then + update-rc.d anytun remove >/dev/null || exit $? +fi + +#DEBHELPER# diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..210dbc7 --- /dev/null +++ b/debian/rules @@ -0,0 +1,86 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -Os +endif + +config.status: + dh_testdir + # Add here commands to configure the package. + cd src/ && ./configure + +build: build-stamp + +build-stamp: config.status + dh_testdir + + # Add here commands to compile the package. + $(MAKE) --directory=$(CURDIR)/src + cd src/man && $(MAKE) + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) --directory=$(CURDIR)/src distclean + find . -name "*.o" -exec rm {} \; + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs usr/bin usr/sbin usr/share/man/man8 etc/anytun etc/init.d/ + + # Add here commands to install the package into debian/anytun. + #$(MAKE) prefix=$(CURDIR)/debian/anytun/usr install + install $(CURDIR)/src/anytun $(CURDIR)/debian/anytun/usr/sbin/ + install $(CURDIR)/src/anytun-config $(CURDIR)/debian/anytun/usr/bin/ + install $(CURDIR)/src/anytun-controld $(CURDIR)/debian/anytun/usr/bin/ + install $(CURDIR)/src/anytun-showtables $(CURDIR)/debian/anytun/usr/bin/ + # install $(CURDIR)/src/anyrtpproxy/anyrtpproxy $(CURDIR)/debian/anytun/usr/bin/ + cp $(CURDIR)/src/man/*.8 $(CURDIR)/debian/anytun/usr/share/man/man8 + install $(CURDIR)/etc/init.d/anytun $(CURDIR)/debian/anytun/etc/init.d/ + cp -a $(CURDIR)/etc/anytun $(CURDIR)/debian/anytun/etc/ + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/src/win32/#winService.cpp# b/src/win32/#winService.cpp# deleted file mode 100644 index 5406c2d..0000000 --- a/src/win32/#winService.cpp# +++ /dev/null @@ -1,212 +0,0 @@ -/* - * anytun - * - * The secure anycast tunneling protocol (satp) defines a protocol used - * for communication between any combination of unicast and anycast - * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel - * mode and allows tunneling of every ETHER TYPE protocol (e.g. - * ethernet, ip, arp ...). satp directly includes cryptography and - * message authentication based on the methodes used by SRTP. It is - * intended to deliver a generic, scaleable and secure solution for - * tunneling and relaying of packets of any protocol. - * - * - * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl, - * Christian Pointner - * - * This file is part of Anytun. - * - * Anytun is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. - * - * Anytun 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 anytun. If not, see . - */ - -#ifdef WIN_SERVICE - -#include - -#include - -#include "winService.h" -#include "../log.h" -#include "../anytunError.h" -#include "../threadUtils.hpp" - -WinService* WinService::inst = NULL; -Mutex WinService::instMutex; -WinService& gWinService = WinService::instance(); - -WinService& WinService::instance() -{ - Lock lock(instMutex); - static instanceCleaner c; - if(!inst) - inst = new WinService(); - - return *inst; -} - -WinService::~WinService() -{ - if(started_) - CloseHandle(stop_event_); -} - -void WinService::install() -{ - SC_HANDLE schSCManager; - SC_HANDLE schService; - char szPath[MAX_PATH]; - - if(!GetModuleFileNameA(NULL, szPath, MAX_PATH)) - AnytunError::throwErr() << "Error on GetModuleFileName: " << AnytunErrno(GetLastError()); - - schSCManager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS); - if(NULL == schSCManager) - AnytunError::throwErr() << "Error on OpenSCManager: " << AnytunErrno(GetLastError()); - - schService = CreateServiceA(schSCManager, SVC_NAME, SVC_NAME, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, - SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, szPath, NULL, NULL, NULL, NULL, NULL); - if(schService == NULL) { - CloseServiceHandle(schSCManager); - AnytunError::throwErr() << "Error on CreateService: " << AnytunErrno(GetLastError()); - } - - std::cout << "Service installed successfully" << std::endl; - - CloseServiceHandle(schService); - CloseServiceHandle(schSCManager); -} - -void WinService::uninstall() -{ - SC_HANDLE schSCManager; - SC_HANDLE schService; - - schSCManager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS); - if(NULL == schSCManager) - AnytunError::throwErr() << "Error on OpenSCManager: " << AnytunErrno(GetLastError()); - - schService = OpenServiceA(schSCManager, SVC_NAME, SERVICE_ALL_ACCESS); - if(schService == NULL) { - CloseServiceHandle(schSCManager); - AnytunError::throwErr() << "Error on CreateService: " << AnytunErrno(GetLastError()); - } - - if(!DeleteService(schService)) { - CloseServiceHandle(schService); - CloseServiceHandle(schSCManager); - AnytunError::throwErr() << "Error on DeleteService: " << AnytunErrno(GetLastError()); - } - - std::cout << "Service uninstalled successfully" << std::endl; - - CloseServiceHandle(schService); - CloseServiceHandle(schSCManager); -} - -void WinService::start() -{ - SERVICE_TABLE_ENTRY DispatchTable[] = { - {SVC_NAME, (LPSERVICE_MAIN_FUNCTION)WinService::main }, - {NULL, NULL} - }; - - if(!StartServiceCtrlDispatcherA(DispatchTable)) - AnytunError::throwErr() << "Error on StartServiceCtrlDispatcher: " << AnytunErrno(GetLastError()); -} - -void WinService::waitForStop() -{ - if(!started_) - AnytunError::throwErr() << "Service not started correctly"; - - reportStatus(SERVICE_RUNNING, NO_ERROR); - WaitForSingleObject(stop_event_, INFINITE); - reportStatus(SERVICE_STOP_PENDING, NO_ERROR); - cLog.msg(Log::PRIO_NOTICE) << "WinService received stop signal, exitting"; -} - -void WinService::stop() -{ - if(!started_) - AnytunError::throwErr() << "Service not started correctly"; - - reportStatus(SERVICE_STOPPED, NO_ERROR); -} - -int real_main(int argc, char* argv[]); - -VOID WINAPI WinService::main(DWORD dwArgc, LPTSTR *lpszArgv) -{ - if(gWinService.started_) { - cLog.msg(Log::PRIO_ERROR) << "Service is already running"; - return; - } - - gWinService.status_handle_ = RegisterServiceCtrlHandlerA(SVC_NAME, WinService::ctrlHandler); - if(!gWinService.status_handle_) { - cLog.msg(Log::PRIO_ERROR) << "Error on RegisterServiceCtrlHandler: " << AnytunErrno(GetLastError()); - return; - } - gWinService.status_.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - gWinService.status_.dwServiceSpecificExitCode = 0; - gWinService.reportStatus(SERVICE_START_PENDING, NO_ERROR); - gWinService.started_ = true; - - gWinService.stop_event_ = CreateEvent(NULL, true, false, NULL); - if(!gWinService.stop_event_) { - cLog.msg(Log::PRIO_ERROR) << "WinService Error on CreateEvent: " << AnytunErrno(GetLastError()); - gWinService.reportStatus(SERVICE_STOPPED, -1); - return; - } - - real_main(dwArgc, lpszArgv); -} - -VOID WINAPI WinService::ctrlHandler(DWORD dwCtrl) -{ - switch(dwCtrl) { - case SERVICE_CONTROL_STOP: { - gWinService.reportStatus(SERVICE_STOP_PENDING, NO_ERROR); - SetEvent(gWinService.stop_event_); - return; - } - case SERVICE_CONTROL_INTERROGATE: break; - default: break; - } - gWinService.reportStatus(gWinService.status_.dwCurrentState, NO_ERROR); -} - -void WinService::reportStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint) -{ - static DWORD dwCheckPoint = 1; - - status_.dwCurrentState = dwCurrentState; - status_.dwWin32ExitCode = dwWin32ExitCode; - status_.dwWaitHint = dwWaitHint; - - if((dwCurrentState == SERVICE_START_PENDING) || - (dwCurrentState == SERVICE_STOP_PENDING)) - status_.dwControlsAccepted = 0; - else - status_.dwControlsAccepted = SERVICE_ACCEPT_STOP; - - if((dwCurrentState == SERVICE_RUNNING) || - (dwCurrentState == SERVICE_STOPPED)) - status_.dwCheckPoint = 0; - else - status_.dwCheckPoint = dwCheckPoint++; - - SetServiceStatus(status_handle_, &status_); -} - -#endif