├── .github ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── build-debian.yml │ └── debian │ ├── changelog │ ├── control │ ├── copyright │ ├── rules │ └── source │ └── format ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.de.md ├── README.es.md ├── README.fr.md ├── README.md ├── SECURITY.md ├── azure-pipelines.yml ├── ci_cd ├── linux │ ├── linux-build.sh │ └── linux-prebuild.php ├── mac │ └── mac-build.sh └── windows │ ├── makeall.bat │ ├── win-build.bat │ ├── win-deploy.bat │ ├── win-prebuild.bat │ └── win-prebuild.php ├── packetsender.png ├── screenshots ├── GitHub_Logo200.png ├── JetBrains_Logo200.png ├── Tux150.png ├── WindowsLogo_Transparent_670x600-150x150.png ├── additional_network_settings.png ├── android_logo.png ├── basic_network_settings.png ├── bound_udp_example.png ├── cipher_suites.png ├── cloud-account.png ├── cloud-import.png ├── cloud-saveshare.png ├── eletiope_logo400.png ├── ios_logo.png ├── ip-specific-binding.png ├── ipv4_ipv6_toggle.png ├── iwl_logo.png ├── mac_logo.png ├── maclogo150.png ├── main_window.png ├── naglecode-logo200.png ├── naglecode-logo400.png ├── packetsender-ios-traffic-log-ascii.png ├── packetsender_android_screenshot.png ├── packetsender_banner.png ├── packetsender_command_line.png ├── packetsender_direct_tcp.PNG ├── packetsender_dot_com.png ├── packetsender_expired_ssl.png ├── packetsender_mac_screenshot.png ├── packetsender_smartreply.PNG ├── packetsender_ssl.PNG ├── packetsender_subnetcalc.PNG ├── packetsender_windows_screenshot.png ├── packetsender_windows_screenshot_crop.png ├── persistant_dtls.jpg ├── persistant_window.png ├── ps_GUI.png ├── ps_http_authgenerator.PNG ├── ps_http_changeURL.PNG ├── ps_http_datagenerator.PNG ├── ps_http_getfields.PNG ├── ps_panel_1.PNG ├── ps_panel_2.PNG ├── ps_panel_4.PNG ├── ps_panel_5.PNG ├── ps_panel_6.PNG ├── ps_panel_7.PNG ├── ps_panel_8.PNG ├── ps_panel_generate.PNG ├── pslogo128.png ├── pslogo64.png ├── server_ports.png ├── settings.png ├── settings_2.png ├── ubuntu-logo-transparent.png ├── udp-traffic-sending.PNG ├── wake_on_lan_results_screenshot.png ├── wake_on_lan_screenshot.png ├── winlogo150.png ├── wireshark_persistent_connection.png └── wireshark_simple_session.png ├── snapcraft.yaml ├── src ├── .astylerc ├── CMakeLists.txt ├── Info.plist ├── OpenSans-Regular.ttf ├── PacketSender.pro ├── PacketSenderCLI.pro ├── PacketSenderSnap.pro ├── Twitter_logo_blue.png ├── about.cpp ├── about.h ├── about.ui ├── association.cpp ├── association.h ├── bruce.jpg ├── bruce.png ├── brucethepoodle.cpp ├── brucethepoodle.h ├── brucethepoodle.ui ├── busy.png ├── cloudui.cpp ├── cloudui.h ├── cloudui.ui ├── cmake │ ├── GetGitRevisionDescription.cmake │ └── GetGitRevisionDescription.cmake.in ├── cmd_dtls_client.bat ├── cmd_dtls_client.txt ├── dannagle32.jpg ├── dannagle_logo.png ├── dtlsserver.cpp ├── dtlsserver.h ├── dtlsthread.cpp ├── dtlsthread.h ├── globals.h ├── icons │ ├── android-icon.png │ ├── apple-icon.png │ ├── applogo_bw.png │ ├── applogo_notagline.png │ ├── applogo_tagline.png │ ├── bolt-icon.png │ ├── calculator.png │ ├── cog.png │ ├── database.png │ ├── download.png │ ├── forum-icon.png │ ├── heart.png │ ├── ic_cloud_done_black_24dp_2x.png │ ├── ic_cloud_download_black_24dp_2x.png │ ├── ic_cloud_upload_black_24dp_2x.png │ ├── ic_person_black_24dp_2x.png │ ├── ic_share_black_24dp_2x.png │ ├── linkedin-icon.png │ ├── moveupdown.png │ ├── multicast-icon.png │ ├── outline_lightbulb_white_24dp.png │ ├── panel-generator-icon.png │ ├── power-off.png │ ├── question-circle.png │ ├── rx.png │ ├── rx_232.png │ ├── rx_dtls.png │ ├── rx_http.png │ ├── rx_ssl.png │ ├── rx_tcp.png │ ├── rx_udp.png │ ├── rx_white.png │ ├── rx_yellow.png │ ├── twitter-icon.png │ ├── tx.png │ ├── tx_232.png │ ├── tx_dtls.png │ ├── tx_http.png │ ├── tx_ssl.png │ ├── tx_tcp.png │ ├── tx_udp.png │ └── upload.png ├── iris_and_marigold.jpg ├── irisandmarigold.cpp ├── irisandmarigold.h ├── irisandmarigold.ui ├── languagechooser.cpp ├── languagechooser.h ├── languagechooser.ui ├── languages │ ├── english-flag.png │ ├── french-flag.png │ ├── german-flag.png │ ├── hindi-flag.png │ ├── italian-flag.png │ ├── packetsender_de.qm │ ├── packetsender_de.ts │ ├── packetsender_en.qm │ ├── packetsender_en.ts │ ├── packetsender_es.qm │ ├── packetsender_es.ts │ ├── packetsender_fr.qm │ ├── packetsender_fr.ts │ ├── packetsender_hi.qm │ ├── packetsender_hi.ts │ ├── packetsender_it.qm │ ├── packetsender_it.ts │ └── spanish-flag.png ├── linkicon_black.png ├── linkicon_black.svg ├── linkicon_darkyellow.png ├── main.cpp ├── mainpacketreceiver.cpp ├── mainpacketreceiver.h ├── mainrenderer.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── multicastsetup.cpp ├── multicastsetup.h ├── multicastsetup.ui ├── packet.cpp ├── packet.h ├── packetlogmodel.cpp ├── packetlogmodel.h ├── packetnetwork.cpp ├── packetnetwork.h ├── packetsender.css ├── packetsender.desktop ├── packetsender.qrc ├── packetsender.svg ├── packetsender_mac.css ├── packetsender_main.pri ├── panel.cpp ├── panel.h ├── panelgenerator.cpp ├── panelgenerator.h ├── panelgenerator.ui ├── persistentconnection.cpp ├── persistentconnection.h ├── persistentconnection.ui ├── persistenthttp.cpp ├── persistenthttp.h ├── persistenthttp.ui ├── postdatagen.cpp ├── postdatagen.h ├── postdatagen.ui ├── ps.key.base64 ├── ps.pem.base64 ├── psSSL.cnf ├── ps_openssl_cmd.sh ├── ps_panels.json ├── psicon.rc ├── psicons.icns ├── psicons.ico ├── psicons.iconset │ ├── icon_1024x1024.png │ ├── icon_128x128.png │ ├── icon_16x16.png │ ├── icon_256x256.png │ ├── icon_32x32.png │ ├── icon_32x32_2.png │ ├── icon_48x48.png │ ├── icon_512x512.png │ └── icon_64x64.png ├── pslogo.ico ├── pslogo.png ├── pslogo128.png ├── pslogo192.png ├── pslogo256.png ├── pslogo_bw.png ├── pslogo_trimmed.png ├── qdarkstyle │ ├── rc │ │ ├── arrow_down.png │ │ ├── arrow_down@2x.png │ │ ├── arrow_down_disabled.png │ │ ├── arrow_down_disabled@2x.png │ │ ├── arrow_down_focus.png │ │ ├── arrow_down_focus@2x.png │ │ ├── arrow_down_pressed.png │ │ ├── arrow_down_pressed@2x.png │ │ ├── arrow_left.png │ │ ├── arrow_left@2x.png │ │ ├── arrow_left_disabled.png │ │ ├── arrow_left_disabled@2x.png │ │ ├── arrow_left_focus.png │ │ ├── arrow_left_focus@2x.png │ │ ├── arrow_left_pressed.png │ │ ├── arrow_left_pressed@2x.png │ │ ├── arrow_right.png │ │ ├── arrow_right@2x.png │ │ ├── arrow_right_disabled.png │ │ ├── arrow_right_disabled@2x.png │ │ ├── arrow_right_focus.png │ │ ├── arrow_right_focus@2x.png │ │ ├── arrow_right_pressed.png │ │ ├── arrow_right_pressed@2x.png │ │ ├── arrow_up.png │ │ ├── arrow_up@2x.png │ │ ├── arrow_up_disabled.png │ │ ├── arrow_up_disabled@2x.png │ │ ├── arrow_up_focus.png │ │ ├── arrow_up_focus@2x.png │ │ ├── arrow_up_pressed.png │ │ ├── arrow_up_pressed@2x.png │ │ ├── base_icon.png │ │ ├── base_icon@2x.png │ │ ├── base_icon_disabled.png │ │ ├── base_icon_disabled@2x.png │ │ ├── base_icon_focus.png │ │ ├── base_icon_focus@2x.png │ │ ├── base_icon_pressed.png │ │ ├── base_icon_pressed@2x.png │ │ ├── branch_closed.png │ │ ├── branch_closed@2x.png │ │ ├── branch_closed_disabled.png │ │ ├── branch_closed_disabled@2x.png │ │ ├── branch_closed_focus.png │ │ ├── branch_closed_focus@2x.png │ │ ├── branch_closed_pressed.png │ │ ├── branch_closed_pressed@2x.png │ │ ├── branch_end.png │ │ ├── branch_end@2x.png │ │ ├── branch_end_disabled.png │ │ ├── branch_end_disabled@2x.png │ │ ├── branch_end_focus.png │ │ ├── branch_end_focus@2x.png │ │ ├── branch_end_pressed.png │ │ ├── branch_end_pressed@2x.png │ │ ├── branch_line.png │ │ ├── branch_line@2x.png │ │ ├── branch_line_disabled.png │ │ ├── branch_line_disabled@2x.png │ │ ├── branch_line_focus.png │ │ ├── branch_line_focus@2x.png │ │ ├── branch_line_pressed.png │ │ ├── branch_line_pressed@2x.png │ │ ├── branch_more.png │ │ ├── branch_more@2x.png │ │ ├── branch_more_disabled.png │ │ ├── branch_more_disabled@2x.png │ │ ├── branch_more_focus.png │ │ ├── branch_more_focus@2x.png │ │ ├── branch_more_pressed.png │ │ ├── branch_more_pressed@2x.png │ │ ├── branch_open.png │ │ ├── branch_open@2x.png │ │ ├── branch_open_disabled.png │ │ ├── branch_open_disabled@2x.png │ │ ├── branch_open_focus.png │ │ ├── branch_open_focus@2x.png │ │ ├── branch_open_pressed.png │ │ ├── branch_open_pressed@2x.png │ │ ├── checkbox_checked.png │ │ ├── checkbox_checked@2x.png │ │ ├── checkbox_checked_disabled.png │ │ ├── checkbox_checked_disabled@2x.png │ │ ├── checkbox_checked_focus.png │ │ ├── checkbox_checked_focus@2x.png │ │ ├── checkbox_checked_pressed.png │ │ ├── checkbox_checked_pressed@2x.png │ │ ├── checkbox_indeterminate.png │ │ ├── checkbox_indeterminate@2x.png │ │ ├── checkbox_indeterminate_disabled.png │ │ ├── checkbox_indeterminate_disabled@2x.png │ │ ├── checkbox_indeterminate_focus.png │ │ ├── checkbox_indeterminate_focus@2x.png │ │ ├── checkbox_indeterminate_pressed.png │ │ ├── checkbox_indeterminate_pressed@2x.png │ │ ├── checkbox_unchecked.png │ │ ├── checkbox_unchecked@2x.png │ │ ├── checkbox_unchecked_disabled.png │ │ ├── checkbox_unchecked_disabled@2x.png │ │ ├── checkbox_unchecked_focus.png │ │ ├── checkbox_unchecked_focus@2x.png │ │ ├── checkbox_unchecked_pressed.png │ │ ├── checkbox_unchecked_pressed@2x.png │ │ ├── line_horizontal.png │ │ ├── line_horizontal@2x.png │ │ ├── line_horizontal_disabled.png │ │ ├── line_horizontal_disabled@2x.png │ │ ├── line_horizontal_focus.png │ │ ├── line_horizontal_focus@2x.png │ │ ├── line_horizontal_pressed.png │ │ ├── line_horizontal_pressed@2x.png │ │ ├── line_vertical.png │ │ ├── line_vertical@2x.png │ │ ├── line_vertical_disabled.png │ │ ├── line_vertical_disabled@2x.png │ │ ├── line_vertical_focus.png │ │ ├── line_vertical_focus@2x.png │ │ ├── line_vertical_pressed.png │ │ ├── line_vertical_pressed@2x.png │ │ ├── radio_checked.png │ │ ├── radio_checked@2x.png │ │ ├── radio_checked_disabled.png │ │ ├── radio_checked_disabled@2x.png │ │ ├── radio_checked_focus.png │ │ ├── radio_checked_focus@2x.png │ │ ├── radio_checked_pressed.png │ │ ├── radio_checked_pressed@2x.png │ │ ├── radio_unchecked.png │ │ ├── radio_unchecked@2x.png │ │ ├── radio_unchecked_disabled.png │ │ ├── radio_unchecked_disabled@2x.png │ │ ├── radio_unchecked_focus.png │ │ ├── radio_unchecked_focus@2x.png │ │ ├── radio_unchecked_pressed.png │ │ ├── radio_unchecked_pressed@2x.png │ │ ├── toolbar_move_horizontal.png │ │ ├── toolbar_move_horizontal@2x.png │ │ ├── toolbar_move_horizontal_disabled.png │ │ ├── toolbar_move_horizontal_disabled@2x.png │ │ ├── toolbar_move_horizontal_focus.png │ │ ├── toolbar_move_horizontal_focus@2x.png │ │ ├── toolbar_move_horizontal_pressed.png │ │ ├── toolbar_move_horizontal_pressed@2x.png │ │ ├── toolbar_move_vertical.png │ │ ├── toolbar_move_vertical@2x.png │ │ ├── toolbar_move_vertical_disabled.png │ │ ├── toolbar_move_vertical_disabled@2x.png │ │ ├── toolbar_move_vertical_focus.png │ │ ├── toolbar_move_vertical_focus@2x.png │ │ ├── toolbar_move_vertical_pressed.png │ │ ├── toolbar_move_vertical_pressed@2x.png │ │ ├── toolbar_separator_horizontal.png │ │ ├── toolbar_separator_horizontal@2x.png │ │ ├── toolbar_separator_horizontal_disabled.png │ │ ├── toolbar_separator_horizontal_disabled@2x.png │ │ ├── toolbar_separator_horizontal_focus.png │ │ ├── toolbar_separator_horizontal_focus@2x.png │ │ ├── toolbar_separator_horizontal_pressed.png │ │ ├── toolbar_separator_horizontal_pressed@2x.png │ │ ├── toolbar_separator_vertical.png │ │ ├── toolbar_separator_vertical@2x.png │ │ ├── toolbar_separator_vertical_disabled.png │ │ ├── toolbar_separator_vertical_disabled@2x.png │ │ ├── toolbar_separator_vertical_focus.png │ │ ├── toolbar_separator_vertical_focus@2x.png │ │ ├── toolbar_separator_vertical_pressed.png │ │ ├── toolbar_separator_vertical_pressed@2x.png │ │ ├── transparent.png │ │ ├── transparent@2x.png │ │ ├── transparent_disabled.png │ │ ├── transparent_disabled@2x.png │ │ ├── transparent_focus.png │ │ ├── transparent_focus@2x.png │ │ ├── transparent_pressed.png │ │ ├── transparent_pressed@2x.png │ │ ├── window_close.png │ │ ├── window_close@2x.png │ │ ├── window_close_disabled.png │ │ ├── window_close_disabled@2x.png │ │ ├── window_close_focus.png │ │ ├── window_close_focus@2x.png │ │ ├── window_close_pressed.png │ │ ├── window_close_pressed@2x.png │ │ ├── window_grip.png │ │ ├── window_grip@2x.png │ │ ├── window_grip_disabled.png │ │ ├── window_grip_disabled@2x.png │ │ ├── window_grip_focus.png │ │ ├── window_grip_focus@2x.png │ │ ├── window_grip_pressed.png │ │ ├── window_grip_pressed@2x.png │ │ ├── window_minimize.png │ │ ├── window_minimize@2x.png │ │ ├── window_minimize_disabled.png │ │ ├── window_minimize_disabled@2x.png │ │ ├── window_minimize_focus.png │ │ ├── window_minimize_focus@2x.png │ │ ├── window_minimize_pressed.png │ │ ├── window_minimize_pressed@2x.png │ │ ├── window_undock.png │ │ ├── window_undock@2x.png │ │ ├── window_undock_disabled.png │ │ ├── window_undock_disabled@2x.png │ │ ├── window_undock_focus.png │ │ ├── window_undock_focus@2x.png │ │ ├── window_undock_pressed.png │ │ └── window_undock_pressed@2x.png │ ├── style.qrc │ └── style.qss ├── scrollbar.png ├── sendpacketbutton.cpp ├── sendpacketbutton.h ├── settings.cpp ├── settings.h ├── settings.ui ├── snap │ └── CMakeLists.txt ├── starter_set.json ├── subnetcalc.cpp ├── subnetcalc.h ├── subnetcalc.ui ├── tcpthread.cpp ├── tcpthread.h ├── threadedtcpserver.cpp ├── threadedtcpserver.h ├── translations.qrc ├── tx_dtls.png ├── udpflooding.cpp ├── udpflooding.h ├── udpflooding.ui ├── wakeonlan.cpp ├── wakeonlan.h └── wakeonlan.ui ├── vpat_2.4_packetsender.doc └── vpat_2.4_packetsender.pdf /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Perfore submitting, please agree your submission is: 4 | 5 | * Original, public domain, MIT, BSD, or Apache licensed (non copyleft). 6 | * If it is original, your code snippet becomes irrevocablely licensed for any use by NagleCode, and you have your own irrevocable license for any use of it (including re-gifting). 7 | 8 | While Packet Sender's code is provided publicly as GPL, the license scheme for internal development is quite complex. Therefore, in the interset of simplicity, the above agreement is needed. 9 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [dannagle] 2 | custom: ["https://www.paypal.com/biz/fund?id=RGDM593DYR9LJ"] 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: '' 6 | assignees: 'dannagle' 7 | 8 | --- 9 | 10 | #### What OS and Version? 11 | 12 | 13 | #### Description of issue 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Ask a question 3 | url: https://github.com/dannagle/PacketSender/discussions 4 | about: Ask and discuss questions on the forums 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[IDEA]" 5 | labels: '' 6 | assignees: 'dannagle' 7 | 8 | --- 9 | 10 | **Desktop, Mobile, Command Line?** 11 | Where will this feature exist? 12 | 13 | **Describe your idea** 14 | A clear and concise description of what you want to happen. 15 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Before submitting a pull request: 2 | 3 | - Did you fork from the development branch? 4 | - Are you submitting the pull request to the development branch? (not master) 5 | -------------------------------------------------------------------------------- /.github/workflows/build-debian.yml: -------------------------------------------------------------------------------- 1 | name: build-debian 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: create_tarball 13 | run: | 14 | cd .. 15 | tar --exclude=.git -cvzf packetsender_0.1+testonly.orig.tar.gz PacketSender 16 | - name: create_debian_dir 17 | run: | 18 | cp -a .github/workflows/debian . 19 | - name: install_dependencies 20 | run: | 21 | sudo apt update 22 | sudo apt install cmake debhelper devscripts qttools5-dev build-essential 23 | - name: build 24 | run: | 25 | debuild --no-lintian --no-sign 26 | -------------------------------------------------------------------------------- /.github/workflows/debian/changelog: -------------------------------------------------------------------------------- 1 | packetsender (0.1+testonly) unstable; urgency=medium 2 | 3 | * Initial release. (Closes: #958440) 4 | 5 | -- Joao Eriberto Mota Filho Sat, 04 Sep 2021 10:34:04 -0300 6 | -------------------------------------------------------------------------------- /.github/workflows/debian/control: -------------------------------------------------------------------------------- 1 | Source: packetsender 2 | Section: net 3 | Priority: optional 4 | Maintainer: Joao Eriberto Mota Filho 5 | Build-Depends: debhelper-compat (= 12), cmake, qttools5-dev 6 | Standards-Version: 4.5.0 7 | Homepage: https://packetsender.com/ 8 | Rules-Requires-Root: no 9 | 10 | Package: packetsender 11 | Architecture: any 12 | Depends: ${shlibs:Depends}, ${misc:Depends} 13 | Description: Network utility for sending and receiving TCP, UDP, SSL packets 14 | Packet Sender is a utility that sends and receives TCP, UDP and SSL (encrypted 15 | TCP) packets on the ports of your choosing. It supports IPv4 and IPv6 and 16 | provides a GUI for final users. However, is also possible use Packet Sender in 17 | text mode via command line. Packet Sender also supports HTTP calls and a GUI 18 | Builder to make control panels with scriptable buttons. 19 | . 20 | Some features: 21 | * Can act as client/server to send and receive network traffic. 22 | * A payload can be created in ASCII or hex. 23 | * Command line mode is available for automation and scripting. 24 | * HTTP GET/POST requests 25 | * Control panel creation 26 | * Packet Sender cloud is a disposable resource to be used to publicly 27 | display and distribute packets (via an URL) for collaboration, tutorials, 28 | end users, etc. Packet Sender may import public packet sets with public 29 | URL. 30 | . 31 | Some uses: 32 | * Control network-based devices in ways beyond their original apps. 33 | * Develop a control panel system for automation that supports TCP/UDP/HTTP 34 | * Test automation (using command line tool and/or hotkeys). 35 | * Test network APIs (using the built-in TCP, UDP, SSL clients). 36 | * Malware analysis (using the built-in UDP, TCP, SSL servers). 37 | * Troubleshoot secure connections (using SSL). 38 | * Test network connectivity/firewalls (by having 2 Packet Senders talk 39 | to each other). 40 | * Stress-test a device (using intense network generator tool). 41 | * Tech support (by sending customers a portable Packet Sender with 42 | pre-defined settings and packets). 43 | * Share/Save/Collaborate using the Packet Sender Cloud service. 44 | . 45 | Packet Sender is useful for network security, network teaching, pentesters, 46 | home automation, and to test firewall systems. 47 | -------------------------------------------------------------------------------- /.github/workflows/debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: PacketSender 3 | Upstream-Contact: https://github.com/dannagle/PacketSender/issues 4 | Source: https://github.com/dannagle/PacketSender 5 | 6 | Files: * 7 | Copyright: 2015-2021 NagleCode, LLC 8 | License: GPL-2+ 9 | 10 | Files: debian/* 11 | Copyright: 2020-2021 Joao Eriberto Mota Filho 12 | License: BSD-3-Clause 13 | 14 | License: GPL-2+ 15 | This package is free software; you can redistribute it and/or modify 16 | it under the terms of the GNU General Public License as published by 17 | the Free Software Foundation; either version 2 of the License, or 18 | (at your option) any later version. 19 | . 20 | This package is distributed in the hope that it will be useful, 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 | GNU General Public License for more details. 24 | . 25 | You should have received a copy of the GNU General Public License 26 | along with this program. If not, see 27 | . 28 | On Debian systems, the complete text of the GNU General 29 | Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". 30 | 31 | License: BSD-3-Clause 32 | Redistribution and use in source and binary forms, with or without 33 | modification, are permitted provided that the following conditions 34 | are met: 35 | 1. Redistributions of source code must retain the above copyright 36 | notice, this list of conditions and the following disclaimer. 37 | 2. Redistributions in binary form must reproduce the above copyright 38 | notice, this list of conditions and the following disclaimer in the 39 | documentation and/or other materials provided with the distribution. 40 | 3. Neither the name of the University nor the names of its contributors 41 | may be used to endorse or promote products derived from this software 42 | without specific prior written permission. 43 | . 44 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 45 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 46 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 47 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR 48 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 49 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 50 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 51 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 52 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 53 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 54 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 55 | -------------------------------------------------------------------------------- /.github/workflows/debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | #export DH_VERBOSE = 1 3 | 4 | export QT_SELECT = qt5 5 | export DEB_BUILD_MAINT_OPTIONS = hardening=+all 6 | 7 | %: 8 | dh $@ --sourcedirectory=src 9 | 10 | override_dh_auto_install: 11 | dh_auto_install 12 | mv debian/packetsender/usr/bin/PacketSender debian/packetsender/usr/bin/packetsender 13 | -------------------------------------------------------------------------------- /.github/workflows/debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ci/cd 4 | *.dmgCanvas 5 | *.key 6 | *.pem 7 | *.backup 8 | *.bz2 9 | 10 | #Astyle temp 11 | *.orig 12 | 13 | #Mac Stuff 14 | *.dmg 15 | *.app 16 | 17 | # C++ objects and libs 18 | .DS_Store 19 | build-* 20 | *.slo 21 | *.lo 22 | *.o 23 | *.a 24 | *.la 25 | *.lai 26 | *.so 27 | *.dll 28 | *.dylib 29 | 30 | # Qt-es 31 | 32 | /.qmake.cache 33 | /.qmake.stash 34 | *.pro.user 35 | *.pro.user.* 36 | *.moc 37 | moc_*.cpp 38 | qrc_*.cpp 39 | ui_*.h 40 | Makefile* 41 | *-build-* 42 | 43 | # QtCreator 44 | 45 | *.autosave 46 | 47 | #QtCtreator Qml 48 | *.qmlproject.user 49 | *.qmlproject.user.* 50 | build/ 51 | 52 | .idea 53 | .vscode 54 | 55 | # Do not accidently commit credentials... 56 | access-token*.txt 57 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Packet Sender will always support free security fixes for the latest version. If the problem is determined to be a medium or high vulnerability, either a fix or a mitigation technique will be listed here within 60 days. 6 | 7 | 8 | | Version | Supported          | 9 | | ------- | ------------------ | 10 | | 8.8.9   | :white_check_mark: | 11 | | 8.8.2   | :x: | 12 | | 8.7.1   | :white_check_mark: | 13 | | older   | :x: | 14 | 15 | 16 | ## Reporting a Vulnerability 17 | 18 | - Use the standard [bug reporting process](/dannagle/PacketSender/issues/new/choose). 19 | - Use https://packetsender.com/contact if you do not wish to use a GitHub account. 20 | 21 | 22 | ## Release signing 23 | 24 | For Windows, every release of Packet Sender from 2022 onward has been code-signed "NagleCode, LLC" with Extended Validation from a FIPS compliant hardware token. This is the strongest code signing certification available on the market. Modified installers and executables will not have the correct digital signature if you right-click view properties. 25 | 26 | For Mac, every release of Packet Sender from 2020 onward has been code-signed and notarized using Apple provided certificates and web hooks. Most Macs are configured to not allow launching the installer or app if the digital signature has been altered. 27 | 28 | For Linux, there are no digital signatures. For those concerned about this, only download the .AppImage directly from the GitHub release page, or you may compile by source. 29 | 30 | 31 | ## List of known vulnerabilities with mitigations 32 | 33 | - The shipped OpenSSL libraries are old (Windows only). 34 | The mitigation is to delete libssl-3-x64.dll and libcrypto-3-x64.dll. Packet Sender will then use the built-in Windows Secure Channel for SSL connections. You will lose some capabilities provided by OpenSSL, but that is probably OK for most. 35 | 36 | - Packet Sender ships with untrusted snake oil certs (Windows only). 37 | This is by design so Packet Sender can provide SSL test servers out-of-the-box. You can override with your own certs in \AppData\Local\PacketSender key.pem and cert.pem. Also, Packet Sender now ships with default off SSL servers. 38 | 39 | - Packet Sender ignores SSL errors. 40 | This is by design so Packet Sender can be used to troubleshoot these kinds of connections. You can go to Settings and turn off "Ignore SSL Errors" to make Packet Sender behave as a normal client. 41 | 42 | 43 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Starter pipeline 2 | # Start with a minimal pipeline that you can customize to build and deploy your code. 3 | # Add steps that build, run tests, deploy, and more: 4 | # https://aka.ms/yaml 5 | 6 | trigger: 7 | - azure-pipelines 8 | 9 | pool: 10 | vmImage: ubuntu-latest 11 | 12 | steps: 13 | 14 | - script: | 15 | sudo apt-get update 16 | sudo apt-get install -y build-essential qt6-base-dev qt6-tools-dev 17 | cd src 18 | qmake6 PacketSender.pro 19 | make 20 | ls 21 | displayName: 'Build Packet Sender' 22 | 23 | - script: | 24 | mkdir -p $(Build.ArtifactStagingDirectory)/bin 25 | cd src 26 | ls 27 | cp packetsender $(Build.ArtifactStagingDirectory)/bin/ 28 | displayName: 'Copy Packet Sender binary to staging' 29 | 30 | 31 | - task: PublishBuildArtifacts@1 32 | inputs: 33 | PathtoPublish: '$(Build.ArtifactStagingDirectory)/bin' 34 | ArtifactName: 'BuiltApp' 35 | publishLocation: 'Container' 36 | -------------------------------------------------------------------------------- /ci_cd/linux/linux-build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z "$1" ] 4 | then 5 | echo "Please supply build version (e.g. 8.0.3)" 6 | exit 7 | fi 8 | BUILD_VERSION="$1"; 9 | php ci_cd/linux/linux-prebuild.php $BUILD_VERSION 10 | # exit 99 11 | cd src 12 | qmake --version 13 | qmake PacketSender.pro 14 | make clean 15 | make -j4 16 | ls 17 | mkdir -p appdir/usr/bin ; 18 | mkdir -p appdir/usr/share/icons ; 19 | cd appdir 20 | cp ../packetsender usr/bin/ 21 | cp ../pslogo256.png packetsender.png 22 | cp ../pslogo256.png usr/share/icons/packetsender.png 23 | cp ../packetsender.desktop packetsender.desktop 24 | 25 | cd .. 26 | wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" 27 | chmod a+x linuxdeployqt*.AppImage 28 | unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH 29 | ./linuxdeployqt*.AppImage ./appdir/usr/bin/packetsender -appimage -bundle-non-qt-libs 30 | 31 | #curl --upload-file ./PacketSender-*.AppImage https://transfer.sh/PacketSender-git$(git rev-parse --short HEAD)-x86_64.AppImage 32 | -------------------------------------------------------------------------------- /ci_cd/linux/linux-prebuild.php: -------------------------------------------------------------------------------- 1 | 1.0<\/string>/'$BUILD_VERSION'<\/string>/' Info.plist 44 | 45 | # "/Users/dannagle/Qt/6.8.0/macos/bin/qmake" PacketSender.pro -spec macx-clang CONFIG+=qtquickcompiler 46 | "/Users/dannagle/Qt/6.8.0/macos/bin/qmake" PacketSender.pro -spec macx-clang CONFIG+=qtquickcompiler QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64" 47 | 48 | # /Users/dannagle/Qt/6.8.0/macos/bin/qmake /Users/dannagle/github/PacketSender/src/PacketSender.pro -spec macx-clang CONFIG+=qtquickcompiler QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64" && /usr/bin/make qmake_all 49 | 50 | make 51 | # /Users/dannagle/Qt/6.8.0/macos/bin/macdeployqt packetsender.app -appstore-compliant 52 | /Users/dannagle/Qt/6.8.0/macos/bin/macdeployqt packetsender.app -appstore-compliant 53 | 54 | /usr/bin/codesign --option runtime --deep --force --sign 38E41C6C66CCA827750A10E26539E038F033E933 --timestamp packetsender.app 55 | mv packetsender.app PacketSender.app 56 | rm -rf /Users/dannagle/github/PacketSender/PacketSender.app || true 57 | mv PacketSender.app /Users/dannagle/github/PacketSender 58 | 59 | rm -rf newbuild.dmg || true 60 | "/Applications/DMG Canvas.app/Contents/Resources/dmgcanvas" "/Users/dannagle/github/PacketSender/PacketSender.dmgCanvas" newbuild.dmg 61 | # -identity 38E41C6C66CCA827750A10E26539E038F033E933 -notarizationPrimaryBundleID "com.packetsender.desktop" -identity "38E41C6C66CCA827750A10E26539E038F033E933" -notarizationAppleID "$2" -notarizationPassword "$3" 62 | 63 | rm -rf /Users/dannagle/github/PacketSender/PacketSender_v$BUILD_VERSION.dmg || true 64 | mv newbuild.dmg /Users/dannagle/github/PacketSender/PacketSender_v$BUILD_VERSION.dmg 65 | 66 | echo "Finished creating PacketSender_v$BUILD_VERSION.dmg" 67 | 68 | #echo "Sending to Apple for notary" 69 | #xcrun altool --notarize-app -f /Users/dannagle/github/PacketSender/PacketSender_v$BUILD_VERSION.dmg --primary-bundle-id 'com.packetsender.desktop' -u ''$APPLE_UNAME'' -p ''$APPLE_PWORD'' 70 | 71 | 72 | # xcrun altool --notarize-app -f _dmg_ --primary-bundle-id 'com.packetsender.desktop' -u "_email_" -p "app_code" --output-format xml 73 | # /usr/bin/xcrun altool --notarization-info notary_id -u _email_ --output-format xml 74 | 75 | popd 76 | -------------------------------------------------------------------------------- /ci_cd/windows/makeall.bat: -------------------------------------------------------------------------------- 1 | IF %1.==. GOTO No1 2 | PUSHD %TMP% 3 | rd /s /q PacketSender 4 | git clone --depth 1 -b development git@github.com:dannagle/PacketSender.git 5 | cd PacketSender 6 | REM Setting Version Numbers 7 | call ci_cd\windows\win-prebuild.bat %1 8 | REM Building app 9 | call ci_cd\windows\win-build.bat 10 | REM Building installers 11 | call ci_cd\windows\win-deploy.bat 12 | POPD 13 | 14 | GOTO End1 15 | 16 | :No1 17 | ECHO Need build version param (such as 8.4.3) 18 | :End1 -------------------------------------------------------------------------------- /ci_cd/windows/win-build.bat: -------------------------------------------------------------------------------- 1 | echo Making exe 2 | SET PATH=%PATH%;C:\Qt\Tools\mingw1310_64\bin;C:\Qt\6.8.0\mingw_64\bin 3 | C:\Qt\6.8.0\mingw_64\bin\qmake.exe -o Makefile src/PacketSender.pro -spec win32-g++ 4 | C:\Qt\Tools\mingw1310_64\bin\mingw32-make.exe -f Makefile.Release -j8 5 | echo Signing exe 6 | cd release 7 | copy /Y C:\Users\danie\Desktop\code_sign_exe_com.bat . 8 | call code_sign_exe_com.bat 9 | echo Copying signed exe 10 | copy /Y packetsender.exe C:\Users\danie\github\naglecode-installers\packetsenderinstaller\qt6_8_0_mingw64\packetsender.exe 11 | copy /Y packetsender.exe C:\Users\danie\github\naglecode-installers\packetsenderinstaller\PacketSenderPortable\packetsender.exe 12 | cd .. 13 | 14 | echo Cleaning build 15 | rd /s /q release 16 | 17 | echo Making command line exe 18 | C:\Qt\6.8.0\mingw_64\bin\qmake.exe -o Makefile src/PacketSenderCLI.pro -spec win32-g++ 19 | C:\Qt\Tools\mingw1310_64\bin\mingw32-make.exe -f Makefile.Release -j8 20 | 21 | echo Signing command line exe 22 | cd release 23 | copy /Y C:\Users\danie\Desktop\code_sign_exe_com.bat . 24 | call code_sign_exe_com.bat 25 | echo Copying command line exe 26 | copy /Y packetsendercli.exe C:\Users\danie\github\naglecode-installers\packetsenderinstaller\qt6_8_0_mingw64\packetsender.com 27 | copy /Y packetsendercli.exe C:\Users\danie\github\naglecode-installers\packetsenderinstaller\PacketSenderPortable\packetsender.com 28 | cd .. 29 | -------------------------------------------------------------------------------- /ci_cd/windows/win-deploy.bat: -------------------------------------------------------------------------------- 1 | echo Building Installers 2 | set /p BUILD_VERSION= buildversion.txt 3 | REM copy /Y C:\Users\danie\Desktop\prebuild-windows.php ci_cd\windows\win-prebuild.php 4 | wsl php ci_cd/windows/win-prebuild.php 5 | 6 | GOTO End1 7 | 8 | :No1 9 | ECHO Need build version param (such as 8.4.3) 10 | :End1 11 | -------------------------------------------------------------------------------- /ci_cd/windows/win-prebuild.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | packetsender 7 | CFBundleGetInfoString 8 | Network Utility To Send/Receive Packets 9 | CFBundleIconFile 10 | psicons.icns 11 | CFBundleIdentifier 12 | com.packetsender.desktop 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1.0 21 | LSMinimumSystemVersion 22 | 10.11 23 | NOTE 24 | Network Utility to send/receive packets 25 | NSPrincipalClass 26 | NSApplication 27 | NSSupportsAutomaticGraphicsSwitching 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /src/PacketSender.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2012-08-10T12:30:15 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui network widgets 8 | 9 | TARGET = packetsender 10 | TEMPLATE = app 11 | DEFINES += GUI_BUILD 12 | 13 | TRANSLATIONS += languages/packetsender_en.ts \ 14 | languages/packetsender_es.ts \ 15 | languages/packetsender_fr.ts \ 16 | languages/packetsender_de.ts \ 17 | languages/packetsender_hi.ts \ 18 | languages/packetsender_it.ts 19 | 20 | SOURCES += mainwindow.cpp \ 21 | languagechooser.cpp \ 22 | panel.cpp \ 23 | sendpacketbutton.cpp \ 24 | brucethepoodle.cpp \ 25 | irisandmarigold.cpp \ 26 | persistentconnection.cpp \ 27 | about.cpp \ 28 | subnetcalc.cpp \ 29 | cloudui.cpp \ 30 | multicastsetup.cpp \ 31 | udpflooding.cpp \ 32 | packetlogmodel.cpp \ 33 | postdatagen.cpp \ 34 | panelgenerator.cpp \ 35 | persistenthttp.cpp \ 36 | wakeonlan.cpp 37 | 38 | HEADERS += mainwindow.h \ 39 | languagechooser.h \ 40 | panel.h \ 41 | sendpacketbutton.h \ 42 | brucethepoodle.h \ 43 | irisandmarigold.h \ 44 | persistentconnection.h \ 45 | about.h \ 46 | subnetcalc.h \ 47 | cloudui.h \ 48 | multicastsetup.h \ 49 | udpflooding.h \ 50 | packetlogmodel.h \ 51 | postdatagen.h\ 52 | panelgenerator.h \ 53 | persistenthttp.h \ 54 | wakeonlan.h 55 | 56 | 57 | 58 | FORMS += mainwindow.ui \ 59 | brucethepoodle.ui \ 60 | irisandmarigold.ui \ 61 | languagechooser.ui \ 62 | persistentconnection.ui \ 63 | settings.ui \ 64 | about.ui \ 65 | subnetcalc.ui \ 66 | cloudui.ui \ 67 | multicastsetup.ui \ 68 | udpflooding.ui \ 69 | persistenthttp.ui \ 70 | postdatagen.ui \ 71 | panelgenerator.ui \ 72 | wakeonlan.ui 73 | 74 | 75 | include(packetsender_main.pri) 76 | 77 | -------------------------------------------------------------------------------- /src/PacketSenderCLI.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2012-08-10T12:30:15 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core network 8 | 9 | TARGET = packetsendercli 10 | TEMPLATE = app 11 | 12 | win32:CONFIG += console 13 | win32:DEFINES += CONSOLE_BUILD 14 | win32:DEFINES -= GUI_BUILD 15 | 16 | 17 | include(packetsender_main.pri) 18 | -------------------------------------------------------------------------------- /src/PacketSenderSnap.pro: -------------------------------------------------------------------------------- 1 | # Project file used by snapcraft 2 | 3 | QT += core gui network widgets 4 | 5 | DEFINES += "ISSNAP=1" 6 | 7 | 8 | TARGET = packetsender 9 | TEMPLATE = app 10 | DEFINES += GUI_BUILD 11 | 12 | TRANSLATIONS += languages/packetsender_en.ts \ 13 | languages/packetsender_es.ts \ 14 | languages/packetsender_fr.ts \ 15 | languages/packetsender_de.ts \ 16 | languages/packetsender_hi.ts \ 17 | languages/packetsender_it.ts 18 | 19 | SOURCES += mainwindow.cpp \ 20 | languagechooser.cpp \ 21 | panel.cpp \ 22 | sendpacketbutton.cpp \ 23 | brucethepoodle.cpp \ 24 | irisandmarigold.cpp \ 25 | persistentconnection.cpp \ 26 | about.cpp \ 27 | subnetcalc.cpp \ 28 | cloudui.cpp \ 29 | multicastsetup.cpp \ 30 | udpflooding.cpp \ 31 | packetlogmodel.cpp \ 32 | postdatagen.cpp \ 33 | panelgenerator.cpp \ 34 | persistenthttp.cpp \ 35 | wakeonlan.cpp 36 | 37 | HEADERS += mainwindow.h \ 38 | languagechooser.h \ 39 | panel.h \ 40 | sendpacketbutton.h \ 41 | brucethepoodle.h \ 42 | irisandmarigold.h \ 43 | persistentconnection.h \ 44 | about.h \ 45 | subnetcalc.h \ 46 | cloudui.h \ 47 | multicastsetup.h \ 48 | udpflooding.h \ 49 | packetlogmodel.h \ 50 | postdatagen.h\ 51 | panelgenerator.h \ 52 | persistenthttp.h \ 53 | wakeonlan.h 54 | 55 | 56 | 57 | FORMS += mainwindow.ui \ 58 | brucethepoodle.ui \ 59 | irisandmarigold.ui \ 60 | languagechooser.ui \ 61 | persistentconnection.ui \ 62 | settings.ui \ 63 | about.ui \ 64 | subnetcalc.ui \ 65 | cloudui.ui \ 66 | multicastsetup.ui \ 67 | udpflooding.ui \ 68 | persistenthttp.ui \ 69 | postdatagen.ui \ 70 | panelgenerator.ui \ 71 | wakeonlan.ui 72 | 73 | 74 | include(packetsender_main.pri) -------------------------------------------------------------------------------- /src/Twitter_logo_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/Twitter_logo_blue.png -------------------------------------------------------------------------------- /src/about.cpp: -------------------------------------------------------------------------------- 1 | #include "about.h" 2 | #include "globals.h" 3 | #include "ui_about.h" 4 | #include "packetnetwork.h" 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | About::About(QWidget *parent) : 13 | QDialog(parent), 14 | ui(new Ui::About) 15 | { 16 | ui->setupUi(this); 17 | 18 | 19 | QString versionBuilder = QString("PS Version: ") + SW_VERSION; 20 | versionBuilder.append("\nQt Version: " + QString(QT_VERSION_STR)); 21 | if (QSslSocket::supportsSsl()) { 22 | versionBuilder.append("\nSSL Version: "); 23 | versionBuilder.append(QSslSocket::sslLibraryBuildVersionString()); 24 | if(PacketNetwork::DTLSisSupported()) { 25 | versionBuilder.append("\nDTLS is supported."); 26 | } else { 27 | versionBuilder.append("\nDTLS is NOT supported."); 28 | } 29 | } else { 30 | versionBuilder.append("\nSSL library not found"); 31 | } 32 | 33 | #ifdef GIT_CURRENT_SHA1 34 | versionBuilder.append(tr("\nCommit Hash: ") + QString(GIT_CURRENT_SHA1)); 35 | #endif 36 | ui->buidDateLabel->setText(versionBuilder); 37 | 38 | QIcon mIcon(":pslogo.png"); 39 | setWindowTitle(tr("About Packet Sender")); 40 | setWindowIcon(mIcon); 41 | 42 | setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); 43 | 44 | 45 | 46 | QPalette pal = ui->psLinkButton->palette(); 47 | pal.setColor(QPalette::Button, QColor(Qt::white)); 48 | ui->psLinkButton->setAutoFillBackground(true); 49 | ui->psLinkButton->setPalette(pal); 50 | 51 | 52 | ui->psLinkButton->setStyleSheet(HYPERLINKSTYLE); 53 | ui->psLinkButton->setIcon(QIcon(":pslogo.png")); 54 | ui->psLinkButton->setFlat(true); 55 | ui->psLinkButton->setCursor(Qt::PointingHandCursor); 56 | connect(ui->psLinkButton, SIGNAL(clicked()), 57 | this, SLOT(gotoPacketSenderDotCom())); 58 | 59 | } 60 | 61 | About::~About() 62 | { 63 | delete ui; 64 | } 65 | 66 | void About::gotoPacketSenderDotCom() 67 | { 68 | //Open URL in browser 69 | QDesktopServices::openUrl(QUrl("https://packetsender.com/")); 70 | 71 | } 72 | 73 | void About::gotoDanNagleDotCom() 74 | { 75 | 76 | //Open URL in browser 77 | QDesktopServices::openUrl(QUrl("https://dannagle.com/")); 78 | 79 | } 80 | 81 | 82 | void About::gotoDanNaglePayPal() 83 | { 84 | 85 | //Open URL in browser 86 | QDesktopServices::openUrl(QUrl("http://dannagle.com/paypal")); 87 | 88 | } 89 | 90 | void About::gotoNagleCode() 91 | { 92 | //Open URL in browser 93 | QDesktopServices::openUrl(QUrl("http://twitter.com/NagleCode")); 94 | 95 | } 96 | -------------------------------------------------------------------------------- /src/about.h: -------------------------------------------------------------------------------- 1 | #ifndef ABOUT_H 2 | #define ABOUT_H 3 | 4 | #include 5 | 6 | namespace Ui 7 | { 8 | class About; 9 | } 10 | 11 | class About : public QDialog 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit About(QWidget *parent = 0); 17 | ~About(); 18 | 19 | 20 | public slots: 21 | void gotoPacketSenderDotCom(); 22 | void gotoDanNagleDotCom(); 23 | void gotoDanNaglePayPal(); 24 | void gotoNagleCode(); 25 | 26 | 27 | private: 28 | Ui::About *ui; 29 | }; 30 | 31 | #endif // ABOUT_H 32 | -------------------------------------------------------------------------------- /src/association.h: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2018 The Qt Company Ltd. 2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause 3 | #pragma once 4 | 5 | #include 6 | #include 7 | #include "packet.h" 8 | 9 | 10 | #if QT_VERSION > QT_VERSION_CHECK(6, 00, 0) 11 | 12 | 13 | //! [0] 14 | class DtlsAssociation : public QObject 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | DtlsAssociation(QHostAddress &address, quint16 port, 20 | const QString &connectionName, std::vector cmdComponents); 21 | ~DtlsAssociation(); 22 | void startHandshake(); 23 | void setCipher(QString chosenCipher); 24 | QSsl::EncodingFormat getCertFormat(QFile& certFile); 25 | QSslKey getPrivateKey(QFile& keyFile); 26 | 27 | 28 | QSslConfiguration configuration = QSslConfiguration::defaultDtlsConfiguration(); 29 | QDtls crypto; 30 | QUdpSocket socket; 31 | QString name; 32 | Packet packetToSend; 33 | 34 | bool closeRequest; 35 | 36 | signals: 37 | void errorMessage(const QString &message); 38 | void warningMessage(const QString &message); 39 | void infoMessage(const QString &message); 40 | void handShakeComplited(); 41 | void receivedDatagram(QByteArray plainText); 42 | 43 | private slots: 44 | void udpSocketConnected(); 45 | void readyRead(); 46 | void pskRequired(QSslPreSharedKeyAuthenticator *auth); 47 | void handshakeTimeout(); 48 | 49 | private: 50 | 51 | 52 | QTimer pingTimer; 53 | unsigned ping = 0; 54 | 55 | Q_DISABLE_COPY(DtlsAssociation) 56 | }; 57 | 58 | #else 59 | class DtlsAssociation : public QThread 60 | { 61 | Q_OBJECT 62 | 63 | public: 64 | int nothing; 65 | 66 | }; 67 | 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /src/bruce.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/bruce.jpg -------------------------------------------------------------------------------- /src/bruce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/bruce.png -------------------------------------------------------------------------------- /src/brucethepoodle.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | * (This is the dog easter egg.) 10 | * 11 | */ 12 | 13 | 14 | #include "brucethepoodle.h" 15 | #include "ui_brucethepoodle.h" 16 | 17 | BruceThePoodle::BruceThePoodle(QWidget *parent) : 18 | QDialog(parent), 19 | ui(new Ui::BruceThePoodle) 20 | { 21 | ui->setupUi(this); 22 | 23 | Qt::WindowFlags flags = windowFlags(); 24 | Qt::WindowFlags helpFlag = Qt::WindowContextHelpButtonHint; 25 | flags = flags & (~helpFlag); 26 | setWindowFlags(flags); 27 | 28 | this->setFixedSize(this->width(), this->height()); 29 | setWindowTitle(tr("Bruce The Poodle!")); 30 | } 31 | 32 | BruceThePoodle::~BruceThePoodle() 33 | { 34 | delete ui; 35 | } 36 | -------------------------------------------------------------------------------- /src/brucethepoodle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | * (This is the dog easter egg.) 10 | * 11 | */ 12 | #ifndef BRUCETHEPOODLE_H 13 | #define BRUCETHEPOODLE_H 14 | 15 | #include 16 | 17 | namespace Ui 18 | { 19 | class BruceThePoodle; 20 | } 21 | 22 | class BruceThePoodle : public QDialog 23 | { 24 | Q_OBJECT 25 | 26 | public: 27 | explicit BruceThePoodle(QWidget *parent = 0); 28 | ~BruceThePoodle(); 29 | 30 | private: 31 | Ui::BruceThePoodle *ui; 32 | }; 33 | 34 | #endif // BRUCETHEPOODLE_H 35 | -------------------------------------------------------------------------------- /src/brucethepoodle.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | BruceThePoodle 4 | 5 | 6 | 7 | 0 8 | 0 9 | 600 10 | 500 11 | 12 | 13 | 14 | 15 | 600 16 | 500 17 | 18 | 19 | 20 | 21 | 600 22 | 500 23 | 24 | 25 | 26 | Dialog 27 | 28 | 29 | 30 | 31 | 20 32 | 10 33 | 541 34 | 451 35 | 36 | 37 | 38 | background-image:url(:/bruce.png) 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/busy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/busy.png -------------------------------------------------------------------------------- /src/cloudui.h: -------------------------------------------------------------------------------- 1 | #ifndef CLOUDUI_H 2 | #define CLOUDUI_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "packet.h" 10 | 11 | 12 | namespace Ui 13 | { 14 | class CloudUI; 15 | } 16 | 17 | typedef struct PacketSet { 18 | QString name; 19 | QString description; 20 | QString lastupdate; 21 | QString path; 22 | int ispublic; 23 | QList packets; 24 | } PacketSet; 25 | 26 | 27 | 28 | class CloudUI : public QDialog 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | explicit CloudUI(QWidget *parent = 0); 34 | ~CloudUI(); 35 | 36 | signals: 37 | void packetsImported(QList packetSet); 38 | 39 | 40 | private slots: 41 | void on_loginButton_clicked(); 42 | 43 | void on_saveToCloudButton_clicked(); 44 | 45 | void on_viewPublicButton_clicked(); 46 | 47 | void on_importURLButton_clicked(); 48 | 49 | void on_importPacketsButton_clicked(); 50 | 51 | void replyFinished(QNetworkReply *request); 52 | 53 | void on_createAccountButton_clicked(); 54 | 55 | void on_privacyButton_clicked(); 56 | 57 | void on_termsButton_clicked(); 58 | 59 | 60 | void on_deletePacketButton_clicked(); 61 | 62 | void on_cloudLinkButton_clicked(); 63 | 64 | void on_packetSetTable_clicked(const QModelIndex &index); 65 | 66 | private: 67 | void loadPacketSetTable(); 68 | 69 | void popMsg(QString title, QString msg, bool isError); 70 | 71 | void doPost(QUrlQuery postData); 72 | 73 | bool suppressAlert; 74 | 75 | 76 | QString un; 77 | QString pw; 78 | 79 | QList packets; 80 | 81 | Ui::CloudUI *ui; 82 | QList packetsToImport; 83 | QList packetsToExport; 84 | QList packetsFound; 85 | QList packetSets; 86 | 87 | 88 | QNetworkAccessManager * http; 89 | 90 | 91 | }; 92 | 93 | #endif // CLOUDUI_H 94 | -------------------------------------------------------------------------------- /src/cmake/GetGitRevisionDescription.cmake.in: -------------------------------------------------------------------------------- 1 | # 2 | # Internal file for GetGitRevisionDescription.cmake 3 | # 4 | # Requires CMake 2.6 or newer (uses the 'function' command) 5 | # 6 | # Original Author: 7 | # 2009-2010 Ryan Pavlik 8 | # http://academic.cleardefinition.com 9 | # Iowa State University HCI Graduate Program/VRAC 10 | # 11 | # Copyright Iowa State University 2009-2010. 12 | # Distributed under the Boost Software License, Version 1.0. 13 | # (See accompanying file LICENSE_1_0.txt or copy at 14 | # http://www.boost.org/LICENSE_1_0.txt) 15 | 16 | set(HEAD_HASH) 17 | 18 | file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) 19 | 20 | string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) 21 | if(HEAD_CONTENTS MATCHES "ref") 22 | # named branch 23 | string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") 24 | if(EXISTS "@GIT_DIR@/${HEAD_REF}") 25 | configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) 26 | else() 27 | configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) 28 | file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) 29 | if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") 30 | set(HEAD_HASH "${CMAKE_MATCH_1}") 31 | endif() 32 | endif() 33 | else() 34 | # detached HEAD 35 | configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) 36 | endif() 37 | 38 | if(NOT HEAD_HASH) 39 | file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) 40 | string(STRIP "${HEAD_HASH}" HEAD_HASH) 41 | endif() 42 | -------------------------------------------------------------------------------- /src/cmd_dtls_client.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem Set environment variables for dataStr, toIP, port, sslPrivateKeyPath, sslLocalCertificatePath, and sslCaPath 4 | @echo dataStr=%1 5 | @echo toIP=%2 6 | @echo port=%3 7 | @echo sslPrivateKeyPath=%4 8 | @echo sslLocalCertificatePath=%5 9 | @echo sslCaPath=%6 10 | 11 | rem Create an empty "session.pem" file 12 | type nul > session.pem 13 | 14 | rem Run your long OpenSSL command 15 | echo %dataStr% | openssl s_client -dtls1_2 -connect %toIP%:%port% -sess_out session.pem -key %sslPrivateKeyPath% -cert %sslLocalCertificatePath% -CAfile %sslCaPath% -verify 2 -cipher AES256-GCM-SHA384 16 | -------------------------------------------------------------------------------- /src/cmd_dtls_client.txt: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem Set environment variables for dataStr, toIP, port, sslPrivateKeyPath, sslLocalCertificatePath, and sslCaPath 4 | set dataStr=%1 5 | set toIP=%2 6 | set port=%3 7 | set sslPrivateKeyPath=%4 8 | set sslLocalCertificatePath=%5 9 | set sslCaPath=%6 10 | 11 | rem Create an empty "session.pem" file 12 | type nul > session.pem 13 | 14 | rem Run your long OpenSSL command 15 | echo %dataStr% | openssl s_client -dtls1_2 -connect %toIP%:%port% -sess_out session.pem -key %sslPrivateKeyPath% -cert %sslLocalCertificatePath% -CAfile %sslCaPath% -verify 2 -cipher AES256-GCM-SHA384 16 | -------------------------------------------------------------------------------- /src/dannagle32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/dannagle32.jpg -------------------------------------------------------------------------------- /src/dannagle_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/dannagle_logo.png -------------------------------------------------------------------------------- /src/dtlsserver.h: -------------------------------------------------------------------------------- 1 | 2 | // Copyright (C) 2018 The Qt Company Ltd. 3 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause 4 | #pragma once 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include "packet.h" 11 | 12 | #if QT_VERSION > QT_VERSION_CHECK(6, 00, 0) 13 | 14 | //! [0] 15 | class DtlsServer : public QObject 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | static bool closeNotifyReceived; // Initialize static member 21 | 22 | 23 | QSslCertificate certificate; 24 | QSslKey privateKey; 25 | QSslCertificate caCertificate; 26 | 27 | QSslConfiguration serverConfiguration; 28 | DtlsServer(); 29 | ~DtlsServer(); 30 | 31 | 32 | 33 | bool listen(const QHostAddress &address, quint16 port); 34 | bool isListening() const; 35 | void close(); 36 | Packet createPacket(const std::vector& packetInfo, const QByteArray& dgram); 37 | std::vector createInfoVect(const QHostAddress &fromAddress, quint16 fromPort, const QHostAddress &toAddress, quint16 toPort); 38 | bool serverResonse(QDtls* dtlsServer); 39 | void loadKeyLocalCertCaCert(); 40 | void setConfiguration(); 41 | QSsl::EncodingFormat getCertFormat(QFile& certFile); 42 | QSslKey getPrivateKey(QFile& keyFile); 43 | QString getFullPathToCaCert(); 44 | 45 | 46 | QString getIPmode(); 47 | bool IPv4Enabled(); 48 | bool IPv6Enabled(); 49 | QHostAddress resolveDNS(QString hostname); 50 | 51 | //bool closeNotifyRecieved; 52 | QUdpSocket serverSocket; 53 | QByteArray smartData; 54 | 55 | 56 | signals: 57 | void serverPacketReceived(Packet); 58 | void serverPacketSent(Packet); 59 | 60 | 61 | void errorMessage(const QString &message); 62 | void warningMessage(const QString &message); 63 | void infoMessage(const QString &message); 64 | 65 | //void serverDatagramReceived(const QString &peerInfo, const QByteArray &cipherText, const QByteArray &plainText); 66 | 67 | private slots: 68 | void readyRead(); 69 | void pskRequired(QSslPreSharedKeyAuthenticator *auth); 70 | 71 | public slots: 72 | void on_signedCert_textChanged(); 73 | //void serverReceivedDatagram(const QString& peerInfo, const QByteArray &clientMessage, const QByteArray& dgram); 74 | 75 | private: 76 | void handleNewConnection(const QHostAddress &peerAddress, quint16 peerPort, 77 | const QByteArray &clientHello); 78 | 79 | void doHandshake(QDtls *newConnection, const QByteArray &clientHello); 80 | void sendAck(QDtls *connection, const QByteArray &clientMessage); 81 | void shutdown(); 82 | 83 | bool listening = false; 84 | 85 | QDtlsClientVerifier cookieSender; 86 | std::vector> knownClients; 87 | 88 | 89 | Q_DISABLE_COPY(DtlsServer) 90 | }; 91 | //! [0] 92 | 93 | #else 94 | 95 | #include "threadedtcpserver.h" 96 | 97 | class DtlsServer : public ThreadedTCPServer 98 | { 99 | Q_OBJECT 100 | 101 | public: 102 | int nothing; 103 | QSslCertificate certificate; 104 | QSslKey privateKey; 105 | QSslCertificate caCertificate; 106 | 107 | QSslConfiguration serverConfiguration; 108 | QUdpSocket serverSocket; 109 | QByteArray smartData; 110 | void on_signedCert_textChanged(); 111 | 112 | 113 | }; 114 | 115 | 116 | #endif 117 | 118 | -------------------------------------------------------------------------------- /src/dtlsthread.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "packet.h" 5 | #include "globals.h" 6 | #include "QSettings" 7 | #include "association.h" 8 | //#include "QTimer" 9 | 10 | #if QT_VERSION > QT_VERSION_CHECK(6, 00, 0) 11 | 12 | 13 | class Dtlsthread : public QThread 14 | { 15 | Q_OBJECT 16 | 17 | public: 18 | bool respondRecieved = false; 19 | int retries = 0; 20 | Dtlsthread(Packet sendPacket, QObject *parent); 21 | DtlsAssociation* initDtlsAssociation(); 22 | virtual ~Dtlsthread(); 23 | void persistentConnectionLoop(); 24 | void run() override; // Pure virtual function making this class abstract 25 | std::vector getCmdInput(Packet sendpacket, QSettings& settings); 26 | void writeMassage(Packet packetToSend, DtlsAssociation* dtlsAssociation); 27 | void retryHandshake(); 28 | 29 | QTimer* timer; 30 | std::vector dtlsAssociations; 31 | DtlsAssociation* dtlsAssociation; 32 | QString recievedMassage; 33 | Packet sendpacket; 34 | 35 | 36 | bool closeRequest; 37 | bool handShakeDone; 38 | bool insidePersistent; 39 | bool persistentRequest = false; 40 | 41 | public slots: 42 | void onHandshakeTimeout(); 43 | void onTimeout(); 44 | void sendPersistant(Packet sendpacket); 45 | void handShakeComplited(); 46 | void receivedDatagram(QByteArray plainText); 47 | 48 | signals: 49 | void toStatusBar(const QString & message, int timeout = 0, bool override = false); 50 | void connectStatus(QString); 51 | void packetSent(Packet); 52 | void packetReceived(Packet); 53 | 54 | 55 | }; 56 | #else 57 | 58 | class Dtlsthread : public QThread 59 | { 60 | Q_OBJECT 61 | 62 | public: 63 | Dtlsthread(Packet sendPacket, QObject *parent) ; 64 | virtual ~Dtlsthread(); 65 | void run() override; // Pure virtual function making this class abstract 66 | 67 | 68 | QTimer* timer; 69 | std::vector dtlsAssociations; 70 | DtlsAssociation* dtlsAssociation; 71 | QString recievedMassage; 72 | Packet sendpacket; 73 | 74 | 75 | bool closeRequest; 76 | bool handShakeDone; 77 | bool insidePersistent; 78 | bool persistentRequest = false; 79 | 80 | }; 81 | 82 | #endif 83 | 84 | -------------------------------------------------------------------------------- /src/globals.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | */ 10 | #pragma once 11 | 12 | //BEGIN SW VERSION 13 | #define SW_VERSION "8.8.9" 14 | //END SW VERSION 15 | 16 | #define HANDSHAKE_STEPS_TIMEOUT 10 /* Milliseconds */ 17 | #define DTLS_THREAS_TIME_TO_LIVE 1000 /* Milliseconds */ 18 | 19 | //BEGIN FILE VERSION 20 | #define VER_FILEVERSION 8,8,9,0 21 | //END FILE VERSION 22 | 23 | #define QDEBUG() qDebug() << __FILE__ << "/" <<__LINE__ <<"(" << __FUNCTION__ << "):" 24 | #define QDEBUGVAR(var) QDEBUG() << # var << var 25 | 26 | #define DATETIMEFORMAT "yyyy-MM-dd hh:mm:ss.zzz" 27 | #define FULLDATETIMEFORMAT "yyyy-MM-dd hh:mm:ss" 28 | 29 | #define UPDATE_URL_REMOTE "https://packetsender.com/update" 30 | #define UPDATE_URL_LOCAL "http://packetsender.com.local/update" 31 | 32 | #define CLOUD_URL_REMOTE "https://cloud.packetsender.com/" 33 | #define CLOUD_URL_LOCAL "http://cloud.packetsender.com.local/" 34 | #define PACKETS_PANELS_DELIM "/* PACKETS_PANELS_DELIM */" 35 | #define CLOUD_URL ((QFile::exists(QDir::homePath() + "/DEBUGLOCAL")) ? (CLOUD_URL_LOCAL) : ((CLOUD_URL_REMOTE))) 36 | 37 | #define UPDATE_URL ((QFile::exists(QDir::homePath() + "/UPDATELOCAL")) ? (UPDATE_URL_LOCAL) : ((UPDATE_URL_REMOTE))) 38 | 39 | #define DAYS_BETWEEN_UPDATES 7 40 | 41 | 42 | #define HYPERLINKSTYLE "QPushButton { color: lightblue; } QPushButton::hover { color: #BC810C; } " 43 | 44 | //#define TEMPPATH QDir::toNativeSeparators(QDir::temp().absolutePath()) + "/PacketSender/" 45 | #define SETTINGSPATH QStandardPaths::writableLocation( QStandardPaths::GenericDataLocation )+ "/PacketSender/" 46 | 47 | //Load local file if it exists or if portablemode.txt exists 48 | #define SETTINGSFILE ((QFile::exists("ps_settings.ini") || QFile::exists("portablemode.txt") ) ? ("ps_settings.ini") : ((SETTINGSPATH) + "ps_settings.ini")) 49 | #define PACKETSFILE ((QFile::exists("packets.ini") || QFile::exists("portablemode.txt") ) ? ("packets.ini") : ((SETTINGSPATH) + "packets.ini")) 50 | #define CERTFILE ((QFile::exists("cert.pem") || QFile::exists("portablemode.txt") ) ? ("cert.pem") : ((SETTINGSPATH) + "cert.pem")) 51 | #define KEYFILE ((QFile::exists("key.pem") || QFile::exists("portablemode.txt") ) ? ("key.pem") : ((SETTINGSPATH) + "key.pem")) 52 | #define PANELSFILE ((QFile::exists("ps_panels.json") || QFile::exists("portablemode.txt") ) ? ("ps_panels.json") : ((SETTINGSPATH) + "ps_panels.json")) 53 | 54 | #define NAMEINIKEY "NAMES" 55 | #define DTLSSENDICON ":icons/tx_dtls.png" 56 | #define DTLSRXICON ":icons/rx_dtls.png" 57 | #define UDPSENDICON ":icons/tx_udp.png" 58 | #define TCPSENDICON ":icons/tx_tcp.png" 59 | #define UDPRXICON ":icons/rx_udp.png" 60 | #define TCPRXICON ":icons/rx_tcp.png" 61 | #define SSLRXICON ":icons/rx_ssl.png" 62 | #define SSLSENDICON ":icons/tx_ssl.png" 63 | #define HTTPRXICON ":icons/rx_http.png" 64 | #define HTTPSENDICON ":icons/tx_http.png" 65 | 66 | #define PSLOGO ":pslogo.png" 67 | #define UPDOWNICON ":icons/moveupdown.png" 68 | 69 | 70 | // Hard-coding EOL for linux since Qt distros vary widely 71 | #ifdef __linux__ 72 | #define ENDL "\n"; 73 | #else 74 | #define ENDL Qt::endl; 75 | #endif 76 | 77 | //Qt 5.10 changed the way sockets bind 78 | //It seems dual ipv4/ipv6 mode works better. 79 | 80 | //Qt 5.12 -- It seems ipv4/ipv6 is broken again. 81 | //Lets put that toggle button back and force IPv4/6 only again. Sad_Panda.jpg 82 | 83 | //Final attempt: an IP string bind option. 84 | 85 | //used when binding 86 | #define IPV4_OR_IPV6 Packet::IPV4_IPV6_ANY(ipMode) 87 | 88 | -------------------------------------------------------------------------------- /src/icons/android-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/android-icon.png -------------------------------------------------------------------------------- /src/icons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/apple-icon.png -------------------------------------------------------------------------------- /src/icons/applogo_bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/applogo_bw.png -------------------------------------------------------------------------------- /src/icons/applogo_notagline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/applogo_notagline.png -------------------------------------------------------------------------------- /src/icons/applogo_tagline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/applogo_tagline.png -------------------------------------------------------------------------------- /src/icons/bolt-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/bolt-icon.png -------------------------------------------------------------------------------- /src/icons/calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/calculator.png -------------------------------------------------------------------------------- /src/icons/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/cog.png -------------------------------------------------------------------------------- /src/icons/database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/database.png -------------------------------------------------------------------------------- /src/icons/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/download.png -------------------------------------------------------------------------------- /src/icons/forum-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/forum-icon.png -------------------------------------------------------------------------------- /src/icons/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/heart.png -------------------------------------------------------------------------------- /src/icons/ic_cloud_done_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/ic_cloud_done_black_24dp_2x.png -------------------------------------------------------------------------------- /src/icons/ic_cloud_download_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/ic_cloud_download_black_24dp_2x.png -------------------------------------------------------------------------------- /src/icons/ic_cloud_upload_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/ic_cloud_upload_black_24dp_2x.png -------------------------------------------------------------------------------- /src/icons/ic_person_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/ic_person_black_24dp_2x.png -------------------------------------------------------------------------------- /src/icons/ic_share_black_24dp_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/ic_share_black_24dp_2x.png -------------------------------------------------------------------------------- /src/icons/linkedin-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/linkedin-icon.png -------------------------------------------------------------------------------- /src/icons/moveupdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/moveupdown.png -------------------------------------------------------------------------------- /src/icons/multicast-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/multicast-icon.png -------------------------------------------------------------------------------- /src/icons/outline_lightbulb_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/outline_lightbulb_white_24dp.png -------------------------------------------------------------------------------- /src/icons/panel-generator-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/panel-generator-icon.png -------------------------------------------------------------------------------- /src/icons/power-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/power-off.png -------------------------------------------------------------------------------- /src/icons/question-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/question-circle.png -------------------------------------------------------------------------------- /src/icons/rx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx.png -------------------------------------------------------------------------------- /src/icons/rx_232.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_232.png -------------------------------------------------------------------------------- /src/icons/rx_dtls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_dtls.png -------------------------------------------------------------------------------- /src/icons/rx_http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_http.png -------------------------------------------------------------------------------- /src/icons/rx_ssl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_ssl.png -------------------------------------------------------------------------------- /src/icons/rx_tcp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_tcp.png -------------------------------------------------------------------------------- /src/icons/rx_udp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_udp.png -------------------------------------------------------------------------------- /src/icons/rx_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_white.png -------------------------------------------------------------------------------- /src/icons/rx_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/rx_yellow.png -------------------------------------------------------------------------------- /src/icons/twitter-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/twitter-icon.png -------------------------------------------------------------------------------- /src/icons/tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx.png -------------------------------------------------------------------------------- /src/icons/tx_232.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_232.png -------------------------------------------------------------------------------- /src/icons/tx_dtls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_dtls.png -------------------------------------------------------------------------------- /src/icons/tx_http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_http.png -------------------------------------------------------------------------------- /src/icons/tx_ssl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_ssl.png -------------------------------------------------------------------------------- /src/icons/tx_tcp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_tcp.png -------------------------------------------------------------------------------- /src/icons/tx_udp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/tx_udp.png -------------------------------------------------------------------------------- /src/icons/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/icons/upload.png -------------------------------------------------------------------------------- /src/iris_and_marigold.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/iris_and_marigold.jpg -------------------------------------------------------------------------------- /src/irisandmarigold.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | * (This is the puppy easter egg.) 10 | * 11 | */ 12 | 13 | 14 | #include "irisandmarigold.h" 15 | #include "ui_irisandmarigold.h" 16 | 17 | IrisAndMarigold::IrisAndMarigold(QWidget *parent) : 18 | QDialog(parent), 19 | ui(new Ui::IrisAndMarigold) 20 | { 21 | ui->setupUi(this); 22 | 23 | Qt::WindowFlags flags = windowFlags(); 24 | Qt::WindowFlags helpFlag = Qt::WindowContextHelpButtonHint; 25 | flags = flags & (~helpFlag); 26 | setWindowFlags(flags); 27 | 28 | this->setFixedSize(this->width(), this->height()); 29 | setWindowTitle(("Iris And Marigold")); 30 | } 31 | 32 | IrisAndMarigold::~IrisAndMarigold() 33 | { 34 | delete ui; 35 | } 36 | -------------------------------------------------------------------------------- /src/irisandmarigold.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | * (This is the puppy easter egg.) 10 | * 11 | */ 12 | #pragma once 13 | #include 14 | 15 | namespace Ui 16 | { 17 | class IrisAndMarigold; 18 | } 19 | 20 | class IrisAndMarigold : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit IrisAndMarigold(QWidget *parent = 0); 26 | ~IrisAndMarigold(); 27 | 28 | private: 29 | Ui::IrisAndMarigold *ui; 30 | }; 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/irisandmarigold.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | IrisAndMarigold 4 | 5 | 6 | 7 | 0 8 | 0 9 | 670 10 | 500 11 | 12 | 13 | 14 | 15 | 670 16 | 500 17 | 18 | 19 | 20 | 21 | 670 22 | 500 23 | 24 | 25 | 26 | Dialog 27 | 28 | 29 | 30 | 31 | 32 | background-image:url(:/iris_and_marigold.jpg) 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/languagechooser.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "languagechooser.h" 8 | #include "settings.h" 9 | #include "globals.h" 10 | #include "ui_languagechooser.h" 11 | 12 | LanguageChooser::LanguageChooser(QWidget *parent) : 13 | QDialog(parent), 14 | ui(new Ui::LanguageChooser) 15 | { 16 | ui->setupUi(this); 17 | 18 | 19 | QString language = Settings::language().toLower(); 20 | 21 | QDEBUGVAR(language); 22 | 23 | on_englishLabel_clicked(); 24 | 25 | if(language.contains("spanish")) { 26 | on_spanishLabel_clicked(); 27 | } 28 | 29 | if(language.contains("german")) { 30 | on_germanLabel_clicked(); 31 | } 32 | 33 | if(language.contains("french")) { 34 | on_frenchLabel_clicked(); 35 | } 36 | 37 | if(language.contains("italian")) { 38 | on_italianLabel_clicked(); 39 | } 40 | } 41 | 42 | LanguageChooser::~LanguageChooser() 43 | { 44 | delete ui; 45 | } 46 | 47 | 48 | void LanguageChooser::preClicked() 49 | { 50 | ui->radioSpanish->setChecked(false); 51 | ui->radioEnglish->setChecked(true); 52 | ui->radioGerman->setChecked(true); 53 | ui->radioFrench->setChecked(true); 54 | ui->radioItalian->setChecked(true); 55 | 56 | } 57 | 58 | void LanguageChooser::on_englishLabel_clicked() 59 | { 60 | preClicked(); 61 | ui->radioEnglish->setChecked(true); 62 | ui->englishLabel->setFocus(); 63 | } 64 | 65 | 66 | void LanguageChooser::on_spanishLabel_clicked() 67 | { 68 | preClicked(); 69 | ui->radioSpanish->setChecked(true); 70 | ui->spanishLabel->setFocus(); 71 | } 72 | 73 | 74 | void LanguageChooser::on_germanLabel_clicked() 75 | { 76 | preClicked(); 77 | ui->radioGerman->setChecked(true); 78 | ui->germanLabel->setFocus(); 79 | } 80 | 81 | 82 | void LanguageChooser::on_okButton_clicked() 83 | { 84 | QSettings settings(SETTINGSFILE, QSettings::IniFormat); 85 | 86 | 87 | // Default is English 88 | settings.setValue("languageCombo", "English"); 89 | 90 | 91 | if(ui->radioSpanish->isChecked()) { 92 | settings.setValue("languageCombo", "Spanish"); 93 | } 94 | 95 | if(ui->radioGerman->isChecked()) { 96 | settings.setValue("languageCombo", "German"); 97 | } 98 | 99 | 100 | if(ui->radioFrench->isChecked()) { 101 | settings.setValue("languageCombo", "French"); 102 | } 103 | 104 | if(ui->radioItalian->isChecked()) { 105 | settings.setValue("languageCombo", "Italian"); 106 | } 107 | 108 | this->close(); 109 | 110 | } 111 | 112 | 113 | void LanguageChooser::on_frenchLabel_clicked() 114 | { 115 | 116 | preClicked(); 117 | ui->radioFrench->setChecked(true); 118 | ui->frenchLabel->setFocus(); 119 | } 120 | 121 | void LanguageChooser::on_italianLabel_clicked() 122 | { 123 | 124 | preClicked(); 125 | ui->radioItalian->setChecked(true); 126 | ui->italianLabel->setFocus(); 127 | } -------------------------------------------------------------------------------- /src/languagechooser.h: -------------------------------------------------------------------------------- 1 | #ifndef LANGUAGECHOOSER_H 2 | #define LANGUAGECHOOSER_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class LanguageChooser; 8 | } 9 | 10 | class LanguageChooser : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit LanguageChooser(QWidget *parent = nullptr); 16 | ~LanguageChooser(); 17 | 18 | private slots: 19 | void on_englishLabel_clicked(); 20 | 21 | void on_spanishLabel_clicked(); 22 | 23 | void on_germanLabel_clicked(); 24 | 25 | void on_okButton_clicked(); 26 | 27 | void on_frenchLabel_clicked(); 28 | 29 | void on_italianLabel_clicked(); 30 | 31 | private: 32 | Ui::LanguageChooser *ui; 33 | void preClicked(); 34 | }; 35 | 36 | #endif // LANGUAGECHOOSER_H 37 | -------------------------------------------------------------------------------- /src/languages/english-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/english-flag.png -------------------------------------------------------------------------------- /src/languages/french-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/french-flag.png -------------------------------------------------------------------------------- /src/languages/german-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/german-flag.png -------------------------------------------------------------------------------- /src/languages/hindi-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/hindi-flag.png -------------------------------------------------------------------------------- /src/languages/italian-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/italian-flag.png -------------------------------------------------------------------------------- /src/languages/packetsender_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_de.qm -------------------------------------------------------------------------------- /src/languages/packetsender_en.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_en.qm -------------------------------------------------------------------------------- /src/languages/packetsender_es.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_es.qm -------------------------------------------------------------------------------- /src/languages/packetsender_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_fr.qm -------------------------------------------------------------------------------- /src/languages/packetsender_hi.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_hi.qm -------------------------------------------------------------------------------- /src/languages/packetsender_it.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/packetsender_it.qm -------------------------------------------------------------------------------- /src/languages/spanish-flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/languages/spanish-flag.png -------------------------------------------------------------------------------- /src/linkicon_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/linkicon_black.png -------------------------------------------------------------------------------- /src/linkicon_darkyellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/linkicon_darkyellow.png -------------------------------------------------------------------------------- /src/mainpacketreceiver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "packetnetwork.h" 5 | 6 | class MainPacketReceiver : public QObject 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | MainPacketReceiver(QObject *parent); 12 | bool finished; 13 | void toTrafficLog(Packet sendpacket); 14 | void send(Packet packetToSend); 15 | Packet receivedPacket; 16 | void readPendingDatagrams(); 17 | 18 | //This is only used in CLI Mode 19 | QUdpSocket * udpSocket; 20 | ThreadedTCPServer * tcpServer; 21 | bool initUDP(QString host, int port); 22 | bool initSSL(QString host, int port, bool encrypted); 23 | 24 | static QString datagramOutput(QNetworkDatagram theDatagram, bool quiet = false); 25 | void responsePacket(Packet packetToSend); 26 | signals: 27 | void sendPacket(Packet packetToSend); 28 | //void receivedPacket(Packet packetReceived); 29 | 30 | 31 | private: 32 | PacketNetwork * packetNetwork; 33 | void httpFinished(); 34 | Packet packetReply; 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /src/multicastsetup.cpp: -------------------------------------------------------------------------------- 1 | #include "multicastsetup.h" 2 | #include "ui_multicastsetup.h" 3 | 4 | #include 5 | 6 | MulticastSetup::MulticastSetup(PacketNetwork *pNetwork, QWidget *parent) : 7 | QDialog(parent), 8 | ui(new Ui::MulticastSetup) 9 | { 10 | this->packetNetwork = pNetwork; 11 | ui->setupUi(this); 12 | 13 | setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); 14 | 15 | setWindowTitle(tr("IPv4 Multicast Setup (Experimental)")); 16 | 17 | init(); 18 | } 19 | 20 | void MulticastSetup::setIP(QString ip) 21 | { 22 | ui->ipaddressEdit->setText(ip); 23 | ui->joinButton->setFocus(); 24 | } 25 | 26 | void MulticastSetup::init() 27 | { 28 | QList udpPorts = this->packetNetwork->getUDPPortsBound(); 29 | 30 | if(udpPorts.isEmpty()) { 31 | ui->infoLabel->setText(tr("There are no bound UDP ports")); 32 | } else { 33 | int joinedPort = udpPorts.first(); 34 | QString infoText = tr("UDP socket bound to "); 35 | infoText.append(QString::number(joinedPort)); 36 | infoText.append(tr(" will join the multicast group")); 37 | ui->infoLabel->setText(infoText); 38 | } 39 | 40 | 41 | 42 | QStringList mcastStringList = packetNetwork->multicastStringList(); 43 | ui->mcastLW->clear(); 44 | ui->mcastLW->addItems(mcastStringList); 45 | } 46 | 47 | MulticastSetup::~MulticastSetup() 48 | { 49 | delete ui; 50 | } 51 | 52 | void MulticastSetup::on_joinButton_clicked() 53 | { 54 | 55 | QString ip = ui->ipaddressEdit->text().trimmed(); 56 | 57 | if (!PacketNetwork::isMulticast(ip)) { 58 | QMessageBox msgBox; 59 | msgBox.setWindowTitle(tr("Not Multicast.")); 60 | msgBox.setStandardButtons(QMessageBox::Ok); 61 | msgBox.setDefaultButton(QMessageBox::Ok); 62 | msgBox.setIcon(QMessageBox::Warning); 63 | msgBox.setText(tr("IP must be an IPv4 multicast address.\n(224.0.0.0 to 239.255.255.255)")); 64 | msgBox.exec(); 65 | ui->ipaddressEdit->setFocus(); 66 | ui->ipaddressEdit->selectAll(); 67 | return; 68 | } 69 | 70 | 71 | if(!packetNetwork->IPv4Enabled()) { 72 | 73 | QMessageBox msgBox; 74 | msgBox.setWindowTitle(tr("IPv4-only.")); 75 | msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); 76 | msgBox.setDefaultButton(QMessageBox::No); 77 | msgBox.setIcon(QMessageBox::Warning); 78 | msgBox.setText(tr("Packet Sender supports multicast when binded to IPv4. \nTurn off IPv6 and switch to IPv4 mode?")); 79 | int yesno = msgBox.exec(); 80 | if (yesno == QMessageBox::No) { 81 | return; 82 | } 83 | packetNetwork->setIPmode(4); 84 | packetNetwork->kill(); 85 | packetNetwork->init(); 86 | 87 | } 88 | packetNetwork->joinMulticast(ip); 89 | QDEBUGVAR(packetNetwork->multicastStringList()); 90 | init(); 91 | } 92 | 93 | void MulticastSetup::on_leaveButton_clicked() 94 | { 95 | 96 | QDEBUG(); 97 | packetNetwork->leaveMulticast(); 98 | init(); 99 | } 100 | -------------------------------------------------------------------------------- /src/multicastsetup.h: -------------------------------------------------------------------------------- 1 | #ifndef MULTICASTSETUP_H 2 | #define MULTICASTSETUP_H 3 | 4 | #include 5 | #include 6 | #include "packetnetwork.h" 7 | #include "globals.h" 8 | 9 | 10 | namespace Ui { 11 | class MulticastSetup; 12 | } 13 | 14 | class MulticastSetup : public QDialog 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit MulticastSetup(PacketNetwork * pNetwork, QWidget *parent = nullptr); 20 | void setIP(QString ip); 21 | ~MulticastSetup(); 22 | 23 | void init(); 24 | private slots: 25 | void on_joinButton_clicked(); 26 | 27 | void on_leaveButton_clicked(); 28 | 29 | private: 30 | Ui::MulticastSetup *ui; 31 | PacketNetwork * packetNetwork; 32 | }; 33 | 34 | #endif // MULTICASTSETUP_H 35 | -------------------------------------------------------------------------------- /src/multicastsetup.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MulticastSetup 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | IP Multicast Address 23 | 24 | 25 | 26 | 27 | 28 | 29 | Join 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | QAbstractItemView::NoEditTriggers 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Leave All Groups 55 | 56 | 57 | 58 | 59 | 60 | 61 | Qt::Horizontal 62 | 63 | 64 | QDialogButtonBox::Ok 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | buttonBox 76 | accepted() 77 | MulticastSetup 78 | accept() 79 | 80 | 81 | 248 82 | 254 83 | 84 | 85 | 157 86 | 274 87 | 88 | 89 | 90 | 91 | buttonBox 92 | rejected() 93 | MulticastSetup 94 | reject() 95 | 96 | 97 | 316 98 | 260 99 | 100 | 101 | 286 102 | 274 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /src/packetlogmodel.h: -------------------------------------------------------------------------------- 1 | #ifndef PACKETLOGMODEL_H 2 | #define PACKETLOGMODEL_H 3 | 4 | #include 5 | #include 6 | #include "packet.h" 7 | 8 | 9 | class PacketLogModel : public QAbstractTableModel 10 | { 11 | Q_OBJECT 12 | 13 | public: 14 | explicit PacketLogModel(QObject *parent = nullptr); 15 | 16 | // Header: 17 | QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 18 | 19 | // Basic functionality: 20 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; 21 | int columnCount(const QModelIndex &parent = QModelIndex()) const override; 22 | 23 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 24 | 25 | bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole) override; 26 | Qt::ItemFlags flags(const QModelIndex & index) const override ; 27 | 28 | 29 | void setTableHeaders(QStringList headers); 30 | 31 | void setPacketData(QList packets); 32 | void append(Packet packet); 33 | const Packet getPacket(int index); 34 | const Packet getPacket(QModelIndex index); 35 | int size(); 36 | void clear(); 37 | void removeFirst(); 38 | void removeLast(); 39 | 40 | const QList list(); 41 | 42 | bool useEllipsis; 43 | 44 | 45 | void prepend(Packet packet); 46 | private: 47 | 48 | QList packetList; 49 | QStringList tableHeaders; 50 | 51 | }; 52 | 53 | #endif // PACKETLOGMODEL_H 54 | -------------------------------------------------------------------------------- /src/packetsender.css: -------------------------------------------------------------------------------- 1 | QTableView::item 2 | { 3 | qproperty-wordWrap: false; 4 | } 5 | 6 | QStatusBar::item { 7 | padding: 3px; 8 | border-radius: 3px; 9 | } 10 | 11 | /* 12 | QStatusBar QPushButton:hover, 13 | QStatusBar QPushButton:checked:hover{ 14 | border: 1px transparent #148CD2; 15 | } 16 | 17 | */ -------------------------------------------------------------------------------- /src/packetsender.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Packet Sender 3 | Comment=Network utility for sending and receiving TCP, UDP, SSL packets 4 | Exec=/usr/bin/packetsender 5 | Icon=packetsender 6 | Terminal=false 7 | Type=Application 8 | Categories=Network; 9 | Keywords=Network;traffic;TCP;UDP;SSL;packet;injection;IPv4;IPv6;simulation; 10 | -------------------------------------------------------------------------------- /src/packetsender.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | dannagle_logo.png 4 | icons/rx.png 5 | icons/rx_tcp.png 6 | icons/rx_udp.png 7 | icons/rx_white.png 8 | icons/rx_yellow.png 9 | icons/tx.png 10 | icons/tx_tcp.png 11 | icons/tx_udp.png 12 | icons/moveupdown.png 13 | bruce.jpg 14 | pslogo.png 15 | bruce.png 16 | linkicon_darkyellow.png 17 | linkicon_black.png 18 | Twitter_logo_blue.png 19 | pslogo128.png 20 | pslogo256.png 21 | dannagle32.jpg 22 | icons/tx_ssl.png 23 | icons/calculator.png 24 | icons/cog.png 25 | icons/database.png 26 | icons/download.png 27 | icons/power-off.png 28 | icons/question-circle.png 29 | icons/upload.png 30 | icons/heart.png 31 | pslogo_bw.png 32 | icons/rx_ssl.png 33 | ps.key.base64 34 | ps.pem.base64 35 | icons/ic_cloud_done_black_24dp_2x.png 36 | icons/ic_cloud_download_black_24dp_2x.png 37 | icons/ic_cloud_upload_black_24dp_2x.png 38 | icons/ic_share_black_24dp_2x.png 39 | icons/ic_person_black_24dp_2x.png 40 | icons/android-icon.png 41 | icons/apple-icon.png 42 | icons/forum-icon.png 43 | icons/multicast-icon.png 44 | icons/linkedin-icon.png 45 | icons/twitter-icon.png 46 | icons/bolt-icon.png 47 | icons/rx_http.png 48 | icons/tx_http.png 49 | icons/panel-generator-icon.png 50 | OpenSans-Regular.ttf 51 | starter_set.json 52 | packetsender.css 53 | iris_and_marigold.jpg 54 | ps_panels.json 55 | icons/outline_lightbulb_white_24dp.png 56 | icons/tx_dtls.png 57 | icons/rx_dtls.png 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/packetsender.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | Packet Sender Logo 9 | 15 | 22 | 25 | 26 | 27 | 31 | 32 | 33 | 34 | /> 35 | /> 36 | /> 37 | /> 38 | 39 | 40 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/packetsender_mac.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | QLineEdit, QTableWidget, QTextEdit, QComboBox, QListWidget 4 | { 5 | background-color: #ffffff; 6 | color: #000000; 7 | } 8 | 9 | 10 | 11 | 12 | QPushButton 13 | { 14 | background-color: #ffffff; 15 | color: #000000; 16 | border-radius: 2px; 17 | margin: 2px ; 18 | padding-left: 8px; 19 | padding-right: 8px; 20 | padding-top: 2px; 21 | padding-bottom: 2px; 22 | border: 1px solid #cccccc 23 | } 24 | 25 | 26 | QPushButton:pressed 27 | { 28 | background-color: #cccccc; 29 | } 30 | 31 | 32 | /* Style the tab using the tab sub-control. Note that 33 | it reads QTabBar _not_ QTabWidget */ 34 | QTabBar::tab { 35 | background: white; 36 | min-width: 8ex; 37 | padding-left: 8px; 38 | padding-right: 8px; 39 | padding-top: 2px; 40 | color:black; 41 | } 42 | 43 | QTabBar::tab:selected, QTabBar::tab:hover { 44 | background: #3366ff; 45 | color:white; 46 | } 47 | 48 | QTabBar::tab:selected { 49 | border-color: #3366ff; 50 | color:white; 51 | } 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/packetsender_main.pri: -------------------------------------------------------------------------------- 1 | 2 | SOURCES += main.cpp\ 3 | association.cpp \ 4 | dtlsserver.cpp \ 5 | dtlsthread.cpp \ 6 | mainpacketreceiver.cpp \ 7 | packetnetwork.cpp \ 8 | packet.cpp \ 9 | settings.cpp \ 10 | tcpthread.cpp \ 11 | threadedtcpserver.cpp 12 | 13 | 14 | HEADERS += mainpacketreceiver.h \ 15 | association.h \ 16 | dtlsserver.h \ 17 | dtlsthread.h \ 18 | packetnetwork.h \ 19 | packet.h \ 20 | globals.h \ 21 | settings.h \ 22 | tcpthread.h \ 23 | threadedtcpserver.h 24 | 25 | 26 | 27 | OTHER_FILES += \ 28 | packetsender.css \ 29 | packetsender_mac.css 30 | 31 | 32 | linux:target.path = /usr/local/bin/ 33 | linux:INSTALLS += target 34 | 35 | linux:install_desktop.path = /usr/share/applications/ 36 | linux:install_desktop.files = packetsender.desktop 37 | 38 | linux:install_icon.path = /usr/share/icons/ 39 | linux:install_icon.files = packetsender.svg 40 | 41 | INSTALLS += \ 42 | install_desktop \ 43 | install_icon 44 | 45 | # android: include(../../qt_android_openssl/openssl.pri) 46 | 47 | win32:RC_FILE = psicon.rc 48 | 49 | # Enable before porting to Qt6 50 | DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050F00 51 | 52 | DEFINES += GIT_CURRENT_SHA1="\\\"$(shell git -C \""$$_PRO_FILE_PWD_"\" rev-parse --short HEAD)\\\"" 53 | 54 | 55 | macx:ICON = psicons.icns 56 | 57 | 58 | macx:QMAKE_INFO_PLIST = Info.plist 59 | 60 | # Universal mac binary 61 | macx:QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64 62 | 63 | 64 | linux:QMAKE_CXXFLAGS += -D_FORTIFY_SOURCE=2 65 | 66 | RESOURCES += packetsender.qrc \ 67 | $$PWD/translations.qrc \ 68 | qdarkstyle/style.qrc 69 | -------------------------------------------------------------------------------- /src/panel.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | #include "packet.h" 11 | 12 | struct PanelButton { 13 | int id; 14 | QString title; 15 | QString script; 16 | }; 17 | 18 | 19 | 20 | class Panel 21 | { 22 | public: 23 | Panel(); 24 | int id; 25 | QString name; 26 | int launch; 27 | QString lastmodfied; 28 | QStringList linkTexts; 29 | QStringList linkURLs; 30 | void init(QList packets); 31 | void copy(Panel other); 32 | QList buttonList; 33 | static Panel fromDB(QString thename); 34 | static Panel fromDB(int theid); 35 | static Panel getLaunchPanel(); 36 | static int newPanelID(QList allPanels); 37 | static QList fetchAllPanels(); 38 | static QByteArray ExportJSON(QList panelList); 39 | static QList ImportJSON(QByteArray data); 40 | void saveToDB(); 41 | void clear(); 42 | QString toString(); 43 | static void sortByID(QList &panelList); 44 | bool isLaunchPanel(); 45 | void deleteFromDB(); 46 | QDateTime getLastModified(); 47 | void sortButtons(); 48 | bool isNew(); 49 | bool isNotNew(); 50 | }; 51 | 52 | -------------------------------------------------------------------------------- /src/panelgenerator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "packet.h" 9 | #include "panel.h" 10 | 11 | #include "packetnetwork.h" 12 | 13 | 14 | namespace Ui { 15 | class PanelGenerator; 16 | } 17 | 18 | class PanelGenerator : public QMainWindow 19 | { 20 | 21 | Q_OBJECT 22 | 23 | public: 24 | explicit PanelGenerator(QWidget *parent = nullptr); 25 | static bool darkMode; 26 | static bool renderOnly; 27 | ~PanelGenerator(); 28 | 29 | void init(QList packets); 30 | void executeScript(QString script); 31 | void initAutoLaunch(); 32 | void initAutoLaunchOrEditMode(); 33 | 34 | void addLink(QPair link); 35 | void deleteLink(int index); 36 | void editLink(QPair link, int index); 37 | 38 | static void showFileInFolder(const QString &path); 39 | 40 | 41 | signals: 42 | void sendPacket(Packet sendpacket); 43 | 44 | private slots: 45 | void on_actionDocumentation_triggered(); 46 | 47 | void on_actionSave_triggered(); 48 | 49 | void on_actionImport_File_triggered(); 50 | 51 | void on_actionWin_Package_triggered(); 52 | 53 | void on_actionPanel_Name_triggered(); 54 | 55 | void on_actionPanel_ID_triggered(); 56 | 57 | void on_actionSave_As_triggered(); 58 | 59 | void on_actionLaunch_Panel_triggered(); 60 | 61 | 62 | void on_actionPanels_File_triggered(); 63 | 64 | void on_actionMac_Package_triggered(); 65 | 66 | void on_actionLinux_Package_triggered(); 67 | 68 | void on_actionNew_triggered(); 69 | 70 | private: 71 | Ui::PanelGenerator *ui; 72 | void button_clicked(); 73 | void statusbar_clicked(); 74 | Panel panel; 75 | void editToggle(); 76 | bool isViewing; 77 | void renderViewMode(); 78 | void renderEditMode(bool last = false); 79 | QPushButton * editToggleButton; 80 | QPushButton * addLinkButton; 81 | void clearLayout(); 82 | void testButtonClicked(); 83 | void parseEditView(); 84 | void setMetaData(PanelButton p, QWidget *w); 85 | PanelButton fromMetaData(QWidget *w); 86 | QMenu * loadPanelMenu; 87 | QMenu * deletePanelMenu; 88 | void setHeaders(); 89 | //Qt does not keep track of statusbar widgets, so i must do so. 90 | QList statusBarWidgets; 91 | void themePanelButton(QPushButton *button); 92 | void buildPackage(bool isMac); 93 | 94 | PacketNetwork * packetNetwork; 95 | 96 | 97 | QPushButton *createQPushButtonWithWordWrap(QWidget *parent, const QString &text); 98 | }; 99 | 100 | -------------------------------------------------------------------------------- /src/persistentconnection.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "packet.h" 9 | #include "tcpthread.h" 10 | #include "dtlsthread.h" 11 | 12 | namespace Ui 13 | { 14 | class PersistentConnection; 15 | } 16 | 17 | 18 | 19 | 20 | class PersistentConnection : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit PersistentConnection(QWidget *parent = nullptr); 26 | ~PersistentConnection(); 27 | Packet sendPacket; 28 | Packet reSendPacket; 29 | TCPThread *thread; 30 | Dtlsthread *dthread; 31 | 32 | static const QString RESEND_BUTTON_STYLE; 33 | 34 | void init(); 35 | void initDTLS(); 36 | 37 | void initWithThread(TCPThread *thethread, quint16 portNum); 38 | signals: 39 | void persistentPacketSend(Packet sendpacket); 40 | void closeConnection(); 41 | 42 | 43 | public slots: 44 | void refreshTimerTimeout(); 45 | void aboutToClose(); 46 | void statusReceiver(QString message); 47 | 48 | void packetSentSlot(Packet pkt); 49 | void packetReceivedSlot(Packet pkt); 50 | void socketDisconnected(); 51 | 52 | private slots: 53 | void on_buttonBox_rejected(); 54 | 55 | void on_asciiSendButton_clicked(); 56 | 57 | void on_packetComboBox_currentIndexChanged(const QString &arg1); 58 | 59 | void on_searchEdit_textEdited(const QString &arg1); 60 | 61 | void on_asciiCheck_clicked(bool checked); 62 | 63 | void on_rawCheck_clicked(bool checked); 64 | 65 | void on_LoadButton_clicked(); 66 | 67 | void on_packetComboBox_currentIndexChanged(int index); 68 | 69 | void on_clearButton_clicked(); 70 | 71 | void on_sendFileButton_clicked(); 72 | 73 | void on_clipboardButton_clicked(); 74 | 75 | void on_appendCRcheck_clicked(); 76 | 77 | private: 78 | Ui::PersistentConnection *ui; 79 | QPushButton * stopResendingButton; 80 | QTimer refreshTimer; 81 | QList trafficList; 82 | QDateTime startTime; 83 | bool wasConnected; 84 | bool stopTimer; 85 | bool useraw; 86 | bool suppressSlot; 87 | bool translateMacroSend; 88 | QStringList previousCommands; 89 | 90 | bool darkMode; 91 | 92 | void loadComboBox(); 93 | void loadTrafficView(); 94 | void cancelResends(); 95 | }; 96 | 97 | -------------------------------------------------------------------------------- /src/persistenthttp.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "persistenthttp.h" 3 | #include "ui_persistenthttp.h" 4 | 5 | #include "globals.h" 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | 17 | PersistentHTTP::PersistentHTTP(QWidget *parent) : 18 | QDialog(parent), 19 | ui(new Ui::PersistentHTTP) 20 | { 21 | ui->setupUi(this); 22 | setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); 23 | tempFiles.clear(); 24 | } 25 | 26 | void PersistentHTTP::init(QByteArray thedata, QUrl url) 27 | { 28 | data = thedata; 29 | ui->codeView->setPlainText(QString(thedata)); 30 | ui->codeView->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); 31 | int linecount = data.count('\n'); 32 | if (linecount > 5) { 33 | ui->codeView->setWordWrapMode(QTextOption::NoWrap); 34 | } 35 | ui->codeView->setReadOnly(true); 36 | 37 | setWindowTitle("HTTP "+url.toString()); 38 | 39 | 40 | // holds temporary files until window closes 41 | QString dl = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); 42 | if(!QFile(dl).exists()) { 43 | dl = QDir::homePath(); 44 | } 45 | 46 | 47 | QDateTime now = QDateTime::currentDateTime(); 48 | QString nowString = now.toString("yyyy-MM-dd_hh_mm_ss"); 49 | ui->browserViewButton->setProperty("html-download", dl + "/" +nowString + "-packetsender-httpview.html"); 50 | ui->browserViewButton->setText(nowString + "-packetsender.html"); 51 | 52 | } 53 | 54 | PersistentHTTP::~PersistentHTTP() 55 | { 56 | QString f; 57 | foreach(f, tempFiles) { 58 | QFile(f).remove(); 59 | } 60 | 61 | delete ui; 62 | } 63 | 64 | void PersistentHTTP::on_copyCodeButton_clicked() 65 | { 66 | QClipboard *clipboard = QApplication::clipboard(); 67 | clipboard->setText(QString(data)); 68 | 69 | 70 | } 71 | 72 | 73 | void PersistentHTTP::on_browserViewButton_clicked() 74 | { 75 | 76 | QString dl = ui->browserViewButton->property("html-download").toString(); 77 | QFile file(dl); 78 | if (file.open(QFile::WriteOnly)) { 79 | file.write(data); 80 | file.close(); 81 | 82 | QFileInfo fileInfo(file); 83 | 84 | QDEBUGVAR(fileInfo.canonicalFilePath()); 85 | tempFiles.append(fileInfo.canonicalFilePath()); 86 | 87 | //tempReferences.append(file); 88 | 89 | QDesktopServices::openUrl(QUrl(fileInfo.canonicalFilePath())); 90 | 91 | } 92 | 93 | } 94 | -------------------------------------------------------------------------------- /src/persistenthttp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | #include 5 | #include 6 | 7 | namespace Ui { 8 | class PersistentHTTP; 9 | } 10 | 11 | class PersistentHTTP : public QDialog 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit PersistentHTTP(QWidget *parent = nullptr); 17 | void init(QByteArray thedata, QUrl url); 18 | ~PersistentHTTP(); 19 | 20 | private slots: 21 | void on_copyCodeButton_clicked(); 22 | 23 | 24 | 25 | void on_browserViewButton_clicked(); 26 | 27 | private: 28 | Ui::PersistentHTTP *ui; 29 | QByteArray data; 30 | QStringList tempFiles; 31 | 32 | 33 | }; 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/persistenthttp.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | PersistentHTTP 4 | 5 | 6 | 7 | 0 8 | 0 9 | 801 10 | 360 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | 21 | 0 22 | 100 23 | 24 | 25 | 26 | Dialog 27 | 28 | 29 | 30 | 31 | 32 | false 33 | 34 | 35 | true 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | Copy Code 45 | 46 | 47 | 48 | 49 | 50 | 51 | Qt::Horizontal 52 | 53 | 54 | 55 | 40 56 | 20 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | .html View/Edit 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /src/postdatagen.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace Ui { 7 | class PostDataGen; 8 | } 9 | 10 | class PostDataGen : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit PostDataGen(QWidget *parent = nullptr, QString query = ""); 16 | ~PostDataGen(); 17 | 18 | signals: 19 | void postGenerated(QString data); 20 | 21 | private slots: 22 | void on_buttonBox_accepted(); 23 | void removeParam(); 24 | void editParam(); 25 | 26 | 27 | void on_addParamButton_clicked(); 28 | 29 | private: 30 | Ui::PostDataGen *ui; 31 | QList> paramList; 32 | 33 | void generateParamUI(); 34 | }; 35 | 36 | -------------------------------------------------------------------------------- /src/ps.key.base64: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlDV3dJQkFBS0JnUUNXUllRZTBoWnBrQnRiZVNRK2djOE9GQ3pKRkJYWFA0Uk9mZUVjQW9BZWJoenVja2U0CjNlTDN2Vy81c21aTnVXOENWRVUvSHo5RUtXS3FvemJ3VUVFVnd2eUxMMjNvbGE2dFkxUFNCdkgxQVdvUmZlMlcKUWR3T1dUT2U0dzNnQzRWQ2xMQ2xhSU9VKzYvYUFSdU0zZS8vdEViTTBTZTR3VlhTMjBhZmdzdFBrd0lEQVFBQgpBb0dBUlU3c3dCWmYxZkpzVzhWRTdUdUwxMCtBMUlGYURYd3pOc3lpVGZ2dFFadkI1a3g1UGcvQkJraXVZN2xmCnJBdVI0cjRoYmhxb1lIVENHRGZOT0F1YjZJdWdOM2QvamRDNzlYbjVIdlo2WjJ3WXk5UStzazYwaFUrVjNwS0wKd0xpNjVaZ3d6TkQvaWJmT0ZiYXpJaUdWbEU5TllYNU9uWnUxSUxhOE9CREh4OWtDUVFESHhKcFdCVnlwa3pSago1dlAwL1dYdjd6TTFIdUJpNWxoeGo1cTVTZU5uM1RPU3VMUzdyS3k0T2JJOXhLRVg4cXRFdkx3TlBwSVdIcWVICnZQSVZYOFpQQWtFQXdKSXI0ZUNoSUhsL0dKL3Jyd0dHc0IyWTJtZ0dTcUYrQWNSTXVXSmt1T2FNNjFYWTNJQmMKeDlJVnFvUjRWTm53RHlVYTlOaGJkSFNnaERnNHprMFZmUUpBTG1TbVF4dnpyUjRXcUt6V015czJKVWF6NmI1Rgo5akh3a0U3OWE5S1JFV241dERWWkk4eXlRQWFHTW5vYnYyZ0lCbXFlY2FUNllGQzJMM3ZkN01EVldRSkFEQWJWCkFNVmpxc0NMeElEd1dqeXhLYnlmZUR4NDhCNUgzVnBpSkUzVjFvcG5rS2NLNVRLTEdOdXhDTFkvUWFWZXpjTlcKZktZcWlBcGtuLzFXNXVOL2pRSkFKaGtieUIzeElaTEVqd3ZrWUNVQzFQRmV5T2dPaklyS014VkxLK1NRQXhnTQpGMUhhTlF1Z0tsclAzc1JRdXY3Q3cwMFBtb3dEaUpGZGcvM01JUDJzT2c9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= 2 | -------------------------------------------------------------------------------- /src/ps.pem.base64: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNuVENDQWdZQ0NRRE1mdUt6M0FrQUp6QU5CZ2txaGtpRzl3MEJBUXNGQURDQmtURVNNQkFHQTFVRUNoTUoKVTI1aGEyVWdUMmxzTVJJd0VBWURWUVFMRXdsVGJtRnJaU0JQYVd3eEpUQWpCZ2txaGtpRzl3MEJDUUVXRm1obApiR3h2UUhCaFkydGxkSE5sYm1SbGNpNWpiMjB4RXpBUkJnTlZCQWNUQ2toMWJuUnpkbWxzYkdVeEN6QUpCZ05WCkJBZ1RBa0ZNTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUF4TUlVMjVoYTJWUGFXd3dJQmNOTVRjd09EQTEKTURBek16RTBXaGdQTWpJNU1UQTFNakF3TURNek1UUmFNSUdSTVJJd0VBWURWUVFLRXdsVGJtRnJaU0JQYVd3eApFakFRQmdOVkJBc1RDVk51WVd0bElFOXBiREVsTUNNR0NTcUdTSWIzRFFFSkFSWVdhR1ZzYkc5QWNHRmphMlYwCmMyVnVaR1Z5TG1OdmJURVRNQkVHQTFVRUJ4TUtTSFZ1ZEhOMmFXeHNaVEVMTUFrR0ExVUVDQk1DUVV3eEN6QUoKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFERXdoVGJtRnJaVTlwYkRDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQgpqUUF3Z1lrQ2dZRUFsa1dFSHRJV2FaQWJXM2trUG9IUERoUXN5UlFWMXorRVRuM2hIQUtBSG00YzduSkh1TjNpCjk3MXYrYkptVGJsdkFsUkZQeDgvUkNsaXFxTTI4RkJCRmNMOGl5OXQ2Sld1cldOVDBnYng5UUZxRVgzdGxrSGMKRGxrem51TU40QXVGUXBTd3BXaURsUHV2MmdFYmpOM3YvN1JHek5FbnVNRlYwdHRHbjRMTFQ1TUNBd0VBQVRBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQmdRQkg4cUtNNXJVdG4rR1N2OVR0SThjUFlGbWY5MmRQbzlraVFweUVTcXA1CnVOVzMybkx6bUpuRFdYR0NXRzhadDNUYSs3MzY2Qk1XMWdIbGU5Z1U2bldXa1VNV0o1MlVGSjNDYWRkSW92ajEKbXJyR2lPT0RGTGRhNlFlZ0ZKOEpxZnFIL1BpZ1BrTjVWblFPUFR4YUZXMzVGQXc5NW9kVTFWRTI5M1JwUWVFawpEQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K 2 | -------------------------------------------------------------------------------- /src/psSSL.cnf: -------------------------------------------------------------------------------- 1 | #-------------openssl.cnf---------------- 2 | [ req ] 3 | default_bits = 1024 # Size of keys 4 | default_keyfile = ps.pem # name of generated keys 5 | default_md = sha256 # message digest algorithm 6 | string_mask = nombstr # permitted characters 7 | distinguished_name = req_distinguished_name 8 | 9 | [ req_distinguished_name ] 10 | # Variable name Prompt string 11 | 0.organizationName = Organization Name (company) 12 | organizationalUnitName = Organizational Unit Name (department, division) 13 | emailAddress = Email Address 14 | emailAddress_max = 40 15 | localityName = Locality Name (city, district) 16 | stateOrProvinceName = State or Province Name (full name) 17 | countryName = Country Name (2 letter code) 18 | countryName_min = 2 19 | countryName_max = 2 20 | commonName = Common Name (hostname, IP, or your name) 21 | commonName_max = 64 22 | 23 | 24 | #-------------------Edit this section------------------------------ 25 | countryName_default = US 26 | stateOrProvinceName_default = AL 27 | localityName_default = Huntsville 28 | 0.organizationName_default = SnakeOil 29 | organizationalUnitName_default = SnakeOil 30 | commonName_default = SnakeOil 31 | emailAddress_default = hello@packetsender.com 32 | 33 | -------------------------------------------------------------------------------- /src/ps_openssl_cmd.sh: -------------------------------------------------------------------------------- 1 | openssl req -new -x509 -keyout ps.key -out ps.pem -days 99999 -nodes -config psSSL.cnf -batch 2 | -------------------------------------------------------------------------------- /src/ps_panels.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "buttonlist": [ 4 | { 5 | "id": "1", 6 | "script": "panel:1", 7 | "title": "to panel 1" 8 | } 9 | ], 10 | "id": "4", 11 | "lastmodfied": "2021-11-13 21:15:38", 12 | "launch": "0", 13 | "linkURLs": [ 14 | ], 15 | "name": "panel 2 panel" 16 | }, 17 | { 18 | "buttonlist": [ 19 | { 20 | "id": "1", 21 | "script": "panel:2", 22 | "title": "To panel 2" 23 | } 24 | ], 25 | "id": "3", 26 | "lastmodfied": "2021-11-13 21:10:22", 27 | "launch": "0", 28 | "linkURLs": [ 29 | ], 30 | "name": "demo panel transition" 31 | }, 32 | { 33 | "buttonlist": [ 34 | { 35 | "id": "1", 36 | "script": "panel:1", 37 | "title": "Go to next panel" 38 | } 39 | ], 40 | "id": "2", 41 | "lastmodfied": "2023-03-02 11:05:51", 42 | "launch": "1", 43 | "linkURLs": [ 44 | { 45 | "index": "0", 46 | "text": "Example Link", 47 | "url": "https://packetsender.com" 48 | } 49 | ], 50 | "name": "Example Panel" 51 | }, 52 | { 53 | "buttonlist": [ 54 | { 55 | "id": "2", 56 | "script": "FTP debian.org", 57 | "title": "Send" 58 | }, 59 | { 60 | "id": "1", 61 | "script": "DNS dannagle.com\npanel:2", 62 | "title": "Send and transition" 63 | } 64 | ], 65 | "id": "1", 66 | "lastmodfied": "2023-03-02 11:06:21", 67 | "launch": "0", 68 | "linkURLs": [ 69 | { 70 | "index": "0", 71 | "text": "Example Link", 72 | "url": "https://packetsender.com" 73 | } 74 | ], 75 | "name": "Example sub-panel" 76 | } 77 | ] 78 | -------------------------------------------------------------------------------- /src/psicon.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON "pslogo.ico" 2 | 3 | #include 4 | #include "globals.h" 5 | 6 | VS_VERSION_INFO VERSIONINFO 7 | FILEVERSION VER_FILEVERSION 8 | PRODUCTVERSION VER_FILEVERSION 9 | BEGIN 10 | BLOCK "StringFileInfo" 11 | BEGIN 12 | BLOCK "040904E4" 13 | BEGIN 14 | VALUE "CompanyName", "NagleCode, LLC" 15 | VALUE "FileDescription", "Network Utility to Send/Receive Packets" 16 | VALUE "FileVersion", SW_VERSION 17 | VALUE "InternalName", "Packet Sender" 18 | VALUE "LegalCopyright", "Copyright (c) NagleCode, LLC" 19 | VALUE "LegalTrademarks1", "All Rights Reserved." 20 | VALUE "LegalTrademarks2", "All Rights Reserved." 21 | VALUE "OriginalFilename", "packetsender.exe" 22 | VALUE "ProductName", "Packet Sender" 23 | VALUE "ProductVersion", SW_VERSION 24 | END 25 | END 26 | 27 | BLOCK "VarFileInfo" 28 | BEGIN 29 | VALUE "Translation", 0x409, 1252 30 | END 31 | END 32 | -------------------------------------------------------------------------------- /src/psicons.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.icns -------------------------------------------------------------------------------- /src/psicons.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.ico -------------------------------------------------------------------------------- /src/psicons.iconset/icon_1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_1024x1024.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_128x128.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_16x16.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_256x256.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_32x32.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_32x32_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_32x32_2.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_48x48.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_512x512.png -------------------------------------------------------------------------------- /src/psicons.iconset/icon_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/psicons.iconset/icon_64x64.png -------------------------------------------------------------------------------- /src/pslogo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo.ico -------------------------------------------------------------------------------- /src/pslogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo.png -------------------------------------------------------------------------------- /src/pslogo128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo128.png -------------------------------------------------------------------------------- /src/pslogo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo192.png -------------------------------------------------------------------------------- /src/pslogo256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo256.png -------------------------------------------------------------------------------- /src/pslogo_bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo_bw.png -------------------------------------------------------------------------------- /src/pslogo_trimmed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/pslogo_trimmed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_down_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_down_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_left_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_left_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_right_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_right_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/arrow_up_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/arrow_up_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/base_icon_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/base_icon_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_closed_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_closed_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_end_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_end_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_line_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_line_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_more_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_more_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/branch_open_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/branch_open_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_checked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_checked_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_indeterminate_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_indeterminate_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/checkbox_unchecked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/checkbox_unchecked_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/line_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/line_vertical_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_checked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_checked_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/radio_unchecked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/radio_unchecked_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_move_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_move_vertical_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/toolbar_separator_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/toolbar_separator_vertical_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/transparent_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/transparent_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_close_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_close_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_grip_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_grip_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_minimize_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_minimize_pressed@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_disabled.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_disabled@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_focus.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_focus@2x.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_pressed.png -------------------------------------------------------------------------------- /src/qdarkstyle/rc/window_undock_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/qdarkstyle/rc/window_undock_pressed@2x.png -------------------------------------------------------------------------------- /src/scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/scrollbar.png -------------------------------------------------------------------------------- /src/sendpacketbutton.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | */ 10 | 11 | #include 12 | #include "sendpacketbutton.h" 13 | 14 | void themeTheButton(QPushButton * button); 15 | 16 | SendPacketButton::SendPacketButton(QWidget *parent) : 17 | QPushButton(parent) 18 | { 19 | 20 | } 21 | 22 | void SendPacketButton::init() 23 | { 24 | //QDEBUG() << " sendButton connect attempt:" << 25 | connect(this, SIGNAL(clicked()), this, SLOT(sendClicked())); 26 | } 27 | 28 | 29 | void SendPacketButton::sendClicked() 30 | { 31 | 32 | QDEBUG() << " Emit clicked: " << name; 33 | 34 | emit sendPacket(name); 35 | 36 | } 37 | 38 | 39 | //used by mainwindow.cpp and panelgenerator.cpp 40 | void themeTheButton(QPushButton * button) 41 | { 42 | button->setCursor(Qt::PointingHandCursor); 43 | button->update(); 44 | return; 45 | QPalette pal = button->palette(); 46 | pal.setColor(QPalette::Button, QColor("#F5F5F5")); 47 | button->setAutoFillBackground(true); 48 | button->setPalette(pal); 49 | button->setStyleSheet("QPushButton { color: white; background-color: #505F69; } QPushButton::hover { color: #BC810C; background-color: #505F69; } "); 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/sendpacketbutton.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | */ 10 | #ifndef SENDPACKETBUTTON_H 11 | #define SENDPACKETBUTTON_H 12 | 13 | #include 14 | #include "globals.h" 15 | 16 | class SendPacketButton : public QPushButton 17 | { 18 | Q_OBJECT 19 | public: 20 | explicit SendPacketButton(QWidget *parent = 0); 21 | QString name; 22 | 23 | void init(); 24 | signals: 25 | void sendPacket(QString name); 26 | 27 | public slots: 28 | void sendClicked(); 29 | 30 | }; 31 | 32 | #endif // SENDPACKETBUTTON_H 33 | -------------------------------------------------------------------------------- /src/snap/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16) 2 | project(packetsender VERSION 1.0 LANGUAGES C CXX) 3 | 4 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 5 | 6 | # Set up AUTOMOC and some sensible defaults for runtime execution 7 | # When using Qt 6.3, you can replace the code block below with 8 | # qt_standard_project_setup() 9 | set(CMAKE_AUTOMOC ON) 10 | include(GNUInstallDirs) 11 | set(CMAKE_AUTOUIC ON) 12 | 13 | find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core) 14 | find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui Network Widgets) 15 | 16 | set(SOURCES 17 | about.cpp 18 | brucethepoodle.cpp 19 | cloudui.cpp 20 | irisandmarigold.cpp 21 | languagechooser.cpp 22 | main.cpp 23 | mainpacketreceiver.cpp 24 | mainwindow.cpp 25 | multicastsetup.cpp 26 | packet.cpp 27 | packetlogmodel.cpp 28 | packetnetwork.cpp 29 | panel.cpp 30 | panelgenerator.cpp 31 | persistentconnection.cpp 32 | persistenthttp.cpp 33 | postdatagen.cpp 34 | sendpacketbutton.cpp 35 | settings.cpp 36 | subnetcalc.cpp 37 | tcpthread.cpp 38 | threadedtcpserver.cpp 39 | udpflooding.cpp 40 | wakeonlan.cpp 41 | ) 42 | 43 | set(HEADERS 44 | about.h 45 | brucethepoodle.h 46 | cloudui.h 47 | globals.h 48 | irisandmarigold.h 49 | languagechooser.h 50 | mainpacketreceiver.h 51 | mainwindow.h 52 | multicastsetup.h 53 | packet.h 54 | packetlogmodel.h 55 | packetnetwork.h 56 | panel.h 57 | panelgenerator.h 58 | persistenthttp.h 59 | postdatagen.h 60 | sendpacketbutton.h 61 | settings.h 62 | subnetcalc.h 63 | tcpthread.h 64 | threadedtcpserver.h 65 | udpflooding.h 66 | wakeonlan.h 67 | ) 68 | 69 | set(FORMS 70 | about.ui 71 | brucethepoodle.ui 72 | cloudui.ui 73 | irisandmarigold.ui 74 | languagechooser.ui 75 | mainwindow.ui 76 | multicastsetup.ui 77 | panelgenerator.ui 78 | persistentconnection.ui 79 | persistenthttp.ui 80 | postdatagen.ui 81 | settings.ui 82 | subnetcalc.ui 83 | udpflooding.ui 84 | wakeonlan.ui 85 | 86 | ) 87 | 88 | qt_add_resources(RESOURCES packetsender.qrc translations.qrc qdarkstyle/style.qrc) 89 | 90 | set(CSS 91 | packetsender.css 92 | ) 93 | 94 | qt_add_executable(packetsender 95 | ${SOURCES} ${HEADERS} ${FORMS} ${RESOURCES} ${CSS} 96 | ) 97 | 98 | execute_process(COMMAND git -C ${PROJECT_SOURCE_DIR} rev-parse --short HEAD OUTPUT_VARIABLE GIT_SHA COMMAND_ERROR_IS_FATAL ANY OUTPUT_STRIP_TRAILING_WHITESPACE) 99 | 100 | target_compile_definitions(packetsender PRIVATE 101 | GUI_BUILD 102 | ISSNAP=1 103 | QT_DISABLE_DEPRECATED_BEFORE=0x050F00 104 | GIT_CURRENT_SHA1=\"${GIT_SHA}\" 105 | ) 106 | 107 | 108 | target_link_libraries(packetsender PRIVATE 109 | Qt::Core 110 | Qt::Gui 111 | Qt::Network 112 | Qt::Widgets 113 | ) 114 | 115 | 116 | 117 | target_compile_definitions(packetsender PRIVATE 118 | _FORTIFY_SOURCE=2 119 | ) 120 | 121 | 122 | install(TARGETS packetsender 123 | BUNDLE DESTINATION . 124 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 125 | ) 126 | 127 | install(FILES packetsender.desktop DESTINATION /usr/share/applications) 128 | install(FILES packetsender.svg DESTINATION /usr/share/icons) 129 | 130 | # Consider using qt_generate_deploy_app_script() for app deployment if 131 | # the project can use Qt 6.3. In that case rerun qmake2cmake with 132 | # --min-qt-version=6.3. 133 | -------------------------------------------------------------------------------- /src/subnetcalc.h: -------------------------------------------------------------------------------- 1 | #ifndef SUBNETCALC_H 2 | #define SUBNETCALC_H 3 | 4 | #include 5 | #include 6 | 7 | namespace Ui 8 | { 9 | class SubnetCalc; 10 | } 11 | 12 | class SubnetCalc : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit SubnetCalc(QWidget *parent = 0); 18 | ~SubnetCalc(); 19 | 20 | void populate(); 21 | static QList nonLoopBackAddresses(); 22 | private slots: 23 | void on_ipEdit_textChanged(const QString &arg1); 24 | 25 | void on_subnetEdit_textChanged(const QString &arg1); 26 | 27 | void on_clearButton_clicked(); 28 | 29 | void on_ipsubnetCheckEdit_textChanged(const QString &arg1); 30 | 31 | private: 32 | Ui::SubnetCalc *ui; 33 | }; 34 | 35 | #endif // SUBNETCALC_H 36 | -------------------------------------------------------------------------------- /src/tcpthread.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Packet Sender 3 | * 4 | * Licensed GPL v2 5 | * http://PacketSender.com/ 6 | * 7 | * Copyright NagleCode, LLC 8 | * 9 | */ 10 | #ifndef TCPTHREAD_H 11 | #define TCPTHREAD_H 12 | 13 | #include 14 | #include 15 | #include "packet.h" 16 | 17 | class TCPThread : public QThread 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | TCPThread(int socketDescriptor, QObject *parent); 23 | TCPThread(Packet sendPacket, QObject *parent); 24 | void sendAnother(Packet sendPacket); 25 | static void loadSSLCerts(QSslSocket *sock, bool allowSnakeOil); 26 | 27 | void run(); 28 | bool sendFlag; 29 | bool incomingPersistent; 30 | bool closeRequest; 31 | bool isSecure; 32 | bool isEncrypted(); 33 | Packet packetReply; 34 | bool consoleMode; 35 | 36 | signals: 37 | void error(QSslSocket::SocketError socketError); 38 | 39 | void packetReceived(Packet sendpacket); 40 | void toStatusBar(const QString & message, int timeout = 0, bool override = false); 41 | void packetSent(Packet sendpacket); 42 | void connectStatus(QString message); 43 | 44 | public slots: 45 | void sendPersistant(Packet sendpacket); 46 | 47 | void closeConnection(); 48 | private slots: 49 | void wasdisconnected(); 50 | 51 | private: 52 | int socketDescriptor; 53 | QString text; 54 | Packet sendPacket; 55 | void init(); 56 | void writeResponse(QSslSocket *sock, Packet tcpPacket); 57 | QSslSocket * clientConnection; 58 | bool insidePersistent; 59 | 60 | void persistentConnectionLoop(); 61 | }; 62 | 63 | #endif // TCPTHREAD_H 64 | -------------------------------------------------------------------------------- /src/threadedtcpserver.h: -------------------------------------------------------------------------------- 1 | #ifndef THREADEDTCPSERVER_H 2 | #define THREADEDTCPSERVER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "tcpthread.h" 9 | #ifndef CONSOLE_BUILD 10 | #include "persistentconnection.h" 11 | #endif 12 | class ThreadedTCPServer : public QTcpServer 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit ThreadedTCPServer(QObject *parent = nullptr); 17 | bool encrypted; 18 | 19 | bool init(quint16 port, bool isEncrypted, QString ipMode); 20 | bool consoleMode; 21 | void responsePacket(Packet packetToSend); 22 | 23 | protected: 24 | void incomingConnection(qintptr socketDescriptor); 25 | 26 | signals: 27 | void packetReceived(Packet sendpacket); 28 | void toStatusBar(const QString & message, int timeout = 0, bool override = false); 29 | void packetSent(Packet sendpacket); 30 | 31 | 32 | public slots: 33 | void packetReceivedECHO(Packet sendpacket); 34 | void toStatusBarECHO(const QString & message, int timeout = 0, bool override = false); 35 | void packetSentECHO(Packet sendpacket); 36 | void outputTCPPacket(Packet receivePacket); 37 | 38 | 39 | 40 | private: 41 | QList threads; 42 | Packet packetReply; 43 | 44 | 45 | 46 | QList tcpthreadList; 47 | #ifndef CONSOLE_BUILD 48 | 49 | QList pcList; 50 | #endif 51 | 52 | }; 53 | 54 | #endif // THREADEDTCPSERVER_H 55 | -------------------------------------------------------------------------------- /src/translations.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | languages/packetsender_en.qm 4 | languages/packetsender_es.qm 5 | .astylerc 6 | languages/english-flag.png 7 | languages/french-flag.png 8 | languages/german-flag.png 9 | languages/hindi-flag.png 10 | languages/spanish-flag.png 11 | languages/packetsender_de.qm 12 | languages/packetsender_fr.qm 13 | languages/italian-flag.png 14 | languages/packetsender_it.qm 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/tx_dtls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/src/tx_dtls.png -------------------------------------------------------------------------------- /src/udpflooding.h: -------------------------------------------------------------------------------- 1 | #ifndef UDPFLOODING_H 2 | #define UDPFLOODING_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | class ThreadSender : public QThread 12 | { 13 | 14 | public: 15 | ThreadSender(QObject *parent); 16 | ~ThreadSender(); 17 | void run(); 18 | double getRatekHz(QElapsedTimer eTimer, quint64 pkts); 19 | qint64 getElapsedMS(); 20 | QString ip; 21 | quint16 port; 22 | int delay; 23 | bool speedSendEnabled; 24 | QString ascii; 25 | QByteArray hex; 26 | bool hasMacros; 27 | bool issending; 28 | bool stopsending; 29 | quint64 packetssent; 30 | unsigned int sourcePort; 31 | QElapsedTimer elapsedTimer; 32 | 33 | int short_burst_of(int, QUdpSocket*, QHostAddress*); 34 | }; 35 | 36 | 37 | namespace Ui { 38 | class UDPFlooding; 39 | } 40 | 41 | 42 | 43 | class UDPFlooding : public QDialog 44 | { 45 | Q_OBJECT 46 | 47 | public: 48 | explicit UDPFlooding(QWidget *parent = nullptr, QString target = "192.168.1.1", quint16 port = 5000, QString ascii = "data"); 49 | ~UDPFlooding(); 50 | 51 | private slots: 52 | void on_startButton_clicked(); 53 | 54 | void on_stopButton_clicked(); 55 | 56 | void refreshTimerTimeout(); 57 | 58 | signals: 59 | void operate(const QString &); 60 | 61 | private: 62 | Ui::UDPFlooding *ui; 63 | ThreadSender *thread; 64 | QTimer refreshTimer; 65 | }; 66 | 67 | #endif // UDPFLOODING_H 68 | -------------------------------------------------------------------------------- /src/wakeonlan.cpp: -------------------------------------------------------------------------------- 1 | #include "wakeonlan.h" 2 | #include "ui_wakeonlan.h" 3 | 4 | #include "globals.h" 5 | #include 6 | 7 | WakeOnLAN::WakeOnLAN(QWidget *parent) : 8 | QDialog(parent), 9 | ui(new Ui::WakeOnLAN) 10 | { 11 | ui->setupUi(this); 12 | 13 | mac.clear(); 14 | portIndex = 0; 15 | 16 | 17 | } 18 | 19 | 20 | WakeOnLAN::~WakeOnLAN() 21 | { 22 | delete ui; 23 | } 24 | 25 | void WakeOnLAN::setTarget(QString mac, int portIndex) 26 | { 27 | ui->macEdit->setText(mac); 28 | ui->portBox->setCurrentIndex(portIndex); 29 | 30 | } 31 | 32 | void WakeOnLAN::on_buttonBox_accepted() 33 | { 34 | mac = ui->macEdit->text().trimmed().toUpper(); 35 | portIndex = ui->portBox->currentIndex(); 36 | generatedPacket = Packet::generateWakeOnLAN(mac, ui->portBox->currentText().toUInt()); 37 | 38 | } 39 | 40 | -------------------------------------------------------------------------------- /src/wakeonlan.h: -------------------------------------------------------------------------------- 1 | #ifndef WAKEONLAN_H 2 | #define WAKEONLAN_H 3 | 4 | #include 5 | 6 | #include "packet.h" 7 | 8 | namespace Ui { 9 | class WakeOnLAN; 10 | } 11 | 12 | class WakeOnLAN : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit WakeOnLAN(QWidget *parent = nullptr); 18 | ~WakeOnLAN(); 19 | void setTarget(QString mac, int portIndex); 20 | Packet generatedPacket; 21 | QString mac; 22 | int portIndex; 23 | 24 | private slots: 25 | void on_buttonBox_accepted(); 26 | 27 | private: 28 | Ui::WakeOnLAN *ui; 29 | }; 30 | 31 | #endif // WAKEONLAN_H 32 | -------------------------------------------------------------------------------- /vpat_2.4_packetsender.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/vpat_2.4_packetsender.doc -------------------------------------------------------------------------------- /vpat_2.4_packetsender.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannagle/PacketSender/8abb88747c8ee5c7dc6fb797a9a404954fb6f105/vpat_2.4_packetsender.pdf --------------------------------------------------------------------------------