├── iOS
├── iTunesArtwork
├── Resources
│ ├── rx.png
│ ├── tx.png
│ ├── rx@2x.png
│ ├── rx@3x.png
│ ├── rx_ssl.png
│ ├── rx_tcp.png
│ ├── rx_udp.png
│ ├── tx@2x.png
│ ├── tx@3x.png
│ ├── tx_ssl.png
│ ├── tx_tcp.png
│ ├── tx_udp.png
│ ├── rx_white.png
│ ├── rx_ssl@2x.png
│ ├── rx_ssl@3x.png
│ ├── rx_tcp@2x.png
│ ├── rx_tcp@3x.png
│ ├── rx_udp@2x.png
│ ├── rx_udp@3x.png
│ ├── rx_white@2x.png
│ ├── rx_white@3x.png
│ ├── rx_yellow.png
│ ├── tx_ssl@2x.png
│ ├── tx_ssl@3x.png
│ ├── tx_tcp@2x.png
│ ├── tx_tcp@3x.png
│ ├── tx_udp@2x.png
│ ├── tx_udp@3x.png
│ ├── icon_256x256.png
│ ├── icon_512x512.png
│ ├── rx_yellow@2x.png
│ ├── rx_yellow@3x.png
│ ├── icon_1024x1024_2.png
│ ├── ios_packets_icon.png
│ ├── ios_traffic_icon.png
│ ├── ios_settings_icon.png
│ ├── ios_packets_icon@2x.png
│ ├── ios_packets_icon@3x.png
│ ├── ios_settings_icon@2x.png
│ ├── ios_settings_icon@3x.png
│ ├── ios_traffic_icon@2x.png
│ └── ios_traffic_icon@3x.png
├── iTunesArtwork@2x
├── Assets.xcassets
│ ├── Contents.json
│ └── AppIcon.appiconset
│ │ ├── icon_16x16.png
│ │ ├── icon_20x20.png
│ │ ├── icon_29x29.png
│ │ ├── icon_32x32.png
│ │ ├── icon_40x40.png
│ │ ├── icon_48x48.png
│ │ ├── icon_55x55.png
│ │ ├── icon_58x58.png
│ │ ├── icon_60x60.png
│ │ ├── icon_64x64.png
│ │ ├── icon_76x76.png
│ │ ├── icon_80x80.png
│ │ ├── icon_87x87.png
│ │ ├── icon_88x88.png
│ │ ├── icon_120x120.png
│ │ ├── icon_128x128.png
│ │ ├── icon_152x152.png
│ │ ├── icon_167x167.png
│ │ ├── icon_172x172.png
│ │ ├── icon_180x180.png
│ │ ├── icon_196x196.png
│ │ ├── icon_256x256.png
│ │ ├── icon_32x32_2.png
│ │ ├── icon_40x40_2.png
│ │ ├── icon_40x40_3.png
│ │ ├── icon_512x512.png
│ │ ├── icon_58x58_2.png
│ │ ├── icon_58x58_3.png
│ │ ├── icon_80x80_2.png
│ │ ├── icon_80x80_3.png
│ │ ├── icon_87x87_2.png
│ │ ├── icon_1024x1024.png
│ │ ├── icon_1024x1024_2.png
│ │ ├── icon_120x120_2.png
│ │ ├── icon_512x512_2.png
│ │ └── Contents.json
├── Entitlements.plist
├── SQLiteDb.cs
├── Main.cs
├── AppDelegate.cs
├── packages.config
├── Helpers
│ └── Settings.cs
├── Info.plist
├── LaunchScreen.storyboard
└── Packet_Sender_Mobile.iOS.csproj
├── screenshots
├── ps-ios.jpg
├── ps-android.png
├── pslogo128.png
├── appstore100.png
└── googleplaybadge.png
├── Droid
├── Resources
│ ├── drawable
│ │ ├── rx.png
│ │ ├── tx.png
│ │ ├── icon.png
│ │ ├── rx_ssl.png
│ │ ├── rx_tcp.png
│ │ ├── rx_udp.png
│ │ ├── tx_ssl.png
│ │ ├── tx_tcp.png
│ │ ├── tx_udp.png
│ │ ├── moveupdown.png
│ │ ├── rx_white.png
│ │ ├── rx_yellow.png
│ │ ├── ic_launcher_status24.png
│ │ ├── statusnotification.png
│ │ ├── server_network.xml
│ │ └── settings.xml
│ ├── drawable-hdpi
│ │ ├── icon.png
│ │ ├── pslogo144.png
│ │ ├── ic_settings_black_18dp.png
│ │ ├── ic_settings_black_24dp.png
│ │ ├── ic_settings_black_36dp.png
│ │ ├── ic_settings_black_48dp.png
│ │ ├── ic_settings_white_18dp.png
│ │ ├── ic_settings_white_24dp.png
│ │ ├── ic_settings_white_36dp.png
│ │ ├── ic_settings_white_48dp.png
│ │ ├── ic_settings_grey600_18dp.png
│ │ ├── ic_settings_grey600_24dp.png
│ │ ├── ic_settings_grey600_36dp.png
│ │ ├── ic_settings_grey600_48dp.png
│ │ ├── ic_server_network_black_18dp.png
│ │ ├── ic_server_network_black_24dp.png
│ │ ├── ic_server_network_black_36dp.png
│ │ ├── ic_server_network_black_48dp.png
│ │ ├── ic_server_network_grey600_18dp.png
│ │ ├── ic_server_network_grey600_24dp.png
│ │ ├── ic_server_network_grey600_36dp.png
│ │ ├── ic_server_network_grey600_48dp.png
│ │ ├── ic_server_network_white_18dp.png
│ │ ├── ic_server_network_white_24dp.png
│ │ ├── ic_server_network_white_36dp.png
│ │ └── ic_server_network_white_48dp.png
│ ├── drawable-xhdpi
│ │ ├── icon.png
│ │ ├── ic_settings_black_18dp.png
│ │ ├── ic_settings_black_24dp.png
│ │ ├── ic_settings_black_36dp.png
│ │ ├── ic_settings_black_48dp.png
│ │ ├── ic_settings_grey600_18dp.png
│ │ ├── ic_settings_grey600_24dp.png
│ │ ├── ic_settings_grey600_36dp.png
│ │ ├── ic_settings_grey600_48dp.png
│ │ ├── ic_settings_white_18dp.png
│ │ ├── ic_settings_white_24dp.png
│ │ ├── ic_settings_white_36dp.png
│ │ ├── ic_settings_white_48dp.png
│ │ ├── ic_server_network_black_18dp.png
│ │ ├── ic_server_network_black_24dp.png
│ │ ├── ic_server_network_black_36dp.png
│ │ ├── ic_server_network_black_48dp.png
│ │ ├── ic_server_network_white_18dp.png
│ │ ├── ic_server_network_white_24dp.png
│ │ ├── ic_server_network_white_36dp.png
│ │ ├── ic_server_network_white_48dp.png
│ │ ├── ic_server_network_grey600_18dp.png
│ │ ├── ic_server_network_grey600_24dp.png
│ │ ├── ic_server_network_grey600_36dp.png
│ │ └── ic_server_network_grey600_48dp.png
│ ├── drawable-xxhdpi
│ │ ├── icon.png
│ │ ├── ic_settings_black_18dp.png
│ │ ├── ic_settings_black_24dp.png
│ │ ├── ic_settings_black_36dp.png
│ │ ├── ic_settings_black_48dp.png
│ │ ├── ic_settings_white_18dp.png
│ │ ├── ic_settings_white_24dp.png
│ │ ├── ic_settings_white_36dp.png
│ │ ├── ic_settings_white_48dp.png
│ │ ├── ic_settings_grey600_18dp.png
│ │ ├── ic_settings_grey600_24dp.png
│ │ ├── ic_settings_grey600_36dp.png
│ │ ├── ic_settings_grey600_48dp.png
│ │ ├── ic_server_network_black_18dp.png
│ │ ├── ic_server_network_black_24dp.png
│ │ ├── ic_server_network_black_36dp.png
│ │ ├── ic_server_network_black_48dp.png
│ │ ├── ic_server_network_white_18dp.png
│ │ ├── ic_server_network_white_24dp.png
│ │ ├── ic_server_network_white_36dp.png
│ │ ├── ic_server_network_white_48dp.png
│ │ ├── ic_server_network_grey600_18dp.png
│ │ ├── ic_server_network_grey600_24dp.png
│ │ ├── ic_server_network_grey600_36dp.png
│ │ └── ic_server_network_grey600_48dp.png
│ ├── layout
│ │ ├── Toolbar.axml
│ │ └── Tabbar.axml
│ ├── values
│ │ └── styles.xml
│ └── AboutResources.txt
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── SQLiteDb.cs
├── Assets
│ └── AboutAssets.txt
├── MainActivity.cs
├── Helpers
│ └── Settings.cs
├── packages.config
└── Packet_Sender_Mobile.Droid.csproj
├── Packet_Sender_Mobile
├── pslogo144.png
├── IFileHelper.cs
├── ISQLiteDb.cs
├── Packet_Sender_MobilePage.xaml.cs
├── App.xaml
├── CloudUI.xaml.cs
├── Packet_Sender_MobilePage.xaml
├── MainTabbedPage.xaml.cs
├── SaveCloud.xaml.cs
├── Events.cs
├── Helpers
│ └── Settings.cs
├── SaveCloud.xaml
├── App.xaml.cs
├── Properties
│ └── AssemblyInfo.cs
├── packages.config
├── CloudUI.xaml
├── MainTabbedPage.xaml
├── PacketDatabase.cs
├── SettingsPage.xaml
├── LoginPage.xaml
├── PacketEditPage.xaml
├── TrafficPage.xaml
├── ImportCloud.xaml
├── AccountCloud.xaml
├── PacketJSON.cs
├── PacketsPage.xaml
├── TrafficPage.xaml.cs
├── LoginPage.xaml.cs
├── PacketEditPage.xaml.cs
├── SettingsPage.xaml.cs
├── ImportCloud.xaml.cs
├── AccountCloud.xaml.cs
├── Packet_Sender_Mobile.csproj
└── PacketsPage.xaml.cs
├── .github
└── ISSUE_TEMPLATE.md
├── .gitignore
├── LICENSE
├── README.md
└── Packet_Sender_Mobile.sln
/iOS/iTunesArtwork:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/iTunesArtwork
--------------------------------------------------------------------------------
/iOS/Resources/rx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx.png
--------------------------------------------------------------------------------
/iOS/Resources/tx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx.png
--------------------------------------------------------------------------------
/iOS/iTunesArtwork@2x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/iTunesArtwork@2x
--------------------------------------------------------------------------------
/iOS/Resources/rx@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_ssl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_ssl.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_tcp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_tcp.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_udp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_udp.png
--------------------------------------------------------------------------------
/iOS/Resources/tx@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_ssl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_ssl.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_tcp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_tcp.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_udp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_udp.png
--------------------------------------------------------------------------------
/screenshots/ps-ios.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/screenshots/ps-ios.jpg
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/iOS/Resources/rx_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_white.png
--------------------------------------------------------------------------------
/screenshots/ps-android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/screenshots/ps-android.png
--------------------------------------------------------------------------------
/screenshots/pslogo128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/screenshots/pslogo128.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_ssl@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_ssl@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_ssl@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_ssl@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_tcp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_tcp@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_tcp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_tcp@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_udp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_udp@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_udp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_udp@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_white@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_white@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_yellow.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_ssl@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_ssl@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_ssl@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_ssl@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_tcp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_tcp@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_tcp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_tcp@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_udp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_udp@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/tx_udp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/tx_udp@3x.png
--------------------------------------------------------------------------------
/screenshots/appstore100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/screenshots/appstore100.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/tx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/tx.png
--------------------------------------------------------------------------------
/iOS/Resources/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/icon_256x256.png
--------------------------------------------------------------------------------
/iOS/Resources/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/icon_512x512.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_yellow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_yellow@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/rx_yellow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/rx_yellow@3x.png
--------------------------------------------------------------------------------
/screenshots/googleplaybadge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/screenshots/googleplaybadge.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/icon.png
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/pslogo144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Packet_Sender_Mobile/pslogo144.png
--------------------------------------------------------------------------------
/iOS/Resources/icon_1024x1024_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/icon_1024x1024_2.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_packets_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_packets_icon.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_traffic_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_traffic_icon.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx_ssl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx_ssl.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx_tcp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx_tcp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx_udp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx_udp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/tx_ssl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/tx_ssl.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/tx_tcp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/tx_tcp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/tx_udp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/tx_udp.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_settings_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_settings_icon.png
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | #### What OS?
2 |
3 | - [ ] iOS
4 | - [ ] Android
5 |
6 | #### Description of issue
7 |
8 | {{replace this}}
9 |
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/moveupdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/moveupdown.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx_white.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/rx_yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/rx_yellow.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_packets_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_packets_icon@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_packets_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_packets_icon@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_settings_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_settings_icon@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_settings_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_settings_icon@3x.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_traffic_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_traffic_icon@2x.png
--------------------------------------------------------------------------------
/iOS/Resources/ios_traffic_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Resources/ios_traffic_icon@3x.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/pslogo144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/pslogo144.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/ic_launcher_status24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/ic_launcher_status24.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable/statusnotification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable/statusnotification.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_20x20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_20x20.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_29x29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_29x29.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_48x48.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_55x55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_55x55.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_60x60.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_64x64.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_76x76.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_87x87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_87x87.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_88x88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_88x88.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_white_48dp.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_120x120.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_152x152.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_167x167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_167x167.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_172x172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_172x172.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_180x180.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_196x196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_196x196.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_32x32_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_32x32_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_40x40_3.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_58x58_3.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_80x80_3.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_87x87_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_87x87_2.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_settings_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_settings_grey600_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_grey600_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_settings_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_settings_white_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_white_48dp.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_1024x1024.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_1024x1024_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_1024x1024_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_120x120_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_120x120_2.png
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/icon_512x512_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/iOS/Assets.xcassets/AppIcon.appiconset/icon_512x512_2.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_settings_grey600_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_grey600_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-hdpi/ic_server_network_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-hdpi/ic_server_network_white_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_white_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_black_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_black_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_black_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_black_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_white_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_white_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_white_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_white_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_white_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xhdpi/ic_server_network_grey600_48dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_18dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_24dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_36dp.png
--------------------------------------------------------------------------------
/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dannagle/Packet_Sender_Mobile/HEAD/Droid/Resources/drawable-xxhdpi/ic_server_network_grey600_48dp.png
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/IFileHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | namespace Packet_Sender_Mobile
3 | {
4 | public interface IFileHelper
5 | {
6 | string GetLocalFilePath(string filename);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/ISQLiteDb.cs:
--------------------------------------------------------------------------------
1 | using SQLite;
2 |
3 | namespace Packet_Sender_Mobile
4 | {
5 | public interface ISQLiteDb
6 | {
7 | SQLiteAsyncConnection GetConnection();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Packet_Sender_MobilePage.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace Packet_Sender_Mobile
4 | {
5 | public partial class Packet_Sender_MobilePage : ContentPage
6 | {
7 | public Packet_Sender_MobilePage()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/CloudUI.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Xamarin.Forms;
5 |
6 | namespace Packet_Sender_Mobile
7 | {
8 | public partial class CloudUI : TabbedPage
9 | {
10 | public CloudUI()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Droid/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Packet_Sender_MobilePage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Droid/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Droid/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/MainTabbedPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace Packet_Sender_Mobile
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class MainTabbedPage : TabbedPage
14 | {
15 | public MainTabbedPage()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Autosave files
2 | *~
3 |
4 | # build
5 | [Oo]bj/
6 | [Bb]in/
7 | packages/
8 | TestResults/
9 |
10 | # globs
11 | Makefile.in
12 | *.DS_Store
13 | *.sln.cache
14 | *.suo
15 | *.cache
16 | *.pidb
17 | *.userprefs
18 | *.usertasks
19 | config.log
20 | config.make
21 | config.status
22 | aclocal.m4
23 | install-sh
24 | autom4te.cache/
25 | *.user
26 | *.tar.gz
27 | tarballs/
28 | test-results/
29 | Thumbs.db
30 |
31 | # Mac bundle stuff
32 | *.dmg
33 | *.app
34 |
35 | # resharper
36 | *_Resharper.*
37 | *.Resharper
38 |
39 | # dotCover
40 | *.dotCover
41 |
--------------------------------------------------------------------------------
/iOS/SQLiteDb.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using SQLite;
4 | using Xamarin.Forms;
5 | using Packet_Sender_Mobile.iOS;
6 |
7 |
8 | [assembly: Dependency(typeof(SQLiteDb))]
9 |
10 | namespace Packet_Sender_Mobile.iOS
11 | {
12 | public class SQLiteDb : ISQLiteDb
13 | {
14 | public SQLiteAsyncConnection GetConnection()
15 | {
16 | var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
17 | var path = Path.Combine(documentsPath, "PSSQLite.db3");
18 |
19 | return new SQLiteAsyncConnection(path);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Droid/SQLiteDb.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using SQLite;
4 | using Xamarin.Forms;
5 | using Packet_Sender_Mobile.Droid;
6 |
7 | [assembly: Dependency(typeof(SQLiteDb))]
8 |
9 | namespace Packet_Sender_Mobile.Droid
10 | {
11 |
12 | public class SQLiteDb : ISQLiteDb
13 | {
14 | public SQLiteAsyncConnection GetConnection()
15 | {
16 | var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
17 | var path = Path.Combine(documentsPath, "PSSQLite.db3");
18 |
19 | return new SQLiteAsyncConnection(path);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace Packet_Sender_Mobile.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/SaveCloud.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace Packet_Sender_Mobile
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class SaveCloud : ContentPage
14 | {
15 | public SaveCloud()
16 | {
17 | InitializeComponent();
18 | }
19 |
20 | private void urlImportButton_Clicked(object sender, EventArgs e)
21 | {
22 |
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/Droid/Resources/drawable/server_network.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace Packet_Sender_Mobile.iOS
9 | {
10 | [Register("AppDelegate")]
11 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
12 | {
13 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
14 | {
15 | global::Xamarin.Forms.Forms.Init();
16 |
17 | LoadApplication(new App());
18 |
19 | return base.FinishedLaunching(app, options);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Droid/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with your package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Events.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | namespace Packet_Sender_Mobile
3 | {
4 | public static class Events
5 | {
6 | public static string NEW_PACKET_LIST = "NEW_PACKET_LIST";
7 | public static string NEW_TRAFFIC_PACKET = "NEW_TRAFFIC_PACKET";
8 | public static string PACKET_MODIFIED = "PACKET_MODIFIED";
9 | public static string BOUND_PORTS_CHANGED = "BOUND_PORTS_CHANGED";
10 | public static string TRAFFIC_TOGGLED = "TRAFFIC_TOGGLED";
11 |
12 | public static string FOUND_PACKETSET_LIST = "FOUND_PACKETSET_LIST";
13 |
14 | public static string APP_RESUME = "APP_RESUME";
15 | public static string APP_SLEEP = "APP_SLEEP";
16 | public static string APP_START = "APP_START";
17 | public static string APP_DISAPPEAR = "APP_DISAPPEAR";
18 | public static string APP_APPEAR = "APP_APPEAR";
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/iOS/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Droid/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content;
5 | using Android.Content.PM;
6 | using Android.Runtime;
7 | using Android.Views;
8 | using Android.Widget;
9 | using Android.OS;
10 |
11 | namespace Packet_Sender_Mobile.Droid
12 | {
13 | [Activity(Label = "Packet Sender", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
14 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
15 | {
16 | protected override void OnCreate(Bundle bundle)
17 | {
18 | TabLayoutResource = Resource.Layout.Tabbar;
19 | ToolbarResource = Resource.Layout.Toolbar;
20 |
21 | base.OnCreate(bundle);
22 |
23 | global::Xamarin.Forms.Forms.Init(this, bundle);
24 |
25 | LoadApplication(new App());
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Helpers/Settings.cs:
--------------------------------------------------------------------------------
1 | // Helpers/Settings.cs
2 | using Plugin.Settings;
3 | using Plugin.Settings.Abstractions;
4 |
5 | namespace Packet_Sender_Mobile.Helpers
6 | {
7 | ///
8 | /// This is the Settings static class that can be used in your Core solution or in any
9 | /// of your client applications. All settings are laid out the same exact way with getters
10 | /// and setters.
11 | ///
12 | public static class Settings
13 | {
14 | private static ISettings AppSettings
15 | {
16 | get
17 | {
18 | return CrossSettings.Current;
19 | }
20 | }
21 |
22 | #region Setting Constants
23 |
24 | private const string SettingsKey = "settings_key";
25 | private static readonly string SettingsDefault = string.Empty;
26 |
27 | #endregion
28 |
29 |
30 | public static string GeneralSettings
31 | {
32 | get
33 | {
34 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault);
35 | }
36 | set
37 | {
38 | AppSettings.AddOrUpdateValue(SettingsKey, value);
39 | }
40 | }
41 |
42 | }
43 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/SaveCloud.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using Xamarin.Forms;
3 |
4 | namespace Packet_Sender_Mobile
5 | {
6 | public partial class App : Application
7 | {
8 | public App()
9 | {
10 | InitializeComponent();
11 |
12 | MainPage = new MainTabbedPage();
13 | }
14 |
15 | protected override void OnStart()
16 | {
17 | // Handle when your app starts
18 | Debug.WriteLine("OnStart: App.xaml.cs");
19 | MessagingCenter.Send(this, Events.APP_START);
20 | }
21 |
22 | protected override void OnSleep()
23 | {
24 | // Handle when your app sleeps
25 | Debug.WriteLine("OnSleep: App.xaml.cs");
26 | MessagingCenter.Send(this, Events.APP_SLEEP);
27 | }
28 |
29 | protected override void OnResume()
30 | {
31 | // Handle when your app resumes
32 | Debug.WriteLine("OnResume: App.xaml.cs");
33 | MessagingCenter.Send(this, Events.APP_RESUME);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 NagleCode, LLC
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 |
4 | // Information about this assembly is defined by the following attributes.
5 | // Change them to the values specific to your project.
6 |
7 | [assembly: AssemblyTitle("Packet Sender")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("NagleCode, LLC")]
11 | [assembly: AssemblyProduct("")]
12 | [assembly: AssemblyCopyright("NagleCode, LLC")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision,
18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision.
19 |
20 | [assembly: AssemblyVersion("1.0.*")]
21 |
22 | // The following attributes are used to specify the signing key for the assembly,
23 | // if desired. See the Mono documentation for more information about signing.
24 |
25 | //[assembly: AssemblyDelaySign(false)]
26 | //[assembly: AssemblyKeyFile("")]
27 |
--------------------------------------------------------------------------------
/Droid/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using Android.App;
4 |
5 | // Information about this assembly is defined by the following attributes.
6 | // Change them to the values specific to your project.
7 |
8 | [assembly: AssemblyTitle("Packet Sender")]
9 | [assembly: AssemblyDescription("Network utility for sending/receiving TCP, UDP")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("NagleCode, LLC")]
12 | [assembly: AssemblyProduct("")]
13 | [assembly: AssemblyCopyright("NagleCode, LLC")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
18 | // The form "{Major}.{Minor}.*" will automatically update the build and revision,
19 | // and "{Major}.{Minor}.{Build}.*" will update just the revision.
20 |
21 | [assembly: AssemblyVersion("1.0.2")]
22 |
23 | // The following attributes are used to specify the signing key for the assembly,
24 | // if desired. See the Mono documentation for more information about signing.
25 |
26 | //[assembly: AssemblyDelaySign(false)]
27 | //[assembly: AssemblyKeyFile("")]
28 |
--------------------------------------------------------------------------------
/Droid/Resources/drawable/settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/Helpers/Settings.cs:
--------------------------------------------------------------------------------
1 | /*
2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.
3 | using Plugin.Settings;
4 | using Plugin.Settings.Abstractions;
5 |
6 | namespace Packet_Sender_Mobile.iOS.Helpers
7 | {
8 | ///
9 | /// This is the Settings static class that can be used in your Core solution or in any
10 | /// of your client applications. All settings are laid out the same exact way with getters
11 | /// and setters.
12 | ///
13 | public static class Settings
14 | {
15 | private static ISettings AppSettings
16 | {
17 | get
18 | {
19 | return CrossSettings.Current;
20 | }
21 | }
22 |
23 | #region Setting Constants
24 |
25 | private const string SettingsKey = "settings_key";
26 | private static readonly string SettingsDefault = string.Empty;
27 |
28 | #endregion
29 |
30 |
31 | public static string GeneralSettings
32 | {
33 | get
34 | {
35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault);
36 | }
37 | set
38 | {
39 | AppSettings.AddOrUpdateValue(SettingsKey, value);
40 | }
41 | }
42 |
43 | }
44 | }*/
--------------------------------------------------------------------------------
/Droid/Helpers/Settings.cs:
--------------------------------------------------------------------------------
1 | /*
2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.
3 | using Plugin.Settings;
4 | using Plugin.Settings.Abstractions;
5 |
6 | namespace Packet_Sender_Mobile.Droid.Helpers
7 | {
8 | ///
9 | /// This is the Settings static class that can be used in your Core solution or in any
10 | /// of your client applications. All settings are laid out the same exact way with getters
11 | /// and setters.
12 | ///
13 | public static class Settings
14 | {
15 | private static ISettings AppSettings
16 | {
17 | get
18 | {
19 | return CrossSettings.Current;
20 | }
21 | }
22 |
23 | #region Setting Constants
24 |
25 | private const string SettingsKey = "settings_key";
26 | private static readonly string SettingsDefault = string.Empty;
27 |
28 | #endregion
29 |
30 |
31 | public static string GeneralSettings
32 | {
33 | get
34 | {
35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault);
36 | }
37 | set
38 | {
39 | AppSettings.AddOrUpdateValue(SettingsKey, value);
40 | }
41 | }
42 |
43 | }
44 | }*/
--------------------------------------------------------------------------------
/Droid/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
24 |
27 |
28 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/CloudUI.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 | ios_packets_icon.png
10 | icon.png
11 |
12 |
13 |
14 |
15 |
16 |
17 | ios_packets_icon.png
18 | icon.png
19 |
20 |
21 |
22 |
23 |
24 |
25 | ios_packets_icon.png
26 | icon.png
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDisplayName
6 | Packet Sender
7 | CFBundleName
8 | Packet Sender
9 | CFBundleIdentifier
10 | com.packetsender.mobile
11 | CFBundleShortVersionString
12 | 1.0.12
13 | CFBundleVersion
14 | 1.0.12
15 | LSRequiresIPhoneOS
16 |
17 | MinimumOSVersion
18 | 10.2
19 | UIDeviceFamily
20 |
21 | 1
22 | 2
23 |
24 | UILaunchStoryboardName
25 | LaunchScreen
26 | UIRequiredDeviceCapabilities
27 |
28 | arm64
29 |
30 | UISupportedInterfaceOrientations
31 |
32 | UIInterfaceOrientationPortrait
33 | UIInterfaceOrientationLandscapeLeft
34 | UIInterfaceOrientationLandscapeRight
35 |
36 | UISupportedInterfaceOrientations~ipad
37 |
38 | UIInterfaceOrientationPortrait
39 | UIInterfaceOrientationPortraitUpsideDown
40 | UIInterfaceOrientationLandscapeLeft
41 | UIInterfaceOrientationLandscapeRight
42 |
43 | XSAppIconAssets
44 | Assets.xcassets/AppIcon.appiconset
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/MainTabbedPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 | ios_packets_icon.png
12 | pslogo144.png
13 |
14 |
15 |
16 |
17 |
18 |
19 | ios_traffic_icon.png
20 | server_network
21 |
22 |
23 |
24 |
25 |
26 |
27 | ios_settings_icon.png
28 | settings
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketDatabase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading.Tasks;
4 | using SQLite;
5 | namespace Packet_Sender_Mobile
6 | {
7 | public class PacketDatabase
8 | {
9 |
10 | readonly SQLiteAsyncConnection database;
11 |
12 | public PacketDatabase(string dbPath)
13 | {
14 | database = new SQLiteAsyncConnection(dbPath);
15 | database.CreateTableAsync().Wait();
16 | }
17 |
18 | public Task> GetPacketsAsync()
19 | {
20 | return database.Table().ToListAsync();
21 | }
22 |
23 | /*
24 | public Task> GetPacketsNotDoneAsync()
25 | {
26 | return database.QueryAsync("SELECT * FROM [Packet] WHERE [Done] = 0");
27 | }
28 | */
29 |
30 | public Task GetPacketAsync(string name)
31 | {
32 | return database.Table().Where(i => i.name == name).FirstOrDefaultAsync();
33 | }
34 |
35 | public Task SavePacketAsync(Packet item)
36 | {
37 | if (!string.IsNullOrWhiteSpace(item.name))
38 | {
39 | return database.InsertOrReplaceAsync(item);
40 |
41 | }
42 | else
43 | {
44 | return Task.FromResult(0);
45 | }
46 |
47 | }
48 |
49 | public void TruncatePackets()
50 | {
51 | database.DropTableAsync().Wait();
52 | database.CreateTableAsync().Wait();
53 | }
54 |
55 |
56 | public Task DeletePacketAsync(Packet item)
57 | {
58 | return database.DeleteAsync(item);
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/SettingsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/LoginPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Droid/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.axml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable/
12 | icon.png
13 |
14 | layout/
15 | main.axml
16 |
17 | values/
18 | strings.xml
19 |
20 | In order to get the build system to recognize Android resources, set the build action to
21 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
22 | instead operate on resource IDs. When you compile an Android application that uses resources,
23 | the build system will package the resources for distribution and generate a class called "R"
24 | (this is an Android convention) that contains the tokens for each one of the resources
25 | included. For example, for the above Resources layout, this is what the R class would expose:
26 |
27 | public class R {
28 | public class drawable {
29 | public const int icon = 0x123;
30 | }
31 |
32 | public class layout {
33 | public const int main = 0x456;
34 | }
35 |
36 | public class strings {
37 | public const int first_string = 0xabc;
38 | public const int second_string = 0xbcd;
39 | }
40 | }
41 |
42 | You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
43 | to reference the layout/main.axml file, or R.strings.first_string to reference the first
44 | string in the dictionary file values/strings.xml.
45 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketEditPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/iOS/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/TrafficPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Archive Notice
2 | Both the iOS and Android versions are being rewritten from scratch using native Android Studio and Xcode. The end result should be much nicer apps. As such, this Xamarin-based version has been archived. Feel free to browse.
3 |
4 |
23 |
24 | ## Screenshots
25 |
26 | 
27 |
28 | 
29 |
30 |
31 | ## Features
32 | - Built-in servers for both TCP and UDP
33 | - Built-in client for both TCP and UDP
34 | - Specify your data in either HEX or ASCII.
35 | - Traffic log of incoming and outgoing traffic.
36 | - Save your packets for later with a name
37 |
38 | ## Code
39 |
40 | Packet Sender Mobile was developed entirely in C# using Xamarin.Forms
41 |
42 |
43 |
44 | ### Support
45 |
46 | * Twitter: [@NagleCode](http://twitter.com/NagleCode)
47 | * Email: hello AT packetsender DOT com
48 | * Connect with me on [LinkedIn](https://www.linkedin.com/in/dannagle/)
49 |
50 |
51 |
52 | ## Desktop Version
53 | GitHub: https://github.com/dannagle/PacketSender
54 |
55 |
56 |
57 |
58 | ## Copyright
59 |
60 | Packet Sender was written by [Dan Nagle](https://dannagle.com/) and is published by © NagleCode, LLC - [@NagleCode](https://twitter.com/NagleCode) - [PacketSender.com](https://PacketSender.com)
61 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/ImportCloud.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/AccountCloud.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 50
24 | 50
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | 50
33 | 50
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | 50
42 | 50
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Droid/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketJSON.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Newtonsoft.Json;
8 |
9 |
10 | namespace Packet_Sender_Mobile
11 | {
12 |
13 | [JsonObject]
14 | class PacketSetJSON
15 | {
16 |
17 | [JsonProperty("name")]
18 | public string name { get; set; }
19 |
20 | [JsonProperty("description")]
21 | public string description { get; set; }
22 |
23 | [JsonProperty("path")]
24 | public string path { get; set; }
25 |
26 | [JsonProperty("count")]
27 | public int count { get; set; }
28 |
29 | [JsonProperty("lastupdate")]
30 | public string lastupdate { get; set; }
31 |
32 | [JsonProperty("packetjson")]
33 | public string packetjson { get; set; }
34 |
35 | }
36 |
37 |
38 |
39 |
40 |
41 |
42 | [JsonObject]
43 | class PacketJSON
44 | {
45 |
46 | [JsonProperty("errorstring")]
47 | public string errorstring { get; set; }
48 |
49 | [JsonProperty("fromip")]
50 | public string fromip { get; set; }
51 |
52 | [JsonProperty("fromport")]
53 | public string fromport { get; set; }
54 |
55 | [JsonProperty("hexstring")]
56 | public string hexstring { get; set; }
57 |
58 | [JsonProperty("name")]
59 | public string name { get; set; }
60 |
61 | [JsonProperty("port")]
62 | public string port { get; set; }
63 |
64 | [JsonProperty("repeat")]
65 | public float repeat { get; set; }
66 |
67 | [JsonProperty("sendresponse")]
68 | public string sendresponse { get; set; }
69 |
70 | [JsonProperty("tcporudp")]
71 | public string tcporudp { get; set; }
72 |
73 | [JsonProperty("toip")]
74 | public string toip { get; set; }
75 |
76 |
77 | public static List ToPacketList(List jList)
78 | {
79 | var returnList = new List();
80 |
81 | for (int i = 0; i < jList.Count(); i++) {
82 | returnList.Add(jList[i].ToPacket());
83 | }
84 |
85 | return returnList;
86 |
87 | }
88 |
89 |
90 | public Packet ToPacket()
91 | {
92 | Packet returnPkt = new Packet();
93 | returnPkt.name = name;
94 | returnPkt.hex = hexstring;
95 | returnPkt.fromip = fromip;
96 | returnPkt.toip = toip;
97 | returnPkt.error = errorstring;
98 | returnPkt.toport = Convert.ToInt32(port);
99 | returnPkt.method = tcporudp;
100 | returnPkt.sendResponse = Convert.ToInt32(sendresponse);
101 | returnPkt.repeat = repeat;
102 | returnPkt.timestamp = Packet.getTimeStamp();
103 | returnPkt.receiveBeforeSend = false;
104 | returnPkt.delayAfterConnect = 0;
105 | returnPkt.persistent = false;
106 |
107 | return returnPkt;
108 | }
109 |
110 |
111 | }
112 |
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
42 |
43 |
44 |
49 |
54 |
59 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/TrafficPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 | using System.Collections.ObjectModel;
10 | using SQLite;
11 | using System.Diagnostics;
12 |
13 | namespace Packet_Sender_Mobile
14 | {
15 | [XamlCompilation(XamlCompilationOptions.Compile)]
16 | public partial class TrafficPage : ContentPage
17 | {
18 |
19 |
20 | private ObservableCollection _trafficpackets;
21 | private SQLiteAsyncConnection _connection;
22 | private bool _logtraffice;
23 |
24 | public TrafficPage()
25 | {
26 | InitializeComponent();
27 | _logtraffice = SettingsPage.LogTraffic;
28 | _trafficpackets = new ObservableCollection(new List());
29 |
30 | trafficListView.ItemsSource = _trafficpackets;
31 | _connection = DependencyService.Get().GetConnection();
32 |
33 | MessagingCenter.Subscribe(this, Events.NEW_TRAFFIC_PACKET, OnNewTrafficPacketAsync);
34 | MessagingCenter.Subscribe(this, Events.TRAFFIC_TOGGLED, OnTrafficToggled);
35 |
36 | }
37 |
38 | private void OnTrafficToggled(SettingsPage source, bool toggled)
39 | {
40 | _logtraffice = SettingsPage.LogTraffic;
41 | }
42 |
43 |
44 | private void OnNewTrafficPacketAsync(PacketsPage source, Packet newpkt)
45 | {
46 | if (_logtraffice) {
47 | Debug.WriteLine("TP:Packet from has " + newpkt.fromip);
48 | if(_trafficpackets.Count == 0) {
49 | _trafficpackets = new ObservableCollection(new List());
50 | _trafficpackets.Add(newpkt); //(newpkt);
51 | Debug.WriteLine("TP:Packet added");
52 | trafficListView.ItemsSource = _trafficpackets;
53 | Debug.WriteLine("TP:Packet added done");
54 | } else {
55 | _trafficpackets.Insert(0, newpkt); //(newpkt);
56 | }
57 | }
58 | Debug.WriteLine("TP:Finished OnNewTrafficPacketAsync");
59 | }
60 |
61 | private void clearButton_Clicked(object sender, EventArgs e)
62 | {
63 | _trafficpackets.Clear();
64 |
65 | }
66 |
67 | private async void saveButton_ClickedAsync(object sender, EventArgs e)
68 | {
69 | var savepacket = trafficListView.SelectedItem as Packet;
70 |
71 | if (savepacket == null)
72 | {
73 | Debug.WriteLine("TP:saveButton_Clicked with null");
74 | return;
75 |
76 | }
77 | savepacket.name = string.Empty;
78 | if(savepacket.toip == "You") {
79 | savepacket.toip = savepacket.fromip;
80 | savepacket.toport = savepacket.fromport;
81 | }
82 |
83 | Debug.WriteLine("TP:saveButton_Clicked " + savepacket.name + " " + savepacket.method);
84 | //Navigation.PushAsync((new PacketEditPage()));
85 | await Navigation.PushModalAsync(new PacketEditPage(savepacket));
86 |
87 |
88 |
89 | }
90 |
91 | private void trafficListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
92 | {
93 |
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/LoginPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 | using System.Net;
10 | using Newtonsoft.Json;
11 | using System.Diagnostics;
12 | using System.Net.Http;
13 |
14 | using Plugin.Settings.Abstractions;
15 | using Plugin.Settings;
16 |
17 | namespace Packet_Sender_Mobile
18 | {
19 | [XamlCompilation(XamlCompilationOptions.Compile)]
20 | public partial class LoginPage : ContentPage
21 | {
22 | private List _packetsjson;
23 | private List _packetsimport;
24 |
25 | private static ISettings AppSettings => CrossSettings.Current;
26 |
27 |
28 | public LoginPage()
29 | {
30 | InitializeComponent();
31 | _packetsjson = new List ();
32 | _packetsimport= new List();
33 |
34 | usernameEntry.Text = SettingsPage.UserEmail;
35 | passwordEntry.Text = SettingsPage.UserPass;
36 | }
37 |
38 | private async void OnLoginButtonClicked(object sender, EventArgs e)
39 | {
40 |
41 | var http = new HttpClient();
42 | var un = usernameEntry.Text;
43 | var pw = passwordEntry.Text;
44 |
45 | un = "boom";
46 | pw = "pass";
47 |
48 | string json = "";
49 |
50 | try {
51 |
52 | //Xamarin cannot read cloudflare cert. This works with Let's Encrypt cert.
53 | json = await http.GetStringAsync(new Uri("https://cloud.packetsender.com/?un=" + un + "&pw=" + pw));
54 | } catch (HttpRequestException eHttp ) {
55 | Debug.WriteLine("Exception : " + eHttp.Message);
56 | Debug.WriteLine("Exception : " + eHttp.InnerException.Message);
57 | }
58 |
59 | if (json.Length > 0)
60 | {
61 | //JsonConvert.DeserializeObject>(json);
62 |
63 | try
64 | {
65 | _packetsjson = JsonConvert.DeserializeObject>(json);
66 | }
67 | catch (Exception eJson)
68 | {
69 | Debug.WriteLine("Exception : " + eJson.Message);
70 | Debug.WriteLine("Exception : " + eJson.InnerException.Message);
71 | }
72 |
73 | MessagingCenter.Send(this, Events.NEW_PACKET_LIST, PacketJSON.ToPacketList(_packetsjson));
74 |
75 | SettingsPage.UserEmail = un;
76 | SettingsPage.UserPass = pw;
77 |
78 |
79 | Device.BeginInvokeOnMainThread(async () =>
80 | {
81 | await DisplayAlert("Success", "Found " + _packetsjson.Count() + " packets", "OK");
82 | });
83 |
84 | await Navigation.PopModalAsync();
85 | }
86 | else {
87 |
88 | Device.BeginInvokeOnMainThread(async () =>
89 | {
90 | await DisplayAlert("Error", "Could not connect to packet sender.", "OK");
91 | });
92 |
93 | }
94 |
95 |
96 |
97 |
98 | }
99 |
100 | private void createAccountButton_Clicked(object sender, EventArgs e)
101 | {
102 |
103 | }
104 | }
105 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketEditPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using SQLite;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | using Xamarin.Forms;
10 | using Xamarin.Forms.Xaml;
11 |
12 | namespace Packet_Sender_Mobile
13 | {
14 | [XamlCompilation(XamlCompilationOptions.Compile)]
15 | public partial class PacketEditPage : ContentPage
16 | {
17 |
18 | private SQLiteAsyncConnection _connection;
19 | private Packet bindPacket;
20 | private Packet originalPacket;
21 |
22 | public PacketEditPage(Packet packet)
23 | {
24 |
25 | if (packet == null)
26 | {
27 | packet = new Packet();
28 | }
29 |
30 | bindPacket = new Packet();
31 | originalPacket = new Packet();
32 |
33 | originalPacket.Clone(packet);
34 | bindPacket.Clone(packet);
35 |
36 | BindingContext = bindPacket;
37 | InitializeComponent();
38 |
39 | }
40 |
41 | async void OnSave(object sender, System.EventArgs e)
42 | {
43 | var packet = BindingContext as Packet;
44 |
45 | _connection = DependencyService.Get().GetConnection();
46 |
47 | if(packet.ascii != asciiEdit.Text)
48 | {
49 | asciiEdit.Text = packet.ascii;
50 | packet = BindingContext as Packet;
51 | }
52 |
53 | if (packet.hex != hexEdit.Text)
54 | {
55 | hexEdit.Text = packet.hex;
56 | packet = BindingContext as Packet;
57 | }
58 |
59 |
60 | if (String.IsNullOrWhiteSpace(packet.name))
61 | {
62 | await DisplayAlert("Error", "Please enter a name.", "OK");
63 | return;
64 | }
65 |
66 | if (String.IsNullOrWhiteSpace(packet.toip))
67 | {
68 | await DisplayAlert("Error", "Please enter a target ip.", "OK");
69 | return;
70 | }
71 |
72 |
73 | Debug.WriteLine("Saving ID: " + packet.name + " headed to " + packet.toip);
74 | int x = await _connection.InsertOrReplaceAsync(packet);
75 | Debug.WriteLine("x = " + x);
76 |
77 |
78 | MessagingCenter.Send(this, Events.PACKET_MODIFIED, packet);
79 |
80 |
81 |
82 | await Navigation.PopModalAsync();
83 | }
84 |
85 |
86 | void methodUnfocused(object sender, EventArgs e)
87 | {
88 | var packet = BindingContext as Packet;
89 | if (packetMethod.Text.Length > 0) {
90 | packet.method = packetMethod.Text;
91 | packetMethod.Text = packet.method;
92 | }
93 | }
94 |
95 |
96 |
97 |
98 |
99 | void asciiEditUnfocused(object sender, EventArgs e)
100 | {
101 | var packet = BindingContext as Packet;
102 | packet.ascii = asciiEdit.Text;
103 |
104 | asciiEdit.Text = packet.ascii;
105 | hexEdit.Text = packet.hex;
106 |
107 | }
108 |
109 | void hexEditUnfocused(object sender, EventArgs e)
110 | {
111 | var packet = BindingContext as Packet;
112 | packet.hex = hexEdit.Text;
113 |
114 | asciiEdit.Text = packet.ascii;
115 | hexEdit.Text = packet.hex;
116 |
117 | }
118 |
119 | async void editCancel_Clicked(object sender, EventArgs e)
120 | {
121 | originalPacket.Clone(bindPacket);
122 | await Navigation.PopModalAsync();
123 |
124 | }
125 | }
126 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2012
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packet_Sender_Mobile", "Packet_Sender_Mobile\Packet_Sender_Mobile.csproj", "{D97B3A99-EB14-45B7-A5C8-495B6E435E10}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packet_Sender_Mobile.iOS", "iOS\Packet_Sender_Mobile.iOS.csproj", "{1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Packet_Sender_Mobile.Droid", "Droid\Packet_Sender_Mobile.Droid.csproj", "{56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
15 | Release|iPhone = Release|iPhone
16 | Release|iPhoneSimulator = Release|iPhoneSimulator
17 | Debug|iPhone = Debug|iPhone
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
25 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
26 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|iPhone.ActiveCfg = Release|Any CPU
27 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|iPhone.Build.0 = Release|Any CPU
28 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
29 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
30 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|iPhone.ActiveCfg = Debug|Any CPU
31 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}.Debug|iPhone.Build.0 = Debug|Any CPU
32 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
33 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
34 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|Any CPU.ActiveCfg = Release|iPhone
35 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|Any CPU.Build.0 = Release|iPhone
36 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
37 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
38 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|iPhone.ActiveCfg = Release|iPhone
39 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|iPhone.Build.0 = Release|iPhone
40 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
41 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
42 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|iPhone.ActiveCfg = Debug|iPhone
43 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}.Debug|iPhone.Build.0 = Debug|iPhone
44 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
46 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|Any CPU.Build.0 = Release|Any CPU
48 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
49 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
50 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|iPhone.ActiveCfg = Release|Any CPU
51 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|iPhone.Build.0 = Release|Any CPU
52 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
53 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
54 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
55 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}.Debug|iPhone.Build.0 = Debug|Any CPU
56 | EndGlobalSection
57 | EndGlobal
58 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/SettingsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | using Plugin.Settings.Abstractions;
11 | using Plugin.Settings;
12 | using System.Diagnostics;
13 |
14 | namespace Packet_Sender_Mobile
15 | {
16 | [XamlCompilation(XamlCompilationOptions.Compile)]
17 | public partial class SettingsPage : ContentPage
18 | {
19 |
20 | private static ISettings AppSettings => CrossSettings.Current;
21 |
22 | public SettingsPage()
23 | {
24 | InitializeComponent();
25 | tcpport.Text = "" + TCPPort;
26 | udpport.Text = "" + UDPPort;
27 | logTrafficToggle.On = LogTraffic;
28 |
29 | MessagingCenter.Subscribe(this, Events.BOUND_PORTS_CHANGED, OnPortsChanged);
30 | }
31 |
32 |
33 | private void OnPortsChanged(PacketsPage source, int unused)
34 | {
35 | tcpport.Text = "" + TCPPort;
36 | udpport.Text = "" + UDPPort;
37 | }
38 |
39 |
40 | public static bool LogTraffic
41 | {
42 | get => AppSettings.GetValueOrDefault(nameof(LogTraffic), true);
43 | set => AppSettings.AddOrUpdateValue(nameof(LogTraffic), value);
44 |
45 | }
46 |
47 |
48 | public static string UserEmail
49 | {
50 | get => AppSettings.GetValueOrDefault(nameof(UserEmail), string.Empty);
51 | set => AppSettings.AddOrUpdateValue(nameof(UserEmail), value);
52 | }
53 |
54 | public static string UserName
55 | {
56 | get => AppSettings.GetValueOrDefault(nameof(UserName), string.Empty);
57 | set => AppSettings.AddOrUpdateValue(nameof(UserName), value);
58 | }
59 |
60 |
61 | public static string UserPass
62 | {
63 | get => AppSettings.GetValueOrDefault(nameof(UserPass), string.Empty);
64 | set => AppSettings.AddOrUpdateValue(nameof(UserPass), value);
65 | }
66 |
67 | public static int UDPPort
68 | {
69 | get
70 | {
71 | int theport= AppSettings.GetValueOrDefault(nameof(UDPPort), 5005);
72 |
73 | if (theport > 0)
74 | {
75 | return theport;
76 | }
77 | else {
78 | return 5005;
79 | }
80 |
81 | }
82 | set => AppSettings.AddOrUpdateValue(nameof(UDPPort), value);
83 | }
84 |
85 | public static int TCPPort
86 | {
87 | get
88 | {
89 | int theport = AppSettings.GetValueOrDefault(nameof(TCPPort), 5005);
90 | if (theport > 0)
91 | {
92 | return theport;
93 | }
94 | else
95 | {
96 | return 5005;
97 | }
98 |
99 | }
100 | set => AppSettings.AddOrUpdateValue(nameof(TCPPort), value);
101 | }
102 |
103 | private void OnImportClicked(object sender, EventArgs e)
104 | {
105 | var cloudPage = new CloudUI();
106 | Navigation.PushModalAsync(cloudPage);
107 |
108 | }
109 |
110 | private void SettingsSave_Clicked(object sender, EventArgs e)
111 | {
112 | try
113 | {
114 | string stringTcp = tcpport.Text;
115 | string stringUdp = udpport.Text;
116 |
117 |
118 | Debug.WriteLine("SS:stringTcp:" + stringTcp);
119 | Debug.WriteLine("SS:stringUcp:" + stringUdp);
120 |
121 | int tcpcheck = Convert.ToInt32(stringTcp);
122 | int udpcheck = Convert.ToInt32(stringUdp);
123 | LogTraffic = logTrafficToggle.On;
124 |
125 |
126 | Debug.WriteLine("SS:TCPPort:" + tcpcheck);
127 | Debug.WriteLine("SS:UDPPort:" + udpcheck);
128 |
129 | if (tcpcheck > 0) {
130 | if (udpcheck > 0)
131 | {
132 | TCPPort = tcpcheck;
133 | UDPPort = udpcheck;
134 | MessagingCenter.Send(this, Events.TRAFFIC_TOGGLED, logTrafficToggle.On);
135 | return;
136 | }
137 | }
138 | } catch (Exception portE) {
139 | //nothing
140 | Debug.WriteLine("SS:SettingsSave_Clicked:" + portE.InnerException.Message);
141 | }
142 |
143 | tcpport.Text = TCPPort + "";
144 | udpport.Text = UDPPort + "";
145 | DisplayAlert("Error", "Port binding must be 1 or higer", "OK");
146 |
147 | }
148 | }
149 | }
--------------------------------------------------------------------------------
/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "filename": "icon_40x40.png",
5 | "size": "20x20",
6 | "scale": "2x",
7 | "idiom": "iphone"
8 | },
9 | {
10 | "filename": "icon_60x60.png",
11 | "size": "20x20",
12 | "scale": "3x",
13 | "idiom": "iphone"
14 | },
15 | {
16 | "filename": "icon_58x58_2.png",
17 | "size": "29x29",
18 | "scale": "2x",
19 | "idiom": "iphone"
20 | },
21 | {
22 | "filename": "icon_87x87_2.png",
23 | "size": "29x29",
24 | "scale": "3x",
25 | "idiom": "iphone"
26 | },
27 | {
28 | "filename": "icon_80x80_2.png",
29 | "size": "40x40",
30 | "scale": "2x",
31 | "idiom": "iphone"
32 | },
33 | {
34 | "filename": "icon_120x120.png",
35 | "size": "40x40",
36 | "scale": "3x",
37 | "idiom": "iphone"
38 | },
39 | {
40 | "filename": "icon_120x120_2.png",
41 | "size": "60x60",
42 | "scale": "2x",
43 | "idiom": "iphone"
44 | },
45 | {
46 | "filename": "icon_180x180.png",
47 | "size": "60x60",
48 | "scale": "3x",
49 | "idiom": "iphone"
50 | },
51 | {
52 | "filename": "icon_20x20.png",
53 | "size": "20x20",
54 | "scale": "1x",
55 | "idiom": "ipad"
56 | },
57 | {
58 | "filename": "icon_40x40_2.png",
59 | "size": "20x20",
60 | "scale": "2x",
61 | "idiom": "ipad"
62 | },
63 | {
64 | "filename": "icon_29x29.png",
65 | "size": "29x29",
66 | "scale": "1x",
67 | "idiom": "ipad"
68 | },
69 | {
70 | "filename": "icon_58x58_3.png",
71 | "size": "29x29",
72 | "scale": "2x",
73 | "idiom": "ipad"
74 | },
75 | {
76 | "filename": "icon_40x40_3.png",
77 | "size": "40x40",
78 | "scale": "1x",
79 | "idiom": "ipad"
80 | },
81 | {
82 | "filename": "icon_80x80_3.png",
83 | "size": "40x40",
84 | "scale": "2x",
85 | "idiom": "ipad"
86 | },
87 | {
88 | "filename": "icon_167x167.png",
89 | "size": "83.5x83.5",
90 | "scale": "2x",
91 | "idiom": "ipad"
92 | },
93 | {
94 | "filename": "icon_76x76.png",
95 | "size": "76x76",
96 | "scale": "1x",
97 | "idiom": "ipad"
98 | },
99 | {
100 | "filename": "icon_152x152.png",
101 | "size": "76x76",
102 | "scale": "2x",
103 | "idiom": "ipad"
104 | },
105 | {
106 | "filename": "icon_1024x1024.png",
107 | "size": "1024x1024",
108 | "scale": "1x",
109 | "idiom": "ios-marketing"
110 | },
111 | {
112 | "role": "notificationCenter",
113 | "filename": "icon_48x48.png",
114 | "size": "24x24",
115 | "subtype": "38mm",
116 | "scale": "2x",
117 | "idiom": "watch"
118 | },
119 | {
120 | "role": "notificationCenter",
121 | "filename": "icon_55x55.png",
122 | "size": "27.5x27.5",
123 | "subtype": "42mm",
124 | "scale": "2x",
125 | "idiom": "watch"
126 | },
127 | {
128 | "role": "companionSettings",
129 | "filename": "icon_58x58.png",
130 | "size": "29x29",
131 | "scale": "2x",
132 | "idiom": "watch"
133 | },
134 | {
135 | "role": "companionSettings",
136 | "filename": "icon_87x87.png",
137 | "size": "29x29",
138 | "scale": "3x",
139 | "idiom": "watch"
140 | },
141 | {
142 | "role": "appLauncher",
143 | "filename": "icon_80x80.png",
144 | "size": "40x40",
145 | "subtype": "38mm",
146 | "scale": "2x",
147 | "idiom": "watch"
148 | },
149 | {
150 | "role": "longLook",
151 | "filename": "icon_88x88.png",
152 | "size": "44x44",
153 | "subtype": "42mm",
154 | "scale": "2x",
155 | "idiom": "watch"
156 | },
157 | {
158 | "role": "quickLook",
159 | "filename": "icon_172x172.png",
160 | "size": "86x86",
161 | "subtype": "38mm",
162 | "scale": "2x",
163 | "idiom": "watch"
164 | },
165 | {
166 | "role": "quickLook",
167 | "filename": "icon_196x196.png",
168 | "size": "98x98",
169 | "subtype": "42mm",
170 | "scale": "2x",
171 | "idiom": "watch"
172 | },
173 | {
174 | "filename": "icon_16x16.png",
175 | "size": "16x16",
176 | "scale": "1x",
177 | "idiom": "mac"
178 | },
179 | {
180 | "filename": "icon_32x32_2.png",
181 | "size": "16x16",
182 | "scale": "2x",
183 | "idiom": "mac"
184 | },
185 | {
186 | "filename": "icon_32x32.png",
187 | "size": "32x32",
188 | "scale": "1x",
189 | "idiom": "mac"
190 | },
191 | {
192 | "filename": "icon_64x64.png",
193 | "size": "32x32",
194 | "scale": "2x",
195 | "idiom": "mac"
196 | },
197 | {
198 | "filename": "icon_128x128.png",
199 | "size": "128x128",
200 | "scale": "1x",
201 | "idiom": "mac"
202 | },
203 | {
204 | "filename": "icon_256x256.png",
205 | "size": "128x128",
206 | "scale": "2x",
207 | "idiom": "mac"
208 | },
209 | {
210 | "filename": "icon_256x256.png",
211 | "size": "256x256",
212 | "scale": "1x",
213 | "idiom": "mac"
214 | },
215 | {
216 | "filename": "icon_512x512.png",
217 | "size": "256x256",
218 | "scale": "2x",
219 | "idiom": "mac"
220 | },
221 | {
222 | "filename": "icon_512x512_2.png",
223 | "size": "512x512",
224 | "scale": "1x",
225 | "idiom": "mac"
226 | },
227 | {
228 | "filename": "icon_1024x1024_2.png",
229 | "size": "512x512",
230 | "scale": "2x",
231 | "idiom": "mac"
232 | }
233 | ],
234 | "info": {
235 | "version": 1,
236 | "author": "xcode"
237 | }
238 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/ImportCloud.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 | using System.Collections.ObjectModel;
10 | using System.Net;
11 | using System.Net.Http;
12 |
13 | using System.Diagnostics;
14 | using Newtonsoft.Json;
15 |
16 | namespace Packet_Sender_Mobile
17 | {
18 | [XamlCompilation(XamlCompilationOptions.Compile)]
19 | public partial class ImportCloud : ContentPage
20 | {
21 |
22 |
23 | private ObservableCollection _thepackets;
24 | private List _packetSets;
25 |
26 | public ImportCloud()
27 | {
28 | InitializeComponent();
29 |
30 | _thepackets = new ObservableCollection();
31 | packetSetJSONListView.ItemsSource = _thepackets;
32 |
33 | //urlEntry.Text = "https://cloud.packetsender.com/dannagle/homeset.";
34 |
35 | MessagingCenter.Subscribe>(this, Events.FOUND_PACKETSET_LIST, OnNewPacketSetListAsync);
36 |
37 | }
38 |
39 |
40 | private void OnNewPacketSetListAsync(AccountCloud source, List newList)
41 | {
42 | Debug.WriteLine("IC:List now has " + newList.Count);
43 |
44 | _thepackets.Clear();
45 |
46 | for (int i = 0; i < newList.Count; i++)
47 | {
48 | _thepackets.Add(newList[i]);
49 | }
50 |
51 | Debug.WriteLine("IC:Updated list now has " + _thepackets.Count);
52 |
53 | //packetSetJSONListView.ItemsSource = null;
54 | //packetSetJSONListView.ItemsSource = _thepackets;
55 |
56 | //packetListView.ItemsSource = newList;
57 |
58 | Debug.WriteLine("IC:Finished");
59 |
60 |
61 | }
62 |
63 | private async void urlImportButton_ClickedAsync(object sender, EventArgs e)
64 | {
65 | Debug.WriteLine("IC:Import from URL");
66 |
67 | string urlpath = urlEntry.Text + "/json";
68 |
69 | if(!urlpath.StartsWith("http://", StringComparison.Ordinal)) {
70 | if (!urlpath.StartsWith("https://", StringComparison.Ordinal))
71 | {
72 |
73 | Device.BeginInvokeOnMainThread(async () =>
74 | {
75 | await DisplayAlert("Error", "URL must start with http or https.", "OK");
76 | });
77 | return;
78 | }
79 | }
80 |
81 | //Check URL is valid.
82 |
83 | var http = new HttpClient();
84 |
85 |
86 |
87 | try
88 | {
89 | var response = await http.GetAsync(urlpath).ConfigureAwait(false);
90 | if (response.StatusCode == HttpStatusCode.OK)
91 | {
92 | string json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
93 |
94 | try
95 | {
96 | _packetSets = JsonConvert.DeserializeObject>(json);
97 |
98 | if (_packetSets.Count > 0)
99 | {
100 | _thepackets.Clear();
101 | _thepackets.Add(_packetSets[0]);
102 | Device.BeginInvokeOnMainThread(() =>
103 | {
104 | DisplayAlert("Success", "Found a packet set.", "OK");
105 |
106 | });
107 |
108 |
109 | }
110 | }
111 | catch (Exception eJson)
112 | {
113 | Debug.WriteLine("IC:Exception : " + eJson.Message);
114 | Debug.WriteLine("IC:Exception : " + eJson.InnerException.Message);
115 |
116 | Device.BeginInvokeOnMainThread(() =>
117 | {
118 | DisplayAlert("Error", "Could find any packets.", "OK");
119 |
120 | });
121 | }
122 | }
123 | else
124 | {
125 |
126 | await DisplayAlert("Error", "Connection Error.", "OK");
127 | }
128 | } catch (Exception eResponse)
129 | {
130 |
131 | Device.BeginInvokeOnMainThread(() =>
132 | {
133 | DisplayAlert("Error", "Problem connecting to " + urlpath, "OK");
134 |
135 | });
136 | Debug.WriteLine("IC:Exception : " + eResponse.InnerException.Message);
137 | }
138 |
139 | }
140 |
141 | private async void importSetButton_ClickedAsync(object sender, EventArgs e)
142 | {
143 |
144 | var thepacketset = packetSetJSONListView.SelectedItem as PacketSetJSON;
145 |
146 | if(thepacketset != null)
147 | {
148 |
149 | if (!String.IsNullOrWhiteSpace(thepacketset.name)
150 | && !String.IsNullOrWhiteSpace(thepacketset.packetjson)
151 | )
152 | {
153 |
154 | var _packetsjson = JsonConvert.DeserializeObject>(thepacketset.packetjson);
155 |
156 | if (_packetsjson != null)
157 | {
158 | if (_packetsjson.Count > 0)
159 | {
160 | MessagingCenter.Send(this, Events.NEW_PACKET_LIST, PacketJSON.ToPacketList(_packetsjson));
161 |
162 | await DisplayAlert("Success", "Imported " + _packetsjson.Count() + " packets", "OK");
163 |
164 | await Navigation.PopModalAsync();
165 |
166 | }
167 | }
168 |
169 |
170 | }
171 | }
172 |
173 |
174 | }
175 | }
176 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/AccountCloud.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 | using System.Net;
10 | using Newtonsoft.Json;
11 | using System.Diagnostics;
12 | using System.Net.Http;
13 |
14 | using Plugin.Settings.Abstractions;
15 | using Plugin.Settings;
16 | using Newtonsoft.Json.Linq;
17 |
18 | namespace Packet_Sender_Mobile
19 | {
20 | [XamlCompilation(XamlCompilationOptions.Compile)]
21 | public partial class AccountCloud : ContentPage
22 | {
23 |
24 | private List _packetsjson;
25 | private List _packetsimport;
26 | private List _packetSets;
27 |
28 | public string jsontesting;
29 |
30 | public AccountCloud()
31 | {
32 | InitializeComponent();
33 | confirmLabel.IsVisible = false;
34 | passwordEntryConfirm.IsVisible = false;
35 |
36 | _packetsjson = new List();
37 | _packetsimport = new List();
38 |
39 | //SettingsPage.UserName = "";
40 | //SettingsPage.UserPass = "";
41 |
42 | usernameEntry.Text = SettingsPage.UserName;
43 | passwordEntry.Text = SettingsPage.UserPass;
44 |
45 | jsontesting = "";
46 |
47 |
48 | }
49 |
50 | private bool loginMode()
51 | {
52 | return !passwordEntryConfirm.IsVisible;
53 | }
54 |
55 | private async void LoginButton_ClickedAsync(object sender, EventArgs e)
56 | {
57 |
58 | string username = usernameEntry.Text.Trim().ToLower();
59 | string password = passwordEntry.Text;
60 | string passwordconfirm = passwordEntryConfirm.Text;
61 | if (String.IsNullOrWhiteSpace(username))
62 | {
63 |
64 | Device.BeginInvokeOnMainThread(async () => {
65 | await DisplayAlert("Error", "Username cannot be blank", "OK");
66 |
67 | });
68 | return;
69 | }
70 | if (String.IsNullOrWhiteSpace(password))
71 | {
72 |
73 | Device.BeginInvokeOnMainThread(async () => {
74 | await DisplayAlert("Error", "Password cannot be blank", "OK");
75 | });
76 | return;
77 | }
78 |
79 |
80 |
81 | if (loginMode())
82 | {
83 | var http = new HttpClient();
84 |
85 | string json = "";
86 | try
87 | {
88 | var parameters = new Dictionary { { "un", username }, { "pw", password } };
89 | var encodedContent = new FormUrlEncodedContent(parameters);
90 |
91 | //Xamarin cannot read cloudflare cert. This works with Let's Encrypt cert.
92 | var url = "https://cloud.packetsender.com/";
93 | var response = await http.PostAsync(url, encodedContent).ConfigureAwait(false);
94 | if (response.StatusCode == HttpStatusCode.OK)
95 | {
96 | json = await response.Content.ReadAsStringAsync();
97 |
98 | try
99 | {
100 | _packetSets = JsonConvert.DeserializeObject>(json);
101 |
102 | if (_packetSets.Count > 0)
103 | {
104 | SettingsPage.UserName = username;
105 | SettingsPage.UserPass = password;
106 | _packetsjson = JsonConvert.DeserializeObject>(_packetSets[0].packetjson);
107 | while((_packetSets.Count > 1) && (_packetsjson.Count == 0)) {
108 | _packetSets.RemoveAt(0);
109 | _packetsjson = JsonConvert.DeserializeObject>(_packetSets[0].packetjson);
110 | }
111 | Debug.WriteLine("AC:First set is " + _packetSets[0].name);
112 | Debug.WriteLine("AC:This packet set contains : " + _packetsjson.Count);
113 | if (_packetsjson.Count > 0)
114 | {
115 | Debug.WriteLine("AC:First packet is " + _packetsjson[0].name);
116 |
117 | Device.BeginInvokeOnMainThread(async () => {
118 | MessagingCenter.Send(this, Events.FOUND_PACKETSET_LIST, _packetSets);
119 | await DisplayAlert("Success", "Found " + _packetSets.Count + " sets.", "OK");
120 | var masterPage = this.Parent as TabbedPage;
121 | masterPage.CurrentPage = masterPage.Children[1]; //change to middle tab
122 | Debug.WriteLine("AC:Finished");
123 | });
124 |
125 | //
126 | //
127 | Debug.WriteLine("AC:Finished");
128 |
129 | return;
130 | }
131 | }
132 | else
133 | {
134 | Device.BeginInvokeOnMainThread(async () => {
135 | await DisplayAlert("Error", "There were no saved packets.", "OK");
136 | });
137 | return;
138 | }
139 | }
140 | catch (Exception eJson)
141 | {
142 |
143 |
144 | Device.BeginInvokeOnMainThread(async () => {
145 | await DisplayAlert("Error", "Could not log in.", "OK");
146 | });
147 |
148 |
149 | Debug.WriteLine("AC:Exception : " + eJson.Message);
150 | Debug.WriteLine("AC:Exception : " + eJson.InnerException.Message);
151 | return;
152 | }
153 |
154 | }
155 |
156 | Device.BeginInvokeOnMainThread(async () => {
157 | await DisplayAlert("Error", "Did not find in packet sets.", "OK");
158 | });
159 | return;
160 |
161 |
162 | }
163 | catch (HttpRequestException eHttp)
164 | {
165 | Device.BeginInvokeOnMainThread(async () => {
166 | await DisplayAlert("Error", "Could not connect to cloud server.", "OK");
167 | });
168 | Debug.WriteLine("AC:Exception : " + eHttp.Message);
169 | Debug.WriteLine("AC:Exception : " + eHttp.InnerException.Message);
170 | return;
171 | }
172 |
173 |
174 | }
175 | else
176 | {
177 | if (password != passwordconfirm)
178 | {
179 | Device.BeginInvokeOnMainThread(async () => {
180 | await DisplayAlert("Error", "Passwords do not match", "OK");
181 | });
182 | return;
183 | }
184 |
185 | }
186 |
187 | }
188 |
189 |
190 | private async void cancelButton_Clicked(object sender, EventArgs e)
191 | {
192 | await Navigation.PopModalAsync();
193 |
194 | }
195 |
196 | private void createAccountButton_Clicked(object sender, EventArgs e)
197 | {
198 | confirmLabel.IsVisible = !confirmLabel.IsVisible;
199 | passwordEntryConfirm.IsVisible = !passwordEntryConfirm.IsVisible;
200 |
201 | if (loginMode())
202 | {
203 | createAccountButton.Text = "Login";
204 | LoginButton.Text = "Create Account";
205 | }
206 | else
207 | {
208 | createAccountButton.Text = "Login Instead";
209 | LoginButton.Text = "Sign-up";
210 | }
211 |
212 | }
213 | }
214 | }
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/Packet_Sender_Mobile.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}
8 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
9 | true
10 | Library
11 | Packet_Sender_Mobile
12 | Packet_Sender_Mobile
13 | v4.5
14 | Profile111
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug
21 | DEBUG;
22 | prompt
23 | 4
24 |
25 |
26 | true
27 | bin\Release
28 | prompt
29 | 4
30 |
31 |
32 |
33 |
34 |
35 | MSBuild:UpdateDesignTimeXaml
36 |
37 |
38 | MSBuild:UpdateDesignTimeXaml
39 |
40 |
41 | MSBuild:UpdateDesignTimeXaml
42 |
43 |
44 | MSBuild:UpdateDesignTimeXaml
45 |
46 |
47 | MSBuild:UpdateDesignTimeXaml
48 |
49 |
50 | MSBuild:UpdateDesignTimeXaml
51 |
52 |
53 | MSBuild:UpdateDesignTimeXaml
54 |
55 |
56 | MSBuild:UpdateDesignTimeXaml
57 |
58 |
59 | MSBuild:UpdateDesignTimeXaml
60 |
61 |
62 | MSBuild:UpdateDesignTimeXaml
63 |
64 |
65 |
66 |
67 | App.xaml
68 |
69 |
70 | Packet_Sender_MobilePage.xaml
71 |
72 |
73 |
74 | MainTabbedPage.xaml
75 |
76 |
77 |
78 |
79 | AccountCloud.xaml
80 |
81 |
82 | CloudUI.xaml
83 |
84 |
85 |
86 | ImportCloud.xaml
87 |
88 |
89 |
90 | PacketEditPage.xaml
91 |
92 |
93 |
94 | PacketsPage.xaml
95 |
96 |
97 | SaveCloud.xaml
98 |
99 |
100 | SettingsPage.xaml
101 |
102 |
103 | TrafficPage.xaml
104 |
105 |
106 |
107 | LoginPage.xaml
108 |
109 |
110 |
111 |
112 |
113 | ..\packages\rda.SocketsForPCL.2.0.2\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Sockets.Plugin.Abstractions.dll
114 |
115 |
116 | ..\packages\rda.SocketsForPCL.2.0.2\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Sockets.Plugin.dll
117 |
118 |
119 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\netstandard1.0\Plugin.Settings.Abstractions.dll
120 |
121 |
122 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\netstandard1.0\Plugin.Settings.dll
123 |
124 |
125 | ..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net45+win8+wpa81\System.Net.Http.Extensions.dll
126 |
127 |
128 | ..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net45+win8+wpa81\System.Net.Http.Primitives.dll
129 |
130 |
131 | ..\packages\SQLite.Net-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll
132 |
133 |
134 | ..\packages\SQLite.Net.Async-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.Async.dll
135 |
136 |
137 | ..\packages\Newtonsoft.Json.12.0.1\lib\portable-net45+win8+wp8+wpa81\Newtonsoft.Json.dll
138 |
139 |
140 | ..\packages\SQLitePCLRaw.core.1.1.12\lib\portable-net45+netcore45+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLitePCLRaw.core.dll
141 |
142 |
143 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\portable-net45+netcore45+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLitePCLRaw.batteries_green.dll
144 |
145 |
146 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\portable-net45+netcore45+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLitePCLRaw.batteries_v2.dll
147 |
148 |
149 | ..\packages\sqlite-net-pcl.1.5.231\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLite-net.dll
150 |
151 |
152 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\netstandard1.0\Xamarin.Forms.Core.dll
153 |
154 |
155 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\netstandard1.0\Xamarin.Forms.Platform.dll
156 |
157 |
158 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\netstandard1.0\Xamarin.Forms.Xaml.dll
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/iOS/Packet_Sender_Mobile.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | iPhoneSimulator
7 | {1ED3BCDA-9322-4C3B-95DA-7C49F82B7598}
8 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
9 | Exe
10 | Packet_Sender_Mobile.iOS
11 | Packet_Sender_Mobile.iOS
12 | Resources
13 |
14 |
15 | true
16 | full
17 | false
18 | bin\iPhoneSimulator\Debug
19 | DEBUG;ENABLE_TEST_CLOUD;
20 | prompt
21 | 4
22 | iPhone Developer: Dan Nagle (8WMEH2K769)
23 | true
24 | true
25 | true
26 | 35139
27 | None
28 | x86_64
29 | HttpClientHandler
30 | x86
31 |
32 |
33 | pdbonly
34 | true
35 | bin\iPhone\Release
36 | prompt
37 | 4
38 | iPhone Distribution
39 | true
40 | Entitlements.plist
41 | SdkOnly
42 | ARM64
43 | HttpClientHandler
44 | x86
45 |
46 |
47 | pdbonly
48 | true
49 | bin\iPhoneSimulator\Release
50 | prompt
51 | 4
52 | iPhone Developer: Dan Nagle (8WMEH2K769)
53 | true
54 | None
55 | x86_64
56 | HttpClientHandler
57 | x86
58 |
59 |
60 | true
61 | full
62 | false
63 | bin\iPhone\Debug
64 | DEBUG;ENABLE_TEST_CLOUD;
65 | prompt
66 | 4
67 | iPhone Developer: Dan Nagle (8WMEH2K769)
68 | true
69 | true
70 | true
71 | true
72 | true
73 | Entitlements.plist
74 | 40487
75 | SdkOnly
76 | ARM64
77 | HttpClientHandler
78 | x86
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll
87 |
88 |
89 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\Xamarin.iOS10\Plugin.Settings.dll
90 |
91 |
92 | ..\packages\rda.SocketsForPCL.2.0.2\lib\Xamarin.iOS10\Sockets.Plugin.Abstractions.dll
93 |
94 |
95 | ..\packages\rda.SocketsForPCL.2.0.2\lib\Xamarin.iOS10\Sockets.Plugin.dll
96 |
97 |
98 | ..\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll
99 |
100 |
101 | ..\packages\SQLite.Net-PCL.3.1.1\lib\Xamarin.iOS10\SQLite.Net.Platform.XamarinIOS.Unified.dll
102 |
103 |
104 | ..\packages\SQLitePCLRaw.core.1.1.12\lib\Xamarin.iOS10\SQLitePCLRaw.core.dll
105 |
106 |
107 | ..\packages\SQLitePCLRaw.provider.sqlite3.ios_unified.1.1.12\lib\Xamarin.iOS10\SQLitePCLRaw.provider.sqlite3.dll
108 |
109 |
110 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\Xamarin.iOS10\SQLitePCLRaw.batteries_green.dll
111 |
112 |
113 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\Xamarin.iOS10\SQLitePCLRaw.batteries_v2.dll
114 |
115 |
116 | ..\packages\sqlite-net-pcl.1.5.231\lib\netstandard1.1\SQLite-net.dll
117 |
118 |
119 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll
120 |
121 |
122 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll
123 |
124 |
125 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll
126 |
127 |
128 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll
129 |
130 |
131 |
132 |
133 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}
134 | Packet_Sender_Mobile
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
--------------------------------------------------------------------------------
/Packet_Sender_Mobile/PacketsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 | using System.Collections.ObjectModel;
10 |
11 |
12 | using Sockets;
13 | using Sockets.Plugin; //nuget https://github.com/rdavisau/sockets-for-pcl
14 |
15 | using System.Diagnostics;
16 | using SQLite;
17 |
18 | namespace Packet_Sender_Mobile
19 | {
20 | [XamlCompilation(XamlCompilationOptions.Compile)]
21 | public partial class PacketsPage : ContentPage
22 | {
23 |
24 | private ObservableCollection _thepackets;
25 | private TcpSocketClient tcp;
26 | private UdpSocketClient udp;
27 | private TcpSocketListener tcpServer;
28 | private UdpSocketReceiver udpServer;
29 |
30 | public int tcpPort;
31 | public int udpPort;
32 |
33 | public Packet thepacket;
34 |
35 | private SQLiteAsyncConnection _connection;
36 |
37 | bool _isDataLoaded;
38 |
39 | public PacketsPage()
40 | {
41 | InitializeComponent();
42 |
43 | tcpPort = SettingsPage.TCPPort;
44 | udpPort = SettingsPage.UDPPort;
45 |
46 | tcpServer = new TcpSocketListener();
47 | udpServer = new UdpSocketReceiver();
48 |
49 | tcpServer.ConnectionReceived += TcpConnection;
50 | udpServer.MessageReceived += UdpConnection;
51 |
52 | Task.Run(async () =>
53 | {
54 | await tcpServer.StartListeningAsync(tcpPort);
55 | await udpServer.StartListeningAsync(udpPort);
56 | SettingsPage.TCPPort = tcpServer.LocalPort;
57 |
58 | MessagingCenter.Send(this, Events.BOUND_PORTS_CHANGED, 0);
59 |
60 | });
61 |
62 |
63 | //udpServer.StartListeningAsync(udpPort);
64 |
65 | /*
66 | += async (sender, args) =>
67 | {
68 | var client = args.SocketClient;
69 |
70 | var bytesRead = -1;
71 | var buf = new byte[1];
72 |
73 | while (bytesRead != 0)
74 | {
75 | bytesRead = await args.SocketClient.ReadStream.ReadAsync(buf, 0, 1);
76 | //if (bytesRead > 0)
77 | // Debug.Write(buf[0]);
78 | }
79 | };
80 | */
81 |
82 | _connection = DependencyService.Get().GetConnection();
83 |
84 | /*
85 | var demopackets = Packet.GetDemoPackets();
86 | for (int i = 0; i < demopackets.Count(); i++) {
87 | _thepackets.Add(demopackets[i]);
88 | }
89 | packetListView.ItemsSource = _thepackets;
90 | */
91 |
92 |
93 | tcp = new TcpSocketClient();
94 | udp = new UdpSocketClient();
95 | thepacket = new Packet();
96 |
97 | MessagingCenter.Subscribe>(this, Events.NEW_PACKET_LIST, OnNewPacketListAsync);
98 | MessagingCenter.Subscribe>(this, Events.NEW_PACKET_LIST, OnNewPacketListAsyncIC);
99 | MessagingCenter.Subscribe(this, Events.PACKET_MODIFIED, OnPacketModified);
100 |
101 | }
102 |
103 |
104 |
105 | void UdpConnection(object sender, Sockets.Plugin.Abstractions.UdpSocketMessageReceivedEventArgs args)
106 | {
107 |
108 |
109 | Packet pkt = new Packet();
110 | pkt.method = "udp";
111 | pkt.fromip = args.RemoteAddress;
112 | pkt.fromport = Convert.ToInt32(args.RemotePort);
113 | pkt.toip = "You";
114 | pkt.toport = udpPort;
115 |
116 | var buf = args.ByteData;
117 |
118 | if (buf.Length > 0)
119 | {
120 | pkt.hex = Packet.byteArrayToHex(buf);
121 | }
122 |
123 |
124 | MessagingCenter.Send(this, Events.NEW_TRAFFIC_PACKET, pkt);
125 | }
126 |
127 |
128 |
129 |
130 | async void TcpConnection(object sender, Sockets.Plugin.Abstractions.TcpSocketListenerConnectEventArgs args)
131 | {
132 |
133 | var client = args.SocketClient;
134 |
135 | Packet pkt = new Packet();
136 | pkt.method = "tcp";
137 | pkt.fromip = client.RemoteAddress;
138 | pkt.fromport = client.RemotePort;
139 | pkt.toip = "You";
140 | pkt.toport = tcpServer.LocalPort;
141 |
142 |
143 | var bytesRead = -1;
144 | var buf = new byte[1024];
145 | bytesRead = await args.SocketClient.ReadStream.ReadAsync(buf, 0, 1024);
146 |
147 | if (bytesRead > 0) {
148 | byte[] saveArray = new byte[bytesRead];
149 | Array.Copy(buf, saveArray, saveArray.Length);
150 | pkt.hex = Packet.byteArrayToHex(saveArray);
151 | }
152 |
153 |
154 | //TODO:make persistent?
155 | await client.DisconnectAsync();
156 |
157 | MessagingCenter.Send(this, Events.NEW_TRAFFIC_PACKET, pkt);
158 | }
159 |
160 | protected override async void OnAppearing()
161 | {
162 | Debug.WriteLine("OnAppearing: PacketsPage.xaml.cs");
163 |
164 | // In a multi-page app, everytime we come back to this page, OnAppearing
165 | // method is called, but we want to load the data only the first time
166 | // this page is loaded. In other words, when we go to ContactDetailPage
167 | // and come back, we don't want to reload the data. The data is already
168 | // there. We can control this using a switch: isDataLoaded.
169 | if (_isDataLoaded)
170 | return;
171 |
172 | _isDataLoaded = true;
173 |
174 | // I've extracted the logic for loading data into LoadData method.
175 | // Now the code in OnAppearing method looks a lot cleaner. The
176 | // purpose is very explicit. If data is loaded, return, otherwise,
177 | // load data. Details of loading the data is delegated to LoadData
178 | // method.
179 | await LoadData();
180 |
181 | base.OnAppearing();
182 |
183 | //app needs to turn off tcp server.
184 | MessagingCenter.Subscribe(this, Events.APP_RESUME, async app => {
185 | //Do something
186 | Debug.WriteLine("APP_RESUME: PacketsPage.xaml.cs");
187 | await tcpServer.StartListeningAsync(tcpPort);
188 | await udpServer.StartListeningAsync(udpPort);
189 | });
190 |
191 | MessagingCenter.Subscribe(this, Events.APP_SLEEP, app => {
192 | //Do something
193 | Debug.WriteLine("APP_SLEEP: PacketsPage.xaml.cs");
194 | tcpServer.StopListeningAsync();
195 | udpServer.StopListeningAsync();
196 | });
197 |
198 | MessagingCenter.Subscribe(this, Events.APP_DISAPPEAR, app => {
199 | //Do something
200 | Debug.WriteLine("APP_DISAPPEAR: PacketsPage.xaml.cs");
201 | tcpServer.StopListeningAsync();
202 | udpServer.StopListeningAsync();
203 | });
204 |
205 | }
206 |
207 | private async Task LoadData()
208 | {
209 | await _connection.CreateTableAsync();
210 |
211 | var pkts = await _connection.Table().ToListAsync();
212 | List SortedList = pkts.OrderBy(o => o.name).ToList();
213 | _thepackets = new ObservableCollection(SortedList);
214 | packetListView.ItemsSource = _thepackets;
215 | }
216 |
217 |
218 |
219 | private void OnPacketModified(PacketEditPage source, Packet packet)
220 | {
221 | Debug.WriteLine("PP:Updating main list with " + packet.name + " headed to " + packet.toip);
222 |
223 | bool found = false;
224 | for (int i = 0; i < _thepackets.Count(); i++)
225 | {
226 | if (_thepackets[i].name == packet.name) {
227 | Packet freshpacket = new Packet(); //forces view refresh.
228 | freshpacket.Clone(packet);
229 | _thepackets[i] = freshpacket;
230 | found = true;
231 | break;
232 | }
233 |
234 | }
235 |
236 | if (!found) {
237 | _thepackets.Add(packet);
238 | }
239 |
240 |
241 | //packetListView.ItemsSource = newList;
242 |
243 |
244 |
245 | }
246 |
247 | private void OnNewPacketListAsyncIC(ImportCloud source, List newList)
248 | {
249 | OnNewPacketListAsync(null, newList);
250 | }
251 |
252 |
253 | private void OnNewPacketListAsync(LoginPage source, List newList)
254 | {
255 | Debug.WriteLine("PP:List now has " + newList.Count());
256 | Debug.WriteLine("PP:Updating main list");
257 |
258 |
259 |
260 | _connection.DropTableAsync().Wait();
261 | _connection.CreateTableAsync().Wait();
262 | _thepackets.Clear();
263 |
264 | for (int i = 0; i < newList.Count(); i++)
265 | {
266 | _connection.InsertAsync(newList[i]);
267 | _thepackets.Add(newList[i]);
268 | }
269 |
270 | //packetListView.ItemsSource = newList;
271 |
272 |
273 |
274 | }
275 | private void packetListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
276 | {
277 | Debug.WriteLine("PP:Selected");
278 |
279 | thepacket = packetListView.SelectedItem as Packet;
280 |
281 | if (thepacket.unitTests())
282 | {
283 | //DisplayAlert("Alert", "Unit tests passed!", "OK");
284 | }
285 | else
286 | {
287 | DisplayAlert("Alert", "Unit tests failed", "OK");
288 | }
289 |
290 |
291 | }
292 |
293 | private void sendButton_Clicked(object sender, EventArgs e)
294 | {
295 | var sendpacket = packetListView.SelectedItem as Packet;
296 | if (sendpacket == null)
297 | {
298 | Debug.WriteLine("PP:sendButton_Clicked with null");
299 |
300 | } else {
301 |
302 | doSend(sendpacket);
303 | }
304 |
305 | }
306 |
307 | public async void doSend(Packet sendpacket)
308 | {
309 | Debug.WriteLine($"PP:doSend {sendpacket.method} {sendpacket.toip} {sendpacket.toport} {sendpacket.ascii}");
310 | // byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(sendpacket.ascii);
311 | byte[] bytesToSend = sendpacket.getByteArray();
312 |
313 | try
314 | {
315 | sendpacket.error = "";
316 | await tcp.DisconnectAsync();
317 |
318 | if (sendpacket.isTCP())
319 | {
320 | await tcp.ConnectAsync(sendpacket.toip, sendpacket.toport);
321 | await tcp.WriteStream.WriteAsync(bytesToSend, 0, bytesToSend.Length);
322 | await tcp.DisconnectAsync();
323 |
324 | /*
325 | // wait a little before reading
326 | var bytesRecv = new byte[20];
327 | //tcp.ReadStream.ReadTimeout = 200;
328 | //not async, so it can time out.
329 | await Task.Delay(TimeSpan.FromMilliseconds(00));
330 | if (tcp.ReadStream.Length > 0)
331 | {
332 | int bytesRead = await tcp.ReadStream.ReadAsync(bytesRecv, 0, 20);
333 | if (bytesRead > 0)
334 | {
335 | Packet receivepkt = new Packet();
336 | receivepkt.toip = sendpacket.fromip;
337 | receivepkt.fromip = sendpacket.toip;
338 | receivepkt.fromport = sendpacket.toport;
339 | Array.Resize(ref bytesRecv, bytesRead);
340 | receivepkt.hex = Packet.byteArrayToHex(bytesRecv);
341 | MessagingCenter.Send(this, Events.NEW_TRAFFIC_PACKET, receivepkt);
342 | }
343 |
344 | }
345 | */
346 |
347 |
348 | }
349 | if (sendpacket.isUDP())
350 | {
351 | await udpServer.SendToAsync(bytesToSend, sendpacket.toip, sendpacket.toport);
352 | }
353 |
354 | }
355 | catch (Exception eSend)
356 | {
357 | sendpacket.error = "Error: "+eSend.Message;
358 | Debug.WriteLine("PP:Exception : " + eSend.Message + ":" + eSend.GetType());
359 | }
360 |
361 |
362 | Debug.WriteLine("PP:Before Message");
363 | MessagingCenter.Send(this, Events.NEW_TRAFFIC_PACKET, sendpacket);
364 | Debug.WriteLine("PP:After Message");
365 |
366 |
367 |
368 | Debug.WriteLine("PP:Finished");
369 |
370 |
371 |
372 |
373 | }
374 |
375 | private void deleteButton_Clicked(object sender, EventArgs e)
376 | {
377 | Debug.WriteLine("PP:Need to delete " + thepacket.ascii);
378 |
379 | if(_thepackets.IndexOf(thepacket) > -1) {
380 | Debug.WriteLine("PP:Deleted packet");
381 | _thepackets.Remove(thepacket);
382 | _connection.DeleteAsync(thepacket);
383 | } else {
384 | Debug.WriteLine("PP:Did not delete packet");
385 | }
386 |
387 |
388 |
389 |
390 | }
391 |
392 | private async void modifyButton_Clicked(object sender, EventArgs e)
393 | {
394 | var sendpacket = packetListView.SelectedItem as Packet;
395 | if (sendpacket == null)
396 | {
397 | Debug.WriteLine("PP:modifyButton_Clicked with null");
398 | return;
399 |
400 | }
401 |
402 | Debug.WriteLine("PP:modifyButton_Clicked " + sendpacket.name +" " + sendpacket.method);
403 | //Navigation.PushAsync((new PacketEditPage()));
404 | await Navigation.PushModalAsync(new PacketEditPage(sendpacket));
405 |
406 | }
407 |
408 | private async void newButton_Clicked(object sender, EventArgs e)
409 | {
410 | thepacket = new Packet();
411 | Debug.WriteLine("PP:newButton_Clicked");
412 | await Navigation.PushModalAsync(new PacketEditPage(thepacket));
413 | }
414 | }
415 |
416 |
417 | }
--------------------------------------------------------------------------------
/Droid/Packet_Sender_Mobile.Droid.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {56183E3C-94D2-473C-A1C1-59ADD5B6FF8E}
8 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
9 | Library
10 | Packet_Sender_Mobile.Droid
11 | Packet_Sender_Mobile.Droid
12 | v8.0
13 | True
14 | Resources\Resource.designer.cs
15 | Resource
16 | Properties\AndroidManifest.xml
17 | Resources
18 | Assets
19 |
20 |
21 | true
22 | full
23 | false
24 | bin\Debug
25 | DEBUG;
26 | prompt
27 | 4
28 | None
29 |
30 |
31 | true
32 | pdbonly
33 | true
34 | bin\Release
35 | prompt
36 | 4
37 | true
38 | false
39 | armeabi-v7a;arm64-v8a;x86;x86_64
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\MonoAndroid10\Plugin.Settings.Abstractions.dll
48 |
49 |
50 | ..\packages\Xam.Plugins.Settings.3.1.1\lib\MonoAndroid10\Plugin.Settings.dll
51 |
52 |
53 | ..\packages\rda.SocketsForPCL.2.0.2\lib\MonoAndroid10\Sockets.Plugin.Abstractions.dll
54 |
55 |
56 | ..\packages\rda.SocketsForPCL.2.0.2\lib\MonoAndroid10\Sockets.Plugin.dll
57 |
58 |
59 | ..\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll
60 |
61 |
62 | ..\packages\SQLite.Net-PCL.3.1.1\lib\MonoAndroid\SQLite.Net.Platform.XamarinAndroid.dll
63 |
64 |
65 | ..\packages\SQLitePCLRaw.core.1.1.12\lib\MonoAndroid\SQLitePCLRaw.core.dll
66 |
67 |
68 | ..\packages\SQLitePCLRaw.lib.e_sqlite3.android.1.1.12\lib\MonoAndroid\SQLitePCLRaw.lib.e_sqlite3.dll
69 |
70 |
71 | ..\packages\SQLitePCLRaw.provider.e_sqlite3.android.1.1.12\lib\MonoAndroid\SQLitePCLRaw.provider.e_sqlite3.dll
72 |
73 |
74 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\MonoAndroid\SQLitePCLRaw.batteries_green.dll
75 |
76 |
77 | ..\packages\SQLitePCLRaw.bundle_green.1.1.12\lib\MonoAndroid\SQLitePCLRaw.batteries_v2.dll
78 |
79 |
80 | ..\packages\sqlite-net-pcl.1.5.231\lib\netstandard1.1\SQLite-net.dll
81 |
82 |
83 | ..\packages\Xamarin.Android.Support.Annotations.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Annotations.dll
84 |
85 |
86 | ..\packages\Xamarin.Android.Arch.Core.Common.1.1.1\lib\monoandroid80\Xamarin.Android.Arch.Core.Common.dll
87 |
88 |
89 | ..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.1.1\lib\monoandroid80\Xamarin.Android.Arch.Lifecycle.Common.dll
90 |
91 |
92 | ..\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.1.1\lib\monoandroid80\Xamarin.Android.Arch.Lifecycle.Runtime.dll
93 |
94 |
95 | ..\packages\Xamarin.Android.Support.Compat.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Compat.dll
96 |
97 |
98 | ..\packages\Xamarin.Android.Support.Core.UI.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Core.UI.dll
99 |
100 |
101 | ..\packages\Xamarin.Android.Support.Core.Utils.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Core.Utils.dll
102 |
103 |
104 | ..\packages\Xamarin.Android.Support.Fragment.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Fragment.dll
105 |
106 |
107 | ..\packages\Xamarin.Android.Support.Media.Compat.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Media.Compat.dll
108 |
109 |
110 | ..\packages\Xamarin.Android.Support.Transition.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Transition.dll
111 |
112 |
113 | ..\packages\Xamarin.Android.Support.v4.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v4.dll
114 |
115 |
116 | ..\packages\Xamarin.Android.Support.v7.CardView.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v7.CardView.dll
117 |
118 |
119 | ..\packages\Xamarin.Android.Support.v7.Palette.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v7.Palette.dll
120 |
121 |
122 | ..\packages\Xamarin.Android.Support.v7.RecyclerView.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v7.RecyclerView.dll
123 |
124 |
125 | ..\packages\Xamarin.Android.Support.Vector.Drawable.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Vector.Drawable.dll
126 |
127 |
128 | ..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Animated.Vector.Drawable.dll
129 |
130 |
131 | ..\packages\Xamarin.Android.Support.v7.AppCompat.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v7.AppCompat.dll
132 |
133 |
134 | ..\packages\Xamarin.Android.Support.Design.28.0.0\lib\monoandroid80\Xamarin.Android.Support.Design.dll
135 |
136 |
137 | ..\packages\Xamarin.Android.Support.v7.MediaRouter.28.0.0\lib\monoandroid80\Xamarin.Android.Support.v7.MediaRouter.dll
138 |
139 |
140 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\MonoAndroid10\FormsViewGroup.dll
141 |
142 |
143 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\MonoAndroid10\Xamarin.Forms.Core.dll
144 |
145 |
146 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
147 |
148 |
149 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\MonoAndroid10\Xamarin.Forms.Platform.dll
150 |
151 |
152 | ..\packages\Xamarin.Forms.3.4.0.1008975\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll
153 |
154 |
155 |
156 |
157 | {D97B3A99-EB14-45B7-A5C8-495B6E435E10}
158 | Packet_Sender_Mobile
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
--------------------------------------------------------------------------------