Initial Debian packaging; rm src/win32/#winService.cpp#
authorMichael Prokop <mika@grml.org>
Fri, 29 May 2009 20:08:51 +0000 (22:08 +0200)
committerMichael Prokop <mika@grml.org>
Fri, 29 May 2009 20:08:51 +0000 (22:08 +0200)
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/postinst [new file with mode: 0755]
debian/postrm [new file with mode: 0755]
debian/rules [new file with mode: 0755]
src/win32/#winService.cpp# [deleted file]

diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..91e7048
--- /dev/null
@@ -0,0 +1,6 @@
+anytun (0.3-1) unstable; urgency=low
+
+  * Initial release. [Closes: #531077]
+
+ -- Michael Prokop <mika@debian.org>  Fri, 29 May 2009 21:31:21 +0200
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..689e7a1
--- /dev/null
@@ -0,0 +1,27 @@
+Source: anytun
+Section: net
+Priority: extra
+Maintainer: Michael Prokop <mika@debian.org>
+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 (file)
index 0000000..66bc1c6
--- /dev/null
@@ -0,0 +1,32 @@
+This package was debianized by Michael Prokop <mika@debian.org> on
+Fri, 29 May 2009 11:23:42 +0200.
+
+It was downloaded from <http://www.anytun.org/>
+
+Upstream Author: Othmar Gsenger <otti@anytun.org>
+                Erwin Nindl <nine@anytun.org>
+                Christian Pointner <equinox@anytun.org>
+
+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 <mika@debian.org> and
+is licensed under the GPL, see above.
diff --git a/debian/postinst b/debian/postinst
new file mode 100755 (executable)
index 0000000..6fe7cc6
--- /dev/null
@@ -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 (executable)
index 0000000..cbb8c6d
--- /dev/null
@@ -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 (executable)
index 0000000..210dbc7
--- /dev/null
@@ -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 (file)
index 5406c2d..0000000
+++ /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 <satp@wirdorange.org>
- *
- *  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 <http://www.gnu.org/licenses/>.
- */
-
-#ifdef WIN_SERVICE
-
-#include <iostream>
-
-#include <windows.h>
-
-#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