From 6a7c7c1af2fc2e3e1bbe2bb86c1839060c869151 Mon Sep 17 00:00:00 2001 From: Nikolay Borodin Date: Thu, 19 Oct 2023 11:21:27 +0000 Subject: [PATCH] App rebranding --- .gitlab-ci.yml | 12 +-- README.md | 24 +++-- build.xml | 14 +-- default.dat | 82 +++++++--------- misc/{P2PVPN.exe => Lanemu.exe} | Bin 43520 -> 35328 bytes misc/{p2pvpn-pkexec => lanemu-pkexec} | 2 +- misc/run_p2pvpn.bat | 9 -- native/appIndicator/tray.c | 8 +- native/appIndicator/tray.h | 8 +- .../tapLinux/org_p2pvpn_tuntap_TunTapLinux.c | 20 ++++ .../tapLinux/org_p2pvpn_tuntap_TunTapLinux.h | 20 ++++ .../org_p2pvpn_tuntap_TunTapWindows.c | 9 +- .../org_p2pvpn_tuntap_TunTapWindows.h | 20 ++++ repo/screenshot.png | Bin 14956 -> 14956 bytes resources/images/lanemu-64.png | Bin 0 -> 4849 bytes resources/images/lanemu.svg | 90 ++++++++++++++++++ src/org/p2pvpn/Defaults.java | 10 +- src/org/p2pvpn/Main.java | 27 +++--- src/org/p2pvpn/Version.java | 8 +- src/org/p2pvpn/gui/AcceptWindow.java | 9 +- src/org/p2pvpn/gui/AppIndicatorTrayIcon.java | 10 +- src/org/p2pvpn/gui/ChatWindow.java | 9 +- src/org/p2pvpn/gui/IPTableModel.java | 9 +- src/org/p2pvpn/gui/InfoWindow.form | 4 +- src/org/p2pvpn/gui/InfoWindow.java | 15 +-- src/org/p2pvpn/gui/InviteWindow.java | 9 +- src/org/p2pvpn/gui/MainControl.java | 19 ++-- src/org/p2pvpn/gui/MainWindow.form | 2 +- src/org/p2pvpn/gui/MainWindow.java | 27 +++--- src/org/p2pvpn/gui/NewNetwork.java | 9 +- src/org/p2pvpn/gui/OptionWindow.java | 9 +- src/org/p2pvpn/gui/PeerGraph.java | 9 +- src/org/p2pvpn/gui/PeerListCellRenderer.java | 9 +- src/org/p2pvpn/gui/PeerListModel.java | 9 +- src/org/p2pvpn/gui/PeerTableModel.java | 9 +- src/org/p2pvpn/network/ConnectionManager.java | 11 ++- src/org/p2pvpn/network/Connector.java | 9 +- src/org/p2pvpn/network/ConnectorListener.java | 9 +- .../network/InternalPacketListener.java | 8 +- src/org/p2pvpn/network/MacAddress.java | 9 +- src/org/p2pvpn/network/P2PConnection.java | 9 +- src/org/p2pvpn/network/PeerID.java | 9 +- src/org/p2pvpn/network/Pinger.java | 9 +- src/org/p2pvpn/network/Router.java | 9 +- .../p2pvpn/network/RoutungTableListener.java | 9 +- src/org/p2pvpn/network/TCPConnection.java | 11 ++- src/org/p2pvpn/network/UPnPPortForward.java | 9 +- .../network/UPnPPortForwardListener.java | 9 +- src/org/p2pvpn/network/VPNConnector.java | 9 +- .../network/bandwidth/MeasureBandwidth.java | 9 +- .../network/bandwidth/SlidingAverage.java | 9 +- .../p2pvpn/network/bandwidth/TokenBucket.java | 9 +- .../network/bittorrent/BitTorrentTracker.java | 9 +- .../p2pvpn/network/bittorrent/Contact.java | 9 +- src/org/p2pvpn/network/bittorrent/DHT.java | 9 +- .../network/bittorrent/bencode/Bencode.java | 9 +- .../bittorrent/bencode/BencodeInt.java | 9 +- .../bittorrent/bencode/BencodeList.java | 9 +- .../bittorrent/bencode/BencodeMap.java | 9 +- .../bittorrent/bencode/BencodeObject.java | 9 +- .../bittorrent/bencode/BencodeString.java | 9 +- src/org/p2pvpn/tools/AdvProperties.java | 9 +- src/org/p2pvpn/tools/CryptoUtils.java | 8 +- src/org/p2pvpn/tools/SocketAddrStr.java | 8 +- src/org/p2pvpn/tools/VersionizedMap.java | 9 +- src/org/p2pvpn/tuntap/TunTap.java | 9 +- src/org/p2pvpn/tuntap/TunTapLinux.java | 11 ++- src/org/p2pvpn/tuntap/TunTapWindows.java | 11 ++- .../org/p2pvpn/tools/TestAdvProperties.java | 8 +- 69 files changed, 512 insertions(+), 328 deletions(-) rename misc/{P2PVPN.exe => Lanemu.exe} (56%) rename misc/{p2pvpn-pkexec => lanemu-pkexec} (70%) delete mode 100644 misc/run_p2pvpn.bat create mode 100644 resources/images/lanemu-64.png create mode 100644 resources/images/lanemu.svg diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9ce09d6..6db191d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,10 +6,9 @@ deploy:jdk8: stage: deploy artifacts: paths: - - build/P2PVPN.jar - - build/P2PVPN.exe - - build/run_p2pvpn.bat - - build/p2pvpn-pkexec + - build/Lanemu.jar + - build/Lanemu.exe + - build/lanemu-pkexec - build/lib/*.jar - build/clib/*.so - build/clib/*.dll @@ -35,7 +34,6 @@ deploy:jdk8: - cd .. && cd .. - cp native/tapWindows/dist/Release/* clib/ - ant - - cp misc/P2PVPN.exe build/P2PVPN.exe - - cp misc/run_p2pvpn.bat build/run_p2pvpn.bat - - cp misc/p2pvpn-pkexec build/p2pvpn-pkexec + - cp misc/Lanemu.exe build/Lanemu.exe + - cp misc/lanemu-pkexec build/lanemu-pkexec diff --git a/README.md b/README.md index 0ddc36b..c143368 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,37 @@ -# P2P VPN +# Lanemu -A P2P VPN fork, originally created by Wolfgang Ginolas (http://www.p2pvpn.org/). +![Logo](resources/images/lanemu.svg){width=128px} + +Lanemu is a fork of P2PVPN, originally created by Wolfgang Ginolas (http://www.p2pvpn.org/). ![Screenshot](repo/screenshot.png) # How to use 1. On Windows, install the TAP-Win32 Adapter OAS driver by running `add_driver.bat` in the driver directory (preferably as administrator). -2. Run `P2PVPN.exe`. +2. Run `Lanemu.exe`. -If running on Linux, the application needs to be run as root via `sudo java -jar P2PVPN.jar` or `p2pvpn-pkexec`. +If running on Linux, the application needs to be run as root via `sudo java -jar Lanemu.jar` or `lanemu-pkexec`. + +If you don't want to run the application as root, you can alternatively give the CAP_NET_ADMIN capability to java interpeter. + +``` +sudo setcap cap_net_admin=eip /path/to/java +``` + +Then you can run Lanemu as a normal user without `sudo`. + +When you start the application, you will be prompted to configure the tap interface via `ifconfig` which requires root privileges. # Running in the background ``` -sudo java -jar P2PVPN.jar --headless --access=access.dat --name=Supernode --port=2103 --vpn.ip=10.6.10.10 --vpn.mask=255.255.0.0 +java -jar Lanemu.jar --headless --access=access.dat --name=Supernode --port=2103 --vpn.ip=10.6.10.10 --vpn.mask=255.255.0.0 ``` where `access.dat` is a _private_ invitation. -Run P2PVPN with the `--help` parameter for extra documentation. +Run Lanemu with the `--help` parameter for extra documentation. # Creating a network diff --git a/build.xml b/build.xml index 28ef2d2..64ab3cf 100644 --- a/build.xml +++ b/build.xml @@ -3,23 +3,23 @@ - + @@ -65,7 +65,7 @@ - + @@ -96,7 +96,7 @@ - + diff --git a/default.dat b/default.dat index 59fb02c..3594aff 100644 --- a/default.dat +++ b/default.dat @@ -1,53 +1,41 @@ #============================== -#Wed Oct 18 14:42:39 EET 2023 -access.expiryDate=none -access.publicKey.0=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs29OCP/9RuTIWaavuk49H1auCw2RInT/ -access.publicKey.1=atZGCYS76pVPkc2kB14o7gR42cmWBN6euMaD1QNPWZpoVDz9TKLpSV2wam2Py0S90ldCzXGCHZYs -access.publicKey.2=8BP/IyLmdLPzu4A33vh2AKTuUW+HmMedRWT9refP3mHeVWBEOLFS5Mp1eGV7sVDjq+SGvmaMtQGw -access.publicKey.3=K619zG4jC0PiRmaRs+eesnmoN8znnFxO0k+mwpLwG8EWbmVsyz3nRB2vwzUuLHOwWAH7MSutkIoZ -access.publicKey.4=/yrFqdc22/emXC2jaywJauBMy6LMscoFW2zjZNS3CwbpsRnXp+F0kvhxJHOUnyutaYAQCrDsGS9n -access.publicKey.5=u2xP4wIDAQAB -access.signature.0=YoMJsAwoXvnjf3DjPZYtxp235VJPgZjcPliBC7Kb2jQYx6Cs+t28WDJcExsTfQeubsgwYnWJ+uFE -access.signature.1=IJREkPZV9q9mntaJUVYEP6zYZEI6ooeJ1mWITOk4pMnyq3sR75Jq8K6fPAtbEY88yM8hJmZqkGbY -access.signature.2=8br/KHosFl7XLqY64uskHDHJWkVP9rUyM1rlx1dbjeK9HD1F7sInT0AgY5iB+ENgBFeUz7VWVQFT -access.signature.3=Xup1qznYpAur57uXKFGr/q94D3e5EKzSaCt37inHB5XZHB0ZYNoBhCOjL2JUPU3d/jypWrAi8+5e -access.signature.4=6jBL70zNVGDWXAiKAFVbIoTVSKnlWx5zDR822Q\=\= +#Wed Oct 18 21:16:03 EET 2023 network.bootstrap.DHT=yes -network.bootstrap.tracker=http\://tracker.qu.ax\:6969/announce +network.bootstrap.tracker=http\://tracker.openbittorrent.com\:80/announce network.ip.network=10.6.0.0 network.ip.subnet=255.255.0.0 network.name=Default network -network.publicKey.0=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnYrOPZPDxRVaYD3srV8Bj91kmXzGUPkC -network.publicKey.1=gRRrnrBliW6oHuf650rRH8k4B7mp6FzRn52oAKSrG6572dvssCXQFa4MTBcvMDj7KnZOsFjFBDcJ -network.publicKey.2=sEqthkdzTIHGhqqUWi/+S3AMxFiWaQisSlu7dJrLdbOsdcYZb7BKvKg2J7c9yS8A7uyUefvhalko -network.publicKey.3=bCyNtv7MGIkgGtyOF5Xab84TTC7C1P/C2WDeOwYh1SUk/Us1czSzuFT2v2W9v+/y3OSAx6eyoKKT -network.publicKey.4=aj2AFUbv92mXM8yPdzdTLa9MmrLpziILOL1AKfUSrArTHx4246KE5w/tp3R3cjco7mlzTq2u41gF -network.publicKey.5=wukfYwIDAQAB -network.signature.0=lvYXgsDOPYMuIlLRIZtaN5sIDyEGwFQqBGnKIpWmvI3a2GwnW1lb3yTGwhro5d4CKmuJZXyCBbWN -network.signature.1=MbxudzmN3scfTp7/FLf9eHVSK+nTABjq2V34c2mEcCShdcNqny8dz/WdXMDA2jVOug2ymVgPCXpy -network.signature.2=7r+buZtMVOU0B2EjnmwFg0I0epf/EXsHTpMzI6aSWRVAScq0Fb/ZZDSv/iP5ixudPGJbTSfOySN8 -network.signature.3=Liz+i7h5AbssaoDdPAyF4L9r4fwrGUuPau7ypiowdodXnAL0h5VCKQeazcSvgMPUFdjsXntMtouy -network.signature.4=SUpKHSCAAT6iMEALqxFTcMOUATsy7PYSau8v6A\=\= -secret.access.privateKey.0=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzb04I//1G5MhZpq+6Tj0fVq4L -secret.access.privateKey.1=DZEidP9q1kYJhLvqlU+RzaQHXijuBHjZyZYE3p64xoPVA09ZmmhUPP1MoulJXbBqbY/LRL3SV0LN -secret.access.privateKey.2=cYIdlizwE/8jIuZ0s/O7gDfe+HYApO5Rb4eYx51FZP2t58/eYd5VYEQ4sVLkynV4ZXuxUOOr5Ia+ -secret.access.privateKey.3=Zoy1AbArrX3MbiMLQ+JGZpGz556yeag3zOecXE7ST6bCkvAbwRZuZWzLPedEHa/DNS4sc7BYAfsx -secret.access.privateKey.4=K62Qihn/KsWp1zbb96ZcLaNrLAlq4EzLosyxygVbbONk1LcLBumxGden4XSS+HEkc5SfK61pgBAK -secret.access.privateKey.5=sOwZL2e7bE/jAgMBAAECggEAKSSFXRTtSzscIUpSEsLryurCH3Ct7ZusESAukPIpcGFqDEF9sd7K -secret.access.privateKey.6=PcEywKUzS8yL0kxaYBZRNHduIpqVbeQQ36ymzdBvXylU6QzvGVJEhmovxaCgKLtQ4kN8yGpe5TZN -secret.access.privateKey.7=QFqQ9oU/Ly3eBtJgRGbZx+Di7OqU2fb2zdUKWF/Um9RQruXag/v+w0id3XJZyqW3lJ8nID0Aw7kv -secret.access.privateKey.8=yfN/f8q8jV49/q2c4fvZNFZGhCNPcGDMMzbLBULgL3nbdMZH0xEfRp2o5h49L76yltT4z+PkF5Df -secret.access.privateKey.9=dCUVTNpMt6qRim9UMnCxibLpfg4C6IOcUkApUj2jJIve9U0wT1ZDxSTBzn6VuQKBgQDo9SNR4GmI -secret.access.privateKey.a=2Fb9lBELcuj4itG30Vp9j59vh+wEy7NDZ5NoGUsap+MKA1vDDImh9RUwahD45zJ991C6FU6JFnqm -secret.access.privateKey.b=MmFJ+G+VSDSgqcgUdlglTAb/WZYlLysrA8Y4x7bWlb03X6+2gK+MQjMxn4OFTqiSOZ/td7E6jeeU -secret.access.privateKey.c=A054ho4vTwKBgQDFLuIqBJmqWZ6QwfV9Y5jJoRdrW5N/cGqsZUEjmKDVUbckwI3qgfJndqo0a7mx -secret.access.privateKey.d=hsANYJ3+Slq9Yy8k04LvG8hhGdRBEF8JO6E313WlIj+pTNX5k44JHitRTfGm+n3WZl+UEl3f86f/ -secret.access.privateKey.e=4npFPHb9aNB9CSRzsEA7cF/fU8uoQ6pRLQKBgQCP6GdSPARVsfdDHMXOwcSjTPYyzJRO/nsqZdfq -secret.access.privateKey.f=On/aAtDvvLhFljLNy7dS7ZrUPtdBGjSz3fa2FCJ9YY4rZ4SKyJKLJHqhyIIiQd/ErDrVh3rHIWt8 -secret.access.privateKey.g=OwA6yVEZYF5VfxjtbSHZ5vMK/RYs8HJJ1oaSFiDyjD8igejt6YD/OXf6RwKBgBocGSqDLW3XLB3y -secret.access.privateKey.h=8PTHiWW5hQZcO+22DwoA5l02SqW0ilG9hY0148k7d1I1qYMOWsPqtUEEy3skdQulTkMnJKNm7ion -secret.access.privateKey.i=Zs4sLS7dwuA45sEeQX8owLgIXKgJcCQyKxOGvsU2oWOUOfyyGoqsdP0dMe48la0T+41jVe6Wg/Ml -secret.access.privateKey.j=8pmJAoGAXWb/uY7+1DgmN2ONWU5HIRZpj9iipf/zoIyB2g6XrUBm0DQvC9R2TIqq2v/D9YKTwZme -secret.access.privateKey.k=8OuvjW0Pg6OK4rHlZTm8XfYZgoT6hJAzbFTOW44LH7vhmal9UuvFCSkTNyZ2zO6MrJOPEdImmA60 -secret.access.privateKey.l=55gmk5qUdFLHtAqBFZr06TRGhQM\= +network.publicKey.0=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAovx/TY/HSUvETXiqY25w7EveqLnOyV4V +network.publicKey.1=rxXdNQGk7h/81+t6sd7GoXcwnW+EuWVi2guTC7rfp2L4c4Gj+tPseUtcbUil70h8MvhvyKBE4zex +network.publicKey.2=YLnEuW8GV4LcW8DWgzhp19WyPuluPxzEBKoILvkFLiRDEXR4eENgaWwBfgvJKO74kx3r25QMtycT +network.publicKey.3=gi+QjqRzgmJvS5q/K/ecVDjMQEsCcUgpVlTkf3dsIJfEJMDHP5TI5I4OTAxadmkPoggCeu+d8cUE +network.publicKey.4=ENZNsGpHTRdwSX00PaPpxM0VXlmJQK6P8iSGZqEdhaAytfs8rYHNVUbjscTcjzRfyR8v9csUH85Z +network.publicKey.5=/EkhgQIDAQAB +network.signature.0=NKLCbcQG4ohFv3FAjFWL6df1gHduHlKkPdF+56uYQTuuM1QAoAdd4soGlcYqFuUkvBXrtDxFN/8Y +network.signature.1=QoPlW4+EJDJ9ijMSfXnoYfSe4glpibzfXiE+wGeNCMCdWCgG6Kdjq6sOmfn6dyfDx+OfyvKYZPps +network.signature.2=zhLJX6KSROLhp8m78+BRexH0mUBcVVjvvUfQDdramqaFKUY/XWcH8obHq8h2uorwhPNcgosn67Q9 +network.signature.3=ccPn+nmGYqisJ3bk4nwa/Sg+Xxf5dxgDohG07L8W64Qc9hqxreTUJMtN5WYdxhu4UE+LpaA1q3RQ +network.signature.4=vLav27UtgwEHW/j930l1Uv7tzN+cQPKBljQtQg\=\= +secret.network.privateKey.0=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCi/H9Nj8dJS8RNeKpjbnDsS96o +secret.network.privateKey.1=uc7JXhWvFd01AaTuH/zX63qx3sahdzCdb4S5ZWLaC5MLut+nYvhzgaP60+x5S1xtSKXvSHwy+G/I +secret.network.privateKey.2=oETjN7FgucS5bwZXgtxbwNaDOGnX1bI+6W4/HMQEqggu+QUuJEMRdHh4Q2BpbAF+C8ko7viTHevb +secret.network.privateKey.3=lAy3JxOCL5COpHOCYm9Lmr8r95xUOMxASwJxSClWVOR/d2wgl8QkwMc/lMjkjg5MDFp2aQ+iCAJ6 +secret.network.privateKey.4=753xxQQQ1k2wakdNF3BJfTQ9o+nEzRVeWYlAro/yJIZmoR2FoDK1+zytgc1VRuOxxNyPNF/JHy/1 +secret.network.privateKey.5=yxQfzln8SSGBAgMBAAECggEAB+hPYzuNVz8EmewEYdwv2lo4xhLahEzuQspaxLTJt0vezOyXZuqa +secret.network.privateKey.6=B6dsUmPgtDLF2WWKXGohA7jHhdyz6fo++zuIYAnDeZjlfbH6XZxFyCHuY/T48gFmKCsow1xw8kWm +secret.network.privateKey.7=zPPvOLvDWSIgi64vXqgL2ks9sPeBO/esEjFNRgioWWkt+49Z2K1/ufuwKJcKaLXDh4YsV+fBE4vq +secret.network.privateKey.8=iGjTZ5VI1L8Z+ed0ZoUbPW1k4a+lFQOp8w1Xc1stVFfaK6tXiw2Tw3ijT6BD/0V9+/FPqnqqIFS0 +secret.network.privateKey.9=nKavu3+Lf3XeFdpGrDgP8/oqtXKZcqreaPJVMH+rTIK4oT4440IBvMbdcbbpSQKBgQDffm5V7nHS +secret.network.privateKey.a=G4ohXQli/Rsx0rG2Bf+VYPOCK8ixFKm3W9wZvVqlUWyrcEPZ9Vc/yJOcewCRr3SVAxTbP2rQUK9f +secret.network.privateKey.b=xiYQh8JlpqQbiL6Oq/f8WdKumYpry9/P2I0UYJkG63eKSguSzCyWll1iEnyXSV8JEhdO5DiQho1+ +secret.network.privateKey.c=9UvhM9OBXwKBgQC6sSDmRreYySJUMBlYIbzUiRFh7L5p114Lky+MqUWaiBxTqbznQuslewqXM6c0 +secret.network.privateKey.d=c28kNOwARnUgqZBrXbGUtrRn8/AT8ehtZ8pSK0SG4KyOgaco1OC6NRsnVtK+vTfqRCk0/y+bFNMm +secret.network.privateKey.e=W9fHvLlhNbvtXginEgQtPoGd5R+E8TPpHwKBgQCeOeZnk/6lH7Y1VKbWnBbquR3znl+KJC+B0vms +secret.network.privateKey.f=1NIq7C/xUSuhqvnijgKbhqSUla5btIF8otlIvfvAFS/L97ORfLlqLpMkYEwC6lburzVMRVNxJWbo +secret.network.privateKey.g=VlhH0CphaNouGfpxv2ZeMYrHugC29BudB+buhw5VXiHlwDzgy01DTOvKxQKBgQCRlrh1XAipWZEv +secret.network.privateKey.h=3iKlnAnKJOotV5ZWq+FnXWzjYM4q6KJOjDwIjSMbo4xqxZlLSgoOTkcNH+UPh6xcTkDCHIkr2AwN +secret.network.privateKey.i=QcVkLGCXG67hEC0BJRLawMhP7kIyt365yI3mXylTbv4NDnxrmYv487ANov3e6koNH/up3Ojv3VJr +secret.network.privateKey.j=Nj6pOQKBgC0Fop+9iIkiHRB7rdVTtGsToY7n4fCnVjA3iTWx/OV6zTovVBTai6Phn+8dZxnwvah6 +secret.network.privateKey.k=lPbR8EMUjgsWKum3lkDDkQ9CW4GjARKQFI6Zq2uNnh8SADwyTGTyO5AV5IF/wTP/GhvwLLTvzUPW +secret.network.privateKey.l=9e9CzIx2IUdEqEdNU+9ZJGszKDeY #============================== diff --git a/misc/P2PVPN.exe b/misc/Lanemu.exe similarity index 56% rename from misc/P2PVPN.exe rename to misc/Lanemu.exe index 1bb1697b83f4d7e0c729e7e46d103a64b4299321..9aa83df8069e2d93b6dd4e7d86fe5c301b860f81 100644 GIT binary patch delta 4587 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 Sp%^Sm(Kl+4@yDZZ;Qs-b3+HG6 diff --git a/misc/p2pvpn-pkexec b/misc/lanemu-pkexec similarity index 70% rename from misc/p2pvpn-pkexec rename to misc/lanemu-pkexec index d13bf90..25cb16f 100755 --- a/misc/p2pvpn-pkexec +++ b/misc/lanemu-pkexec @@ -2,4 +2,4 @@ JAR_PATH=$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P ) -sh -c "pkexec env DISPLAY=$DISPLAY env XAUTHORITY=$XAUTHORITY sh -c \"cd ${JAR_PATH} && java -jar ${JAR_PATH}/P2PVPN.jar\"" \ No newline at end of file +sh -c "pkexec env DISPLAY=$DISPLAY env XAUTHORITY=$XAUTHORITY sh -c \"cd ${JAR_PATH} && java -jar ${JAR_PATH}/Lanemu.jar\"" \ No newline at end of file diff --git a/misc/run_p2pvpn.bat b/misc/run_p2pvpn.bat deleted file mode 100644 index 0336ea8..0000000 --- a/misc/run_p2pvpn.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -echo "Disabling P2P VPN interface" -netsh interface set interface "P2P VPN" disable -echo "Resetting interface" -netsh interface ipv4 reset "P2P VPN" -echo "Enabling P2P VPN interface" -netsh interface set interface "P2P VPN" enable -echo "Finally starting P2PVPN.exe" -P2PVPN.exe \ No newline at end of file diff --git a/native/appIndicator/tray.c b/native/appIndicator/tray.c index cac99d9..be28da6 100644 --- a/native/appIndicator/tray.c +++ b/native/appIndicator/tray.c @@ -2,20 +2,20 @@ Copyright 2017 Serge Zaitsev Copyright 2023 Nikolay Borodin - This file is part of App indicator tray icon library for P2PVPN. + This file is part of App indicator tray icon library for Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ #include diff --git a/native/appIndicator/tray.h b/native/appIndicator/tray.h index cdae175..0a8e297 100644 --- a/native/appIndicator/tray.h +++ b/native/appIndicator/tray.h @@ -2,20 +2,20 @@ Copyright 2017 Serge Zaitsev Copyright 2023 Nikolay Borodin - This file is part of App indicator tray icon library for P2PVPN. + This file is part of App indicator tray icon library for Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ #ifndef TRAY_H diff --git a/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.c b/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.c index fcf8464..0cc3d50 100644 --- a/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.c +++ b/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.c @@ -1,3 +1,23 @@ +/* + Copyright 2008 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin + + This file is part of Lanemu. + + Lanemu is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Lanemu 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Lanemu. If not, see . +*/ + #include #include #include diff --git a/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.h b/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.h index c69d886..2ba971a 100644 --- a/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.h +++ b/native/tapLinux/org_p2pvpn_tuntap_TunTapLinux.h @@ -1,3 +1,23 @@ +/* + Copyright 2008 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin + + This file is part of Lanemu. + + Lanemu is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Lanemu 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Lanemu. If not, see . +*/ + #include /* Header for class org_p2pvpn_tuntap_TunTapLinux */ diff --git a/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.c b/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.c index 0c16fd9..264be03 100644 --- a/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.c +++ b/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.c @@ -1,20 +1,21 @@ /* Copyright 2008 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ #include diff --git a/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.h b/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.h index b8c75ce..50d9bd8 100644 --- a/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.h +++ b/native/tapWindows/org_p2pvpn_tuntap_TunTapWindows.h @@ -1,3 +1,23 @@ +/* + Copyright 2008 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin + + This file is part of Lanemu. + + Lanemu is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Lanemu 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with Lanemu. If not, see . +*/ + #include /* Header for class org_p2pvpn_tuntap_TunTapWindows */ diff --git a/repo/screenshot.png b/repo/screenshot.png index 2eda12d829686b012779c92d8faacb0cf9482142..4b56d6eb4a8795396b803ed344037ebf025ba954 100644 GIT binary patch literal 14956 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 literal 14956 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 diff --git a/resources/images/lanemu-64.png b/resources/images/lanemu-64.png new file mode 100644 index 0000000000000000000000000000000000000000..6651f16ebaf377b61ba99c75a384f8529b70aded GIT binary patch literal 4849 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 X)JK%k|KVK|00000NkvXXu0mjfYcV;V literal 0 HcmV?d00001 diff --git a/resources/images/lanemu.svg b/resources/images/lanemu.svg new file mode 100644 index 0000000..09311d0 --- /dev/null +++ b/resources/images/lanemu.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/p2pvpn/Defaults.java b/src/org/p2pvpn/Defaults.java index 93cb48f..fde6df8 100644 --- a/src/org/p2pvpn/Defaults.java +++ b/src/org/p2pvpn/Defaults.java @@ -2,20 +2,20 @@ Copyright 2008, 2009 Wolfgang Ginolas Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn; @@ -28,6 +28,6 @@ public class Defaults { final public static String NAME = "New network"; final public static String NETWORK = "10.6.0.0"; final public static String SUBNET = "255.255.0.0"; - final public static String BITTORRENT_TRACKER = "http://tracker.qu.ax:6969/announce"; + final public static String BITTORRENT_TRACKER = "http://tracker.openbittorrent.com:80/announce"; } } diff --git a/src/org/p2pvpn/Main.java b/src/org/p2pvpn/Main.java index 3f647ff..4316208 100644 --- a/src/org/p2pvpn/Main.java +++ b/src/org/p2pvpn/Main.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn; @@ -59,14 +60,14 @@ import static javax.swing.JOptionPane.showMessageDialog; import org.p2pvpn.Defaults.NewNetwork; /** - * This is the main class of P2PVPN. Depending on the commandline arguments the + * This is the main class of Lanemu. Depending on the commandline arguments the * GUI gets startet or not. * * @author Wolfgang Ginolas */ public class Main { /** - * Start P2PVPN. + * Start Lanemu. * * @param args the parameters */ @@ -82,7 +83,7 @@ public class Main { "", "Headless mode:", " --headless Activate headless mode.", - " --access Path to access file, must be generated by P2P VPN (mandatory option).", + " --access Path to access file, must be generated by Lanemu (mandatory option).", " --vpn.ip The virtual ip address of the host for tap interface configuration (Example: '10.6.0.0').", " --vpn.mask The mask of the interface (Example: '255.255.0.0'). Must be specified with vpn.ip.", " --upnp Enable UPnP?", @@ -106,7 +107,7 @@ public class Main { " --consoleChat Enable sending messages in the console mode.", "", "Example:", - " $SUDO$java$EXE$ -jar P2PVPN.jar --headless --access=access.dat --vpn.ip=10.6.10.10 --vpn.mask=255.255.0.0", + " $SUDO$java$EXE$ -jar Lanemu.jar --headless --access=access.dat --vpn.ip=10.6.10.10 --vpn.mask=255.255.0.0", "", "Network creation:", " --newNetwork Create a new network.", @@ -121,7 +122,7 @@ public class Main { " --disableDHT Disable BitTorrent DHT?", "", "Example:", - " java$EXE$ -jar P2PVPN.jar --newNetwork > profile.ini", + " java$EXE$ -jar Lanemu.jar --newNetwork > profile.ini", "", "Access file generation:", " --generateAccess Generate access file.", @@ -133,7 +134,7 @@ public class Main { " --noHorizontalLine Remove horizontal lines at the beginning and end of output, as well as line break in the end.", "", "Example:", - " java$EXE$ -jar P2PVPN.jar --generateAccess --expiryDate=\"01.01.2024, 0:00\" --comment=\"This is your invitation!\" > access.dat", + " java$EXE$ -jar Lanemu.jar --generateAccess --expiryDate=\"01.01.2024, 0:00\" --comment=\"This is your invitation!\" > access.dat", "", "Network file export:", " --exportNetwork Export network file.", @@ -146,7 +147,7 @@ public class Main { " --noHorizontalLine Remove horizontal lines at the beginning and end of output, as well as line break in the end.", "", "Example:", - " java$EXE$ -jar P2PVPN.jar --exportNetwork > network.dat", + " java$EXE$ -jar Lanemu.jar --exportNetwork > network.dat", "", "Other:", " --version Show the application version.", @@ -372,8 +373,8 @@ public class Main { Logger.getLogger("").log(Level.INFO, "Unable to load native look and feel", ex); } - if (!lockInstance("p2pvpn.lock")) { - showMessageDialog(null, "Another instance of P2P VPN is already running."); + if (!lockInstance("lanemu.lock")) { + showMessageDialog(null, "Another instance of Lanemu is already running."); System.exit(1); } diff --git a/src/org/p2pvpn/Version.java b/src/org/p2pvpn/Version.java index e3b5cd1..5d8608d 100644 --- a/src/org/p2pvpn/Version.java +++ b/src/org/p2pvpn/Version.java @@ -2,20 +2,20 @@ Copyright 2008, 2009 Wolfgang Ginolas Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn; diff --git a/src/org/p2pvpn/gui/AcceptWindow.java b/src/org/p2pvpn/gui/AcceptWindow.java index 8ddcddb..da2c2d6 100644 --- a/src/org/p2pvpn/gui/AcceptWindow.java +++ b/src/org/p2pvpn/gui/AcceptWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/AppIndicatorTrayIcon.java b/src/org/p2pvpn/gui/AppIndicatorTrayIcon.java index 0e7f02e..8860e9b 100644 --- a/src/org/p2pvpn/gui/AppIndicatorTrayIcon.java +++ b/src/org/p2pvpn/gui/AppIndicatorTrayIcon.java @@ -1,20 +1,20 @@ /* Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; @@ -37,7 +37,7 @@ import javax.imageio.ImageIO; */ public final class AppIndicatorTrayIcon extends TrayIcon { - static String TRAYICON_TMP_FILE = "P2PVPN_Tray.png"; + static String TRAYICON_TMP_FILE = "Lanemu_Tray.png"; private String icon; static { diff --git a/src/org/p2pvpn/gui/ChatWindow.java b/src/org/p2pvpn/gui/ChatWindow.java index d9e9297..38742ee 100644 --- a/src/org/p2pvpn/gui/ChatWindow.java +++ b/src/org/p2pvpn/gui/ChatWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/IPTableModel.java b/src/org/p2pvpn/gui/IPTableModel.java index 9c84697..c9cec53 100644 --- a/src/org/p2pvpn/gui/IPTableModel.java +++ b/src/org/p2pvpn/gui/IPTableModel.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/InfoWindow.form b/src/org/p2pvpn/gui/InfoWindow.form index befb930..9aada09 100644 --- a/src/org/p2pvpn/gui/InfoWindow.form +++ b/src/org/p2pvpn/gui/InfoWindow.form @@ -2,7 +2,7 @@
- + @@ -435,7 +435,7 @@ - + diff --git a/src/org/p2pvpn/gui/InfoWindow.java b/src/org/p2pvpn/gui/InfoWindow.java index 0657397..e7f9845 100644 --- a/src/org/p2pvpn/gui/InfoWindow.java +++ b/src/org/p2pvpn/gui/InfoWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; @@ -44,7 +45,7 @@ import org.p2pvpn.Version; /** * This is an information window that displays a lot of - * information about the current status of P2PVPN. + * information about the current status of Lanemu. * * @author Wolfgang Ginolas */ @@ -147,7 +148,7 @@ public class InfoWindow extends javax.swing.JFrame implements RoutungTableListen jLabel2 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); - setTitle("P2PVPN"); + setTitle("Lanemu"); jSplitPane1.setDividerLocation(250); jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); @@ -346,7 +347,7 @@ public class InfoWindow extends javax.swing.JFrame implements RoutungTableListen jLabel1.setFont(new java.awt.Font("DejaVu Sans", 0, 24)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel1.setText("P2PVPN"); + jLabel1.setText("Lanemu"); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText(Version.getVersion()); diff --git a/src/org/p2pvpn/gui/InviteWindow.java b/src/org/p2pvpn/gui/InviteWindow.java index 8939106..1f52c86 100644 --- a/src/org/p2pvpn/gui/InviteWindow.java +++ b/src/org/p2pvpn/gui/InviteWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/MainControl.java b/src/org/p2pvpn/gui/MainControl.java index 5fcf608..65a73f8 100644 --- a/src/org/p2pvpn/gui/MainControl.java +++ b/src/org/p2pvpn/gui/MainControl.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; @@ -44,7 +45,7 @@ import org.p2pvpn.tools.ProfileManager; /** * This class controls everything regarded to the GUI or storing the settings of - * P2PVPN. + * Lanemu. * * @author Wolfgang Ginolas */ @@ -121,7 +122,7 @@ public class MainControl implements ConnectorListener { inv.load(in); String netName = inv.getProperty("network.name"); if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null, - "Your P2PVPN is not part of any network.\n" + "Your Lanemu is not part of any network.\n" + "Do you want to join '" + netName + "'?", "Default Network", JOptionPane.YES_NO_OPTION)) { @@ -136,7 +137,7 @@ public class MainControl implements ConnectorListener { } /** - * Called after initialisation and starts the operation of P2PVPN. + * Called after initialisation and starts the operation of Lanemu. */ public void start() { changeNet(false); @@ -186,9 +187,9 @@ public class MainControl implements ConnectorListener { /** * This is called, when the network has changed. It will setup the new - * network and notify other parts of P2PVPN. + * network and notify other parts of Lanemu. * - * @param networkChanged was P2PVPN connectet to another network before this + * @param networkChanged was Lanemu connectet to another network before this * method was called? */ private void changeNet(boolean networkChanged) { diff --git a/src/org/p2pvpn/gui/MainWindow.form b/src/org/p2pvpn/gui/MainWindow.form index 1995128..f9c8aec 100644 --- a/src/org/p2pvpn/gui/MainWindow.form +++ b/src/org/p2pvpn/gui/MainWindow.form @@ -3,7 +3,7 @@ - + diff --git a/src/org/p2pvpn/gui/MainWindow.java b/src/org/p2pvpn/gui/MainWindow.java index 58c915f..f96678e 100644 --- a/src/org/p2pvpn/gui/MainWindow.java +++ b/src/org/p2pvpn/gui/MainWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; @@ -52,7 +53,7 @@ import org.p2pvpn.network.Router; import org.p2pvpn.network.RoutungTableListener; /** - * This is the main window of P2PVPN. + * This is the main window of Lanemu. * * @author Wolfgang Ginoas */ @@ -66,11 +67,11 @@ enum PeerAction { public class MainWindow extends javax.swing.JFrame implements RoutungTableListener { - private static final String P2PVPN_IMG = "resources/images/P2PVPN-32.png"; + private static final String LANEMU_IMG = "resources/images/lanemu-64.png"; private static final String CHAT_IMG = "resources/images/chat.png"; private static final String CHAT_BLA_IMG = "resources/images/chat_bla.png"; - private static final String TOOLTIP = "P2P VPN"; + private static final String TOOLTIP = "Lanemu"; private MainControl mainControl; // the MainControl private NewNetwork newNetwork; // the other windows @@ -98,7 +99,7 @@ public class MainWindow extends javax.swing.JFrame implements RoutungTableListen peerListCellRenderer = new PeerListCellRenderer(); initComponents(); try { - URL url = InfoWindow.class.getClassLoader().getResource(P2PVPN_IMG); + URL url = InfoWindow.class.getClassLoader().getResource(LANEMU_IMG); setIconImage(new ImageIcon(url).getImage()); } catch (NullPointerException e) { } @@ -150,11 +151,11 @@ public class MainWindow extends javax.swing.JFrame implements RoutungTableListen if (isLinux) { trayIcon = new AppIndicatorTrayIcon( - Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(P2PVPN_IMG)), + Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(LANEMU_IMG)), TOOLTIP, popupMenu); } else { trayIcon = new TrayIcon( - Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(P2PVPN_IMG)), + Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(LANEMU_IMG)), TOOLTIP, popupMenu); } @@ -172,7 +173,7 @@ public class MainWindow extends javax.swing.JFrame implements RoutungTableListen addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent windowEvent) { - trayIcon.displayMessage("P2PVPN", "The application is now minimized. Click on the tray to display.", + trayIcon.displayMessage("Lanemu", "The application is now minimized. Click on the tray to display.", MessageType.NONE); } }); @@ -239,7 +240,7 @@ public class MainWindow extends javax.swing.JFrame implements RoutungTableListen txtNetwork = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - setTitle("P2PVPN"); + setTitle("Lanemu"); jToolBar1.setRollover(true); @@ -410,7 +411,7 @@ public class MainWindow extends javax.swing.JFrame implements RoutungTableListen if (trayIcon != null) { trayIcon.setImage( - Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(P2PVPN_IMG))); + Toolkit.getDefaultToolkit().getImage(InfoWindow.class.getClassLoader().getResource(LANEMU_IMG))); } if (chatButtonFlickerTimer != null) { diff --git a/src/org/p2pvpn/gui/NewNetwork.java b/src/org/p2pvpn/gui/NewNetwork.java index 4be51b5..8bdc0bd 100644 --- a/src/org/p2pvpn/gui/NewNetwork.java +++ b/src/org/p2pvpn/gui/NewNetwork.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/OptionWindow.java b/src/org/p2pvpn/gui/OptionWindow.java index e050983..529ea04 100644 --- a/src/org/p2pvpn/gui/OptionWindow.java +++ b/src/org/p2pvpn/gui/OptionWindow.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ // TODO option: use whatisymip package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/PeerGraph.java b/src/org/p2pvpn/gui/PeerGraph.java index 92071af..6358f12 100644 --- a/src/org/p2pvpn/gui/PeerGraph.java +++ b/src/org/p2pvpn/gui/PeerGraph.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/PeerListCellRenderer.java b/src/org/p2pvpn/gui/PeerListCellRenderer.java index f8687dc..e7995b9 100644 --- a/src/org/p2pvpn/gui/PeerListCellRenderer.java +++ b/src/org/p2pvpn/gui/PeerListCellRenderer.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/PeerListModel.java b/src/org/p2pvpn/gui/PeerListModel.java index a360e42..9da4ea1 100644 --- a/src/org/p2pvpn/gui/PeerListModel.java +++ b/src/org/p2pvpn/gui/PeerListModel.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/gui/PeerTableModel.java b/src/org/p2pvpn/gui/PeerTableModel.java index 2639b9e..6c6c833 100644 --- a/src/org/p2pvpn/gui/PeerTableModel.java +++ b/src/org/p2pvpn/gui/PeerTableModel.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.gui; diff --git a/src/org/p2pvpn/network/ConnectionManager.java b/src/org/p2pvpn/network/ConnectionManager.java index e726b05..f26aaee 100644 --- a/src/org/p2pvpn/network/ConnectionManager.java +++ b/src/org/p2pvpn/network/ConnectionManager.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; @@ -48,7 +49,7 @@ import org.p2pvpn.tools.CryptoUtils; import org.p2pvpn.tools.SocketAddrStr; /** - * The ConnectionManager is the central point of the P2PVPN network. It + * The ConnectionManager is the central point of the Lanemu network. It * coordinates the different layers of the network. * * @author Wolfgang Ginolas diff --git a/src/org/p2pvpn/network/Connector.java b/src/org/p2pvpn/network/Connector.java index b5f66ae..4f18b02 100644 --- a/src/org/p2pvpn/network/Connector.java +++ b/src/org/p2pvpn/network/Connector.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/ConnectorListener.java b/src/org/p2pvpn/network/ConnectorListener.java index 852cf9c..3c47f16 100644 --- a/src/org/p2pvpn/network/ConnectorListener.java +++ b/src/org/p2pvpn/network/ConnectorListener.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/InternalPacketListener.java b/src/org/p2pvpn/network/InternalPacketListener.java index ea7a1cb..de3b3ed 100644 --- a/src/org/p2pvpn/network/InternalPacketListener.java +++ b/src/org/p2pvpn/network/InternalPacketListener.java @@ -1,20 +1,20 @@ /* Copyright 2009 Wolfgang Ginolas - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/MacAddress.java b/src/org/p2pvpn/network/MacAddress.java index 8d5d844..05251b7 100644 --- a/src/org/p2pvpn/network/MacAddress.java +++ b/src/org/p2pvpn/network/MacAddress.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/P2PConnection.java b/src/org/p2pvpn/network/P2PConnection.java index 7d492e0..58087f2 100644 --- a/src/org/p2pvpn/network/P2PConnection.java +++ b/src/org/p2pvpn/network/P2PConnection.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/PeerID.java b/src/org/p2pvpn/network/PeerID.java index 42e4690..0ed464c 100644 --- a/src/org/p2pvpn/network/PeerID.java +++ b/src/org/p2pvpn/network/PeerID.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/Pinger.java b/src/org/p2pvpn/network/Pinger.java index 7bfb0a9..bea722c 100644 --- a/src/org/p2pvpn/network/Pinger.java +++ b/src/org/p2pvpn/network/Pinger.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/Router.java b/src/org/p2pvpn/network/Router.java index 335821b..7c78635 100644 --- a/src/org/p2pvpn/network/Router.java +++ b/src/org/p2pvpn/network/Router.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/RoutungTableListener.java b/src/org/p2pvpn/network/RoutungTableListener.java index 36fe1b9..39c0ab9 100644 --- a/src/org/p2pvpn/network/RoutungTableListener.java +++ b/src/org/p2pvpn/network/RoutungTableListener.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/TCPConnection.java b/src/org/p2pvpn/network/TCPConnection.java index 7a60c2f..e071a55 100644 --- a/src/org/p2pvpn/network/TCPConnection.java +++ b/src/org/p2pvpn/network/TCPConnection.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; @@ -36,7 +37,7 @@ import javax.crypto.spec.IvParameterSpec; import org.p2pvpn.tools.CryptoUtils; /** - * This is the lowest layer in the P2PVPN network. It encrypts packages and + * This is the lowest layer in the Lanemu network. It encrypts packages and * sends and recheives them using TCP. * * @author Wolfgang Ginolas diff --git a/src/org/p2pvpn/network/UPnPPortForward.java b/src/org/p2pvpn/network/UPnPPortForward.java index f0d1461..c8654a6 100644 --- a/src/org/p2pvpn/network/UPnPPortForward.java +++ b/src/org/p2pvpn/network/UPnPPortForward.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/UPnPPortForwardListener.java b/src/org/p2pvpn/network/UPnPPortForwardListener.java index bbca667..20e723a 100644 --- a/src/org/p2pvpn/network/UPnPPortForwardListener.java +++ b/src/org/p2pvpn/network/UPnPPortForwardListener.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/VPNConnector.java b/src/org/p2pvpn/network/VPNConnector.java index c6acaa7..6a92bd1 100644 --- a/src/org/p2pvpn/network/VPNConnector.java +++ b/src/org/p2pvpn/network/VPNConnector.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network; diff --git a/src/org/p2pvpn/network/bandwidth/MeasureBandwidth.java b/src/org/p2pvpn/network/bandwidth/MeasureBandwidth.java index a8807fd..16e5d7a 100644 --- a/src/org/p2pvpn/network/bandwidth/MeasureBandwidth.java +++ b/src/org/p2pvpn/network/bandwidth/MeasureBandwidth.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bandwidth; diff --git a/src/org/p2pvpn/network/bandwidth/SlidingAverage.java b/src/org/p2pvpn/network/bandwidth/SlidingAverage.java index 52912e3..2b6ccbb 100644 --- a/src/org/p2pvpn/network/bandwidth/SlidingAverage.java +++ b/src/org/p2pvpn/network/bandwidth/SlidingAverage.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bandwidth; diff --git a/src/org/p2pvpn/network/bandwidth/TokenBucket.java b/src/org/p2pvpn/network/bandwidth/TokenBucket.java index 740611c..18a8d54 100644 --- a/src/org/p2pvpn/network/bandwidth/TokenBucket.java +++ b/src/org/p2pvpn/network/bandwidth/TokenBucket.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bandwidth; diff --git a/src/org/p2pvpn/network/bittorrent/BitTorrentTracker.java b/src/org/p2pvpn/network/bittorrent/BitTorrentTracker.java index b00146a..888ee56 100644 --- a/src/org/p2pvpn/network/bittorrent/BitTorrentTracker.java +++ b/src/org/p2pvpn/network/bittorrent/BitTorrentTracker.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent; diff --git a/src/org/p2pvpn/network/bittorrent/Contact.java b/src/org/p2pvpn/network/bittorrent/Contact.java index 03c7133..002a5f7 100644 --- a/src/org/p2pvpn/network/bittorrent/Contact.java +++ b/src/org/p2pvpn/network/bittorrent/Contact.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent; diff --git a/src/org/p2pvpn/network/bittorrent/DHT.java b/src/org/p2pvpn/network/bittorrent/DHT.java index dce8762..1b9d5b1 100644 --- a/src/org/p2pvpn/network/bittorrent/DHT.java +++ b/src/org/p2pvpn/network/bittorrent/DHT.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/Bencode.java b/src/org/p2pvpn/network/bittorrent/bencode/Bencode.java index 80b2946..5fcf3b7 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/Bencode.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/Bencode.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/BencodeInt.java b/src/org/p2pvpn/network/bittorrent/bencode/BencodeInt.java index 83292fe..051f183 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/BencodeInt.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/BencodeInt.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/BencodeList.java b/src/org/p2pvpn/network/bittorrent/bencode/BencodeList.java index 53ed605..510c752 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/BencodeList.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/BencodeList.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/BencodeMap.java b/src/org/p2pvpn/network/bittorrent/bencode/BencodeMap.java index c32dd4a..92d6a61 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/BencodeMap.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/BencodeMap.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/BencodeObject.java b/src/org/p2pvpn/network/bittorrent/bencode/BencodeObject.java index 7dc4e41..b66231e 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/BencodeObject.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/BencodeObject.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/network/bittorrent/bencode/BencodeString.java b/src/org/p2pvpn/network/bittorrent/bencode/BencodeString.java index 4d2c797..402163a 100644 --- a/src/org/p2pvpn/network/bittorrent/bencode/BencodeString.java +++ b/src/org/p2pvpn/network/bittorrent/bencode/BencodeString.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.network.bittorrent.bencode; diff --git a/src/org/p2pvpn/tools/AdvProperties.java b/src/org/p2pvpn/tools/AdvProperties.java index 799af8c..36e48db 100644 --- a/src/org/p2pvpn/tools/AdvProperties.java +++ b/src/org/p2pvpn/tools/AdvProperties.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tools; diff --git a/src/org/p2pvpn/tools/CryptoUtils.java b/src/org/p2pvpn/tools/CryptoUtils.java index c875922..2594e15 100644 --- a/src/org/p2pvpn/tools/CryptoUtils.java +++ b/src/org/p2pvpn/tools/CryptoUtils.java @@ -1,20 +1,20 @@ /* Copyright 2009 Wolfgang Ginolas - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tools; diff --git a/src/org/p2pvpn/tools/SocketAddrStr.java b/src/org/p2pvpn/tools/SocketAddrStr.java index c053508..1761449 100644 --- a/src/org/p2pvpn/tools/SocketAddrStr.java +++ b/src/org/p2pvpn/tools/SocketAddrStr.java @@ -1,20 +1,20 @@ /* Copyright 2009 Wolfgang Ginolas - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tools; diff --git a/src/org/p2pvpn/tools/VersionizedMap.java b/src/org/p2pvpn/tools/VersionizedMap.java index e469f5e..dea9643 100644 --- a/src/org/p2pvpn/tools/VersionizedMap.java +++ b/src/org/p2pvpn/tools/VersionizedMap.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tools; diff --git a/src/org/p2pvpn/tuntap/TunTap.java b/src/org/p2pvpn/tuntap/TunTap.java index b040464..69124f1 100644 --- a/src/org/p2pvpn/tuntap/TunTap.java +++ b/src/org/p2pvpn/tuntap/TunTap.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tuntap; diff --git a/src/org/p2pvpn/tuntap/TunTapLinux.java b/src/org/p2pvpn/tuntap/TunTapLinux.java index c7e2f37..be84a5b 100644 --- a/src/org/p2pvpn/tuntap/TunTapLinux.java +++ b/src/org/p2pvpn/tuntap/TunTapLinux.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tuntap; @@ -67,7 +68,7 @@ public class TunTapLinux extends TunTap { public TunTapLinux() throws Exception { if (1 == openTun()) { throw new Exception("Could not open '/dev/net/tun!'\n" - + "Please run P2PVPN as root.\n" + + + "Please run Lanemu as root.\n" + "Or alternatively, set CAP_NET_ADMIN capability via \"sudo setcap cap_net_admin=eip /path/to/java\"."); } } diff --git a/src/org/p2pvpn/tuntap/TunTapWindows.java b/src/org/p2pvpn/tuntap/TunTapWindows.java index 5ad14ae..b5a935f 100644 --- a/src/org/p2pvpn/tuntap/TunTapWindows.java +++ b/src/org/p2pvpn/tuntap/TunTapWindows.java @@ -1,20 +1,21 @@ /* Copyright 2008, 2009 Wolfgang Ginolas + Copyright 2023 Nikolay Borodin - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package org.p2pvpn.tuntap; @@ -95,7 +96,7 @@ public class TunTapWindows extends TunTap { String[] renameCmd = { "netsh", "interface", "set", "interface", "name=" + dev, - "newname=P2P VPN" + "newname=Lanemu" }; Process p; diff --git a/src/test/org/p2pvpn/tools/TestAdvProperties.java b/src/test/org/p2pvpn/tools/TestAdvProperties.java index 4c349fe..b41347c 100644 --- a/src/test/org/p2pvpn/tools/TestAdvProperties.java +++ b/src/test/org/p2pvpn/tools/TestAdvProperties.java @@ -1,20 +1,20 @@ /* Copyright 2008, 2009 Wolfgang Ginolas - This file is part of P2PVPN. + This file is part of Lanemu. - P2PVPN is free software: you can redistribute it and/or modify + Lanemu is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - P2PVPN is distributed in the hope that it will be useful, + Lanemu 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License - along with P2PVPN. If not, see . + along with Lanemu. If not, see . */ package test.org.p2pvpn.tools;