45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import argparse
|
|
import sys
|
|
import RNS
|
|
from .common import setup_reticulum
|
|
from .server import run_server
|
|
from .client import run_client
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Reticulum Proxynet")
|
|
|
|
group = parser.add_mutually_exclusive_group(required=True)
|
|
group.add_argument("--server", action="store_true", help="Run in server mode")
|
|
group.add_argument("--client", action="store_true", help="Run in client mode")
|
|
|
|
parser.add_argument("--port", type=int, default=1080, help="Local port for SOCKS5 proxy (client mode only)")
|
|
parser.add_argument("--identity", type=str, default="proxynet", help="Identity name")
|
|
parser.add_argument("--preferred", type=str, help="Preferred server destination hashes (comma-separated)")
|
|
parser.add_argument("--config", type=str, help="Path to Reticulum config directory")
|
|
parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase verbosity")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.verbose == 1:
|
|
loglevel = RNS.LOG_INFO
|
|
elif args.verbose == 2:
|
|
loglevel = RNS.LOG_VERBOSE
|
|
elif args.verbose >= 3:
|
|
loglevel = RNS.LOG_DEBUG
|
|
else:
|
|
loglevel = RNS.LOG_NOTICE
|
|
|
|
setup_reticulum(args.config, loglevel)
|
|
|
|
try:
|
|
if args.server:
|
|
run_server(args.identity)
|
|
else:
|
|
run_client(args.port, args.identity, args.preferred)
|
|
except KeyboardInterrupt:
|
|
sys.exit(0)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|