| import sys |
| import logging |
| from pvpn.server import main |
|
|
| |
| logging.basicConfig(level=logging.INFO, stream=sys.stdout, |
| format='%(asctime)s - %(levelname)s - %(message)s') |
|
|
| def start_ikev2_server_programmatically(): |
| """ |
| Starts a pure Python IKEv2 server using the pvpn library. |
| |
| This is designed to run inside a container where permissions |
| to bind to privileged ports (500/4500) have been pre-granted |
| to the Python executable via setcap. |
| """ |
| |
| |
| original_argv = sys.argv |
| sys.argv = [ |
| "pvpn", |
| "-p", "MySecretPSK123", |
| ] |
| |
| print("Starting pure Python IKEv2 VPN server...") |
| print("PSK: MySecretPSK123") |
| print("Listening on UDP ports 500 and 4500.") |
| |
| try: |
| |
| main() |
| except KeyboardInterrupt: |
| print("\nServer stopped by user.") |
| except Exception as e: |
| |
| print(f"An unexpected error occurred: {e}") |
| finally: |
| |
| sys.argv = original_argv |
|
|
| if __name__ == '__main__': |
| start_ikev2_server_programmatically() |
|
|