Commit Graph

346 Commits

Author SHA1 Message Date
Srivats P
b2291eb1c0 Tweak text for Port Group has no ports 2017-09-23 16:47:02 +05:30
Srivats P
6bd687e2bc UX: Enhance StreamConfigDialog
* Add stream name/enabled fields to dialog
* Change Dialog title to include current stream name
2017-09-22 20:45:42 +05:30
Srivats P
7d4f285d8d UX: Tweak welcome message 2017-09-21 21:11:34 +05:30
Srivats P
1047f0b1d8 Fix warning 2017-09-21 20:50:24 +05:30
Srivats P
fd8db1cf15 UX: Add text hints to Devices Widget 2017-09-21 20:43:54 +05:30
Srivats P
f62a3be54a UX: Don't allow edit of non-contiguous streams
Allowing this has potential of confusion for user when using Prev/Next
2017-09-20 22:05:13 +05:30
Srivats P
fd243f6847 UX: Open StreamConfigDialog on add stream
Add+Edit is now reduced to single step. For new users, it is easier to
comprehend this single step and no text hint is needed for edit
2017-09-20 22:00:47 +05:30
Srivats P
360fa13c97 UX: Edit multiple streams in the StreamConfigDialog
The dialog now accepts a list of streams as input and has prev/next
buttons to tranverse through the list making changes in one or more of
the streams
2017-09-17 13:18:44 +05:30
Srivats P
509e9d5398 Change Stream Config Dialog inputs
This is the first of many commits that lays the foundation for -
  * Editing multiple streams without exiting the dialog
  * Triggering the dialog when a new stream is added instead of add+edit
