|
|
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() |
|
|
|