2017-09-16 12:30:00 +05:30
Srivats P
db77563466 UX: Change port name color if local config is changed
Although the applyHint is also changed in this case, the applyHint is
visible only when the port is selected. Having the port name in a
different color is a visual hint to the user that Apply is pending
2017-09-16 12:12:43 +05:30
Srivats P
3aa44343f0 Add new entry at end if nothing selected in stream/devGrp list 2017-09-14 21:01:56 +05:30
Srivats P
cca2e94bb3 Detect when port config has changed and needs to APPLY'd
For now we prompt user to click Apply, in future we can use this to do a
"Auto Apply"
2017-09-14 20:38:13 +05:30
Srivats P
4d13ecf15d UX: Add text hint about stream list
Remove text about how to create streams from Apply text hint. Make
hint text copy consistent across all hints
2017-09-09 18:57:55 +05:30
Srivats P
abb48a1c12 UX: Auto expand port group and allow deselect in PortsWindow 2017-09-09 13:13:52 +05:30
Srivats P
d348229028 UX: Improve PortStatsWindow select, toolbar buttons
- Automatic full column selection
- Enable/Disable toolbar buttons based on selection
- Code refactoring to avoid unncessary selectedColumns computation
2017-09-08 21:13:53 +05:30
Srivats P
88cea753b6 UX: Add category labels to Port Stats Window toolbar 2017-09-07 20:48:46 +05:30
Srivats P
40c5e00ec2 (UX) Add textual hints for to the ports window
Improves first run experience
2017-09-07 20:45:43 +05:30
Srivats P
cb52f9ade1 Inform user if local drone doesn't start 2017-09-04 22:57:45 +05:30
Srivats P
d39fbc2ed4 Add UTM params to docs url 2017-09-04 18:57:13 +05:30
Steven
6e0676881a Changed range of printable characters
Made matches inclusive and increased range to match more printable characters. This better matches the Hex Dump payload view, which displays all 0x20 to 0x7D.
2017-02-23 11:41:59 -05:00
Srivats P
5f82912f91 sign: Rename Aggr to Total in Stream Stats Window 2017-01-23 18:26:35 +05:30
Srivats P
287316b473 sign: Show streamStats byte stats only if user wants
By default stream stats window only shows packet counters, user can
toggle display of byte counters using context menu
2017-01-13 19:02:25 +05:30
Srivats P
5e30d8672f sign: Change colors of Stream Stats Window 2017-01-11 20:36:38 +05:30
Srivats P
2bad2f3384 sign: Add AggrGUID row in Stream Stats Window 2017-01-10 21:43:58 +05:30
Srivats P
c702d7692b sign: Rename aggrStreamStats as aggrGuidStats
New name reflects actual usage; aggrPortStats can be added later.
2017-01-10 18:50:22 +05:30
Srivats P
5120f6c525 sign: Highlight non-zero aggr pkt loss in red 2017-01-10 18:13:14 +05:30
Srivats P
416292e42b sign: Improve StreamStatsWindow UX with colors 2017-01-01 12:12:10 +05:30
Srivats P
ff01ef9682 sign: Add Aggregate Stats to Stream Stats Model 2016-12-27 20:20:36 +05:30
Srivats P
cfa7d80f7b Convert stream preflight checks to bullet points 2016-12-10 13:50:52 +05:30
Srivats P
a838d09fbd sign: Inform user when stream stats is not enabled
If Sign protocol is configured without enabling stream statistics on
port, inform user that stream statistics will not be available till
it is enabled on port
2016-12-10 13:40:28 +05:30
Srivats P
ba06b88329 sign: Reorder Tx/Rx columns in StreamStats Window 2016-12-09 18:12:06 +05:30
Srivats P
387e6700cd sign: Add Sign to Stream Protocol Selection Widget
Added a Special Group (for sign), a Trailer Group and reorganized the
layout of the widget to fit these new groups. Added supporting code for
the Sign Protocol and the Trailer group
2016-12-03 14:00:47 +05:30
Srivats P
de6a139cd7 Set L5 Proto as Other, if L4 Proto is Other
This should have been done when L5 was introduced but got missed out I
guess.
2016-12-02 18:49:25 +05:30
Srivats P
eed4f8eb1d sign: Clear Port+Stream Stats on Clear(All) click
Although the RPC API provides separate APIs for clearing Port and Stream
Stats, typical use case would be to clear both together
2016-11-28 20:19:17 +05:30
Srivats P
65f0a7168c sign: Replace Stream Stats icon with a better one 2016-11-27 13:16:10 +05:30
Srivats P
8fa9ac2295 sign: Restore Defaults - Stream Stats docks as tabs 2016-11-27 13:07:06 +05:30
Srivats P
3d7a459b5f sign: Open StreamStats as a Tabbed widget
PortStats and StreamStats Windows are presented as a tabbed widget.
Multiple StreamStats windows are titled to include an id to hint at the
sequence in which they were opened
2016-11-27 12:39:37 +05:30
Srivats P
70cc101b64 sign: Stream Stats Window display enhancements
Use right align and thousands' separator for numbers; reduce table row
height to match port stats window
2016-11-27 11:56:18 +05:30
Srivats P
a6274e559e sign: Delete streamStats docks before saving state
Although streamStats docks are set to delete on close, this doesn't
happen immediately, so save layout state still sees them which leads
to a crash next time when application is started, state is restored and
docks are moved - so instead of close, delete them directly
2016-11-27 11:45:15 +05:30
Srivats P
60be43006f sign: StreamStatsModel is now a nice table 2016-11-26 13:37:36 +05:30
Srivats P
fda7807797 sign: GUI code for fetch/display of stream stats 2016-11-24 21:44:38 +05:30
Srivats P
bf161811b4 sign: Add Stream Stats button to GUI port config 2016-11-21 18:39:55 +05:30
Srivats P
e0bf173b39 sign: remove sign stats and remnants of signed streams 2016-11-05 19:53:01 +05:30
Srivats P
1986845bae sign: remove streamsType and associated code 2016-11-05 19:41:02 +05:30
Srivats P
2185bf2855 sign: Disable Port TxMode/StreamsType config in GUI based on port state 2016-10-28 18:27:24 +05:30
Srivats P
1f4a825042 sign: fix incorrect code added by mistake in a79bbb1f 2016-10-27 21:48:18 +05:30
Srivats P
a79bbb1fcd sign: signed tx stats infra; actual tx signing pending 2016-10-23 17:24:23 +05:30
Srivats P
b45720b566 Ostinato starts with session file if provided on command line 2016-10-13 22:06:11 +05:30
Srivats P
708aed9135 Added ostinato cmdline option -s to suppress starting local drone 2016-10-13 18:50:33 +05:30
Srivats P
6a426a7a7e Add icon for Help menu item 2016-09-21 20:41:32 +05:30
Srivats P
10559c2a56 sign: stats infra extended for sign stats 2016-08-22 23:26:33 +05:30
Srivats P
e3b75d5ca8 Capture temp file to use userAlias instead of name for filename since Windows port names are now named NPF_XXXX 2016-06-26 11:31:40 +05:30
Srivats P
5d701c9382 Change the FAQ URL and add button to open the URL; fixes #176 2016-06-23 20:36:35 +05:30
Srivats P
0ab84e581d Added Help menu item to point to online documentation 2016-06-23 18:52:50 +05:30
Srivats P
75efed5ec4 Add extension while saving streams and sessions, if user doesn't specify one.
Fixes #187
2016-06-14 18:56:29 +05:30
Srivats P
b559400cf1 Fix copyright years in About dialog 2016-06-01 20:59:12 +05:30
Srivats P
2acfb3f25a Fix warnings introduced by recent feature development 2016-06-01 20:51:29 +05:30
Srivats P
bdbbd8f0a1 Moved Updater to common ostproto lib, Updater sends UserAgent 2016-05-31 20:23:54 +05:30
Srivats P
daba488d71 Set valid range for deviceGroup|devicePerVlan 2016-05-30 20:31:52 +05:30
Srivats P
5ff46e7ec5 Change Device Information Refresh Button from text to icon 2016-05-28 13:19:22 +05:30
Srivats P
6cc7231e7f Refactored StreamFileFormat and subclasses' methods to be consistent with SessionFileFormat 2016-05-20 20:30:57 +05:30
Srivats P
ff066ea657 Renamed AbstractFileFormat to StreamFileFormat and FileFormat to OstmFielFormat to be consistent with the new convention introduced with SessionFileFormat/OssnFileFormat 2016-05-19 21:54:28 +05:30
Srivats P
c8a31f3068 Refactor stream file supportedFileTypes() to accept operation - Open/Save and return fileTypes accordingly 2016-05-19 21:05:32 +05:30
Srivats P
822ee2a4b4 Save/Open Session - refactor supportedFileTypes() to accept operation - Open/Save as input parameter and return file types accordingly 2016-05-19 20:50:33 +05:30
Srivats P
93dbe8e118 Save/Open Session - Prompt user before Open/Save Dialog 2016-05-19 20:28:04 +05:30
Srivats P
29f840c91c Use .ostm as default extension for Saved Stream(s) file and use it as default filter for open stream file 2016-05-18 21:33:26 +05:30
Srivats P
f3f970cb64 Open Session - set *.ossn as default open file filter 2016-05-18 21:09:11 +05:30
Srivats P
b6a6b776e1 Open Session - Drone on Windows now sends actual /Device/NPF_XXXX as port names - client sets up the ifX style alias and uses that all places; this was needed for comparison of port names while opening sessions for Drones running on Windows 2016-05-18 18:37:48 +05:30
Srivats P
ba754c1043 Open Session - check fileType for native file formats while identifying the file format from filename; also find size of metadata and use it when parsing just the metadata instead of the whole file 2016-05-17 20:47:10 +05:30
Srivats P
97ad497480 Open Session - no UI enabling/restore required after modifyPort 2016-05-14 20:13:43 +05:30
Srivats P
f626c179aa Open Session - Invoke modifyPort RPC only if required 2016-05-14 19:49:07 +05:30
Srivats P
3090b5eebd Mark SyncComplete after stream RPCs since those are invoked after device RPCs 2016-05-13 20:10:53 +05:30
Srivats P
672ceeeb2c Open Session - implemented DeviceGroups related code 2016-05-12 18:47:16 +05:30
Srivats P
5406d3dad8 Open Session: Don't reconfigure ports reserved by someone else; also for the ports which are reconfigured, used self name rather than the name in the session file 2016-05-10 20:26:48 +05:30
Srivats P
0b24bd6dde Save/Open Session: Fix crash while deleting atConnectConfig_ 2016-05-09 18:37:42 +05:30
Srivats P
294d1c80a1 Save/Open Session: Save only owned ports if some ports are reserved - corresponding open session code not to overwrite a owned port is pending 2016-05-06 21:24:36 +05:30
Srivats P
b8db66a2d5 Save/Open Session - added open session code (incomplete) 2016-05-05 19:13:00 +05:30
Srivats P
2426632055 Don't wait for all responses of getStreamIdList() before invoking getStreamConfig(); similarly for devices too - this change should simplify session file open 2016-04-26 20:23:50 +05:30
Srivats P
9bd6b536a3 Save/Open Session: saved streams and deviceGroups in file; open code pending 2016-04-15 19:03:52 +05:30
Srivats P
bcb5376f9d Save/Open Session - added UI and related infra to invoke OssnFileFormat; code to build sessionContent incomplete 2016-04-14 07:44:07 +05:30
Srivats P
72a6381c88 Device Emulation (contd.): Retrieve Device Information on connect to drone 2016-03-24 18:58:28 +05:30
Srivats P
321fc3e1ee Device Emulation (contd.): DeviceGroupDialog uses same defaults for VLAN config as the .proto 2016-03-24 18:52:48 +05:30
Srivats P
8b80b4c3ef Device Emulation (contd.): Checked and decided on a couple of FIXMEs/TODOs 2016-03-24 18:47:43 +05:30
Srivats P
fbb56720ba Device Emulation (contd.): Renamed Device List and Device Neighbor List fields so that the names are better reflective of what they contain 2016-03-22 20:18:53 +05:30
Srivats P
ce7aee54e5 Device Emulation (contd.): Changed the default app window size and ports-list/port-detail split to minimize scroll bars; a larger height would be better but capped it to 1024x600 (netbook resolution) 2016-03-22 18:27:36 +05:30
Srivats P
803242db38 Device Emulation (contd.): Use portId as part of the default IP address assigned to a deviceGroup 2016-03-19 18:17:50 +05:30
Srivats P
f33bd38e7b Device Emulation (contd.) - Added icons for the DeviceGroup actions 2016-03-19 17:31:08 +05:30
Srivats P
6a7a17cd36 Device Emulation (contd.): Refresh device info (if reqd.) when "Apply" is clicked 2016-03-16 21:34:36 +05:30
Srivats P
8012a9e786 Device Emulation (contd.): Fixed DeviceGroup related RPCs to be invoked only if required by client when "Apply" is clicked 2016-03-16 20:51:36 +05:30
Srivats P
26ceb2f9df Device Emulation (contd.): Hide Device Detail view when Escape pressed or Refresh clicked 2016-03-14 21:39:01 +05:30
Srivats P
7561b09c1e Device Emulation (contd.): Implemented display of NDP Cache Device Detail; also fixed missing clear of NDP cache on server 2016-03-14 21:16:46 +05:30
Srivats P
853802b997 Device Emulation (contd.): Implemented display of ARP Cache Device Detail; styled "drillable" fields in DeviceModel suitably 2016-03-14 20:11:40 +05:30
Srivats P
24a93a5025 Device Emulation (contd.): PortsWindow - refactored all device related widgets into a separate DevicesWidget for better modularity. 2016-03-13 19:51:32 +05:30
Srivats P
941d522451 Device Emulation (contd.): GUI now fetches ARP/NDP also from server and display summary counts - resolved/total 2016-03-12 18:56:35 +05:30
Srivats P
7c87e2130a Device Emulation (contd.): Use two different TableViews for DeviceGroupList and DeviceList 2016-03-11 21:05:07 +05:30
Srivats P
0503c8acaf Device Emulation (contd.): Get and display Device List 2016-03-11 18:58:08 +05:30
Srivats P
f742cdbc7a Device Emulation (contd.): Trigger Device RPCs before Stream RPCs because Drone updates its packet list at the end of modifyStream() 2016-03-10 18:20:55 +05:30
Srivats P
e9759fde26 Device Emulation (contd.): Add icons for resolve/clear neighbor buttons 2016-03-09 21:54:01 +05:30
Srivats P
d55f44cab2 Device Emulation (contd.): Add buttons (and their implementation) for resolve/clear device neighbors to the port stats window 2016-03-09 21:20:11 +05:30
Srivats P
10e1c5211d Device Emulation (contd.): Display IPv4/IPv6 (base) address in DeviceGroupListView 2016-03-08 18:49:28 +05:30
Srivats P
065698369f Device Emulation (contd.): If vlan tag count is zero, clear vlan encap 2016-03-08 18:27:10 +05:30
Srivats P
db8ad92738 Device Emulation (contd.): Assign a random mac address to a DeviceGroup at alloc time to ensure unique device keys when enumerating devices from device groups 2016-03-07 21:40:48 +05:30
Srivats P
11e9d0f6ef Device Emulation (contd.): fix deviceGroupId alloc bug 2016-03-05 04:31:29 +05:30
Srivats P
0ccb3e2fbd Device Emulation (contd.): Apply for deviceGroups implemented. This code has revealed bugs in other parts of the code which will be fixed in subsequent commits 2016-03-05 04:06:36 +05:30
Srivats P
bb69e644b1 Device Emulation (contd.): remove model from deviceGroupList if deviceInfo is selected - until deviceInfo model is implemented 2016-03-04 18:53:08 +05:30
Srivats P
c75e369840 Device Emulation (contd.): minor stuff 2016-03-04 18:46:59 +05:30
Srivats P
73485fb3bc Device Emulation (contd.): UI changes so that the 'Apply' button is seen to be common for both streams and devices; provisional UI for device information 2016-03-04 18:41:36 +05:30
Srivats P
f38567d33f Device Emulation (contd.): Hide/identify nice-to-have TODOs for DeviceGroup Dialog and call it done for now - phew! 2016-03-03 20:52:22 +05:30
Srivats P
c2df526aaf Device Emulation (contd.): DeviceGroup Dialog -fit/stretch the rows/cols of vlan Table plus minor stuff 2016-03-03 20:07:10 +05:30
Srivats P
586a177332 Device Emulation (contd.): Change SpinBoxDelegate for our needs and relicense under GPLv3; use SpinBoxDelegate for the Vlan Table validation 2016-03-03 18:23:25 +05:30
Srivats P
0ef0c6cfc0 Device Emulation (contd.): Added a IntEdit class and used in DeviceGroup Dialog 2016-03-02 22:14:14 +05:30
Srivats P
a5fd26792e Device Emulation (contd.): DeviceGroupDialog - populate/load/store vlan table, update totalVlanCount and totalDeviceCount as other fields affecting these change 2016-03-02 21:10:29 +05:30
Srivats P
ff757d59c6 Device Emulation (contd.): Add default values for IPv6 fields, update IPv6 gateway if addr/pfxlen changes; define and use class Ip6Edit 2016-03-02 06:13:56 +05:30
Srivats P
0edfee8cdf Device Emulation (contd.): Add default values for IPv4 address/gateway, update gateway as address/pfxlen are edited; define and use a Ip4Edit class 2016-03-01 18:48:35 +05:30
Srivats P
9619439e6a Device Emulation (contd.): Use a default Mac address as per RFC 4814; define and use new MacEdit class 2016-02-29 20:12:02 +05:30
Srivats P
a4a654fb02 Device Emulation (contd.): Implemented load/store for the DeviceGroupDialog and supporting code - incomplete 2016-02-25 19:03:00 +05:30
Srivats P
c1d5ca90ac Device Emulation (contd.): Enable/Disable Device View actions based on selections 2016-02-22 20:19:33 +05:30
Srivats P
6d9327c9d4 Device Emulation (contd.): Implemented new/edit/delete actions for device groups in the GUI 2016-02-22 18:47:51 +05:30
Srivats P
c63528ebae Device Emulation (contd.): Added first cut code for the Device Group Configuration Dialog 2016-02-17 21:13:30 +05:30
Srivats P
264fe20c34 Device Emulation (contd.): Display vlan count and change device count to show total number of devices across all vlans 2016-02-16 18:57:08 +05:30
Srivats P
c569328bb3 Device Emulation (contd.): Added DeviceGroupModel on the GUI client 2016-02-12 19:10:19 +05:30
Srivats P
6fddf0436c Device Emulation (contd.): Client calls RPCs for retreiving device group id and config list(s) at connect; optimisation - don't retreive streamConfig if port doesn't have any streams 2016-02-05 19:06:14 +05:30
Srivats P
e8030bbd01 Device Emulation (contd.): Added a tab and view in the GUI for device configuration 2016-02-02 18:43:48 +05:30
Srivats P
c022290da1 Merge branch 'master' of https://github.com/pstavirs/ostinato into emul
Conflicts:
	server/pcapport.cpp
2015-12-01 21:00:41 +05:30
Srivats P
280d4bedaa Feature (contd.): Device Emulation - Mac protocol can now 'resolve' src/dst mac corresponding to the packet from the Device Emulation infra 2015-11-10 19:40:32 +05:30
Srivats P
efdfa7f95d Feature: Ostinato client now accepts hostnames for drones and does DNS resolution for the same; IPv6 addresses are also accepted. Introduced Drone setting to listen to specific or 'any' IPv4 (or IPv6) address
Fixes #152
2015-11-06 18:57:07 +05:30
Srivats P.
d677b09491 Fixed gcc4 warnings 2015-06-05 20:18:41 +05:30
Srivats P.
0bec1cfdf8 Misc: Changed the version update check URL to a (hopefully) more permanent one 2015-06-03 21:34:19 +05:30
Srivats P.
384fd6e172 Feature (contd.): Variable Fields - fixed errors and warnings reported by gcc4 in the code added for this feature 2015-06-01 19:05:43 +05:30
Srivats P.
22d35f8a41 Feature (contd.): Variable Fields - fixed bug where the correct validation/masks were not setup when adding a new VF or switching between protocols 2015-05-31 21:21:46 +05:30
Srivats P.
022fac534c Feature (contd.): Variable Fields - fixed 2nd protocol of combo protocols not being listed and offset/mask not being calculated correctly for them via the GUI 2015-05-31 20:47:25 +05:30
Srivats P.
df24cf8b15 Feature: Variable Fields - any field of any protocol can now be varied by specifying it as a generic 8/16/32 bit field at a specified offset (relative to the protocol frame value) with a certain mask and a (initial) value alongwith count and step; this is working code - but incomplete. Bunch of FIXME/TODOs and testing pending 2015-05-26 21:43:37 +05:30
Srivats P.
77fe49bf10 Bugfix: When changing transmit mode of a port, the avg rates should be recalculated 2015-05-08 21:49:43 +05:30
Srivats P.
1dbc4120c9 Bugfix: When we add a portgroup, there was a delay in the port stats window showing '*' in the column titles 2015-05-08 21:24:52 +05:30
Srivats P.
250065970f Optimization: Modify port from the Ostinato GUI client now only sends those fields that have changed 2015-05-07 21:12:06 +05:30
Srivats P.
382c94b326 Behaviour Change: 'Clear All' in the port stats window now clears only the visible ports in the window, not all ports of all portgroups. This behaviour is the more appropriate behaviour when two or more clients are connected to the same portgroup and are using mutually exclusive ports within the portgroup - this way they don't affect each other's ports (assuming they have only their used ports visible) 2015-05-07 18:56:32 +05:30
Srivats P.
ab76da1ad2 Bugfix: Escape the username RegExp used for filtering Ports window 2015-05-06 21:47:46 +05:30
Srivats P.
efbc2dcf48 Feature: Show My Reserved Ports Only linked to Port Stats window also 2015-05-06 21:40:55 +05:30
Srivats P.
ad3a279cd6 Bugfix: Fixed crash on clicking 'apply' caused by an invalid proxyPortModel->mapToSource() 2015-05-04 22:29:35 +05:30
Srivats P.
2c28433533 Feature: View Menu: Restore Defaults
Fixes issue 68
2015-05-03 23:44:35 +05:30
Srivats P.
05b73a5390 Feature: Show My Reserved Ports Only 2015-05-03 22:18:54 +05:30
Srivats P.
25ef8dd1e4 Infra: Added code to disable notifications for python-ostinato scripts since python-ostinato does not expect and hence does not know how to deal with notifications
Updates issue 144
2015-05-01 21:41:04 +05:30
Srivats P.
9be69a8f46 Refactoring: Cleanup RPC Channel's knowledge of notification prototype
Updates issue 144
2015-04-25 20:12:37 +05:30
Srivats P.
ad6baea4af Infra: On a port modify, all clients are sent notifications of the same - they can request for port config again to get latest config
Updates issue 144
2015-04-24 20:53:00 +05:30
Srivats P.
fd22d49ead Refactoring: Move gzip/diff/awk path default values init on Windows into the Preferences class 2015-04-16 22:30:18 +05:30
Srivats P.
a9da643fb2 Feature: Reserve Ports for cooperative use of shared drone. If a port is reserved the GUI will display the username of the owner but others can still view and control the port; in other words, we just potentially prevent unintentional usage of other people's ports, users still need to play nice with each other!
Fixes issue 144
2015-04-16 22:20:07 +05:30